In this blog post I will explain a little bit about the technology that I used to create a pure Java EE 7 module system based on a Wildfly 10 application server.
In the image above you can see the details.
Design Goals
What are the design goals of the system?
- Java based
- Standard based
- Based on proven fast technologies
- Hot deployment should be possible
- Extendable (a lot of libraries are easily available via Maven)
- Good tool support e.g. Maven, Eclipse,
Java EE
Java EE is the standard for enterprise applications. It is used for 9% of the web projects and Java is the number one language according to multiple indexes like TIOBE and on github on second place.
EJB
The main component of my module system are EJB that communicate via RMI with each other. This is a very old technique which is available since EJB 1.0 that is now over 20 years old. The funny thing is that EJB is called a heavy weight technology when exposing an RMI interface. In comparision to technologies like node.js is called lightweight when exposing a HTTP interface. In my opinion both interfaces are quite similair and the big difference between HTTP and RMI is, that the HTTP protocol is a lot more human readable than RMI.
Hot reload
Every application server has the possibility to load an unload web applications. This behavior is used in the module system. So it is quite easy to reload modules without extensions like DCEVM or JRebel.
Video
If you need help with your project feel free to contact us.
Leave a Reply