During the last DevNation Conference, Red Hat, IBM, Tomitribe, Payara, and the London Java Community announced the creation of the MicroProfile, a new initiative to try and leverage Java EE technologies to create a vendor-neutral microservices framework. The goal is to have a first public version by September 2016, allowing developers to create portable microservices in Java or, as Martijn Verburg from the London Java Community, put it:
The initial goal is to provide developers who are most comfortable with enterprise Java (Java EE if you will) a starting point to work with microservices in a non-vendor specific way (which is what they’re used to from the Java EE world). The aim is then for the developer community to actually drive what they feel they need in microservices runtime/API, so instead of the vendors ‘guessing’ that you might want security, or logging or discovery or whatever. It’ll be up to the MicroProfile community to help define what should go in and what should stay out.
Java EE provides some clear benefits to developers, in the form of stable libraries that have already been developed, integrated and tested and that can be used out of the box. Given the many Java EE containers available, it also gives developers the chance to separate coding from platform decisions. However, Java EE is rather heavy and based on agreed standards, which means it evolves very slowly; while this is an advantage when looking at stability, it makes it unsuitable for the fast-paced world of microservices. This led the community to create solutions like WildFly Swarm or WebSphere Liberty, to name a couple, that allows the creation of much lighter applications still based on Java EE components. This sort of framework has helped bridge the gap between innovation and standards, although it has created a problem of its own: since each framework has been created in isolation to the others, applications aren't easily portable from one framework to another.
This is where the MicroProfile comes in. Creating a standard framework to define the basis of a microservice application based on Java EE, and having vendors produce application servers that are compliant with such standard, would provide developers with an ecosystem of compatible containers, giving them more choice without having to modify their applications. Although nothing is definitive until the expected GA of September 2016, initial talks indicate that the MicroProfile will be based on JAX-RS, CDI, JSON-P, and anything else that the community may deem necessary.
While the MicroProfile bears similarities with the existing Web Profile, they will be managed in different ways. The Web Profile was created as a subset of Java EE specific for web applications mainly for two reasons: lighter framework, and simpler verification process for vendors. At first sight it may look like the MicroProfile would be the next step, a subset of Web Profile for microservices; however, this won't be quite the case for a number of reasons. On one side, early discussions show that the MicroProfile may include technologies that are not even part of Java EE, like Vert.x; on the other hand, the process to create a formal Java standard may be too slow to fit the needs of a rapidly evolving industry.
Whether the MicroProfile will become the first step towards the end of Java EE remains to be seen. However, what is probably true is that the innovation and activity that will be brought by the MicroProfile will provide some breathing air to enterprise Java functionalities, something that is much needed after recent concerns regarding its stalling.