Apache Struts is the most popular Java web application framework till date. However, newer developments have rendered it both obsolete and inadequate. There are a few options that are trying to replace it but there is no clear winner yet! Who do you think is leading and worthy of the position? Which framework should you use today if you are a Java web application developer?
Does that mean we should adopt one of the frameworks like Apache Shale that work well with JSF? Does it mean we should use a remoting library with Servlets only, as far as the Java part of the web application goes? Or does it mean we should use a framework that does both - i.e. JBoss Seam?
Before we answer these questions, let’s take a quick diversion to understand what Sun is saying. Unfortunately Sun has no clear message at this time. It has three strategies and it is saying all three of them at the same time. These are :
1. JSF - server side component based specification that enhances the earlier Servlets and JSF model
2. Swing - VM based solution for the web. Should have been a leader of the rich age since it started things 10 years back but unfortunately is a laggard. Seems like Swing Application Framework is touted as a savior to revive adoption of Swing. I don’t think its going to cut much ice.
3. JavaFX - its all news and little real option yet. This is the answer to the rich web frameworks. It encompasses the mobile, the web and the desktop interfaces. Time will only tell what becomes of it! My opinion is that Sun excited developers much too early. So by the time developers are disappointed and leave the camp, it may actually be a fantastic option.
JBoss Seam may not be the 100% answer and may not reach the level of adoption that Apache Struts did, but its winning the current round and is certain to lead the way unless newer options arise.
I am personally interested in JBoss Seam and am so inspired that I have presented on the topic at a few Java user groups. I am also writing a book on the topic. However, I am not trying to evangelize here though and would be happy to know of alternatives and discuss why those may be better and worse than what I propose.