The following article shows a categorization of Java / JVM web-frameworks, considering different types of web applications. The intention is to give an overview, not to start a flame war.
An uncountable number of web-frameworks exists in the Java environment. If you visit IT conferences or google for web-framework comparisons, almost always you find a discussion about the advantages and disadvantages. Often, a flame war is the consequence, each guy likes or dislikes a specific framework. Thus, a neutral comparison, which helps to choose the one which fits best for your requirements, is rare.
In the following, I try to compare web-frameworks in a more neutral way. I categorize the most important web-frameworks in the Java / JVM environment (i. e. frameworks which generate bytecode for the JVM) by classifying them to different types of web applications.
My experiences from discussions with colleagues and customers showed me, that the consequence is a neutral overview without any flame war or framework-bashing. I wonder if you think so, too…
Types of Web Applications
Different types of web applications exist. They have different sizes. Thus, the time to develop them is varying, too. The following chart shows the types of web applications:
Classical Web Application
A classical web application (e. g. Amazon) is server-centric and uses HTML user interfaces with multi-page structure, bookmarking and forwards / backwards navigation. It is well-known since the beginning of the internet age. In the course of time, AJAX was integrated. Thus, just the changed part of the site has to be refreshed. A plugin is not necessary, but therefore the user inferface must be adjusted explicitly for every web browser.
Rich Internet Application (RIA)
A Rich Internet Application (e. g. Pokerstars) provides a modern looking web application with animations, effects and multimedia features. The web application
is hardly recognizable as web application, there is no HTML user interface with forms, drop down boxes or tables. Typical features of web browsers such as bookmarking or forwards / backwards navigation are usually missing. A plugin must be installed required (e. g. Java Runtime Environment or Adobe Flash Player).
The Rich Client mixes the characteristics of classical web applications and RIAs. The web application is client-centric (i. e. the user interface is loaded to client at the start of the application). The view uses HTML widgets, thus no plugin is required. Contrary to RIAs, the goal of a Rich Client is NOT to offer a modern looking user interface, but to improve the usability of an already widespread and accepted view.
A CRUD Client complies to a classical web application. However, it primarily offers functionalities to create, read, update and delete data.
The web-frameworks for CRUD clients have a conceptual difference: Instead of just realizing the user interface, the whole application (database, application logic and user interface) is realized at once. Important characteristics of these frameworks are “Convention over Configuration” and “Code-Generation”. The main goal is high productivity, thus often “modern” JVM languages such as Groovy or Scala are used.
A Portal offers the possibility to present different applications such as standard software, individual components or websites in a consistent way. A Portal Server such as Liferay Portal must be used in combination with one or more web-frameworks.