CORBA and EJB's seem to basically do the same thing to me. To me it seems that the purpose of both of these architectures is to fill the middle tier area. Is this true? If so or if not, can you explain why and what the specific funtion of each of these architectures has?

Jesper Andersen

This is a common misconception. CORBA and EJB are entirely different beasts, solving different problems.

CORBA is a networking protocol for building distributed applications. It will provide you with a lookup service, and a nice abstraction for sending objects across a network connection, but that's it.

EJB is a application server designed to take over significant portions of your code, including thread management, transactions, caching, and database mapping. It so happens that EJB is also designed to be distributed, and therefor is built using CORBA to lookup the services available from the application server.

There is a CORBA specifiction for a application server called CCM (CORBA Component Model) that is a mirror image of the EJB spec (it, in fact, demands that any Java implementation of the CCM spec. have full EJB support) but this specification doesn't appear to be well-supported yet.