Advantages

  1. Programming-language independent interface. Interfaces between clients and servers are defined in OMG IDL, thus providing the following advantages to Internet Programming:
  1. Legacy integration. Using CORBA IDL, programmers can encapsulate existing applications in wrappers and use them as objects on the ORB. CORBA-based systems allow developers to re-use legacy applications, therefore preventing them of rewriting everything from scratch.
  2. Rich distributed object infrastructure. Distributed applications require more functionalities than simple method invocations. CORBA offers them a rich set of distributed object services and facilities, such as the Lifecycle Service, the Event Service, the Naming Service (``the White Pages'' service) or the Trading Service (``the Yellow Pages'' service). CORBA provides many other helpful facility to manage distributed applications like automatic server activation when the appropriate one is not already running, load balancing to distribute charge across multiple machines, and persistence for both object states and object references. Some CORBA products also implement automatic server deactivation after some time-out or some specific garbage collect mechanism, thus preventing memory leaks happening to CORBA objects whose clients unexpectedly disappear.
  3. Location transparency. In contrast with URL-based and socket-based naming mechanism, CORBA provides location transparency: an object reference is independent of both the object physical location and a potentially change of this location. This means that developers can create robust CORBA-based systems where object can be moved without breaking all the applications that use them.
  4. Network transparency. By using the IIOP protocol, an ORB that run in a particular computer can be interconnected to any ORB elsewhere on the network. A client making a call will receive the results he expected, or a possible exception, without even knowing if the computation is done in the same process, in different processes running within the same machine, or different processes running across networks and operating systems.
  5. Direct object communication. Once Java applets are downloaded and running in the Web browser's Virtual Machine, they can talk directly to other distributed objects, hence bypassing the HTTP server. This transparent message routing is done through IIOP and frees the Web servers of extra communication management.
 
HTTP
Hypertext Transfer Protocol
IIOP
Internet Inter ORB Protocol
Definition
Communication standard betweenWeb clients and web servers
Communication standard betweenORBs over the Internet
Application
Document-oriented
Communication between objects
Protocol
Independent
TCP/IP
Organization
W3C Consortium
OMG
Connection
HTTP 1.0: session-less. Theconnection lasts only the timeof the request
HTTP 1.1: allows caching and persistent connection
Session-oriented: the connection is established for the entire communication between client & server
 
Table: HTTP's and IIOP's features
 
Direct object communication also allows true load balancing. Serving HTTP requests and executing server programs can now be done on various machines. A Web server can be installed on a dedicated Internet host that serves only incoming requests for HTML files, while all other client/server applications are distributed among different machines.

However, the W3C Consortium is working on new protocol issues that will combine both HTTP and IIOP. JavaSoft is also thinking about implementing RMI on top of IIOP.

Since Netscape 4.0 is fully integrating IIOP as a native protocol, IIOP will soon be ubiquitous with millions of users throughout the World.

Remote call-back support. This eliminates the need for Java applets to repeatedly poll for events. Through the Event Service, CORBA allows objects to receive asynchronous event notification from other objects. Dynamic Invocation Interface. CORBA clients can both use static and dynamic methods invocations. They either statically define their method invocations through stubs at compile time, or have the opportunity to discover objects' methods at run time. Regardless of the speed of execution, clients can thus choose between the strong type checking offered by the static option at compile time, and maximum flexibility associated with run time binding. Interface publication and self-describing system. With CORBA, you don't have to program at the project level, but you can always considered your object separately. When your project is done, all the services and projects that the developers have worked hard to write can publish their distributed interfaces so that clients in C++, SmallTalk, and even OLE can have access to them. That ``metadata'' that describes every server interface known to the system is contained in the Interface Repository of the ORB, and is used by clients that want to discover dynamically services at run time. This is also very helpful for development tools that can automatically generate code.