Presentation is loading. Please wait.

Presentation is loading. Please wait.

January 25, 2016 First experiences with CORBA Niko Neufeld.

Similar presentations


Presentation on theme: "January 25, 2016 First experiences with CORBA Niko Neufeld."— Presentation transcript:

1 January 25, 2016 First experiences with CORBA Niko Neufeld

2 January 25, 2016Niko Neufeld The task  Prepare a ring display for the RICH reconstruction/simulation  Want to use JAVA 2D toolkit

3 January 25, 2016Niko Neufeld 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

4 January 25, 2016Niko 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

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

6 January 25, 2016Niko Neufeld CORBA - ORB  All requests from objects to objects are handled by the Object Request Broker (ORB)

7 January 25, 2016Niko 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)

8 January 25, 2016Niko Neufeld IDL (trivial example) i nterface 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.

9 January 25, 2016Niko 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

10 January 25, 2016Niko Neufeld Working with CORBA

11 January 25, 2016Niko 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!

12 January 25, 2016Niko Neufeld 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

13 January 25, 2016Niko 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


Download ppt "January 25, 2016 First experiences with CORBA Niko Neufeld."

Similar presentations


Ads by Google