Newsletter sign-up
View all newsletters

Sign up for our technology specific newsletters.

Enterprise Java
Email Address:

Distributed Object Computing with Joe and NEO

After reading this article, you'll understand why Joe and NEO are<BR> being accepted by a growing community of developers

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone

Page 3 of 4

The philosophy of NEO surrounds networked objects and shared applications. It is now possible to convert an application into a networked object using the NEO Workshop tools and adding some code. You don't need to go through often tedious programming in an attempt to solve common network programming problems repeatedly to provide network communications support for your product. Instead, you can rely upon ORBs to handle some of these problems. One bright hope for NEO is in providing a level of version control at the application level, rather than at the programming level. This means that you can use and/or replace currently active components on your network which contribute to the goals of the application. For example, if you have a inventory control system that keeps track of all products kept in a warehouse for delivery, you need applications for monitoring current stock, delivery scheduling, delivery processing, stock aging, etc. If the core of the system surrounds NEO, it is possible to replace just one of these parts with revised applications to support new needs or functionality. If something seems wrong, you can quickly replace the currently active application with the previous version, without disrupting the entire process itself and affecting other parts of the inventory control system.

Joe

To the Internet world and perhaps much of the media, the most interesting component of the NEO system is Joe. With the addition of a few lines of code, you can declare a remote object, locate the object with respect to a NEO name server and then execute any of the methods of the object. There are three steps required to create a proper Joe client application: Compile the IDL interface of the remote object using the IDL-to-Java compiler; develop the Java application that will access this remote object; and compile everything with a Java compiler.

Server applications to the NEO environment can be written in any number of languages that support the CORBA and IDL specifications. This means that your Java code can execute server code written in C++, Smalltalk, and so on. Developing a Joe server is somewhat more complicated, but the process is a similar to developing other CORBA servers.

The bi-directional communications facility is the only way to do proper interaction in a client-server environment. It is well known that HTTP, the default protocol of Web servers is a poor substitute for application intercommunications due to the inefficient mechanisms employed. That is one of the reasons for the existence of Java. The NEO Event Service allows callbacks, an asynchronous notification service that send events back to the requesting client, but does not require the client to constantly poll the server for information.

Other projects

Joe is by no means the first to accomplish this level of distributed computing in Java. Several private projects such as HORB from Hirano Satoshi of the Electrotechnical Laboratory in Japan, and others on the commercial level, such as Black Widow from PostModern Computing Inc., have beaten Sun to the market. These products concentrate on connectivity to CORBA using a specific ORB communicating with others through a General Inter-ORB Protocol (GIOP) or through IIOP. And of course, there are non-Java based implementations of CORBA 2.0: Iona Technologies leads the pack with Orbix 2 on a number of different platforms (and also offers a Java implementation). On April 2, 1996, Hewlett Packard announced HP ORB Plus 2.0, a C++ level implementation.

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comment
Login
Forgot your account info?
Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources