Whats wrong with JEE EJBs?
What’s wrong with Jee EJB technology? Well the promise of marketing people was (as always?): reduced time to market, effortless development, reduced dependency on hard to find developer skill sets (abstract from hardcore technology), say overall increase in developer productivity! This all never came true with EJB at least not at that level it was promised ;)
What is exactly problematic
I try to narrow it to one idea where it all problematic:
The abstractions from the network hasn’t worked
Myself and colleagues of my in other projects, in our discussions, we all agree that remote EJBs are a pain. It looks too me, that the whole idea to abstract from the network and pretend that network is not there and can program like your system is not distributed at all, has failed. More I even tend to generalize and say: Abstract away from fact of the distribution is harder and probably not possibly at all with currently existing networks (with quantum networks maybe ;)) Designing JEE abstraction is not helping and leads to fragile and hard to maintain systems sometimes these got accidentally tight coupled.
I found some discussion on the internet that also see that. Basically found out that Jim Waldo, the chief architect of RMI (The network foundation in JEE), has advocated explicit distributed computing. Hi is probably not the first but regarding EJBs the prominent source, should have sayed that
local-remote transparency is a myth, so don’t try and pretend the network doesn’t exist in your software design.
So it better idea to actually deal with the issue of distribution properly explicitly.
Next thing is JEE advocated not explicit Transaction handling. This is potentially same category, but I tend to say this is less brittle, at least within my project so far. At least you have more control of it.
EJB the good parts
Actually it not all mess in EJB. The recent annotation bases JEE releases matured and improved some conceptions. Last but not least it still better than work with CORBA ;)