There is an interesting post on JavaLobby right now asking what are the options for building a new Java Enterprise application.
This is an interesting question, because for many already out in the trenches working on building Enterprise applications with Java, this is like asking, “if I had to do it all again, what would I do differently?”
The general consenus from what I’m reading is that more and more people are recommending the Spring Framework approach, and even to avoid EJBs entirely, and use Spring declaritive transaction support instead. This is a viable alternative, and although I haven’t used this part of Spring yet it would be high on my list of things to consider.
The thing that distubs me though is over the past years there has been huge investment in Application Server technology by BEA, IBM, and less so by Oracle, and there is a lot of benefit to be gained in this area. JBoss of course are leveraging most of this investment by building their own application server with most of the same features, so you can get the greatest bang for your buck by going with a JBoss solution. I am not sure if I had to build a highly available, scalable, robust application, that I would not use an application server. I think that’s a given – this is what these servers excel at, and to ignore them I think would be shooting yourself in the foot.
However, Spring as a framework offers a lot of flexibility and a common development approach across the whole application. I would chose to use Spring in combination with Session beans, and a Spring DAO approach for my Data Access layer, most likely with Hibernate.
Gavin King has also added his 2c to the argument, and is also recommending not to ignore EJB3.0 – I think EJB3.0 will gain a lot of ground in the next couple of years – as soon as the big players (IBM and BEA) fully adopt it and start rolling out betas with support. JBoss is of course well ahead of the curve in this area, havin had their EJB3.0 support already available for months.