About a year ago, I wrote a blog post about Eclipse MicroProfile that explained what it is and why it was created. The explanation of what it is and why it was created is still valuable, but MicroProfle evolves rapidly, so it’s time to talk about where we are at, what’s new, and what to expect in the next few months.
As per June 2019, MicroProfile 3.0 has been released with the following content.
Updated versions of Metrics and Health Check introduced breaking API changes. They moved to a major version, requiring MicroProfile to also move from 2.2 to 3.0. All other specifications have been also been updated, JSON-B (JSON Binding) has been added to bring complement JSON Processing which has been there since day one.
The MicroProfile platform is small and focused which has allowed more implementation providers to join the community. Since last year, Quarkus, for example, introduced an implementation that allows MicroProfile-based microservices to be deployed as a native application. This kind of innovation opens new doors and can influence other providers.
Among those providers that implement MicroProfile, there is a number that are also providing implementations of JavaEE/Jakarta EE 8. On the top right, we see providers offering implementations that are compatible with both MicroProfile and Java EE / Jakarta EE 8 platforms. At one extreme is Meecrowave which is focused on MicroProfile and at the other, we can see Glassfish which is a full Java EE / Jakarta EE runtime.
A sandbox for the MicroProfile community has been created to maintain a rapid rate of innovation keeping the platform up to date with industry understanding and changes. There are two projects in development at the moment:
The Boost project is a standard, universal, Maven plug-in that packages MicroProfile application into an executable jar. Most providers have this feature already, but they are provider-specific. With this plugin, moving from provider to another (e.g. OpenLIberty to Apache TomEE) only requires changing one thing in a Maven build, the boost runtime artifact. Everything else stays the same.
GraphQL is a high-level query language that can be used to invoke or call microservices. We are currently working in the Apache TomEE community to create a GraphQL implementation. So stay tuned, a blog post should show up in the next couple of weeks.
The MicroProfile Starter project
Wanna try MicroProfile? The starter project is for you. Visit the microprofile.io website and navigate to the starter project. With the starter project, you can pick up a MicroProfile platform version, then select which specifications you want to try, as well as the provider you want to use. After clicking on download, you will have a ready-to-run project you can use to try, discover or quickly bootstrap your microservices.
MicroProfile and Jakarta EE
I have spoken frequently at conferences and Java User Groups about MicroProfile, and one of the questions most frequently asked, “is MicroProfile and Jakarta EE going to be merged?”. The short answer is no. They don’t target the same goals and they don’t have the same lifecycle. They are no plans or willingness to merge them at the moment.
As we have seen, MicroProfile has been evolving and innovating quickly and continues to innovate. The fast iterations allow MicroProfile to integrate new features or specifications resulting in very fast time-to-market for providers.