Skip to main content

JBoss vs. Tomcat: Choosing A Java Application Server

Picking between the various Java application servers can be a challenge for developers who are new to developing online Java apps and Java-based sites. The big three are Tomcat, Glassfish, and JBoss. All of them are excellent platforms upon which develop and deploy applications, but they have different strengths. Making the wrong choice can result in more work than necessary, so we’re going to cut through the confusion with a quick guide to which application server will best suit your needs.

In 2013, JBoss received a name change and is now known as WildFly, but the old name is still widely used, especially by those using the older versions, so, we’ll stick to calling it JBoss for the moment.


What is JBoss?
Developed by JBoss – a subsidiary of Red Hat Inc. – the JBoss Application server acts as an open-source alternative to solutions such as IBM WebSphere and SAP NetWeaver. It chiefly relies upon Sun Microsystems’ Enterprise JavaBeans API for functionality. Like most systems developed on EJB, it is designed to allow developers to focus primarily on the business architecture of the server, rather than getting bogged down in unnecessary programming and coding to connect the different working parts.

In addition to providing JBoss and all its associated middleware free of charge, Red hat operates a Developer Program that allows subscribers to gain direct access to exclusive content and product-focused forums. This program, too, is available free of charge, and exists primarily to drive JBoss development and foster a positive developer community. Developers are encouraged to participate on the official boards, contributing code and reporting issues wherever they crop up.

Lightweight and cloud-friendly, JBoss is powerful enough for use in enterprise, and features a middleware portfolio to help accelerate application development, deployment, performance, data integration, and automation. The JBoss website features extensive developer materials, training courses, and informational documents for both new and veteran devs.

What is Tomcat?
Often referred to as “Apache Tomcat,” Tomcat is not technically an application server at all – a fact which generates some confusion amongst first-timers, as ‘application server’ and ‘web server’ are all too often used interchangeably.

Rather, Tomcat is more of a web server and web container. This does not mean it lacks functionality, mind you. An open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language, and Java WebSocket Technologies, it is intended as a platform for powering large-scale, mission-critical web applications. It is used by major enterprises across several industries and verticals, including development, finance, healthcare, government, ecommerce, retail, and marketing.

As with JBoss, Tomcat’s core developers strongly encourage community participation in the evolution of their platform. They host an extensive development community, with thorough documentation and an active support forum. Apache also maintains a mailing list with updates, tips and tricks, and information on Tomcat.

The Major Differences Between JBoss and Tomcat
Both JBoss and Tomcat are Java servlet application servers, but JBoss is a whole lot more. The substantial difference between the two is that JBoss provides a full Java Enterprise Edition (JEE) stack, including Enterprise JavaBeans and many other technologies that are useful for developers working on enterprise Java applications. Tomcat is much more limited. One way to think of it is that JBoss is a JEE stack that includes a servlet container and web server, whereas Tomcat, for the most part, is a servlet container and web server.

That said, it can also run enterprise applications, a fact which causes no small amount of confusion.

“Many application developers do not focus much on the infrastructure on which their code runs,” writes Manu PK of The Java Zone. “When it comes to web applications, the difference between web servers and application servers [is a common confusion]…Typically, we get confused when [we see that] Tomcat [has] the ability to run enterprise applications.”

When To Choose JBoss
JBoss is the best choice for applications where developers need full access to the functionality that the Java Enterprise Edition provides and are happy with the default implementations of that functionality that ship with it. If you don’t need the full range of JEE features, then choosing JBoss will add a lot of complexity to deployment and resource overhead that will go unused. For example, the JBoss installation files are around an order of magnitude larger than Tomcat’s.

When To Choose Tomcat
Tomcat is a Java servlet container and web server, and, because it doesn’t come with an implementation of the full JEE stack, it is significantly lighter weight out of the box. For developers who don’t need the full JEE stack that has two main advantages.

Significantly less complexity and resource use.
Modularity.
There are numerous providers of add-ons that work with Tomcat. Developers can choose the specific implementations they want to use to add extra functionality. For example, Tomcat can’t natively host Enterprise JavaBeans. However, if users need Enterprise JavaBeans (EJB) functionality like the persistence and transaction processing that the EJB container model provides, but want to avoid the problems inherent in the main implementation, there are many lightweight alternatives, including the Spring Framework and OpenEJB

Comments

Popular posts from this blog

DBA_SCHEDULER_JOB_RUN_DETAILS and PURGE_LOG

How to purge DBA_SCHEDULER_JOB_RUN_DETAILS? Manually deleting from DBA_SCHEDULER_JOB_RUN_DETAILS is not recommended by oracle.DBA_SCHEDULER_JOB_RUN_DETAILS is a view that is using two master tables (scheduler$_job_run_details and scheduler$_event_log) and display the information about jobs history. As there is one procedure named PURGE_LOG and Oracle have Scheduler for this procedure. It will purges all rows in the job log that are older than 30 days.This is the default behavior of this procedure. You can change this to any number of days you want by setting the attribute "SET_SCHEDULER_ATTRIBUTE". e.g. exec DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE('log_history','15'); It will purge all logs older than 15days and it will maintain the history of 15days. But If you want manually purge these logs, you can use below solution:- exec DBMS_SCHEDULER.PURGE_LOG(log_history => 15, which_log => 'JOB_LOG'); It will purge all entries from the jog log that are o...

ORA-65016: FILE_NAME_CONVERT must be specified

ORA-65016: FILE_NAME_CONVERT must be specified I just started working on 12C version of oracle database.It's new to me and facing many problems. Error code: ORA-65016: FILE_NAME_CONVERT must be specified Description:"ORA-65016: FILE_NAME_CONVERT must be specified" normally occurs when you create a PDB.I will explain later what is a PDB. Cause and solution :  ORA-65016: FILE_NAME_CONVERT must be specified caused when Data files, and possibly other files, needed to be copied as a part of creating a pluggable database.Enable OMF or define PDB_FILE_NAME_CONVERT system parameter before issuing CREATE PLUGGABLE DATABASE statement, or specify FILE_NAME_CONVERT clause as a part of the statement and make sure the path you are giving to convert the file exists. I think if you are creating the PDB's using GUI then you will not face this error "ORA-65016: FILE_NAME_CONVERT must be specified". If you creating ODB using script and you have gave a wrong path then may you f...

ORA-02051 Another Session Or Branch In Same Transaction Failed

ORA-02051 Another Session Or Branch In Same Transaction Failed (Doc ID 2253226.1)          SYMPTOMS for ORA-02051 Another Session Or Branch In Same Transaction Failed. Database performance is slow and caused   the transactions ORA-02051 another session or branch in same transaction failed or finalized CAUSE for ORA-02051 Another Session Or Branch In Same Transaction Failed. Session transactions branches caused the issue Excessive Waits On The Event "Global transaction acquire instance locks" SOLUTION Please use below sql and identified underscore parameter values for ORA-02051 Another Session Or Branch In Same Transaction Failed : SQL> select a.ksppinm "Parameter", b.ksppstvl "Session Value",c.ksppstvl "Instance Value"  FROM x$ksppi a,x$ksppcv b, x$ksppsv c  WHERE a.indx = b.indx AND a.indx = c.indx AND a.ksppinm LIKE '/_%' escape '/'  AND (a.ksppinm like '%clusterwide_global%' or a.ksppinm like '%disable_autotune_...