Specification: MicroProfile
Version: 6.0-RC2
Status: Draft
Release: November 04, 2022

Copyright (c) 2016 , 2022 Eclipse Foundation.

Eclipse Foundation Specification License

By using and/or copying this document, or the Eclipse Foundation document from which this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:

Permission to copy, and distribute the contents of this document, or the Eclipse Foundation document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you use:

  • link or URL to the original Eclipse Foundation document.

  • All existing copyright notices, or if one does not exist, a notice (hypertext is preferred, but a textual representation is permitted) of the form: "Copyright (c) [$date-of-document] Eclipse Foundation, Inc. <<url to this license>>"

Inclusion of the full text of this NOTICE must be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof.

No right to create modifications or derivatives of Eclipse Foundation documents is granted pursuant to this license, except anyone may prepare and distribute derivative works and portions of this document in software that implements the specification, in supporting materials accompanying such software, and in documentation of such software, PROVIDED that all such works include the notice below. HOWEVER, the publication of derivative works of this document for use as a technical specification is expressly prohibited.

The notice is:

"Copyright (c) [$date-of-document] Eclipse Foundation. This software or document includes material copied from or derived from [title and URI of the Eclipse Foundation specification document]."

Disclaimers

THIS DOCUMENT IS PROVIDED "AS IS," AND THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.

The name and trademarks of the copyright holders or the Eclipse Foundation may NOT be used in advertising or publicity pertaining to this document or its contents without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.

Architecture

The MicroProfile pom will identify the contents of each MicroProfile release. The contents include those features and versions agreed to by the MicroProfile community. These features may be external to the MicroProfile community, like those provided by Jakarta EE Core Profile or the Cloud Native Computing Foundation (like Open Telemetry), or they are component specifications of the MicroProfile project (such as Config).

Since the MicroProfile repo is an "umbrella" project, no individual API or TCK is generated for this specification. This specification documents the component specification contents of each release.

The specifications for each release are listed in reverse chronological order.

MicroProfile 6.0

MicroProfile 6.0 replaces required individual Jakarta specifications in prior releases like Jakarta Restful Web Services and JSON Binding with the Jakarta EE 10 Core Profile.

Based on MicroProfile’s time-boxed release process, this is a major release that includes backward incompatible changes. This release requires Jakarta EE Core Profile 10, which uses the jakarta namespace introduced in Jakarta EE 9.

If you are still dependent on Jakarta EE 9.1, please consider using the 5.0 release of MicroProfile. If you are still dependent on Jakarta EE 8, please consider using the 4.1 release of MicroProfile. If you are still dependent on Java EE 8, please consider using the 3.3 release of MicroProfile. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

The complete list of MicroProfile 6.0 specifications includes:

MicroProfile 6.0 has the following backward incompatible changes compared to MicroProfile 5.0.

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>6.0</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 5.0

MicroProfile 5.0 aligns with the following specifications from Jakarta EE 9.1:

  • Jakarta Contexts and Dependency Injection 3.0

  • Jakarta Annotations 2.0

  • Jakarta RESTful Web Services 3.0

  • Jakarta JSON Binding 2.0

  • Jakarta JSON Processing 2.0

Based on MicroProfile’s time-boxed release process, this is a major release that includes backwards incompatible changes. This means that this release will not work with previous versions of Jakarta EE, such as Jakarta EE 8, due to the namespace change from javax to jakarta in the code. This release contains no other functional updates when compared to MicroProfile Release 4.1.

If you are still dependent on Jakarta EE 8, please consider using the 4.1 release of MicroProfile. If you are still dependent on Java EE 8, please consider using the 3.3 release of MicroProfile. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

The complete list of MicroProfile 5.0 specifications includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>5.0</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 4.1

MicroProfile 4.1 aligns with the following specifications from Jakarta EE 8:

  • Jakarta Contexts and Dependency Injection 2.0

  • Jakarta Annotations 1.3

  • Jakarta RESTful Web Services 2.1

  • Jakarta JSON Binding 1.0

  • Jakarta JSON Processing 1.1

Based on MicroProfile’s time-boxed release process, this is an incremental release that includes an update to MicroProfile Health 3.1

If you are still dependent on Java EE 8, please consider using the 3.3 release of MicroProfile. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

The complete list of MicroProfile 4.1 specifications includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>4.1</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 4.0 (Q42020)

MicroProfile 4.0 is based on Jakarta EE 8, the first MicroProfile release to be based on Jakarta EE (replacing the role of Java EE). Although Jakarta EE 8 is API backwards compatible with Java EE 8, Jakarta EE replaces Java EE dependencies with Jakarta EE dependencies for all MicroProfile specifications.

The following specifications include API incompatible changes:

If you are still dependent on Java EE 8, please consider using the 3.3 release of MicroProfile. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

The complete list of MicroProfile 4.0 specifications includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>4.0</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 3.3 (Q12020)

MicroProfile 3.3 is the 13th platform release for the Eclipse MicroProfile project. Based on MicroProfile’s time-boxed release process, this is an incremental release that includes an update to MicroProfile Config 1.4, MicroProfile Fault Tolerance 2.1, MicroProfile Health 2.2, MicroProfile Metrics 2.3, and MicroProfile Rest Client 1.4.

MicroProfile 3.x releases build upon a small subset of Java EE 8 features. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

Thus, the complete list of functional components for MicroProfile 3.3 includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>3.3</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 3.2 (3Q2019)

MicroProfile 3.2 is the 12th platform release for the Eclipse MicroProfile project. Based on MicroProfile’s time-boxed release process, this is an incremental release that includes an update to MicroProfile Metrics 2.2

MicroProfile 3.x releases build upon a small subset of Java EE 8 features. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

Thus, the complete list of functional components for MicroProfile 3.2 includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>3.2</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 3.1 (3Q2019)

MicroProfile 3.1 is the 11th platform release for the Eclipse MicroProfile project. Based on MicroProfile’s time-boxed release process, this is an incremental release that includes an update to MicroProfile Health 2.1 and MicroProfile Metrics 2.1.0

MicroProfile 3.x releases build upon a small subset of Java EE 8 features. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

Thus, the complete list of functional components for MicroProfile 3.1 includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>3.1</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 3.0 (2Q2019)

MicroProfile 3.0 is the tenth platform release for the Eclipse MicroProfile project. Based on MicroProfile’s time-boxed release process, this is an incremental release that includes an update to MicroProfile Health 2.0, MicroProfile Metrics 2.0.0, and MicroProfile Rest Client 1.3.

Note: Health 2.0 and Metrics 2.0.0 introduce breaking API changes in their respective releases. Thus, the overall MicroProfile platform release also increased the major version number to 3.0. Please consult the individual Component release documentation for information on the breaking changes. If these changes cause an issue with your applications, you may want to consider staying on MicroProfile 2.2 (1Q2019).

MicroProfile 3.x and 2.x releases build upon a small subset of Java EE 8 features. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

Thus, the complete list of functional components for MicroProfile 3.0 includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>3.0</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 2.2 (1Q2019)

MicroProfile 2.2 is the ninth platform release for the Eclipse MicroProfile project. Based on MicroProfile’s time-boxed release process, this is an incremental release that includes an update to Fault Tolerance 2.0, OpenAPI 1.1, OpenTracing 1.3, and Rest Client 1.2.0. MicroProfile 2.x releases build upon a small subset of Java EE 8 features. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

Thus, the complete list of functional components for MicroProfile 2.2 includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>2.2</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 2.1 (4Q2018)

MicroProfile 2.1 is the eighth release for the Eclipse MicroProfile project. Based on MicroProfile’s time-boxed release process, this is an incremental release that includes an update to OpenTracing 1.2. MicroProfile 2.x releases build upon a small subset of Java EE 8 features. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

Thus, the complete list of functional components for MicroProfile 2.1 includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>2.1</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 2.0.1 (3Q2018)

MicroProfile 2.0.1 is the seventh release for the Eclipse MicroProfile project. This is a patch release to correct an issue with the JSON-B maven dependency in the pom.xml. The defined content for MicroProfile 2.0 did not change — MicroProfile 2.0 was a major release since the subset of Java EE dependencies are now based on Java EE 8. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>2.0.1</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

MicroProfile 2.0 (2Q2018)

MicroProfile 2.0 is the sixth release for the Eclipse MicroProfile project. This is a major new release for MicroProfile since the subset of Java EE dependencies are now based on Java EE 8. If you are still dependent on Java EE 7, please consider using the 1.4 release of MicroProfile.

Based on our time-boxed process, the content for MicroProfile 2.0 will be MicroProfile 1.4 plus Java EE 8. Thus, the complete list of functional components for MicroProfile 2.0 includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>2.0</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Here is the link to the github repository for this Eclipse-based project.

Required APIs

MicroProfile implementations must include the following specifications:

A MicroProfile compatible implementation must pass all required TCKs provided by each MicroProfile specification, including the Jakarta EE Core Profile 10 TCK. Passing the MicroProfile optional TCKs is not required.

These APIs and versions guarantee application developers a minimum set of APIs, but they are not intended to be restrictive.

Java SE

This MicroProfile platform specification requires Java SE 11 for both source and target compatibility. Some component specifications may still support a Java SE 8 minimum version when used standalone. MicroProfile implementations that support the MicroProfile platform specification can provide support Java SE 11 or higher.

Jakarta EE Core Profile 10

MicroProfile 6.0 and above requires Jakarta EE 10 Core Profile support.

  • Jakarta Annotations 2.1

  • Jakarta Contexts and Dependency Injection (Lite Section) 4.0**

  • Jakarta Dependency Injection 2.0

  • Jakarta Interceptors 2.1

  • Jakarta JSON Binding 3.0

  • Jakarta JSON Processing 2.1

  • Jakarta RESTful Web Services 3.1

** Full CDI support is not required. CDI SE support is not required.

MicroProfile Config 3.0

MicroProfile Config provides applications and microservices means to obtain configuration properties through several environment-aware sources both internal and external to the application and made available through dependency injection or lookup.

MicroProfile Fault Tolerance 4.0

MicroProfile Fault Tolerance provides the ability to separate execution logic from business logic. Key aspects of the API include TimeOut, RetryPolicy, Fallback, Bulkhead, and Circuit Breaker processing. Fault Tolerance 3.0 is now dependent on Jakarta EE 8 technologies.

MicroProfile Health 4.0

MicroProfile Health provides the ability to expose the health of an application to the underlying platform (ex: Kubernetes)

MicroProfile JWT Authentication 2.1

MicroProfile JWT Authentication provides role based access control (RBAC) microservice endpoints using OpenID Connect (OIDC) and JSON Web Tokens (JWT).

MicroProfile Metrics 5.0

MicroProfile Metrics provides a unified way for MicroProfile applications to export monitoring data to management agents. Metrics will also provide a common Java API for exposing their telemetry data.

MicroProfile OpenAPI 3.1

MicroProfile OpenAPI provides a unified Java API for the OpenAPI v3 specification that all application developers can use to expose their API documentation.

MicroProfile Telemetry 1.0

MicroProfile Telemetry Telemetry data is needed to power observability products.

Traditionally, telemetry data has been provided by either open-source projects or commercial vendors. With a lack of standardization, the net result is the lack of data portability and the burden on the user to maintain the instrumentation.

The OpenTelemetry project solves these problems by providing a single, vendor-agnostic solution.

MicroProfile Rest Client 3.0

MicroProfile Rest Client provides a type-safe approach to invoke RESTful services over HTTP. As much as possible MicroProfile Rest Client attempts to use Jakarta RESTful Web Services APIs for consistency and easier re-use.

Notices

Compatibility Disclaimer

APIs originating from the MicroProfile community, such as Config 1.0, should be considered pre-standard and experimental in nature. While these APIs are developed collaboratively and generally considered best-of-breed, the MicroProfile community reserves the right to make backwards incompatible changes based on substantial user feedback.

It is the overarching goal of the MicroProfile community to iterate quickly and prioritize innovation over legacy. Thus, APIs included are offered with the express purpose of feedback and rapid innovation through proven real-world usage. Developers should use these APIs with this knowledge in mind and are encouraged to provide feedback of any kind, including proposals of fundamental change to the design of the APIs themselves.

Contribution

The MicroProfile community is an open source community part of the Eclipse Foundation. We accept contributions from corporations or individuals. To learn how to contribute to MicroProfile see:

Feedback

Comments, questions or feedback on this document should be directed to The MicroProfile community as a whole at microprofile@googlegroups.com. Archives are available via the Google Group page: