For a distributed computing project starting today, with 0 legacy components, are there any good reasons to look into CORBA?
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.
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)
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).
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.
There are still situations where CORBA could be a good answer:
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.
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.)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With