Remember how Adobe (Macromedia) Flash created such a buzz and ruled the world for over a decade ? While websites created with HTML/CSS/CGI looked like beat-up Kia, websites created with Flash looked like brand new Mercedes Benz. A complete industry was born after Flash animation. Alas, Flash is destined to die due to the enormous amount of security vulnerabilities and Performance issues. While I’m sad that Flash is going away, that is the reality in this fast-paced Information Era. Only the fittest survive. And we are about to see if Java EE is fit enough.
Image Source: oracle.com
Java EE (Java Enterprise Edition) is a set of specifications (JSR), to be implemented by a vendor. Popular JSRs are Servelts, JSP, JMS, JDBC and few others (https://jcp.org/en/jsr/all). Today, more than half of world’s websites are powered by JEE. JEE embraces Three Tier Architecture. Three major vendors of JEE are:
- IBM (WebSphere Application Server)
- Oracle (WebLogic Application Server)
- RedHat (Jboss/WildFly Application Server)
As of this writing, latest stable version of JEE is 7.
Things were all hunky-dory for Java EE until the birth of Cloud and Containerization. There is an ever-increasing agitation in the market right now – Is JEE dying ? Is JSRs things of the past?
Here is my take:
JEE as Specifications is NOT dying. In fact it is about to come back meaner and stronger than ever with JEE 8
JEE Application Servers, as we know it today, are indeed going to die.
Let me explain the three major reasons JEE Application Servers will die soon.
Application Servers are Monoliths
An Application Server is a monolith by its design. It is the engine that runs the code, often bloated with numerous software libraries. It does not take a genius to understand monoliths are recipes for disaster.
Application Servers are Bloated
How long does your Application Server take to start ? Be honest. Seconds or minutes ? If I were to guess, anywhere between 2 to 5 minutes ? (More than 5 minutes is really painful). There is a reason for this. Your Application Server is Bloated. Bloated with redundant, unnecessary and outdated software libraries. The problem is, it is not easy to strip them away. If you try to do it, you might be starting at countless ‘NoClassDefFoundError’.
Application Servers are NOT cloud native
Have you tried changing the hostname or IP address of the Host of a WebSphere Application Server ? Or have you tried moving an instance of Jboss Application Server to a new Host ? Yeah, I feel your pain. You probably spent hours if not days, trying to restart them relentlessly after changing numerous configuration files. You see, a cloud native application is infrastructure agnostic. Cloud visualizes everything: Servers, Storage, and yes, even Security and Network. That’s the only way it can scale automagically.
Yes, Oracle is little slow on releasing JEE 8 (scheduled to be released by the end of 2017). But nevertheless, I expect a solid release from Oracle that will excite thousands of developers to jump in at once.
Now, what you can do to prepare for this new generation?
Stop writing code that are tied to a specific Application Server (WebSphere Worker Threads, WebLogic Startup Classes, for example).
Give SpringBoot (https://projects.spring.io/spring-boot/) a real good look. SpringBoot is determined to make deploying WAR files history (you can embed tomcat/jetty and never have to deploy WAR to a Servlet Container). All the developers I talked to are pretty happy with springboot.
For Application Support Engineers
Start learning Docker/Kubernetes. Application Servers as we know will not be around for long time. It’s time to learn new Application Platforms. Learn everything you can about Cloud architectures and PAAS (Platform As A Service). Note that major Application server vendors like IBM do realize the problem with Bloated Application Server architecture and encourage OSGI based light weight Architectures (have you used WebSphere Liberty Profile) ?
Times are changing folks. You must be glad you are at the forefront of it. Tons of opportunities for Developers and Application Support engineers to educate themselves and produce stellar results. Java EE is not going anywhere. Brace yourself – Java EE is about to unleash new wave of awesomeness.