1 / 13

First experiences with CORBA

First experiences with CORBA. Niko Neufeld. The task. Prepare a ring display for the RICH reconstruction/simulation Want to use JAVA 2D toolkit. Possible strategies. Dump data to file (from C++, read with Java) clumsy(!), ugly(!!), synchronization(!!!) Link together Java and C++

lonato
Download Presentation

First experiences with CORBA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. First experiences with CORBA Niko Neufeld

  2. The task • Prepare a ring display for the RICH reconstruction/simulation • Want to use JAVA 2D toolkit Niko Neufeld

  3. Possible strategies • Dump data to file (from C++, read with Java) • clumsy(!), ugly(!!), synchronization(!!!) • Link together Java and C++ • difficult, huge executable, always same client • Use a TCP socket • elegant, client - server, standard (C) • only primitive data types (basically bytes), must provide your own protocol • CORBA • standardized, Java and C++ fully supported • free implementations available Niko Neufeld

  4. 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 CORBA / OMG Niko Neufeld

  5. 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): • standalone, “plug and play”able across networks and platforms • It defines “services” for objects: • naming, persistency, transactions etc. • It is language/platform independent Niko Neufeld

  6. CORBA - ORB • All requests from objects to objects are handled by the Object Request Broker (ORB) Niko Neufeld

  7. 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) Niko Neufeld

  8. IDL (trivial example) interface Y2K { const short y2k=2000 ; attribute short currentyear ; exception Y2Kbug {string yeah; }; void print(in short year) raises (Y2Kbug); }; idly2k.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. Niko Neufeld

  9. 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 Niko Neufeld

  10. Working with CORBA Niko Neufeld

  11. 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! Niko Neufeld

  12. What did I use? • JAVA 1.2 on Linux • www.blackdown.org/java-linux • fully compliant SUN certified port of 1.2 • ORBacus 3.1.2 for C++ and Java • 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) • gcc/egcs, java Niko Neufeld

  13. 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 Niko Neufeld

More Related