Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is CORBA legacy?

Tags:

corba

For a distributed computing project starting today, with 0 legacy components, are there any good reasons to look into CORBA?

like image 619
flybywire Avatar asked Aug 04 '09 07:08

flybywire


People also ask

Is CORBA outdated?

The short: Yes, sadly(*), CORBA is outdated, as in: No decent . NET implementation. The existing C++ binding is ugly, although there does exist a new C++11 binding.

Is CORBA a programming language?

CORBA is not associated with a particular programming language, and any language with a CORBA binding can be used to call and implement CORBA objects. Objects are described in a syntax called Interface Definition Language (IDL). CORBA includes four components: Object Request Broker (ORB)

Where is CORBA used?

CORBA might be used to build a language-independent, O/S-independent distributed system. For example, C++ on Linux developers could build a common distributed system with Java on Windows developers. IDL describes the interfaces that bind the two implementations over a common substrate (CORBA).

What is Java CORBA?

Common Object Request Broker Architecture (CORBA) technology is the open standard for heterogeneous computing. CORBA complements the Java™ platform by providing a distributed object framework, services to support that framework, and interoperability with other languages.


2 Answers

There are still situations where CORBA could be a good answer:

  • when you are building a distributed system involving multiple programming languages and multiple platforms,
  • when your system entails sending complex data structures ... and SOAP doesn't cut it,
  • when you have high rates of messaging ... and HTTP doesn't cut it, or
  • when you have to interact with existing CORBA clients and/or services.

But having said that, there are alternatives that do what CORBA does, only better ... or so they claim. For example ZeroC's ICE

EDIT @fnieto chimes in to say (or imply) that ICE is not free, but TAO is.

This is inaccurate and misleading.

  1. ICE is GPL'ed software, and is available for free download. You only needed to pay for ICE if you / your company are not prepared to live with the terms of the GPL. (Or if you need support.)
  2. I used ICE as an example of an alternative to CORBA. TAO is CORBA. The ICE authors make a credible case as to why they can get better performance by not being CORBA compliant.
  3. TAO is by no means the only free / open-source CORBA implementation. I can think of 3 others, off the top of my head.

The down-side of ICE is lack of interoperability with CORBA middleware stacks, but in my experience interoperability of different CORBA implementations could also be problematic. (Things may have improved in that area ... but I haven't done any CORBA work since ~2002, so I'm a bit out of touch.)

like image 153
Stephen C Avatar answered Sep 20 '22 08:09

Stephen C


From the existing answers, this gets into almost a religious topic. One can look at CORBA the same way as the half-empty/half-full glass: on one hand, CORBA is dated legacy cruft, and on the other hand it's relatively stable with several implementations available and the "devil you know".

In my line of work, I see CORBA deployed in embedded systems, real-time systems (CORBA has RT extensions), and the like. There aren't many alternatives AFAIK.

Another "advantage" of CORBA is the availability of several high-quality open source implementations, e.g., TAO, MICO, JacORB, etc., with differing licensing and support models. There are also still commercial editions available.

With regard to "most" CORBA apps being implemented in Java--that's not the case in my experience. While the language mapping for CORBA to Java is one of the nicest there is (which may not be saying much), Java already has a very nice distributed computing model that offers richness beyond CORBA, and all-Java apps use that more than CORBA. The vast majority of CORBA development I've seen is in C++ (which is also the worst language mapping).

Finally, CORBA offers standardized asynchronous client-side invocations in the form of AMI, but never offered asynchronous handling on the server side. TAO offers a non-standard server-side implementation called AMH.

like image 21
Chris Cleeland Avatar answered Sep 22 '22 08:09

Chris Cleeland