Java programming language can be enhanced with specifications. An specification is a baseline platform definition - a framework - to guide concrete implementations.
One of these specifications is called MicroProfile. But what is MicroProfile specification, what is it used for and why might you need it?
This blog explains all.
What Is MicroProfile?
The MicroProfile specification is a set of Enterprise Java APIs and technologies, designed to help with the challenge of building microservices architectures in Java.
They are intended to be used on top ofJakarta EEAPIs to add specific functionalities that are needed when developing microservices.
Wait, What Is Jakarta EE?
Jakarta EE is a set of software components that extendJava SE- the standard edition Java programming language - with ways to perform the functions particularly useful for an enterprise application. You can read our previous blog 'What is Jakarta EE?' for more information.
Wait, What Are Microservices?
Microservices refer to a software architecture style where your application is structured in small code, granular modules or services. Services can then be deployed and maintained independently from each other. Read our'Explaining Microservices: No Nonsense Guide for Decision Makers' for more information about microservices.
How Does MicroProfile Help You With Microservices Applications?
MicroProfile has ready-made APIs to deal with common challenges in microservices architecture. It means you can use MicroProfile APIs, rather than write custom code to fix some problems. For example:
- Problem: Difficult to debug and trace issues in a microservices architecture, when there are multiple different modules or services.
MicroProfile Solution: Open Tracing- APIs where you can build traces for remote calls (a client app creates a request for a resource from a remote service) and use them for debugging purporses.
- Problem: Microservices architecture necessitate lots of remote calls to other remote services - these might not be available and cause problems for the end user.
MicroProfile Solution:Fault Tolerance- this allows you to add annotations to a remote call, so if it isn't successful, you can provide fall back to a different service, or APIs for retrying the call.
- Problem: More independently built services = more data and metrics in different systems. How do you keep track of them to monitor performance and usage?
MicroProfile Solution: Metrics- this API gathers data and metrics from different services and combines them into a centralized system.
Who Maintains MicroProfile?
Both MicroProfile and Jakarta EE are managed by theEclipse Foundation,a not-for-profit software corporation that stewards many open source projects.
MicroProfile is open source, so anyone can get involved in the project. The Eclipse Foundation manages theMicroProfile Working Group,an open forum where different vendors work together to build the brand, establish the technical roadmap, define the rules around compatibility and what makes a MicroProfile compatible implementation.
What Is A MicroProfile Implementation?
Like Jakarta EE, each MicroProfile API has a Technology Compatibility Kit (TCK), a test suite your software has to pass to prove it is compatible with the API.
Compatible implementations will follow the specifications and pass the TCKs.
What Is A MicroProfile Runtime?
MicroProfile, like Jakarta EE, is designed to work with a runtime. A runtime is a program where your application runs. It handles HTTP requests sent by its clients over the internet. A MicroProfile runtime will need to pass the TCKs to be a compatible implementation - and allow you to use your applications with MicroProfile!
Many different vendors have created MicroProfile compatible runtimes, including Payara. Payara Microis our lightweight solution: MicroProfile and Jakarta EE compatible and designed for containerized Jakarta EE and MicroProfile deployments.