[Up: Design and Implementation of]
[Previous: Evaluation] [Next: Glossary]


The goal of a reference POA implementation has been achieved, proving the sensibility of the specification. The MICO POA is, in terms of features and correctness, equivalent or superior to the few other current POA implementations that have evolved in parallel in other ORBs.

The extensibility of the microkernel ORB has also been demonstrated satisfactorily, as the addition of the POA did not require any modification of the ORB and could be put to work just by implementing the generic Object Adapter interface. Modification of the IDL compiler was necessary, but this was hardly unexpected with the different layout of POA skeleton classes.

The microkernel architecture and its support for multiple object adapters is a unique feature of MICO, as the comparison with other ORBs shows. The development of ORBit started after CORBA 2.2, and it never had a Basic Object Adapter. Version 0.0.4 of TAO did have a BOA, but it was abandoned and completely replaced with the POA. ORBacus has had its BOA removed as part of its transistion process to the new major version. MICO is the only ORB where BOA and POA - among other, less user-visible, object adapters - coexist. As verified in their source code, none of the other monolithic ORBs allows more than one object adapter.

The POA was the missing piece for MICO to achieve CORBA 2.2 compliance. Its source code was contributed to the main distribution in September 1998 for the release of MICO 2.2.0 and was included in the second version of the MICO book. Some of the more advanced features have been added in later revisions, notably persistence in 2.2.3 and collocation in 2.2.4. Since then, it has been widely distributed and put to use; some minor bugs were reported on the mailing list and quickly fixed. Some enhancements like a more efficient handling of the Active Object Map are also the result of open discussion.

As a real-life test, the Naming Service, originally contributed by Kai-Uwe Sattler, was rewritten to use the Portable Object Adapter without any noticable difference of behavior. A new experimental language mapping for the Tcl scripting language also makes heavy use of the POA. In fact, it provides scripts with the full POA interface and was used in the testing of the POA implementation. The K Office Suite, the ``killer application'' for the K Desktop Environment [19], already exploits the POA's advanced features like servant managers and request forwarding.

A lot of BOA-based code remains in MICO, but this is more a feature than a problem. Since BOA and POA coexist, there is no need to spend effort in replacing the old BOA-based code.

While the decision whether to use the POA or BOA is easy in terms of features, it can be answered differently in terms of literature. Existing books are still mostly focused on the BOA, and the documentation that comes with the MICO distribution is no exception. A chapter about POA programming has been contributed, but is placed less prominently behind the BOA part. Otherwise, the only documentation for using the POA has been the specification itself. Only one recent book [16] deals with the POA.

The source code for the POA is complete, though coming CORBA revisions will most likely bring minor changes, as CORBA 2.3 does. As this thesis has shown, the POA might endure longer than the Basic Object Adapter did, which survived for seven years despite its shortcomings. On the other hand, CORBA now grows faster than it did ever before, and new applications of the CORBA architecture will probably need new object adapters, too.

The Portable Object Adapter is successful in its own field, for the implementation of servers in a Client/Server system. Real-time systems, data streaming services, parallel or fault-tolerant systems all have different requirements, and it is possible that new object adapters can fulfill their needs better than the POA does.

In the meantime, the POA is central to many new CORBA features. Objects by Value and Messaging both make extensive use of the POA, Objects by Value for supporting interfaces, and Messaging for callback objects.

CORBA has in the past often suffered from weak and incorrect ORB implementations. The test suite from the Open Group has only been passed by three ORBs so far, including MICO. However, the suite covered CORBA 2.1 only, and so the POA has not been verified. It would be interesting to have a CORBA 2.2 test suite, so that remaining bugs could be detected and expelled, and to ensure that the POA implementations of different ORBs are indeed compatible.

[Previous: Evaluation] [Next: Glossary]
[Up: Design and Implementation of]

Frank Pilhofer