A lightweight framework for developing microservices using standard Java EE technologies and migrating existing Java EE applications to microservices.

KumuluzEE is the 2015 Java Duke's Choice Award Winner

KumuluzEE has won the prestigious 2015 Java Duke's Choice Award. The Duke's Choice Award is the Java community equivalent of winning an Oscar. The award celebrates extreme innovation using Java technology. The primary judging criteria for this prestigious award is innovation, putting small developer shops on equal footing with global giants. Java Duke's Choice Award winners are recognition as an elite member of the Java ecosystem. Previous award winners include Hadoop, Jenkins, TomEE, and several other well-known products.

Why we set out to create KumuluzEE?

A standard approach for deploying Java EE applications is packing all components into a single EAR/WAR archive and deploying the archive on the application server.

This leads to monolithic architectures which make applications difficult to maintain and scale in cloud (PaaS) environments.

The microservice architecture addresses these shortcomings by decomposing an application into a set of stateless microservices. Each microservice has a well-defined functionality and an interface for communication with other services.

Microservices also have their drawbacks. To deploy them on standalone containers requires several steps, from configuring the containers, defining the dependencies, deploying the services, etc.

As such Java EE developers currently do not have a framework, which would allow them to simplify and automate the deployment and configuration, required for microservice architecture. The framework is completely modular and as such allows you, with the help of Maven, Gradle or plain old jar files, to handpick the components that you need for your application.

Whether it be only JAX-RS and JPA or a bigger stack with EJB, JAX-WS, JSF, JMS and many more. Underneath it all is an embedded light-weight high performance HTTP and servlet web server of your choice.

What people are saying about KumuluzEE

KumuluzEE is a great community effort to power Java EE API based microservices, especially on the cloud.

~ Reza Rahman, Java EE Evangelist at Oracle Corporation.

Read more

Migrate existing Java EE application to microservices

KumuluzEE provides an efficient way to migrate existing Java EE applications to microservices. The major advantage is that you can migrate Java EE applications iteratively, step-by-step. You can take a few services and pack them as microservices, while the rest still runs on your existing Java EE application servers (such as Oracle WebLogic, WildFly or IBM WebSphere). Full interoperability between microservices and application server is provided.

Full integration with Service API Management

KumuluzEE is fully integrated with KumuluzAPI, a novel Service API Management product that allows you to centrally manage services and APIs implemented as microservices or hosted on a Java EE application server. KumuluzAPI automatically discovers services and is fully integrated with Continuous Integration and Delivery cycles, thus guaranteeing that the API catalog is always in-sync with actual deployments.

Example code


@Path("/orders")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@RequestScoped
public class OrdersResource {

    @PersistenceContext(unitName = "books")
    private EntityManager em;

    @GET
    @Path("/{id}")
    public Response getOrder(@PathParam("id") Integer id) {

        BookOrder o = em.find(BookOrder.class, id);

        if (o == null)
            return Response.status(Response.Status.NOT_FOUND).build();

        return Response.ok(o).build();
    }
}
					

<dependency>
  <groupId>com.kumuluz.ee</groupId>
  <artifactId>kumuluzee-core</artifactId>
  <version>${kumuluzee.version}</version>
</dependency>

<dependency>
  <groupId>com.kumuluz.ee</groupId>
  <artifactId>kumuluzee-jpa-eclipselink</artifactId>
  <version>${kumuluzee.version}</version>
</dependency>

<dependency>
  <groupId>com.kumuluz.ee</groupId>
  <artifactId>kumuluzee-cdi-weld</artifactId>
  <version>${kumuluzee.version}</version>
</dependency>

<dependency>
  <groupId>com.kumuluz.ee</groupId>
  <artifactId>kumuluzee-jax-rs-jersey</artifactId>
  <version>${kumuluzee.version}</version>
</dependency>