Eclipse MicroProfile - Accelerating Enterprise Java Microservices

Executive Summary

Within 15 months, MicroProfile will have delivered a microservices platform consisting of 3 existing Java EE-related JSRs and 5 new “home grown” MicroProfile specifications. This was done while simultaneously becoming an Eclipse Foundation “Eclipse MicroProfile” project. In addition, work continues towards its second major platform release. To learn the details, read on!

What is MicroProfile?

Leading into 2016, the pace of Java EE releases had been slowing while at the same time the industry was quickly moving towards a microservices architecture. While this was happening, the Java EE community was fragmenting in how it was approaching microservice patterns and delivering incompatible microservice-oriented runtimes. To solve this cadence mismatch and fragmentation, a collection of vendors, organizations, and individuals founded MicroProfile to define Enterprise Java specifications to address microservices patterns.

MicroProfile takes an “open source” approach to developing specifications by collaborating publicly as a community and rapidly iterating on specifications, putting multiple implementations of a specification in developers hands much more quickly than a traditional standards organization. However, when a specification becomes mature enough, the intent is for it to become a standard.

Within a period of roughly 15 months, MicroProfile will have had 3 releases and joined the Eclipse Foundation, living up to its goal of rapid, iterative progress! What follows is a quick review of what we have delivered in a bit more detail.

MicroProfile 1.0 - September, 2016

The MicroProfile community has its historical roots firmly planted within the Java EE community. With that in mind, MicroProfile released version 1.0 just before JavaOne 2016, based on Java EE JSRs. This release included CDI 1.1, JAX-RS 2.0, and JSON Processing 1.0. Having just been founded as a project, the MicroProfile community did not want to take too large a stride in defining the MicroProfile platform. Instead, it defined a small core set technologies that set a baseline for the programming model upon which additional specifications can layer on with the input of a much broader and rapidly growing community.

MicroProfile Joins the Eclipse Foundation - December, 2016

In late 2016, MicroProfile was re-branded to Eclipse MicroProfile when it became an Eclipse Foundation project. Within the Eclipse Foundation, MicroProfile can leverage proven Eclipse Foundation release management, legal, and governance processes while ensuring a level playing field for all contributors. Two of MicroProfile’s three releases have been delivered within the Eclipse Foundation.

Eclipse MicroProfile 1.1- August, 2017

With three Java EE-related JSRs forming the base of MicroProfile, the version 1.1 specification [pdf] added a home-grown “Config 1.0” specification. A core microservice (and 12-factor) requirement is to externalize the configuration of a service from the service itself. The Config 1.0 specification team gathered input from other open source configuration projects, like Apache DeltaSpike and Apache Tamaya), while defining the specification.

The Config 1.0 Specification, JavaDocs, and TCK, and API jar are available here. In addition, the Config 1.0 was also proposed as a “Configuration 1.0” JSR within the JCP.

Last, Eclipse MicroProfile 1.1 was also launched with a new MicroProfile logo, selected from multiple community contributions and community vote.

MicroProfile 1.2 - September, 2017 (planned)

The MicroProfile 1.2 release packs quite a punch, with 4 additional specifications and one updated specification. They are as follows:

  • Config 1.1 - An incremental update to Configuration 1.0, adding clarifications and minor API updates.
  • Fault Tolerance 1.0 - Build resilient microservices by applying Timeout, Retry, Circuit Breaker, Bulkhead, and Fallback policies.
  • Health Metrics 1.0 - Expose metrics / telemetry in a common way across all compliant servers
  • Health Check 1.0 - Ensure a compatible wire format, agreed upon semantics and possible forms of interactions between system components that need to determine the “liveliness” of computing nodes in a bigger system.
  • JWT Propagation 1.0 - Defines the interoperability and container integration requirements for JSON Web Token (JWT) based bearer token authentication and authorization for use with Java EE style RBAC permissions.

Looking ahead

MicroProfile 2.0 is in planning, so normal disclaimers related to “forward looking statements” apply :-).

Expect the Java EE 7-related JSRs to be updated to a Java EE 8-related JSRs. This implies not only upgrading to CDI 2.0, JAX-RS 2.1, and JSON processing 1.1, but the potential to add new JSRs like the Java API for JSON Binding (JSON-B).

Expect updates to some of the MicroProfile “home grown” specifications delivered in MicroProfile 1.2. Exactly what those updates will be is “to be determined” because as of this article, the focus is on delivering the final touches to MicroProfile 1.2.

Last, there is the exciting news that Oracle is Opening Up Java EE by moving it to an open source foundation. This has the potential to accelerate the adoption of MicroProfile specifications within the Java EE ecosystem. MicroProfile will continue to deliver specifications while Java EE is moved to a foundation, which will take time, to not lose the momentum of delivering specifications for Enterprise Java developers. When the foundation move is complete, we’ll work on aligning the two projects.

One more thing

We in the MicroProfile community would love to hear *your* input and great ideas. Please join the MicroProfile Google Group and share your experience and knowledge. Help us bring Microservices to Enterprise Java!!

About the Author

John Clingan

John Clingan
Red Hat