Okay, I am going to take this as a cue to get my two cents and two licks
in. These views represent my own and may or may not be closely held
nor even believed by others.
An object has state. Imagine an XML document sitting around someplace
describing the structure of the state. It's an encapsulation,
lightweight, easy to transport around the net, parse, understand, change.
This it shares with some object models. It's self describing in some way,
this it shares with even fewer.
Also imagine you have behaviors (methods). These methods aren't physically
co-located and in fact they are little snippets of code located elsewhere
on the network too. This distributed method inheritance is shared with even
fewer object models. These behaviors snippets can be applets written in
Java, Python, Tcl, Ada95, Perl, whatever. They include an XML parser (or not)
and have the ability to change and query values in the state, XML document,
easily and directly
Also imagine you have communication restrictions on this document, again very
lightweight, filtering domains, requireing permissions, etc. Imagine you
can restrict the behaviors you want to by digitally signing these behavior
snippets. This is embedded by most object models in terms of public, private,
and protected methods, but now you have a much finer granularity of how
you want to control the methods that just these (approx.) 3 things.
Also imagine these behavior snippets, being all distributed, heteregenous
(that means cross language and platform mostly), tightly controlled but more
loosely typed depending upon the enforcement, and sometimes trying to compete
with each other. They allow query, locking, renaming, versioning, instancing,
allowing concurrency to be at a finer level of abstraction than
the object encapsulation allowing a type of re-entrancy and multithreading.
Sort of like a threaded, persistent object built on top of a lightweight database.
Even fewer object models and their implementation languages have persistency
and threading built into them.
Imagine having a wide-area event mechanism that allows you to select
portions of your state that are relevant to an appropriate task, download
it, execute the behavior, and the re-synchronize with the original
state. The only object model I know that's getting close is Informix
Now, here's the kicker, imagine you have the ability to dynamically
declare variables, declare methods, version and transistion state,
transport, cache, replicate, broadcast it all over the place
to make it mobile and ubiquitious, but be able to utilize a naming
and routing scheme that you always know exactly where it is and how to get
On one end of the spectrum you can do enforcement such that it has
all the properties of a C++/CORBA/Database program, on the other the
possibilites are wide open depending on how you want to enforce the
data consistency, access, state tracking, location, whatever.
Now I want to go off on a tangent, for those stringent object believers.
Imagine you are a do-gooder and want to ban land mines
for all eternity. You have a moral disgust for these little mechanisms
that blow up children. Who wouldn't? But suppose the definition
of a land mine changes just a little. Suppose for a second that
the good people who design these things decided to put the detection
mechanism still in the little flat thing, but instead of putting
explosives in it, they put communication infrastructure. Suppose
that communication was so good that it relays a signal in less
than 1/10th of a second to some fictionary space-based weapon
system that can then target and boil the brains of anyone
standing within 20 feet of the little land mind 'sensor'. The
effects are exactly the same. Is this still a land mine?
Does this hold the same problems? Like a land mine, you
don't know exactly where it is until it notifies the
satellite, like a land mine it kills indiscrimanently;
you can take the satellite offline independently of the sensors,
but that in some ways is similar to locating and digging them
up which may or may not be the same expense. You could turn
off the satellite in times of peace or turn it back on in
times of war, but what of the situation on the Korean Penninsula
where it's used as a deterrent and needed full time? So, back
to XML and objects, to bastardize a phrase, the song remains
the same, only the words have changed.