Download No Slide Title

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Remote Desktop Services wikipedia , lookup

Lag wikipedia , lookup

Transcript
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