- Helidon MP 4.x Upgrade Guide
In Helidon 4.x we have made some changes to APIs and runtime behavior. This guide will help you upgrade a Helidon MP 3.x application to 4.x.
Java 21 Runtime
Java 17 is no longer supported in Helidon 4. Java 21 or newer is required. Please follow the instructions in Prerequisites for proper installation.
Helidon 4 no longer uses Netty. Helidon MP is now running on Helidon WebServer which is based on virtual threads technology, available in Java 21.
MicroProfile 6.0 support
MicroProfile 6.0 enables MicroProfile APIs to be used together with Jakarta EE 10 Core Profile.
MicroProfile specifications
Most of the MicroProfile specifications had relatively minor changes. The exception is Metrics which had substantial changes.
MicroProfile Config 3.0.3:
Incompatible changes described in MicroProfile Config 3.0.3 Specification
MicroProfile Fault Tolerance 4.0.2:
Incompatible changes described in MicroProfile Fault Tolerance 4.0.2 Specification
MicroProfile Health 4.0:
Incompatible changes described in MicroProfile Health 4.0 Specification
MicroProfile JWT Authentication 2.1:
Incompatible changes described in MicroProfile JWT Authentication 2.1 Specification
MicroProfile Metrics 5.0.1:
Incompatible changes described in MicroProfile Metrics 5.0.1 Specification
MicroProfile OpenAPI 3.1:
Incompatible changes described in MicroProfile OpenAPI 3.1 Specification
MicroProfile Rest Client 3.0:
Incompatible changes described in MicroProfile Rest Client 3.0 Specification
MicroProfile Telemetry Tracing 1.0:
Incompatible changes described in MicroProfile Telemetry Tracing 1.0 Specification
Supported Jakarta EE specifications
CDI (Jakarta Contexts and Dependency Injection) 4.0:
Changes described in CDI (Jakarta Contexts and Dependency Injection) 4.0 Specification
JAX-RS (Jakarta RESTful Web Services) 3.1:
Changes described in JAX-RS (Jakarta RESTful Web Services) 3.1 Specification
JSON-B (Jakarta JSON Binding) 3.0:
Changes described in JSON-B (Jakarta JSON Binding) 3.0 Specification
JSON-P (Jakarta JSON Processing) 2.1:
Changes described in JSON-P (Jakarta JSON Parsing) 2.1 Specification
Jakarta Annotations 2.1.1:
Full information in Jakarta Annotations 2.1.1 Specification
Jakarta Persistence API 3.1:
Changes described in Jakarta Persistence API 3.1 Specification
Jakarta Transactions API 2.0:
Changes described in Jakarta Transactions API 2.0 Specification
Jakarta WebSocket API 2.1:
Changes described in Jakarta WebSocket API 2.1 Specification
Jakarta Bean Validation 3.0:
Changes described in Jakarta Bean Validation 3.0 Specification
Please, read each specification carefully for incompatible changes!
Significant changes
Jandex
Jandex group id was org.jboss.jandex and now is io.smallrye.
Testing
Testing is now in a new package. It was:
<dependency>
<groupId>io.helidon.microprofile.tests</groupId>
<artifactId>helidon-microprofile-tests-junit5</artifactId>
<scope>test</scope>
</dependency>Now is:
<dependency>
<groupId>io.helidon.microprofile.testing</groupId>
<artifactId>helidon-microprofile-testing-junit5</artifactId>
<scope>test</scope>
</dependency>And the Java package has changed from io.helidon.microprofile.tests.junit5 to io.helidon.microprofile.testing.junit5
Logging
The Helidon console handler has changed from io.helidon.common.HelidonConsoleHandler to io.helidon.logging.jul.HelidonConsoleHandler.
If you use this handler in your logging.properties you will need to update it and add the following dependency:
<dependency>
<groupId>io.helidon.logging</groupId>
<artifactId>helidon-logging-jul</artifactId>
<scope>runtime</scope>
</dependency>Conclusion
Please proceed to Helidon MP Introduction to find more information and documentation about each module.