distribution | mobility | language | platform | reflection | |
COM | -- | -- | * | -- | +/-- |
DCOM | + | -- | * | +/-- | +/-- |
CORBA | + | -- | * | * | +/-- |
Java/Beans | -- | classes | Java | * | + |
Java/RMI | + | classes | Java | * | + |
Voyager | + | objects | Java | * | + |
It is worth mentioning that the three major technologies have a rather different origin. Microsoft (D)COM is primarily a desktop technology, with Office as its killer application, whereas CORBA originated from the need to have an enterprise-wide solution for distributed objects. Java is a special case. It started as a Web-based language, but rapidly took position in the desktop and enterprise world as well.
Java distinguishes itself from the other technologies
both with respect to mobility and reflection.
As a Web-based language, Java allows for downloading
code dynamically, that is class descriptions for instantiating new
objects.
True mobile objects,
that is instantiated objects that migrate themselves,
are only possible when using a system such as Voyager,
or any of the other Java-based agent ORBs.
Java also provides a powerful Reflection API,
which allows for various kinds of meta-programming,
including the creation of new classes.
In comparison, meta-programming facilities of
the two other technologies are limited
to querying the availability and functionality of interfaces,
dynamic method invocation
and some dynamic typing.
Trends -- interoperability
An interesting project in this respect is the K-Office project, which aims at developing an Office Application Suite for the Unix/X11 desktop. It is built upon the KDE GUI environment, and employs a CORBA-based component technology, (nick)named KOM, to interconnect (embed and link) the various document components and their associated tools. See koffice.kde.com .