In März 1997 vollendete die OMG den ersten Teil ihres CORBA IDL-to-Java Mapping Spezifikation. Heutzutage bieten die meisten Java ORBs fast komplette Implementationen der neuen Sprachanbindung.
Java Programmierer werden mit den Language Mappings für die Basis CORBA Typen vertraut sein. Allerdings verbreiten möglicherweise die zusammengesetzten Typen Kopfzerbrechen. Sie basieren auf C++ Konstrukten, die absichtlich von Java entfernt sind. Daher sind sie etwas schwerer zu verarbeiten-wie soll eine C++ Union oder ein C++ typedef in Java repräsentiert werden?
CORBA IDL ist die Sprache zur Beschreibung von Multiplattform Services in einer heterogenen Welt. Eine Sache, die IDL-to-Java zu einem ausgezeichneten Hilfsmittel macht, ist die Transformation von Konstrukten, die in anderen Sprachen ihren Ursprung haben, nach Java. Diese Transformation befreit den Programmierer von dem, alles selbst machen zu müssen.
Das neue IDL-to-Java Language Mapping definiert zusätzlich ein Interface für portable Stubs und Skeletons, die CORBA Anbieter implementieren müssen. Dadurch lassen sich Stubs und Skeletons erzeugen, die nicht für jeden ORBs neu compiliert werden müssen. Der gleiche Stub Bytecode läuft auf jedem Java ORB, der das Interface unterstützt.
CORBA IDL |
Java |
General Constructs |
|
Module | package |
Benutzerdefinierte Exceptions | Java Klasse, die org.omg.CORBA.UserException
erweitert. |
In Parameter | Normale Java Parameter |
Out und inout Parameter | Java Holder Klassen |
Typecasts | Java Helper Klassen |
Attribute | Java Lese und Manipulationsmethoden dem Namen des Attributs |
Einfache Typen |
|
Const | Public static final Feld |
Boolean, TRUE, FALSE | Boolean, true, false |
Char, wchar | Char |
Octet | Byte |
String, wsrting | Java.lang.String |
Short, unsigned short | Short |
Long, unsigned long | Int |
Long long, unsigned long long | Long |
Float | Float |
Double | Double |
Konstruierte Typen |
|
Interface | Interface |
Sequence | Array |
Array | Array |
Struct | Java Klasse mit dem gleichen Namen wie der Struct Typ. |
Enum | Java Klasse mit dem gleichen Namen wie der enum Typ |
Union | Java Klasse mit dem Namen der Union. |
Typedef | Java besitzt kein Typedef Konstrukt. Es wird deswegen in einen einfachen IDL Typen oder benutzerdefinierten IDL Typen transformiert. |
Any | Java class org.omg.CORBA.Any |
Server-Side Mapping |
|
Server Implementation unter Verwendung von Vererbung | Schreib eine Implementationsklasse, die die IDL generierte Klasse <Name_des_Interfaces>ImplBase erweitert |
Server Implementation unter Verwendung von Delegation (zum Beispiel Tie) | IDL-generierte tie<Interface_Name> Klasse, die delegate calls zur Implementationsklasse bietet. Die Implmentationsklasse implementiert ein oder mehr IDL definierte Interfaces (jede von ihnen wird durch eine IDL generierte <Interface_Name>Operation Interface repräsentiert). |
POA root servant Klasse | Java Klasse org.omg.CORBA.portable.ObjectImpl |
Pseudo-Objekte nach Java Klassen (Auszug) |
|
CORBA::ORB | Java Klasse org.omg.CORBA.ORB |
CORBA::Object | Java Klasse org.omg.CORBA.Object |
CORBA::NamedValue | Java Klasse org.omg.CORBA.NamedValue |
CORBA::NVList | Java Klasse org.omg.CORBA.NVList |
CORBA::Request | Java Klasse org.omg.CORBA.Request |
CORBA::ServerRequest (und DSI) | Java Klasse org.omg.CORBA.ServerRequest (und DSI Mappings) |
CORBA::TypeCode | Java Klasse org.omg.CORBA.TypeCode |
CORBA::TCKind | Java Klasse org.omg.CORBA.org.omg.CORBA.TCKind |
© Copyright 1998 André Möller, Oliver Mentz & Magnus Wiencke