Apache got a new lightweigh Java server: Apache Meecrowave.

It is basically a Tomcat+OpenWebBeans server pre-integrated. How does it differ from Apache TomEE, is it just a Microprofile implementation?

Meecrowave: origin

If you browse Apache Meecrowave today, you will see that there is not a single time the word Microprofile. However its stack is pretty close. Why?

Microprofile is nothing yet, just a will of a few dynamic companies in EE area to make things moving but the only benefit of this profile was to make some important tracks moving.

So no point yet implementing something which doesn't exist so why creating a new server?

As weird as it can seem, Meecrowave is coming from TomEE. Last years, Apache TomEE got a lot of enhancements to make Apache TomEE Embedded (the embed TomEE flavor) usable and production ready. However TomEE is - by design - targetting JavaEE and therefore has some constraints which are bothering for a modern server. Also TomEE has so much flavors that it can be misleading and hard to keep uniform if you don't know that server very well: ApplicationComponer, TomEE Embedded, TomEE Standalone, Arquillian adapters, ...

The natural outcome of that state was: TomEE embedded is great but let's extract only the good part. That's how Meecrowave idea was born.

Meecrowave: the philosophy

The philosophy of meecrowave is simple: take Tomcat, add CDI (OpenWebBeans), add JAX-RS (CXF) and makes it very well integrated and usable.

Concretely here what has been chosen to answer that challenge:

  • the server is embeddable (it is a plain java server with no need of specific scripts)
  • it supports war or classpath deployment
  • it has an extensible command line interface for the server itself or your applications/extensions
  • testing: it provides JUnit (4 and 5) and an Arquillian adapter
  • development: it provides a Gradle and Maven plugin
  • packaging: it is maven-shade-plugin/gradle-shadowjar friendly but a plain war or jar packaging works as well
  • logging: it relies on log4j2
  • it is programmatically configurable and manageable for advanced cases

Meecrowave: conclusion

The result is a great very light but matching modern development server. It is insanely easy to build an application with a JAX-RS backend and Angular2/React/Vue.JS frontend.

The fact to not bring a persistence layer is finally also a good choice: if you need JPA you can import it or use the meecrowave extension but if you embrace NoSQL or any other storage then the server is finely adapted to that need as well.

The biggest side effect is to bring back the control of the server and resources/configuration to the server and developer. If something doesn't do what you want you can change it as easily as you would do in your application where in a plain old server application (POSA) it is quite a challenge.

If you didn't already downloaded it I encourage you to do it and give your feedback to OpenWebBeans community which is hosting this project as a subproject.

 

From the same author:

In the same category: