Summary
In a recent blog post, Matt Raible asks what thought process developers and teams go through when choosing a JVM-based application framework for a new project. Raible believes that a good starting point when picking a framework is to determine what broader category an application fits in.
Advertisement
Developers have many applications frameworks to choose from that target the JVM. With that richness of choice comes the question of how a project lead or team decides which framework to choose for a new project.
In his recent blog post, Choosing a JVM Web Framework, Matt Raible suggests that there are three broad application categories, and the choice of framework should begin by determining which of these categories the new application fits in:
I think there's 3 types of web applications you can develop:
Internal, more desktop-like applications that are stateful
Media-rich applications that require a RIA framework like Flex
Once you've decided on which of these you're developing, it's much easier to narrow down the choices:
Struts 2, Spring MVC, Stripes
JSF, Tapestry, Wicket
GWT, Flex, OpenLaszlo
Even in the case of brand new applications, Raible points out that there are many additional considerations, such as the need to access a legacy data source:
If you want to keep your backend and all its logic, does it make sense to use something like Seam, Grails, JRuby on Rails or even AppFuse? Probably not-all their wizbang features and CRUD generation doesn't mean much if all you're using is the web framework.
An additional consideration is the reliance on JavaScript by many frameworks. Raible points out that the question is the extent the various frameworks depend on JavaScript in their current implementation. A high degree of dependence of JavaScript would prevent progressive enhancement techniques to be used in the project:
If your application requires support for non-JavaScript browsers (for 508 compliance), then GWT and JSF can be easily eliminated. I know that there are many claims that JSF doesn't require JavaScript, but I've yet to see a real-world application developed with JSF that expects JavaScript to be turned off.
What are your criteria when choosing a JVM Web framework? Do you believe that the application categorization Raible outlines is helpful in making the choice, or are there better ways to narrow down the options?