We have a C++ api for manipulating MARC records(an electronic format for
library records). This basically a set of data-holder class with logic to
parse the initial binary format to create the objects and logic for
searching. This api is unit tested and works well.
We are currently modifying a java project to use a class of the same nature.
Is using CORBA to expose our existing c++ classes to the java application a
good idea? The other alternative is to re-implement this api in java. The
java project already has some speed issues (although they are not related
to the areas using this new api). Will using CORBA dramatically affect the
speed of this product?
Thanks in advance,
Chris Lehmann
Bjorn Abelli - 07 Jan 2004 22:57 GMT
"Chris Lehmann" wrote...
> We have a C++ api for manipulating MARC records
> (an electronic format for library records). This
[quoted text clipped - 6 lines]
> class of the same nature. Is using CORBA to expose our
> existing c++ classes to the java application a good idea?
My suggestion would be to look into how you can wrap your existing C++ API
in a Java-JNI-wrapper.
> The other alternative is to re-implement this api in java.
As I said above...
> The java project already has some speed issues (although
> they are not related to the areas using this new api). Will
> using CORBA dramatically affect the speed of this product?
It depends on in what environment you're actually implementing the overall
application.
In most cases the answer would be "yes", turning to CORBA will make the
speed worse.
CORBA's strength lies in the language- and platform-independence. If you
don't have both, there's in many cases more efficient solutions. If your
system is a single-platform system, I think you should look into JNI
instead.
But if there is a distributed system with parts scattered all over the
place, on different platforms and written in different languages, CORBA
could be an option to distribute the results from your C++ part, over the
network, to clients written in another language (not necessarily Java).
my 2c
Bjorn A
Michi Henning - 08 Jan 2004 14:11 GMT
> We are currently modifying a java project to use a class of the same nature.
> Is using CORBA to expose our existing c++ classes to the java application a
> good idea? The other alternative is to re-implement this api in java. The
> java project already has some speed issues (although they are not related
> to the areas using this new api). Will using CORBA dramatically affect the
> speed of this product?
I don't think it's possible to decide that from the information you provide.
The answer would very much depend on the style of C++ API and your
performance requirements. Off-hand, it doesn't strike me as a prime
candidate for CORBA (or any other middleware). Middleware's main
benefits are language and platform independence, plus ease of distribution.
You have a cross-language requirement, so that criterion is met. You don't
say whether there is a cross-platform requirement. (On the face of it, it
doesn't appear to be so, given that you have an existing C++ API that
is already written, and that Java is architecture/OS independent anyway.)
And you don't mention any distribution requirement. That's two down out
of three, so middleware doesn't appear to be the obvious way to go.
It would seem to be easier to call your C++ API from Java and not to
bother with middleware...
Cheers,
Michi.
--
Michi Henning Ph: +61 4 1118-2700
ZeroC, Inc. http://www.zeroc.com