Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
First experiences with CORBA Niko Neufeld May 24, 2017 The task Prepare a ring display for the RICH reconstruction/simulation Want to use JAVA 2D toolkit May 24, 2017 Niko Neufeld Possible strategies Dump data to file (from C++, read with Java) Link together Java and C++ difficult, huge executable, always same client Use a TCP socket clumsy(!), ugly(!!), synchronization(!!!) elegant, client - server, standard (C) only primitive data types (basically bytes), must provide your own protocol CORBA May 24, 2017 standardized, Java and C++ fully supported free implementations available Niko Neufeld CORBA / OMG OMG (Object Management Group) comprises all major vendors except Microsoft defines and develops the standard the standard and most OMG document are available for public download http://www.omg.org Microsoft has a similar approach COM/OLE Interoperability is under way May 24, 2017 Niko Neufeld CORBA intro CORBA stands for Common Object Request Broker Architecture It is a standard for object/component cooperation A component is usually a (collection of) object(s) which performs a well defined task e.g. display a histogram. It is (ideally): It defines “services” for objects: standalone, “plug and play”able across networks and platforms naming, persistency, transactions etc. It is language/platform independent May 24, 2017 Niko Neufeld CORBA - ORB All requests from objects to objects are handled by the Object Request Broker (ORB) May 24, 2017 Niko Neufeld Interface Definition Language (IDL) IDL describes the interfaces which objects show to the ORB It contains: modules = namespaces in C++ interfaces = abstract base classes in C++ operations = methods data types = standardized types basic:compatible to double, int, long, etc. constructed: struct, sequence, string, any, union, enum These are mapped to the respective language types by the precompilers (idl, jidl) May 24, 2017 Niko Neufeld IDL (trivial example) interface Y2K { const short y2k=2000 ; attribute short currentyear ; exception Y2Kbug {string yeah; }; void print(in short year) raises (Y2Kbug); }; idl y2k.idl produces y2k_skel.cpp and y2k.cpp and the header files Not shown here (lengthy - but no need to look into them) y2k_skel is used for the implementation of the server part and y2k.h for a possible client. May 24, 2017 Niko Neufeld Generated IDL file //## Module: Photon //## Subsystem: Rich::Detector //## Source file: C:\Program Files\Rational\Rational Rose 98 Evaluation Edition\Rich\Detector\Photon.idl #ifndef Photon_idl #define Photon_idl #include "Rich\Detector\Pixel.idl" interface Photon : Trajectory { //##begin Photon.initialDeclarations preserve=yes //##end Photon.initialDeclarations // Attributes attribute double energy; attribute double thetaCherenkov; // Operations void absorbed(); void scattered(in const HepPoint3D &position, in const HepPoint3D &direction); }; #endif May 24, 2017 Niko Neufeld Working with CORBA May 24, 2017 Niko Neufeld How to use it Server must be running somewhere It produces a unique(!) Object reference for the object whose service it offers This reference can e.g. be stored as a string and passed to a possible client The client initializes the ORB, obtains the object reference and gets a reference to the object and can then call its methods And it really works! May 24, 2017 Niko Neufeld What did I use? JAVA 1.2 on Linux ORBacus 3.1.2 for C++ and Java www.blackdown.org/java-linux fully compliant SUN certified port of 1.2 www.ooc.com/ob/ commercial software free for non-commercial use full CORBA IDL support, IDL to C++/Java mapping Linux 2.0.35 (dual P2) May 24, 2017 gcc/egcs, java Niko Neufeld Some final remarks I started out looking for a simple solution for C++ and Java interoperability CORBA works very nicely, it is a very high level way of communication I did not check performance issues One gets distribution, client-server, multi language (almost) for free There seem to be a lot more interesting possibilities May 24, 2017 Niko Neufeld