Helidon MP 4.x Upgrade Guide

Helidon 4.x introduces significant changes to APIs and runtime behavior. Use this guide to help you understand the changes required to transition a Helidon MP 3.x application to Helidon 4.x.

Significant Changes

The following sections describe the changes between Helidon 3.x and Helidon 4.x that can significantly impact your development process. Review them carefully.

You can also review the Helidon repository CHANGELOG to see a detailed history of changes made to the project.

Helidon adheres to Semantic Versioning. As such, Helidon 4.x includes changes that are not backward compatible with Helidon 3.x.

Java SE Support

Helidon 4.x removes support for Java SE 17. You must use Java SE 21 or later. If you are using Helidon 4.3.0 or later, using Java SE 25 or later is recommended.

New Web Server Implementation

Helidon 4.x introduces Helidon WebServer, a virtual threads-based web server implementation based on the JDK Project Loom. Helidon WebServer replaces Netty, the server implementation used by previous versions of Helidon.

Helidon provides a MicroProfile server implementation (io.helidon.microprofile.server.Server) that encapsulates the Helidon WebServer.

MicroProfile Support

Helidon 4.0.0 adds support for MicroProfile 6.0. Key changes include:

  • Significant updates to the MicroProfile Metrics specification.

  • Addition of the MicroProfile Telemetry specification which replaces the MicroProfile OpenTracing specification.

  • Support for the Jakarta EE 10 Core Profile (instead of individual Jakarta EE specifications).

  • Various minor updates to other MicroProfile specifications. Review the individual MicroProfile specifications for details.

Helidon 4.1.0 adds support for MicroProfile 6.1.

Read each specification carefully to check for incompatible changes.

Other Changes

The following sections describe changes between Helidon 3.x and Helidon 4.x that may impact your development process.

Jandex

The Jandex groupId changed from org.jboss.jandex to io.smallrye. You should update all references accordingly.

Testing

Testing support moved to a new Maven artifact and Java package.

In Helidon 3.x, it was:

<dependency>
    <groupId>io.helidon.microprofile.tests</groupId>
    <artifactId>helidon-microprofile-tests-junit5</artifactId>
    <scope>test</scope>
</dependency>
Copied

In Helidon 4.x, it is now:

<dependency>
    <groupId>io.helidon.microprofile.testing</groupId>
    <artifactId>helidon-microprofile-testing-junit5</artifactId>
    <scope>test</scope>
</dependency>
Copied

Additionally, the Java package changed from io.helidon.microprofile.tests.junit5 to io.helidon.microprofile.testing.junit5.

Update all references accordingly.

Logging

The Helidon console handler changed from io.helidon.common.HelidonConsoleHandler to io.helidon.logging.jul.HelidonConsoleHandler.

If you use this handler in your logging.properties file, you must update it and add the following dependency:

<dependency>
    <groupId>io.helidon.logging</groupId>
    <artifactId>helidon-logging-jul</artifactId>
    <scope>runtime</scope>
</dependency>
Copied