Foojay Today

What is MicroProfile?

September 22, 2022

The 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 article 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 of Jakarta EE APIs to add specific functionalities that are needed when developing microservices. 

microprofile square

Wait, What Is Jakarta EE?

Jakarta EE is a set of software components that extend Java 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 the Eclipse 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 the MicroProfile 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 Micro is our lightweight solution: MicroProfile and Jakarta EE compatible and designed for containerized Jakarta EE and MicroProfile deployments.

Further Reading :

Related Articles

View All
  • Can Java/Jakarta EE do Microservices?

    In this myth-busting webinar, Steve Millidge (founder of Payara), demonstrates that Java/Jakarta EE can do microservices.

    Read More
    Jadon Ortlepp profile
    Sep 01, 2022
  • Evolution of Microservices

    For some time now, there has been an undeniable growth in interest for Microservices. The core concept itself, however, is not that new.

    Microservices are an architectural type that builds on (mostly) RESTful web services. Where RESTful web services, in general, can be used for just about anything, for instance, to expose an API to external users, Microservices are specifically dedicated to be independent business services that together form a suite of such services that make up an application.

    Read More
    Jadon Ortlepp profile
    Oct 23, 2020
  • MicroProfile Metrics with Prometheus and Grafana

    In a distributed microservices architecture, it is important to have an overview of your systems in terms of CPU, memory management and other important metrics.

    This is called Observability, measuring the internal state of a system, in this case, the micro-services instances.

    The goal of MicroProfile Metrics is to expose monitoring data from the implementation in a unified way. It also defines a Java API so that the developer can define and supply his own values.

    Read More
    Jadon Ortlepp profile
    Dec 02, 2020

Author(s)

  • Jadon Ortlepp profile
    Jadon Ortlepp

    Digital Marketing Coordinator working for Payara who has been involved in the Java space since 2017. Very much enjoys collaborating on projects and events with other individuals and organisations. Including ... Learn more

  • Avatar photo
    Luis Neto

    Java Software Engineer at Payara Services Ltd

Comments (0)

Your email address will not be published.

Highlight your code snippets using [code lang="language name"] shortcode. Just insert your code between opening and closing tag: [code lang="java"] code [/code]. Or specify another language.

Save my name, email, and website in this browser for the next time I comment.

Subscribe to foojay updates:

https://foojay.io/feed/
Copied to the clipboard