In a major move for the Java community, the MicroProfile Working Group has officially released MicroProfile 6.0. This anticipated release brings a host of new features and improvements, including alignment with the Jakarta 10 Core Profile and updates to several key specifications, such as Metrics, JWT Authentication, Open API, Reactive Messaging, and Reactive Streams Operators. This release is expected to bring significant advancements to the Java ecosystem and is seen as a major step forward for the MicroProfile community.
Jakarta EE Core Profile
The Jakarta EE Core Profile, a new profile introduced with the release of Jakarta EE 10, was designed for developers interested in building modern cloud applications with a focus on a minimal set of APIs that support microservices. The profile contains seven (7) specifications:
- Jakarta Annotations 2.1
- Jakarta Contexts and Dependency Injection (CDI) 4.0 (CDI Lite section)
- Jakarta Dependency Injection 2.0
- Jakarta Interceptors 2.1
- Jakarta JSON Processing 2.1
- Jakarta JSON Binding 3.0
- Jakarta RESTful Web Services 3.1
Most of these specifications have been part of MicroProfile since its initial release in 2016.
Metrics
The Metrics 5.0 specification includes updates such as support for multi-dimensional metrics, the ability to group application metrics into custom scopes, and the ability to query metrics by those scopes.
More details on Metrics 5.0 may be found in the specification documentation.
Open API
This release includes several enhancements to the annotations used in developing microservices in Java. One of these is that most annotations now have an extensions attribute, which gives developers more freedom when defining and implementing microservices.
The definition of security requirements was changed by adding the @SecurityRequirementsSet annotation and making it possible to use it more than once. It was also made clear that a single @SecurityRequirement annotation on a class or method is the same as a @SecurityRequirementsSet annotation that contains that @SecurityRequirement annotation.
The @OpenAPIDefinition and @CallbackOperation annotations now have more security features, such as the securitySets attribute.
In addition, the @Schema annotation now includes an additionalProperties attribute, and the @APIResponse annotation can now be applied to a class, indicating that every resource method in that class has that response.
More details on Open API 3.1 may be found in the specification documentation.
JWT Authentication
This release includes new properties such as mp.jwt.decrypt.key.algorithm, which allows support for an RSA-OAEP-256 key management algorithm, mp.jwt.verify.token.age, which allows restriction of token age, and mp.jwt.verify.clock.skew, which allows for configuring a leeway for token expiry and age verification. For consistency, any remaining Java EE references have been replaced with Jakarta EE references.
More details on JWT Authentication 2.1 may be found in the specification documentation.
Telemetry
A new specification, Telemetry 1.0, was added to the core set of specifications, and the original Open Tracing specification was moved to the standalone specifications.
Cloud-based systems have problems with availability and performance because they often use distributed structures and many languages. Observability technologies have gained popularity as a solution to these problems. These instruments depend on telemetry data, but it might be challenging to get this data from multiple sources. The OpenTelemetry project gives users a standard, vendor-neutral way to manage and use telemetry data, which makes it easier for them to do so.
More details on Telemetry 1.0 may be found in the specification documentation.
Additionally, this release allows products to be certified on Java SE 11 or higher and provides compatibility with Open Liberty 22.0.0.13-beta. The test results for MicroProfile 6.0 can be viewed on OpenLiberty’s website.
The release follows a new MicroProfile Specification Process, which aims to increase the release frequency of new versions, give more agility to deliver multiple releases each year, and provide developers with the latest features and updates. For more information on MicroProfile 6.0, readers are encouraged to refer to the Open Liberty blog.
More details on this release may be found in the release notes.
Reza Rahman, principal program manager at Microsoft and Jakarta EE ambassador, expressed his feelings about this release, tweeting:
MicroProfile 6 is released and adopts the Jakarta EE 10 Core Profile! Honored to help pen the official announcement, led by IBM's Emily Jiang, on behalf of Microsoft. The release will strengthen the ecosystem in the long run.
At Red Hat's DevNation conference in June 2016, the MicroProfile initiative was announced as a way for vendors to work together to make microservices for enterprise Java. The first version, MicroProfile 1.0, was announced at JavaOne 2016 and consisted of three JSR-based APIs for creating microservices: JSR-346 - Contexts and Dependency Injection (CDI), JSR-353 - Java API for JSON Processing (JSON-P), and JSR-339 - Java API for RESTful Web Services (JAX-RS). MicroProfile 4.0 came out in December 2020. It was the first version made by the MicroProfile Working Group, which had just been set up in October 2020. The working group includes members such as Oracle, IBM, Red Hat, Tomitribe, Fujitsu, Atlanta Java User Group, Garden State Java User Group and iJUG.
The MicroProfile community is a thriving and active community that is dedicated to creating certified products and driving progress in the field of microservices. The community is welcoming and open to new members, with resources available to help individuals get started and connect with other members. The MicroProfile website, starter resources, live discussions, mailing list, and community forum provide ample opportunities for individuals to get involved and make a meaningful impact. Overall, MicroProfile is a great opportunity for those interested in microservices and open-source technology to connect and collaborate with others in the field.