Specification: MicroProfile

Version: 4.0-RC1

Status: Draft

Release: October 21, 2020

Copyright (c) 2017-2020 MicroProfile Contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Architecture

The MicroProfile pom will identify the contents of each MicroProfile release. The contents will be those features and versions agreed to by the MicroProfile community. These features may be external to the MicroProfile community (Jakarta EE features such as Jakarta RESTful Web Services 2.1), or they be a component of the MicroProfile project (such as Config 2.0).

Since the MicroProfile repo is an "umbrella" project, there will be no individual API or TCK generated for this component. Only this Specification will be generated and maintained to document the contents of each release.

In reverse chronological order, here’s the specification for each MicroProfile release.

MicroProfile 4.0 Release Candidate 1 (Q42020)

MicroProfile 4.0-RC1 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-RC1 specifications includes:

The Maven coordinates for this Eclipse release are as follows:

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>4.0-RC1</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

Compliant implementations of MicroProfile 4.0 must include the following specifications and pass their respective TCKs. These APIs and versions guarantee application developers a minimum set of APIs and are not intended to be restrictive.

MicroProfile applications that make use of APIs or versions not mentioned below are not considered portable.

Java SE 8

Libraries in use by the MicroProfile leverage new features provided in Java SE 8, therefore Java SE 7 and before are unsupported. MicroProfile 4.x implementations may provide support for Java SE 9 and beyond, however Java SE 8 compatibility must be maintained.

Jakarta Contexts and Dependency Injection (CDI) 2.0

Jakarta CDI provides the base for a growing number of APIs included in MicroProfile 4.0. Use of implementations beyond CDI 2.0 in MicroProfile is allowed, however, not required.

Jakarta RESTful Web Services (JAX-RS) 2.1

Jakarta JAX-RS provides both standard client and server APIs for RESTful communication by MicroProfile 4.0 applications. Use of implementations beyond JAX-RS 2.1 in MicroProfile is allowed, however, not required as of version 4.0 of MicroProfile.

Jakarta JSON-B 1.0

Jakarta JSON-B is leveraged as part of MicroProfile 4.0 to provide standard APIs for binding JSON documents to Java code. Use of implementations beyond JSON-B 1.0 in MicroProfile is allowed, however, not required.

Jakarta JSON-P 1.1

Jakarta JSON-P is leveraged as part of MicroProfile 4.0 to provide standard APIs for processing JSON documents. Use of implementations beyond JSON-P 1.1 in MicroProfile is allowed, however, not required.

Jakarta Annotations 1.3

Jakarta Annotations provides annotations for common semantic concepts across a variety of individual technologies in the Java™ SE and Jakarta EE platforms. Use of implementations beyond Jakarta Annotations 1.3 in MicroProfile is allowed, however, not required.

MicroProfile Config 2.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 3.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 3.0

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

MicroProfile JWT Authentication 1.2

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

MicroProfile Metrics 3.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 2.0

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

MicroProfile OpenTracing 2.0

MicroProfile OpenTracing defines an API and associated behaviors that allow services to easily participate in a distributed tracing environment.

MicroProfile Rest Client 2.0

MicroProfile Rest Client provides a type-safe approach for invoking RESTful services over HTTP. The MicroProfile Rest Client builds upon the JAX-RS 2.1 APIs for consistency and ease-of-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: