Thursday, July 12, 2007

Spring or EJB?

With the ease and brevity of updating in one sentence clips via twitter, it becomes increasingly difficult to sit down and write my thoughts in blog form. That and the fact that the more I read other blogs and commentary about my industry, I feel less confident of my opinions.

Today's discussion is brought to you by some of the conversations I've been having at work. The team that I work on has been around building financial business solutions now for almost five years. We're a Java shop using Websphere, EJB, and Struts as an MVC. This “stack” serves us very well, but being of the opinion that we should always keep our eyes out for other technologies, I got on a Spring kick several months ago. Yes, I know that means that I've come to the Spring party late, and that many cutting edge folks have moved on to Guice. However, wanting to try out the whole DI thing, and having an aversion to the difficulty seen in testing EJBs and the weirdness that Websphere adds to the EJB mix, I got permission to try a project in Spring. Like many others that have tried the Spring Framework, I came to really enjoy it. It seems to me that the Spring Framework can do anything that I ask it to do in my small business domain. I don't feel the pain of EJB, and have really come to appreciate the flexibility that Spring MVC brings to web application development.

However, when it comes time to defend my love for the Spring Framework, I can't prove that it would always be preferable to EJB and Struts. It seems to me that EJB is a dying technology, at least trying to find a good set of propaganda for their use doesn't appear in a cursory Google search. Sure, there's some great stuff talked about with EJB 3, but that seems a bit off in the distance for my team – at least right now. In discussions with my co-workers, I'm left to argue testability, ease of development, and using the right tool for the right job. But when one looks at what the two solutions have to offer, I think that defining what the right tool is becomes somewhat ambiguous.

Sure there's some argument that EJB allows for code reuse, but isn't that what spring remoting is all about? I've also heard a bit about EJB clustering, and how that can lead to greater speed and efficiency with regard to n-tier server solutions, but can't you just cluster a set of servlet containers and get similar speed, efficiency and reliability?

I would really like to hear what an expert says about these technologies, and what the future holds for them. Specifically, how does one pick the right tool for the right job?

2 comments:

Sam said...

That sounds like an excellent Thesis.
Can you hear Grad School calling?

for IT the said...

I have read your blog its very attractive and impressive. I like it your blog.

Spring online training Spring online training Spring Hibernate online training Spring Hibernate online training Java online training

spring training in chennai spring hibernate training in chennai