Based in Finland — with offices in Germany and San Jose — Vaadin tends to be a more familiar name in European circles than in North American ones, which is unfortunate for the Java community.
If you want a pure, Java-based development environment that can create a browser-based experience that rivals frameworks like Angular and React, give Vaadin a try.
2. Spring MVC
Spring MVC is a simple and elegant Java-based server-side web development framework. It’s able to manage application states and backend resources through Java component coding. At the same time, Spring allows the HTML and other markup that’s sent to clients to be generated through popular templating engines such as Thymeleaf, FreeMarker and Mustache.
If you already use the Spring IoC container or Spring Boot, Spring MVC is a logical choice as a Java-based, server-side rendering engine.
3. JavaServer Faces
JavaServer Faces (JSF) has been a part of the Java EE specification since the release of JSF 1.2 in 2006. JSF separates itself from other Java-based web application frameworks on its component-based approach to UI development.
With JSF, a developer is encouraged to write independent, self-contained and reusable components that can be easily inserted into a web page and subsequently interact with other JSF components.
JSF also includes a powerful and easy-to-use templating engine called
The framework has spawned several popular, JSF-based libraries because of this push toward componentization, interoperability and modularity, including RichFaces, PrimeFaces and ICEFaces. No development shop should use JSF alone. Instead, build up from one of these existing libraries to make JSF development significantly easier and help teams avoid many of the drawbacks to JSF out of the box.
Although JSF defines itself as a component-based framework, it does implement a front-end controller that allows it to be used in a manner like the way other MVC-based Java web frameworks. While I wouldn’t necessarily recommend this usage, it is possible, albeit very different from its intended use.
4. Java’s MVC web framework
Java’s MVC specification — which came into existence when JSR-371 was ratified in December 2019 — is a very simple Java web framework that embraces the well-established model-view-controller pattern to develop web applications, while at the same time builds heavily upon JAX-RS REST APIs. This approach is in contrast to other Java web frameworks that make the Servlet and JSP API the core foundation upon which they build.
MVC’s key sweet spot is microservices and container-based applications built in Java. Most microservices need some form of UI, whether it’s for interactivity with clients or just a maintenance dashboard for administrators. Since most Java-based microservices already use JAX-RS, Java’s new MVC web framework is a natural fit for those who want to complement their microservices with a UI as well.
5. Servlets and JSPs
Don’t make things more complicated than they have to be.
The Servlet and JSP API exists to make Java-based server-side rendering possible. The Servlet and JSP are incredibly simple ways to handle an incoming request, and to develop HTML that gets displayed inside a client’s web browser, respectively.
All the existing Java-based web frameworks simply build on top of the Servlet and JSP API. Essentially, there’s nothing you can do with Spring MVC or JSF that you can’t do on your own with the Servlet and JSP API and a little bit of programming time invested into it. Sometimes, simplicity is best.
Best Java web frameworks in 2020
In review, here are best Java frameworks for web application development that you should be contemplating if you want to stick with server-side rendering of your browser based UIs:
- Spring MVC
- JavaServer Faces (JSF)
- Java’s new MVC 1.0 web framework
- Servlets and JSPs
For those who want to maintain a server-side grip on web application development, these are the Java web application frameworks you should be looking at in 2020.