Just code against JSP/Servlet instead of using Frameworks?

I have coded in Struts�and along the way, there were many similar web frameworks poped out in the industry, namely Spring MVC, WebWork, Tapestry and JSF.

I have noticed that new web frameworks pop out so very often in the Java web app scene � something like 1 in every 6 months or so ? I can�t help but feel that the frameworks are not �stable� enough to stay reasonably long in the industry. When a new framework is created, the author will often say something along these lines : �xxx was created out of my frustration with yyy�.

We all know there is a learning curve for each framework. And to be able to use a particular framework effectively, one really needs to understand not only the mechanics of how it works but also the reasoning/architecture behind its design. This takes time. We often hear that Struts have a steep learning curve.

This fast changing and volatile framework scene made me think twice and think hard about learning and programming in a new framework.

Question : Are ALL of the commonly used web frameworks base on JSP/Servlet technology?

If the answer to the question above is true, it means the common denominator is the JSP/Servlet technology. And the one that has not changed much (relatively) in the volatile framework scene is again, JSP/Servlet technology.

If this is the case, I think it is best for those building relatively simple webapp to just code against the JSP/Servlet API/specification instead of using any of the frameworks. The knowledge and experience gained coding against JSP/Servlet is much more valuable in a sense that it is useful much longer�and they will be able to pick up and appreciate new frameworks much better, if they choose to do so later.

We know Java/JSP/Servlet is well accepted in the mega mission critical web app applications used by banks, airlines and governments. But sadly, it is not as successful as PHP when comes to simpler web apps for the smaller industries. My guess is because Java is �plagued� with the �framework obsessed� problem while PHP just keep itself simple and don�t give its developers �framework headaches�. (I am a Java programmer all along and not really a PHP fan.)

Even for massively complex web apps, I use a tiny-footprint front controller -- way too lightweight to even be thought of as a framework -- and the facilities of Servlets and JSP 2.0. And I get by just fine.

I think a lot of people think that in order to create a solid Model 2 web application that one of the massive frameworks must be employed. I disagree. [ September 12, 2006: Message edited by: Bear Bibeault ]

Personally, I use framworks (Mostly Spring...) because it gets a lot of the lower level stuff out of the way. I understand Servlets and JSP etc, but deadlines are deadlines. Using Spring for me saves a lot of time when it comes to writing controllers. I can free my time for writing the logic behind the business model instead of worrying about things being parsed correctly (I could just use a validator in Spring). If the webapp I'm coding needs some extreme maneuverability I may drop down to the Servlet level, but usually using a framework helps me get to the business logic and model in a more direct manner.

If you know what you are doing, you can select the appropriate framework for the job. Recently, I used Click framework for a relatively simple web app and it works wonderfully. It's definitely an overhead in the first place to learn the new framework, but it pays off afterwards if you can master when and where to use it.