Is anybody aware of any article comparing the different CORBA IDL
mappings? I would be specially interested in a comparison of the
advantages, disadvantages of the C++, Java and Python mappings.
Thanks,
Diego
No article but ...
First you need to ask yourself what kind of programming language
that your application requires. C++, Java and Python all have
pros and cons that I won't recite here for fear of provoking a
language war :-)
Now comparing the mappings:
The C++ mapping was designed to give ORB vendors lots of scope for
optimization. Not surprisingly, the fastest ORBs around are C++
ORBs (though C++ ORB does not imply fast!!). This comes at a cost.
The C++ mapping is not very user friendly. It tends to be complex
and "low level"; e.g. you really have to pay attention to storage
management. It also doesn't make use of some of the nicer features
of modern C++; e.g. STL ... mainly for historical reasons. In
short, writing portable, reliable code takes a lot of knowledge and
discipline.
The Java mapping was designed with code portability as a major
design goal. It is simple, clean and easy to use. But it won't run
as fast as C++. [But then again, speed is rarely the most important
goal.] Writing portable code is a breeze. Use POA and avoid vendor
specific ORB extensions and you'll be fine.
The Python mapping is apparently clean, simple and easy to use.
Like other aspects of the language, it is largely dynamically type
checked. There are two implementations (fnorb and ILU), and I
don't know about portability ... perhaps python people may comment.
-- Steve
Python is far and away the nicest environment for short clients and
relatively straight-forward servers. The CORBA mapping is designed
for Python, instead of aping the C++ mapping. The support for
multiple inheritance in Python matches the CORBA object system nicely.
Scripting is a breeze, and debugging small-to-medium servers is also
charmingly simple, given the interpreter's read-eval-print loop. We
have built a large (dozens of interconnected programs all processing
simultaneously, all up for weeks at a time) production (well, as close
as PARC gets to 'production') system using ILU's Python mapping. It
works well. But then we've been working with Python and CORBA
together here at PARC since 1992.
Java is a reasonable language to work in, particularly for projects
that have many people modifying the same code base. The CORBA mapping
for Java has rough edges, but generally works well, and is simple to
use. I've written a number of client programs in Java -- I tend to
write the servers in Python or Common Lisp. But that's mainly
exasperation with the limitations of Java (no environment variables,
no interpreter REPL, no multiple inheritance, no native-code+Java
debuggers, no scripting -- most of which you get in Python or Common
Lisp), rather than a reflection on the CORBA mapping for it.
We finally have a CORBA C++ mapping working for ILU, and I've been
writing a few programs in it. I've been surprised at how nice it is
to work with once you have a C++ that supports both namespaces and
exceptions, especially in comparison to the C mapping, which I also
have a great deal of experience with. It's fast, it's fixed (no
interpreter to get in the way), debuggers generally work, C++
inheritance works well, exceptions map well. The mapping is still a
bit too complex for a lot of C++ compilers, but a larger number of
influential ones seem to handle it OK. Notable here is egcs-1.1,
which is widely used in the GNU and Linux community. There are a few
clumsy places in the C++ mapping, caused by a desire to be compatible
with C (and the C mapping is not particularly well thought out, due to
lack of CORBA experience at the time, I think).
In summary, I guess that I'd say all of the mappings seem to work well
with the programming languages involved -- none overly strains the
programmer experienced with that language.
Bill
--
Bill Janssen <jan...@parc.xerox.com> (650) 812-4763 FAX: (650) 812-4777
Xerox Palo Alto Research Center, 3333 Coyote Hill Rd, Palo Alto, CA 94304
URL: ftp://ftp.parc.xerox.com/pub/ilu/misc/janssen.html
In general I've found that the mappings for each of those languages
stay pretty much true to the language itself (which is really the most
you can ask from a mapping). C++ is used by programmers who want
complete control, and don't mind getting their hands dirty along the
way. Likewise, the C++ mapping is fast and tight, but you will really
get your hands dirty with memory management.
Java programmers are more the no-fuss no-muss type who prefer to get
into the code than muck around managing memory - for them speed is
generally not the biggest issue. Likewise, Java's mapping
straightforward and very easy to use, but probably not as compact or
fast as C++'s.
I understand that Python's is also very well melded with the language
as well although I know Python only cursorily.
The only exception to any of this is the fact that the C++ mapping
completely ignores the STL, which can be _really_ annoying sometimes.
There was an earlier thread in this newsgroup that discussed this issue
at some length, if you would like to know more about the reasons the
STL was left out of the C++ mapping.
Hope this helps!
Regards,
Ravi.
--
/ ___/ / ravindranath.s.desaiXjci.com
_ / / /
\ / / /
__/ ___/ __/
Sent via Deja.com http://www.deja.com/
Share what you know. Learn what you don't.
I am trying build a CORBA IDL interface, which can
pass by exceptions. I am using C++ on the server
and Java on the Client side.
When a user defined error occurs on the server
side, I throw an errorclass, which is defined as
an exceptions in the IDL code. The error should be
caught on the client side.
At the moment an occurence of a user defined
errorclass smashes down the server.
Are there any important things I have to consider
while implementing the exception on the server
and/or client side ?
How can I pass by an errormessage string from the
server to the client by using exceptions ?
Adrian
> The only exception to any of this is the fact that the C++ mapping
> completely ignores the STL, which can be _really_ annoying
> sometimes.
Yep.
> There was an earlier thread in this newsgroup that discussed this
> issue at some length, if you would like to know more about the
> reasons the STL was left out of the C++ mapping.
Here's the thread at Deja News (in Deja Classic format):
http://www.deja.com/=dnc/viewthread.xp?search=thread&recnum=%3cywr4si...@ioka.cs.utah.edu%3e%231/1&AN=505401366&svcclass=dnserver&frpage=getdoc.xp
Note also my proposal for a partial solution from last autumn:
http://www.deja.com/=dnc/getdoc.xp?AN=407543879
Some success stories can be found at the OMG web site
http://www.omg.org/. BroadVision has a product called One-to-One that
uses Orbix, one of the most widely used commercial ORBs. It is being
used as the core infrastructure a local bank here relies upon for its
Internet banking services. More information about the product is
available at http://www.broadvision.com/. I guess there are probably
tons of other applications that have been successfully developed and
deployed in other companies. As for the advantages, others in this
newsgroup might be able to provide better answers. The OMG web site
might have some informative white papers too.
Best wishes.
Hann Wei
hi
i too would like to know the advantages and disadvantages of
corba so if you find any message please post it to me.
"Keyur Chudgar" <kchu...@hotmail.com> wrote:
>
>Hi,
>Is anybody know the advantages for using the CORBA. Any
>companies implementing it and any example application of CORBA?
>thanks,
>Keyur.
>
The OMG web site is always a good starting point. They also have case
studies, etc. Try http://www.omg.org/. In the UK, Eric Leach would be
the OMG rep to talk to.
If you want some examples where CORBA has been used with other
technologies, suh as OODBs, there are one or two papers in the book I
co-edited:
http://www.soi.city.ac.uk/~akmal/html.dir/book.html
The paper by Steve Talbot discusses the HOODINI project at Nomura,
where they used ObjectStore and middleware such as CORBA and
Rendezvous. There is another paper by a couple of guys at Cumulus that
talk about OODB/CORBA integration (at a high-level).
But the OMG is always a good place to start - I'd look there first.
Regards,
akmal
--
akmal at bigfoot dot com | www.bigfoot.com/~akmal/