<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- package.html
   Copyright (C) 2005 Free Software Foundation, Inc.

This file is part of GNU Classpath.

GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING.  If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.

Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.

As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module.  An independent module is a module which is not derived from
or based on this library.  If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so.  If you do not wish to do so, delete this
exception statement from your version. -->

<html>
<head><title>GNU Classpath - org.omg.CORBA</title></head>

<body>
This package provides the support of <a href="http://www.CORBA.org">CORBA</a>;
see <a href="#overview">overview</a> of the implemented functionality. 
<p>
CORBA a system that applications use to work over networks. CORBA messages 
are binary, not text oriented. They practically cary no "data wrapping" 
information like XML &lt;opening&gt; &lt;/closing&gt; tags. Hence CORBA 
objects easier exchange large amounts of binary data. CORBA can work
in such data-intensive application areas as telecommunications or radio
broadcasting. Java programs connect to CORBA objects without care
about what platform they run on, where they exist in the network, or what 
language they were written in. The remote CORBA objects appear to the 
programmer as the ordinary Java objects and can be passed as
parameters in both remote or local method invocations. 
</p><p>
The CORBA processing unit is divided into {@link org.omg.CORBA.Object}
that is exposed to the client and the servant 
({@link org.omg.PortableServer.Servant} where the method, invoked on 
object, is finally delegated. It can be multiple objects per servant or
multiple servants per object. The servant for particular object or
even particular call can be dynamically chosen at run time using
{@link org.omg.PortableServer.ServantManager}.
</p><p>
All stages of both local and remote invocations on CORBA objects can be
monitored and modified using {@link org.omg.PortableInterceptor.Interceptor}.
The interceptors can add an extra data to the CORBA message (these data
can be later accessed by other interceptor on remote side).
</p>
<a name="overview">
<h4>Overview of the currently implemented CORBA functionality</h4>
The CORBA implementation in the Classpath project is now a working
prototype. 
<ul>
<li>This prototype is interoperable with Sun's implementation v 1.4, 
transferring object references, primitive types, narrow and wide strings,
arrays, structures  and trees between these two platforms.
</li>
<li>The prototype provides interoperable support for the Abstract interface
 and Value types. Those appear in 1.3, being a feature of CORBA 2.3.
</li>
<li>The remote exceptions are also transferred and handled as expected.
</li>
<li>The support for parsing stringified object references (IORs), both 
Big and Little Endian encoded, is implemented.
</li>
<li>The redirection commands works, LOCATION_FORWARD_PERM changing the 
target address until the application is restarted and LOCATION_FORWARD 
redirecting for the current session only.
</li>
<li>Both Little and Big Endian encoded messages are accepted. The encoding
of the sent messages is the same as used in the stringified IOR reference
of that object or Big Endian, if no such data available.
</li>
<li>You can use both request-oriented (based on {@link org.omg.CORBA.Request}
and stream-oriented (based on {@link org.omg.CORBA.portable.ObjectImpl}
invocation models. The current release includes the working examples,
demonstrating the client-server communication using both methods.
</li>
<li>These examples also show,  how to use the Classpath naming service.
</li>
<li>The IDL compiler is not yet written (and not even started), but as a
 side effect of the required compatibility, the implementation seems 
accepting the output of the Sun's idlj.
</li>
<li>The Portable Object Adapter is already released. For details on POA,
see the {@link org.omg.PortableServer} package.</li>
<li>We provide the implementation of the {@link org.omg.DynamicAny}
package. ORB returns the working DynAnyFactory that produces working
DynAny's as defined in OMG specification.</li>
<li>The Portable Interceptor is also complete. See 
{@link org.omg.PortableInterceptor} package for details how to register 
and use CORBA interceptors.
<li>All GNU Classpath classes in omg.org namespace are newly written using
 the OMG .pdf document (Version 3.0.3, formal/04-03-12).
</li>
</ul>
 
 @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
</body>
</html>

