Is this the beginning of the end of web containers (i.e. servlet containers)?
For years, I preferred running Tomcat. It was easy. To install, extract the files. It was fast. It took seconds to start, and it took seconds to deploy a web application.
If I wasn’t running Tomcat, I was running BEA WebLogic. It was not easy. It took hours to download, install, and configure. It took minutes to start, and it took minutes to deploy a web application.
Then there was the Java EE API. It was not simple.
In my first role as a Java developer, I led the effort to migrate one of the web applications (Servlet / JSP) to Struts and Hibernate. I pushed for Spring Framework too. Well, two out of three is not bad. I did not push for Java EE.
Yes, I preferred running Tomcat.
Fast forward. Now I’m running Red Hat JBoss EAP.
It’s easy. To install, extract the files. It’s fast. It takes seconds to start, and it takes seconds to deploy a web application.
The Java EE API is simple. That being said, Apache Struts, Spring MVC, and GWT applications run great on Red Hat JBoss EAP.
I prefer running JBoss EAP.
For me, there is no benefit to running Tomcat.
It may be that the end of web containers began with the fall of the three tier architecture and traditional web applications.
It began with the rise of service oriented architecture (SOA). The logic tier was more or less removed from web applications and with it, the data tier. It was implemented as services (REST | WS) deployed to an application server and / or enterprise service bus (ESB), and it was replaced with clients that consumed them. It ended with mobile domination, and the next generation of HTML 5 / native / hybrid applications. The presentation tier was more or less removed from web applications. The web application is now a set of web services built on top of enterprise services such as messaging (JMS) and persistence (JPA) that are consumed by the presentation tier whether it is an HTML 5, native, or hybrid application.
I have to give a nod to Oracle as I think Avatar (link) is a great realization of this paradigm shift in architecture. To be honest, I would like to see Avatar running on JBoss EAP.
I like to think of modular application servers as being toolboxes.
When I purchased my first home, I did not have a lot of tools. I purchased them more or less one at a time, and on demand. I had to go to the hardware store every time I needed a tool that I did not have. It cost me precious time, and it cost me money.
Later, I purchased a toolbox. If you are little obsessive-compulsive like I am, I can you assure you; is not pleasant to open a toolbox and see a variety of tools made by different manufacturers.
I should have purchased a complete set of tools when I purchased my first home. It would have saved me multiple trips to the hardware store. It would have saved me time. In the long run, I could have saved money if I had purchase a complete set of tools as it is more expensive to purchase them one at a time. It would have saved me money.
Having a toolbox that contains a complete set of tools does not inconvenience me. I do not have to carry the toolbox with me every time I need a tool. I keep it in my utility closet. I go to it, I open it up, and I remove the tool(s) that I need. If I wanted to carry the toolbox with me, I could remove the tools that I do not need.
I would prefer to run a modular application server that is capable of providing all of the services that I may need, than to run a web container that requires me to add the services that I need on demand.
I have a handful of old shirts in my bedroom closet. They have suffered a lot of wear and tear, and it’s been two decades since they were in style. My wife often suggests that I throw them out. If she sees me wearing one, she pleads with me. If she sees me wearing one in public, she threatens me. I know that some people will continue to run a web container such as Apache Tomcat, and that they will continue to run traditional three tier web applications on it. I get it. I’m not throwing out my old shirts either.
I had a conversation with someone that suggested that web containers such as Apache Tomcat are short sleeve shirts while application servers such as JBoss EAP are long sleeve shirts. My response was that application servers such as JBoss EAP, GlassFish, and IBM WAS Liberty Core are convertible shirts. They don’t have to be worn as long sleeve shirts. The can be worn as short sleeve shirts. That’s why I refer to them as modular application servers.