Tomcat and JBoss are two of the most widely used Application and web servers around the world. Both of them have their own areas of strength and usability. Any java developer building online Java apps and Java-based sites always had to think more than once regarding which choice to make. Making the right choice keeping the requirements in mind helps in completing the job faster.
No need to worry if you are stuck in the same boat. By the end of this article, we'll help you decide which one is the right fit for your requirements but before that let's have a quick recap of what an application server is.
In simple words, we can define an Application Server as a software framework that facilitates a user to create web applications and also provides a server environment to run them. One of the main functions of an application server is to give access of business logic to the clients which helps in generating dynamic content. Business logic is the code that helps in transforming the data to provide specialized functionality offered by a business, service, or application.
Some examples of Application Servers are:
1. PHP – Zend Server
2. Java – JBoss, Geronimo
3. Windows – Windows Server
An Application servers consist of following components:
Application Servers can be web containers and EJB containers.
Web containers provide the servlet API which gives you http request and response processing helping you build web apps and services.
Jetty, Tomcat, Jersey are the popular ones.
EJB containers give you data storage APUs like EJB CMP and BMP, plus CMT for transactions.
JBoss, WebLogic, Glassfish and WebSphere are some of the examples.
The Java EE infrastructure is partitioned into four logical containers.
The first is the EJB container. Enterprise JavaBeans (EJB) manage transactions. The business logic of an application resides in Enterprise JavaBeans—a modular server component providing many features, including declarative transaction management, and improving application scalability.
The second is the Web container. This module includes servlets and JavaServer Pages (JSP). It is the component that interacts with Java servlets.
The third container is the JCA container. This contains the Java EE Connector Architecture. It helps in connecting application servers and enterprise information systems.
The final one being the JMS provider. It provides the Java Message Service. It is a Java message-oriented middleware API for sending messages between two or more clients.
Commercial Java application servers have been dominated by WebLogic Application Server by Oracle, WebSphere Application Server from IBM and our topic of interest today, JBoss Enterprise Application Platform (JBoss EAP) by Red Hat. A Java Server Page (JSP) executes in a web container. JSPs provide a way to create HTML pages by embedding references to the server logic within the page. HTML coders and Java programmers can work side by side by referencing each other's code from within their own.
The application servers mentioned mainly use RMI, EJB, JMS and SOAP. Some also target networks other than web-based ones.
Application servers are considered as an extension to Web Servers. Let us have a quick recap of what a Web Server is and then we can point out the difference between Application Servers and Web Servers.
Web Servers are software programs that take HTTP Requests from clients (you and me), process the requests and deliver the web pages back to the clients. Web servers are basically computers that serve web pages. Each one has an IP Address along with a possible domain name. When you enter the URL http://mindmajix.com/ in your browser, a request to the web server with domain name mindmajix.com is sent. Now, that particular web servers gets the page and displays it on the browser.
If we look back, the concept of web servers was formed considering only the static content on the web. For Example
For a better understanding, let us consider two simple scenarios in the setting of an online marketplace. One with Web Server without any Application Server and the other in which both are running in conjunction.
In the 1st scenario, when you search for a particular item on the portal the site performs a lookup back in the database and a HTML result is given. Every time you send a query, this back and forth communication happens. If another user searches for the same query item, the entire process is repeated. This redundancy can be handled by using an application server.
In the 2nd scenario, upon search of the same query by another user, the results are generated by the server without a need for lookup in database.
The server basically acts as an intermediate between the database server and the web server
In conclusion, we can say that an application server is an intermediate between a web server and database server.
Application server can be considered as a super set of Web Server. Web Servers are designed to serve HTTP Content but Application Servers handle HTTP protocol and also others like RMI/RPC. Another point of consideration is that most application servers have a Web Servers as an integral part of them.
Though most Web Servers now have plugins like, they were primarily designed to serve static content.
Web Servers are primarily file-centric and application servers are application-centric. By this we mean, web servers support HTTP but not SMB or CIFS. And application servers bring in things like Application - Management, Packaging, Deployment and Runtime services.
With regard to resource utilization, Application Servers tend to be heavier than web servers.
The concept of multi-threading is alien to web servers. Application Servers not only use multi-threading but also connection pooling, isolation pooling and transaction features.
Now that you have got an idea about what an application server is and how it is different from a web server, let us look at the two of the most popular application servers: JBoss and Tomcat.
The open source implementation of the Java Enterprise Edition suite of services is the JBoss Application Server or JBoss AS. It is developed by JBoss, one of the subsidiaries of Red Hat Inc. For its functionality, it primarily relies on JavaBeans API developed by Sun Microsystems.
It serves enterprise customers looking for preconfigured profiles of JBoss Enterprise Middleware components which have been tested and also certified providing an integrated experience. It is not only ideal for users who have just started with J2EE but also for senior architects requiring a more customizable middleware platform.
JBoss has a popularity because the usage is simple and easy. JBoss Application Server is easy to install and can be used on any operating system that supports Java making it a strong competitor to IBM WebSphere and SAP NetWeaver. It is also very easy to debug since the source code is readily available and also creating customized versions for personal or business use is very easy.
JBoss Application Server holds a 25+% market share with a very active developer community and 24x7 professional support by the core development team. The Enterprise-class reliability, scalability, high availability and performance are some of its features. It is a safe choice for portable applications and the service oriented architecture provides consistency making it embeddable. The interaction with middleware services is further simplified due to it's aspect oriented architecture.
Thanks to the embedded JDT Compiler that can be used to compile JSP's, JBoss Application Server doesn't require the JDK. This would mean JRE is sufficient in production environments. Having said that, it is recommended to have that extra set of JDK tools on the system.
JBoss Application Server was renamed to WildFly on November 20, 2014. The JBoss Community and other Red Hat JBoss products like JBoss Enterprise Application Platform were not renamed.
Apache Tomcat, often referred to as Tomcat Server, is an open-source Java Servlet Container developed by the Apache Software Foundation (ASF). Apache Tomcat is a widely used application due to its lightweight, effective, and efficient nature.
Tomcat is often described as a reference implementation of the Java Servlet and Java Server Page (JSP) specifications. It is the result of an open collaboration between developers. The Apache web site has made both the binary and source versions available.
Commonly referred as Tomcat, it implements several Java EE Specifications like Java Servlet, JavaServer Pages (JSP), Java EL, and WebSocket. Tomcat can be used as either a standalone product with its own internal Web server or together with other Web servers. Tomcat can also be used as a HTTP Server since a default HTTP connector is provided on port 8080.
Since, the performance of Tomcat as a web server can't be compared to that of a designated one, people go for the likes of Apache HTTP Server. It also provides a pure Java HTTP web server environment in which Java code can run.
There’s a lot of debate in online forums and social media groups whether Tomcat is an application server or a web server. Tomcat can handle HTTP requests/responses i.e it is a web server. It also implements Java Servlet API, also called servletcontainer i.e it is a web container.
Tomcat is a web server and a web container in one.
Some might call it an application server, but it is definitely not a full-fledged Java EE application server since it does not implement the whole Java EE API.
First things first, Tomcat is merely an HTTP server and Java servlet container But JBoss is a full-blown Java EE application server. We can't compare Tomcat and JBoss, because one of them is a superset of the other. JBoss is Tomcat plus JMS messaging provider, Web Services engine, Management capabilities, scripted administration interface, data grid solution, Advanced security, dynamic and powerful clustering engine and Transaction management service.
Saying JBoss is better than Tomcat or the other way around would be very erroneous. Factors like situation, architecture come into play.
You should choose Tomcat if all you need is JSP and Java servlet support. JBoss is very powerful, but it is more complicated than Tomcat and also consumes considerably more memory and processing resources.
Another factor of comparison would be the price or Return on Investment on the project. Mastering the complex stack of technologies with Tomcat and Spring requires skilled and well paid developers. JBoss can be easily picked up by even average-to junior developers.
Choose Tomcat when
Choose JBoss when
You have to build applications that require a full Java EE stack, when user community is a priority. JBoss has a larger and deeper user community, and a more mature codebase.
flexibility is a priority. JBoss uses plugin architecture that allows you to add and remove services. The Complete access to functionality is a priority and running in both domain and standalone modes is also a priority.
With improvements like TomEE coming up and recent developments like a lighter version of JavaEE and a JavaEE certified version of Tomcat, there's a chance to get the best of both worlds now. To conclude, it boils down into your requirements. We have provided you with some of the use cases where Tomcat is preferable and other use cases where JBoss is preferable. We assume our readers will carefully consider the requirements, consider the budget and make a careful decision.
Free Demo for Corporate & Online Trainings.