Java 9 Modules
Friday, 22 May 2020
Any framework is one of the tools that help to develop software solutions faster and better.
The basic principle of a framework is not having to reinvent the wheel. Frameworks allow developers to make their life easier and to help them focus on business logic rather than worrying about common pieces of code.
And since Java is not one of the simplest programming languages, frameworks are definitely a useful tool here.
In this article, we’ve gathered some of the most spread and worthwhile frameworks which can help you in Java app development.
This is the absolute leader among other Java frameworks. Knowledge of Spring is one of the most common requirements for a Java developer position. The are many reasons for that, but the main one is universality.
Spring is a powerful, lightweight, and most popular framework for Java EE. As the developers themselves say:
Spring makes Java simple, modern, productive, reactive, cloud-ready. It is known for its dependency injection and aspect-oriented programming features. In fact, it is a container of frameworks that allow you to perform tasks of any complexity – from working with the databases to testing procedures.
Developers are much more likely to choose Spring MVC and Spring Boot. The biggest advantage of these frameworks is the ability to detach other modules and focus on one due to inversion of control (IoC).
To check the popularity of each framework, Google Trends was used.
Here are the statistics of Spring popularity for the last 5 years:
Spring popularity had periods of decline, but the overall picture shows it is growing year after year.
As already mentioned, Spring has a very active community and 37K of stars on Github.
Play is another lightweight framework that most developers enjoy. It allows you to build web applications with Java & Scala. It was designed for modern mobile and web applications’ needs.
Play is based on stateless, web-friendly, and lightweight architecture. The main distinguishing features include high speed, quality, and good scalability. It is built on Akka and gives agility to think in the more high-level way – not what to do with Data element, but how to handle a stream of things.
The framework has asynchronous APIs that allow you to scale applications without introducing additional resources. This framework provides excellent support for various microservice patterns.
According to Google Trends, the framework had a decline in 2016- 2018. Now its popularity is growing again:
Github stars: 11,6K. The framework is used by such major companies as LinkedIn, Samsung, The Guardian, Verizon and others, which confirms its reliability.
Spark Framework is a microframework and domain-specific language for the Java and Kotlin programming languages. Kotlin also runs on JVM, and it’s 100% interoperable with Java. With Spark, you can painlessly develop web applications, microservices, and REST APIs.
In fact, you can get the Spark framework up and running in just a few minutes. By default, it runs on the Jetty web server that is embedded into the framework. However, you can use it with other Java web servers as well.
Spark had a gradual popularity jump somewhere between 2016 and 2018. Now the interest in the framework is a bit lower:
Github stars: 8,8K. Spark is used by such companies as Arquillian, Apache, Asana, Playlife.
Jhipster is one of the latest Java frameworks. It was released in 2013. Jhipster integrates Spring Boot, Angular, and React into one large framework. It allows you to build a modern Java-based web application easily.
Spring Boot, built into the framework, will allow you to develop applications based on the Spring. Besides Angular and React, JHipster also contains Bootstrap. This framework allows developers to choose between two types of architecture: monolithic and microservice. In the first case, frontend and backend are integrated into one application, in the second case – they are separated.
By the way, JHipster is used by such brands as Adobe, Siemens, Bosch, HBO, and Google.
According to Google, the peak of JHipster popularity was in 2018 and it begins to decrease slowly:
Github stars are close to the Play: 16,2K. Companies using JHipster: Adobe, CGI, BOSCH, HBO, Siemens, and others.
Blade is a lightweight Java 8+ MVC framework. When we talk about the lightness of Blade, we mean the size of its source code, which does not exceed 500KB.
This is a simple framework with a RESTful-style interface routing. It belongs to a few Java frameworks which have no invasive interceptors. Its most striking advantage is the ability to create web applications quickly.
To use Blade, you need to create a regular Maven project. Blade provides the modularity support Java 9 has. It also supports quite many Java web components.
The overall Google stats show the popularity of Blade is gradually getting up:
Github stars: 5,3K.
While talking about the best Java web frameworks, Hibernate can’t be ignored.
Hibernate is an ORM (Object/Relational Mapping) framework. It allows you to write queries to the database server not in SQL, but in Java, which changes the usual look at the databases in general.
Despite the fact that Hibernate is not a full-fledged framework, it allows you to easily convert information for various databases. This feature also simplifies scaling, regardless of the application size and the number of its users. In general, this framework can be described as fast, powerful, easily scalable, and customizable.
It is free software distributed under the public 2.1 License of GNU Lesser General.
Looking at the graph below we see the Hibernate popularity has been lowering during these 5 years:
MyBatis is a mapping framework for programming in Java. It simplifies the process of linking your Java application with an SQL database: it acts as a middleware between them.
Typically, you will need the Java Database Connectivity API to connect your application to a relational database. MyBatis simplifies the process. It gives developers the ability to perform basic SQL operations using only a few lines of code.
MyBatis can be compared with the Hibernate framework. They both represent a kind of bridge between the application and the database. The only difference is that MyBatis does not map Java objects to a relational database.
According to Google, interest in the framework is growing little by little:
Github star rating: 13,6K.
Struts is an open-source MVC (Model-View-Controller) framework for creating enterprise-level Java web applications. The initial Struts framework (Struts 1.x) was rebuilt in 2007 when it was merged with the WebWork framework. Struts 1.x and Struts 2.x are not interchangeable, as there are important differences between them. You can download both from the Struts’ Releases page.
The main advantage of the framework is its portable plugins, which are JAR packages. Hibernate and Spring plugins, in this case, can be used for object-relational mapping and dependency injection, respectively. This framework also helps to reduce overall development time by successfully organizing Java, JSP, and Action classes.
Google shows the Struts popularity has its peak in 2016-2018, and now it starts to decline slowly:
Github rating is not high: 1k stars. Struts is used by Synopsys, ExpertIO, Nsys Design Systems, and other companies.
Vaadin is an open-source client-server framework that allows you to create web applications using pre-designed UI components. It’s built specifically for business applications with a focus on accessible, good-looking and intuitive UIs.
Vaadin allows you to write UI in plain Java without getting bogged down in JS, HTML, and CSS. Additionally, you can create layouts in HTML or with a visual designer. Vaadin provides access to the DOM directly from the Java virtual machine. Besides, it comes with ready-made themes you can customize via a styling API.
As for popularity, it is declining slowly:
Github rating: 1,6K stars. Vaadin is used by Docucom, AXPM, CGI, HPD LendScape and others.
JSF is a JCP Standard technology for authoring component-based user interfaces on Java EE platform. This framework may not be the best one, but the big advantage is the Oracle support, lots of additional tools, great documentation, and a friendly community.
JSF can be used to create enterprise applications, native programs, and web development. Developers can build web applications by assembling reusable UI components in a page, connecting these components to an application data source, and wiring client-generated events to server-side event handlers.
According to the graph below, JSF is losing popularity:
As it was mentioned, JSF is not the best technology but is great for IDE software.
Java frameworks are considered as some of the most significant support for developers today, and therefore, are here to stay. We tried to list the most promising and useful of them. The main thing is to choose the most suitable framework for a particular project.