Java Basics: What Is Helidon?
If you are a Java developer looking to transition to microservices based applications, Helidon is a worthwhile option to consider. Helidon is a lightweight set of libraries that don’t require an application server and which can be used in Java SE applications.
In this blog, we dive into what Helidon is, how it's used, how it works, and what Helidon SE and Helidon MP are.
What Is Helidon?
Project Helidon is a set of libraries for developing lightweight and fast microservices that are cloud-native ready.
It is built on top of Netty and was released under the Apache License 2.0. Helidon began in 2015 as Java for Cloud (J4C), when engineers from Oracle internally started it as a reaction to their needs in microservices development. Over the years, more people got involved and in September 2018, Helidon was released for public use. Although it is open source, you can still get commercial support.
Nowadays, Helidon is quite popular. The two versions—Helidon SE and Helidon MP—both support MicroProfile and GraalVM.
Helidon SE (sometimes also Helidon Reactive) represents a group of reactive, non-blocking microframeworks. It has a small footprint, but comes with limited functionality. It uses the functional style of APIs and there are almost no @Annotations and zero dependency injection. It does all the work underneath Helidon MP. You can still use it if you do not need the MicroProfile.
With Helidon SE, an application server is not required. Instead, the application runs on pure Java. Helidon SE applications can be converted into GraalVM native executable code (GraalVM native image), which lowers the footprint even more and decreases startup time. The most advanced technologies also require advanced resources; thus Helidon is available only for Java 11 and newer.
Helidon MP has a slightly larger footprint than SE, but is still very fast. One of the implementations of Eclipse MicroProfile, Helidon MP is built on top of Helidon libraries and provides platform definitions that are familiar to enterprise Java developers. In the MP, dependency injection is supported, all Jakarta EE standard APIs are available, and declarative programming style is used. GraalVM Native Image was originally available only for the Helidon SE, but with the release of Helidon 2.0, it is now supported in Helidon MP as well.
Helidon Web Server
The power engine of Helidon is its reactive web server based on Netty Core. The Interface of this web server is called WebServer and provides methods for creating a server and basic monitoring API.
The Helidon Configuration component offers many ways on how to read the configuration. Once the configuration data are loaded, they are stored in the Config object.
Configuration in Helidon is made using the following parts:
- Config system
- Config source – location containing configuration data
- Config parser – translates source into an in-memory tree.
In the default configuration, source config is loaded from application.properties or from application.yaml, which is placed in /src/main/resources. As mentioned, there are multiple sources that can be used to store configuration, but built-in support comes for the following formats:
- Java properties format
- JSON format
- YAML format
- HOCON format
The architecture of Helidon can be explained by the picture below. As you can see, Helidon MP is a layer on top of Helidon SE, which is a layer on top of Netty. Both Helidon modules have many components though, and these are just a few of them.
Final Thoughts on Helidon
Development has started to focus more on microservices architecture in new applications, giving rise to new microservices frameworks. Some frameworks are heavier than the others, but they are usually balanced with unique features.
Then there is project Helidon—offering both speed and usability. Helidon comes with a MicroProfile implementation and features a cloud-native approach. If you are in the process of starting with a new project involving microservices development, definitely consider Helidon.
According to our 2021 Java Developer Productivity Report, around 66% of developers are either actively working in or transitioning to a microservices based architecture.
As microservices usage grows, developers face new challenges. One of which involves redeploy times—with the majority of developers losing four minutes or more during each redeployment. If you're ready to save time and get back to coding, try JRebel. JRebel lets developers skip redeploys and maintains application state so developers can keep doing what they do best—coding amazing Java applications.