[omniORB] CORBA benefits over EJB model

Zed Shaw zedshaw@killnine.net
Thu, 7 Jun 2001 23:42:42 +0000


Ben,

Here's what I see as the primary advantages of CORBA over EJB:

1)  CORBA works with more than just Java.  EJB can use IIOP, but while I can 
get an EJB client to talk to a CORBA server, I can't get a CORBA client to 
talk to an EJB server.  At least, I've never done it (and dammit I tried real 
hard).
2)  EJB containers are typically much slower than custom CORBA servers, and 
you still end up using all the distributed programming tricks you learned 
from CORBA when you write EJBs.   The big myth of EJB programming is that you 
don't have to worry about scalability issues since the container does it for 
you.  The truth is that you still do because most containers blow.
3)  EJB isn't quite as flexible as CORBA (see my EJB advantages later for the 
downside to this).  With CORBA you can code just about any type of servant 
object you want, with EJB you are limited to whatever the container supports, 
and only a few models with EJB itself (although, these are pretty flexible in 
their own right).
4)  EJB containers are still fairly new, and you could easily get locked into 
something that evaporates a few years later.  Many of your CORBA ORBs that 
are available have been around for a long time and have a better track record.
5)  Finally, there are more services available with CORBA 3.0, and they are 
well defined.  This is a debatable one though, since most vendors can't seem 
to get these right.

Now, EJB I've found, has the following advantages:
1)  CORBA is too damn complicated (that's why it's flexible) compared to EJB. 
 You can whip up an EJB system in no time.  Throw in all the other nice stuff 
like Servlets, JSP, JMS and any other Java TLA you can find and you've got 
some nice gear for your distribute apps.
2)  (I'm going to get in trouble for this one :-).  C++ requires "Guru" 
status just to code simple CORBA servers.  EJB requires "coding moron" status 
even for advanced stuff.
3)  EJB can talk to CORBA (although, only reliably on the EJB client side) 
but not the other way around.  This means that you can code all your clients 
in EJB, and then the servers that must be fast can be in CORBA.  This is an 
installation nightmare, but works well enough.
4)  Java is about 10 times easier to code than C++ for most people.  Like I 
said, you don't have to know much to write a Java program (which why most 
people who like being called "smart" like using C++ and C and FORTRAN :-).

There's more, but these are the only ones I can think of right now.

Now, my question to you is:  Why the "EJB vs. CORBA" attitude?  These 
technologies were designed to compliment eachother.  Let your monkeys use the 
nice Java to work up the system and get the design right and familiar.  Then, 
figure out what MUST run fast and what MUST be accessed from any language and 
any computer, and then re-code those parts in CORBA and a faster language 
(like C++).  This lets you get a design/implementation out fast that works 
and that everyone can understand, but still gives you the chance to work that 
distributed computing black magic to make it robust and scalable.  This is 
why EJB can talk to CORBA.

Most likely, these EJB fans are just looking to increase their job market 
potential down the road.  Especially if they are saying CORBA is old (funny, 
EJB uses RMI-IIOP for communication) and they want to learn the new EJB 
stuff.  They've been scared by the dot-com meltdown and want a resume stuffer 
that looks hot so that they can still get jobs after the unspoken industry 
age cut-off of 40 years old.

Just my analysis.  Keep on working on them, but don't be pig-headed.  You can 
probably get a better system if you use both technologies.

Zed A. Shaw


On Wednesday 06 June 2001 17:02, you wrote:
> I know it is a generic CORBA question rather than specifically
> omniORB, but I know you lot have experience of using CORBA....
>
> Can anyone think of any practical advantages to starting a new product
> from scratch using CORBA rather than EJBs.  The reason is that we are
> about to embark on a 3-tier application and I have a gut feeling that
> CORBA will be more performant in the long run.  I need to convince the
> rest of the team that CORBA is the way to go, but I'm coming up
> against "CORBA is old technology now" arguments.
>
> We have no need to link to legacy systems, so there's no _physical_
> reason that we couldn't write everything using Java rather than C++.
> My benchmark tests have shown that mathematical calulation performance
> is better using C++ than Java, but need more ammunition!  Please
> help...
>
>
> Best regards,
> Ben.
> Mercia Software Ltd.
> Mercia House
> Ashted Lock
> Aston Science Park
> Birmingham B7 4AZ, UK
> Registered Number: 1868855 (Cardiff)
> Tel: 44 (0)121 359 5096
> Fax: 44 (0)121 359 0375
> Web Site: http://www.mercia.com