David Heinemeier Hansson, creator of the Ruby on Rails framework, has written an essay on what he sees as flagging enthusiasm for Java and specifically the J2EE stack:
As an industry, we should merely realize that the sledgehammer is grossly over-used. Reserve its heavy-handed might to those cases where its truly needed.
Hansson quotes Dave Thomas on overuse of J2EE:
Using the full might of a J2EE stack to write a small stand-alone application is using a sledgehammer to crack a nut. But I keep hearing the sound of nuts being pulverized as developers seem to think that using anything other than J2EE is somehow unprofessional.
Much of the bloat and complexity in J2EE is due to EJBs. And much of that complexity is for EJB features that ought to be avoided anyway: Container Managed Persistence? Nope. Entity beans? No way. Stateful Session Beans? Negative. EJB Query Language? Nyet. Remote EJBs? Fuggetaboutit.
So what’s left? Stateless Session Beans using local interfaces. Is that enough to justify using EJBs? To quote EJB’s 101 Damnations:
The only justification for EJB is on large projects, yet EJB makes those large projects larger still, and yet more unwieldy.
Will EJB 3.0 improve the situation? Reports on JBoss support for EJB 3.0 are that it does simplify development and deployment. But there are still caveats. EJB 3.0 retains the bloat of earlier versions. And the ability to run code outside of the EJB container requires using an “embeddable” EJB container. Is all of this complexity really worth the effort?
Bruce Tate has written extensively on Java and J2EE. In his recent book Beyond Java, he argues that Java will eventually lose its dominance in the IT market. He believes that a lot of web developers will move from Java to Ruby on Rails.
Tate hasn’t completely abandoned Java. As he wrote in his essay Don’t Make me Eat the Elephant Again, he’s still a strong proponent of the Spring framework rather than EJBs for Java projects. But he sees Java’s dominance flagging. As he described in a recent interview:
Keep in mind that I’m suggesting Java will be dead like COBOL, not dead like Elvis. For the hardest enterprise problems, Java is safe for at least three to five years — things like sophisticated and scalable object relational mapping, two phased commit, and the like. Java is being threatened in a much more common, and I think important space: how do you build a simple web application that fronts a relational database? Especially a database schema that you control? This industry solves this particular problem over and over, and Java’s not very good at it. I think we’ll see some significant movement to Ruby on Rails this year.
Java is the new COBOL? Ouch.
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.