Blog

The latest expert opinions, articles, and guides for the Java professional.

The Great Java Application Server Debate with Tomcat, JBoss, GlassFish, Jetty and Liberty Profile

What type of Java app server should you choose for your next project? Well, that kinda depends on what kind of app you’re building, what your needs are, what type of organization you work in, and lots of other factors too. Hence the debate. So perk up your ears, and get ready for a showdown.

What makes an App Server
Tooling support
Server Configuration
Documentation & Community

What is an Application Server?

What makes an application server is a contentious question to many, as the definition is unclear. Wikipedia, the unquestionable source of all knowledge, states:

“Java Platform, Enterprise Edition or Java EE (was J2EE) defines the core set of API and features of a Java Application Server.”

Well, sorry Wikipedia, but for the sake of this report, we don’t care about pedantic definitions and full Java EE implementations, we care more about what a developer wants and uses.

Most developers work on web applications and rarely use all of the bells and whistles that come with the EE specification. In fact many of the application servers available today with only the basic functionality are the most used, as our Developer Productivity Report section on application servers recently showed:

java application servers

What we’re looking at in this part of the report are the real developer concerns and metrics including:

  • Ease of download and installation

  • Real performance metrics

  • Tooling support

  • Server Configuration

We’re going to compare and contrast many aspects of these java application servers, scoring each and placing each of them based on our findings. We then address the big questions: Which app server is the best? Doesn’t someone in a big company have different needs than a hobbyist developer geek working at home? How should we weight what’s important to different profiles of people? And so on…

The Application Servers we will be discussing in this report are Tomcat, Jetty, GlassFish, IBM WAS Liberty Profile and JBoss (aka WildFly):

java application servers

At first, we were going to include IBM WebSphere and Oracle WebLogic into this report, following the same pattern as with the other app servers. But it felt unfair, as these servers are really targeted for large-enterprises and apps in production rather than lightweight development; however, we didn’t want to dismiss them completely, so they’ll have their own section at the end :-)

What if you no longer had to redeploy your Java code to see changes? The choice is yours. In just a few clicks you can Say Goodbye to Java Redeploys forever.

Ranking the Top Java Application Servers

When you’re getting started with a new tool, things like installation, configuration, tooling support and documentation can affect your experience in a major way. In Part I, we look at starting off with each of the app servers.

This section will compare and contrast each of the Application Servers for each of the following areas ranking them with a score out of 5 in addition to our comments. As we at ZeroTurnaround are all about developer productivity, the unit of measure will be the Rebelzeroturnaround-logo-rebel

  • Download and Installation

  • Tooling support

  • Server Configuration

  • Documentation & community

Next, in Part II will look into some of the deeper topics as we go undercover, Ninja style.

Download and Installation

The first contact is all important as it often gives your initial glimpse of how the rest of the experience might turn out!

Jetty

Jetty is just 8MB in size! The process is easy:

  1. Download installation package

  2. Extract the archive

  3. You are ready to go!

Jetty has preserved its simplicity in starting: java -jar start.jar

Score: score-5

Reason: Smallest download, maven dependency integration, unzip install and good startup scripts.

Tomcat

Tomcat is identical in experience to Jetty, although it’s another few meg at 12.8.

  1. Download installation package

  2. Extract the archive

  3. You are ready to go!

To start Tomcat, simply run bin/startup.sh – easy

Score: score-5

Reason: Small download, maven dependency integration, unzip install and good startup scripts.

JBoss

JBoss AS 7.1.1.Final, which was release on March 9th 2012, but still is the latest community edition version, archive is 127Mb.

What if you no longer had to redeploy your Java code to see changes? The choice is yours. In just a few clicks you can Say Goodbye to Java Redeploys forever.

  1. Download installation package

  2. Extract the archive

  3. You are ready to go!

To start, RedHat have made it simple as well with the bin/standalone.sh script, unless you want to run a clustered environment. Also there are several default configuration files in “standalone/configuration” directory, which allow to turn on and off default clustering and choose between web or full EE profiles, so one can pick the closest to what is needed and tweak it minimally.

Score: score-4

Reason: Largest download, unzip install, slower, “standalone” named startup scripts.

Liberty Profile

  1. Accept Licence agreement

  2. Download installation package

  3. Extract the archive

  4. Accept Licence agreement again – seriously?

  5. You are ready to go!

Although you have to accept the license agreement twice, it’s not all that bad as most people just click accept anyway :) Does anyone actually read them? The download is 41.4 MB which isn’t too bad given the extra features it has over say Tomcat or Jetty.

Score:score-4

Reason: Reasonable size, license have to be accepted twice, startup scripts need docs :(

GlassFish

There are two options available: GlassFish Open Source Edition and Oracle GlassFish Server. We grabbed the GlassFish Server Open Source Edition installation package, which surprisingly, was not so big, only 53 MBs in size! This is the installation package download and comes in a self-extractable archive. Once downloaded you need to run a large .sh “script” and after a number of steps through a graphical wizard, GlassFish was in place. If you don’t like the idea of an installer, you can also choose the unzip install option which comes in a download around 30MB larger. This gives you the three step experience as most of the others:

  1. Download installation package

  2. Extract the archive

  3. You are ready to go!

Score: score3-5

Reason: No straightforward way to start the server, multiple install methods including unzip install is good, reasonable download size, but still large.

Download and Installation Scores: Jetty and Tomcat win

java application servers

Tooling Support

Developers are as loyal with their IDEs as they are their appservers, so it’s important for Application Servers to support the main IDEs so they don’t force their developers into using a platform they don’t want to, or missing out on Tooling support entirely.

For many, good integration with build tools can be as important as good IDE integration, sometimes more important. The two main build tools used which we will be looking at are maven and ant.

Jetty

Jetty has an Eclipse WTP plugin (http://wiki.eclipse.org/Jetty_WTP_Plugin) that enables you to run web apps directly from Eclipse. Also, check out Run Jetty Run, another eclipse plugin.

JetBrains also has a listed plugin for IntelliJ as does NetBeans and can also be leveraged using Jetty’s Maven plugin and NetBeans together.

Jetty’s build tool integration is quite well developed. It’s has integration with Ant, Maven out the box and can also be integrated with whichever tool you like, with minimal effort.

It is possible to configure your development environment very closely to the one that you are running in production. The maven plugin for Jetty allows you to configure almost everything in the pom.xml file.

The thing that we liked with Maven’s Jetty plugin is that Jetty is so tiny. So it won’t take long for Maven to download all the internets.

Score: score3-5

Reason: The Eclipse plugin for earlier versions of Jetty is not great, light server management support.

Tomcat

The big three IDEs, Eclipse, IntelliJ IDEA and Netbeans, all have integration support for Tomcat out the box. This means you can import a server into the tooling and deploy projects onto the server. NetBeans offers a distribution which wraps a Tomcat image so that you can deploy as soon as NetBeans installs :o) Eclipse also has the additional download feature which allows you to download and install Tomcat from within your tooling, meaning you don’t have to do it via a browser and later import it.

Tomcat seems to be very tightly integrated with Ant, and most documentation includes ant examples rather than Maven, although Maven has good integration as well.

Score: score-4-5

Reason: Great IDE support, and download/install through eclipse gives a good experience

Your time is too valuable to sit around waiting for your code to redeploy. Seriously, imagine how much more you could accomplish if you choose to Eliminate Redeploys from your daily routine!

JBoss

The umbrella project for multiple Eclipse plugins, jboss-tools, includes among other things JBoss Developer Studio which has a server adaptor for JBoss Servers and allows you to manage jbosses from your IDE. IDEA has a closed source “JBoss Integration” plugin to manage servers, and NetBeans has integration and ability to manage AS 7-th since version 7.2.1.

There’s a maven plugin to manage your jboss instances. Its functionality includes starting and stopping, deploying and redeploying apps, managing resources and executing commands like through a jboss CLI.

Score: score-4-5

Reason: Good cross IDE support, able to make light server config changes, good maven support

What if you no longer had to redeploy your Java code to see changes? The choice is yours. In just a few clicks you can Say Goodbye to Java Redeploys forever.

Liberty Profile

The Liberty Profile tools, named IBM WebSphere Application Server Developer Tools for Eclipse (a product name that almost needs punctuation) is only supported on the Eclipse platform. If you’re an IntelliJ IDEA or NetBeans fan, you’re out of luck. The tools let you download and install the whole server easily, and provides feature rich development for the programming models which the Liberty Profile supports. It also provides rich editor support for server config changes in a similar style to a deployment descriptor editor which you’ve likely seen/used. Overall the tooling is good, on Eclipse.

The Liberty profile also includes a Maven plugin which provides allows you to drive some actions to a server, You can install, start, stop, package and create server using predefined goals. Driving these is fairly easy:

mvn liberty:package-server -DserverHome=/path/to/server_home -DserverName=[server_name] -DpackageFile=/path/to/packaged server file location

Score: score-4

Reason: Great eclipse support and rich server config changes. Good Maven support, but lacking in cross IDE support.

GlassFish

GlassFish has plugins available for all major IDEs these days. But the problem with the plugin is that the information is scattered around. The plugin for NetBeans is already bundled with the IDE, as you’d expect given the vendor behind it, but others need to find the correct website to install the plugin. Fortunately, GlassFish Tools are available in the Eclipse Marketplace for Eclipse users – this makes Eclipse user’s lives a lot easier.

IntelliJ IDEA users are lucky too – they have the plugin already bundled with the IDE.

GlassFish has also plugin for Maven and Ant which are quite well developed, enabling functionalities like deploy, undeploy, start and stop the server.

Score: score-4-5

Reason: Info about where to find plugins is poor, great IDE support once the plugins were found (particularly with NetBeans and Eclipse).

Server Configuration

Jetty

You can make your own XML based configuration file and pass it along with the startup command:

java -jar start.jar /path/to/your-jetty-conf.xml.

Or those who are impatient, can just start up their instance with JVM arg settings passing in additional config. Also, it is possible to pass multiple configuration files to Jetty like configuration for HTTP and HTTPS, which is very useful for sharing snippets of config around a team.

Jetty’s XML based configuration is reflection-based. This means that all options in XML are actually corresponding to the Java class fields.

The biggest downside with this reflection-based (not so well documented) approach is that you need to understand how Jetty works under the covers and learn some of its internals. But hey – if you know your server well, you’ll never run into anomalies and won’t let the server to go out of control, right?

Score: score3

Reason: Able to create Jetty config but need to know Jetty internals, restarts often required, JVM args to override config is a nice feature, config is small.

Tomcat

Configuration in Tomcat is scattered across a number of files in the tomcat/conf directory but mainly resides in the server.xml file. This file can be modular to allow reuse and sharing across a development team. If you wanted to make a quick change, perhaps one that needed to be undone on next restart for a test, the best way is to add a system property when starting the JVM up as system properties override xml configuration.

The default configuration file is quite verbose, but this is actually mostly comment lines with ‘how-to’s. If you look at the active lines of xml, it’s actually a very small file.

Every server.xml file will require you to recycle the server as the configuration files are only checked by the core runtime during server startup.

Score: score-4

Reason: Restarts required for config changes, scattered across multiple files, small file, easy to update, nice examples in comments.

JBoss

The domain model is quite understandable and straightforward, so getting the setup of your dreams is easy. Here is how one would enable ssl connections on some arbitrary port. Locate the following part of the standalone/configuration/standalone.xml and add a connector element for “https” (bold line in the following table).

 
 
 
   
   
 

This will enable connector, but if you also want to change the port where https binds, change “” element to have the desired value. The whole default config is just 15KB (300 lines) of xml, located in a very predictable location. It also contains a couple of larger sample configuration for clustering. Changes are pretty static, configuration files are read at the start and isn’t reread automatically. However, a CLI command: [jboss-as-7.1.3.Final]$ bin/jboss-cli.sh --connect :reload This will do the thing for you without restarting the server.

Score: score-4

Reason: Single file, 300 lines of xml :( Easy to config, well structured “subsystems” configuration, CLI reloads rather than restarts (manual process), several examples out-of-the-box.

Liberty Profile

The Liberty Profile has a single config file called server.xml. This file can include other config files if desired, so that the config can be logically separated or shared across a team. The default config file is tiny and the most interesting part is the feature manager:

  
   
       jsp-2.2
   

This allows a user to construct their application server with the features they want to run, so initially, only the jsp-2.2 feature is enabled and running. Oh and by the way, you can change and update the server.xml and see the changes reflected in the running server. Neat!

Score: score-5

Reason: Top class config model, dynamic updates mean there’s no need to restart, small file, simple config.

GlassFish

Everything that is needed to manage and maintain a GlassFish server is put into the asadmin utility. It is even possible to manage remote servers with it, which is cool!

One thing that asadmin does well at is scripting. Yeah – it is possible to write various asadmin scripts for managing your deployments and servers. These scripts can be executed inside asadmin as if you are running regular shell scripts.

For those who are still real fans of XML files, it is possible to configure everything in the domain.xml file too:

  

Some configuration changes require that you restart the DAS or GlassFish Server instances for the changes to take effect. Other changes are applied dynamically without requiring that the DAS or instances be restarted.

You can determine whether a domain or instance requires a restart from asadmin

asadmin> list-domains
domain1 running, restart required to apply configuration changes Command list-domains executed successfully.
asadmin> list-instances pmd-i1
pmd-i1 running; requires restart
Command list-instances executed successfully

With dynamic configuration, changes take effect while the DAS or instance is running. The following configuration changes of developer interest do not require restart:

  • Adding or deleting add-on components

  • Adding or removing JDBC, JMS, and connector resources and pools (Exception: Some connection pool properties affect applications.)

  • Changing a system property that is not referenced by a JVM option or a port

  • Changing logging levels

  • Enabling and disabling resources and applications

  • Deploying, undeploying, and redeploying applications

Score: score3

Reason: Config is hard to get at, hard to read xml file, asadmin is the recommended approach, but it’s hard to get started with, need docs and experience.

Documentation & Community

Jetty

The Jetty team has done a  lot of work recently on improving and structurizing their docs. Currently there is a “Jetty Documentation Hub” available, which is easy to read and navigate. It features docs for different Jetty versions. There are different mailing lists for Jetty developers users available. No official forums that we could find, though.

To get some professional and commercial support you could find a third party company that can provide this. Unfortunately, the Jetty website does not have a list of such companies available.

Score: score3

Reason: There is no list of “real experts” or companies, who can provide support, provided.

Tomcat

The documentation for Tomcat is very good (particularly for new users) as is supported by a vast community. This same community is where the Tomcat support comes from, both as descriptive help as well as code changes and bug fixes. Most people will be comfortable with this, but if you need more of a guarantee, there are vendor support contracts available, which very often include Tomcat committers.

Score: score-5

Reason: Great, vibrant community, established over years. Responsive, docs are great, site is easy to use, support via the community, 3rd party vendors available for more guaranteed support.

JBoss

The JBoss community is one of the best things one can think of regarding JBoss AS7. They have a myriad of projects under their wing and they work together well. If not, almost everything can be found on forums or discussion groups. If everything else fails you can read the documentation, which is quite good.

Score: score-4

Reason: Slower releases, but docs are good, large community.

GlassFish

Crawling through the docs, forums and mailing list gives you a secure feeling. The forum is quite active, there are many mailing lists specializing on different parts and areas of GlassFish and the documentation looks pretty good.

What if you no longer had to redeploy your Java code to see changes? The choice is yours. In just a few clicks you can Say Goodbye to Java Redeploys forever.

Score: score-4

Reason: good docs, awkward to navigate to, some docs are outdated, good sized community, mailing lists, active forums.

Liberty Profile

Documentation can mostly be found on the new community site, WASdev.net. It’s run by the development team so isn’t full of the usual fluff. There is also the traditional info center which provides more formal documentation for the product. You can get support from the WASdev forum which is reasonably active, and again, you’re talking with the development team. This is best can do support, without guarantees. If you choose to pay the big bucks you’ll also get the full IBM support where you can afford to scream at IBM and still get help :o)

Score: score-4

Reason: Good quality docs & sample code, small community, but growing good response times on forum, often very corporate answers as not much can be said about futures, slow bug fixes.


Now there is more to this report. You’ve read the part 1 of our findings, where we scored the servers based on their download and installation easy, community, documentation completentess, etc. However, we also did some performance measurements, tried to match the servers and their strength to the roles in a team to see who would prefer what server, and much more!

Download the full pdf of the report, read it through and find out what was the best application server!

AGREED, I NEED THIS REPORT


Read next:

Responses (48)

  1. Avatar  

    Thomas

    May 21, 2013 @ 8:01 pm

    It’s really sad that you guys from ZTA ignore so often Weblogic. It’s one of the oldest and from my point of view one very mature App Server in the big $$ Enterprise $$ market. I think WebLogic developer benefit a lot from JRebel. It allows them to program and test quickly and still can delivery rock solid solutions in combination with powerful administration tools.

    Would be nice to see more WebLogic specific stuff here !

  2. Avatar  

    Rebel Labs

    May 22, 2013 @ 8:19 am

    Thomas, thanks for your comment. Keeping in mind that Rebel Labs and JRebel are not connected from a product point of view, did you see Page 13 here? http://zeroturnaround.com/rebellabs/the-great-java-application-server-debate-with-tomcat-jboss-glassfish-jetty-and-liberty-profile/13/ — this discusses Oracle WebLogic and IBM WAS and why we didn’t feel it was appropriate to compare them with Jetty, JBoss, Tomcat, GlassFish and Liberty Profile.

    We originally planned to cover both WebLogic and WebSphere in this report, but as we started looking at the criteria that the everyday developer needs, we saw both of those options as not fitting–being SO focused on enterprise requires (i.e. Production-leaning app servers) made it difficult to compare WebLogic with, for example, Tomcat. In future reports, we may cover these two big players, but for more lightweight development, which is what we wanted to focus on here, those big boys didn’t have any place to fit. Could you imagine downloading a 3GB version of Jetty or JBoss? Stay tuned for more about this topic….and increased covered on WAS and WebLogic! :-)

  3. Avatar  

    Luccas

    May 22, 2013 @ 3:16 pm

    @Hedi Pihlamägi

    You made a mistake you gave GF 31.5 should be 36

  4. Avatar  

    Aguaflush

    May 22, 2013 @ 9:14 pm

    I think this comment maybe out of place but, I will give IBM download site (namely Partner world) -1 out of 10. For the same software there are like 10 names for you to choose.

  5. Avatar  

    Oliver White

    May 23, 2013 @ 9:02 am

    This is actually a great place to leave comments like that Aguaflush — if users are confused, then maybe our small platform here can reach the ears of IBM folks better :-)

  6. Avatar  

    Oliver White

    May 23, 2013 @ 9:02 am

    Thanks Luccas, we’ll be updating the report with some small error fixes tomorrow. Cheers!

  7. Avatar  

    Simon Maple

    May 23, 2013 @ 9:15 am

    Hey Thomas, Thanks for the comment. Both WebLogic and WebSphere are way more focused to production like environments to developer needs. As this was a developer focused report, it would be wrong to compare WebLogic download and install to say Tomcat. In many categories it would finish bottom, not because WebLogic is a bad product, but because it’s not focused around developers and ease of development.

    We’re looking into doing a similar report for production and operations style environments, where WebLogic and WebSphere will be more competitive and will be at the front of discussions among others.

    Also as Rebel labs mentions in a comment, we do briefly mention it on page 13 along with reasons we didn’t include it and WebSphere in the bulk of the report. Please look out for the future report I mentioned! Hope you enjoyed the rest of the report.

    Thanks — Simon

  8. Avatar  

    Simon Maple

    May 23, 2013 @ 9:17 am

    Hey, before I comment with opinon, are you talking about the download site on WASdev.net or the download site on the main IBM pages? :)

  9. Avatar  

    J Cerwinske

    May 23, 2013 @ 4:35 pm

    I consider Tomcat being more lightweight, and that I can later add only what I need for the project (JPA, JAX-WS, JMS, JTA, Spring, etc) by dropping in some libs, as opposed to out-of-the box overhead of full EE spec, an advantage as a developer, not a detriment. It is also nice to have the flexibility to choose a specific implementation provider instead of having to fight against the configured defaults.

  10. Avatar  

    Simon Maple

    May 23, 2013 @ 4:58 pm

    Hey,

    Thanks for reading and thanks for your comments.

    The items you mention have both advantages and disadvantages, depending on your point of view and what your goals are. For many, Tomcat is perfect in that it is lightweight and you can, as you say, add what you want later. For others, this is the pain point, which has led to other projects being created such as TomEE, which does this all for you.

    I understand the point you make that the full EE spec can be considered overhead, although GlassFish and JBoss are still very fast with it, so the overhead is more HDD space and memory, which, yes is higher, but not huge.

    The flexibility to choose a specific implementation provider that suits you is indeed a nice benefit, but then you’ll also have to test and go through any teething problems that may incur. For some people this is a blocker, while for others, it’s painless.

    So I think from your comments, you’re clearly a developer that doesn’t mind building the infrastructure yourself and fixing problems as they arise as well as knowing exactly what you want from your dev environment, but there are many devs that don’t want to do this.

    Thanks — Simon

  11. Avatar  

    Greg

    May 23, 2013 @ 6:25 pm

    Just a minor correction on the tools support for WebLogic… in addition to JDeveloper, there is great WebLogic Server support in Eclipse through OEPE (as shown in your downloads screenshot) as well as in Netbeans.

  12. Avatar  

    Sanne

    May 23, 2013 @ 11:43 pm

    Great comparison, thank you so much!

    I’m having just two areas not too clear, first is about the scores evaluation of Cost $$$/Licensing:
    – Free & no support available -> 5 stars
    – Free & optional support available at a cost -> 4 stars
    I think the second option looks much better, so I’m wondering what I’m missing.

    Performance: I realize this is about developers experience but really publishing a “performance chart” taking into account only bootup experience is pointless. Performance is about what the platform can deliver after it has started.. especially considering ZT’s tools who cares about some more seconds at boot? As long as it’s reasonable we’re fine.

  13. Avatar  

    henk53

    May 24, 2013 @ 7:04 am

    I too was afraid that WebLogic was 3GB and took hours to setup, and would start in half an hour etc.

    In reality it’s just 183MB and you can download an archive that you can unzip. The server starts up in just a few seconds.

    WebSphere is still 2GB+ and has a mandatory installer etc, but WebLogic 12c is barely larger than JBoss at 183MB.

    See http://henk53.wordpress.com/2012/05/01/is-weblogic-12c-a-heavy-weight-enterprise-solution for more details.

  14. Avatar  

    Simon Maple

    May 24, 2013 @ 8:58 am

    Hey, this also takes into account the type of license you’re offered. Also support comes in two parts, corporate/paid for support as well as community support.

    Like you say, our tools do eliminate the need for startup, redeploy and initialisation, but not every one uses them (crazy ;) ). We’ll be looking into producing another report which goes beyond developer experience and closer to the operations/production viewpoint. Here you will find more of the statistics you’re suggesting which go beyond developer metrics and more into what the platform can do once started, as you say.

    Thanks for reading, and glad you enjoyed it!

    Si

  15. Avatar  

    Simon Maple

    May 24, 2013 @ 8:58 am

    Hey Greg,

    Thanks for the feedback – We’ll be doing a refresh soon, so will look to include this in. Thank you!.

  16. Avatar  

    Adil

    June 6, 2013 @ 6:06 pm

    Great job, I look forward to your App Server production and operations review!

  17. Avatar  

    Simon Maple

    June 11, 2013 @ 10:07 pm

    Thanks Adil :)

  18. Avatar  

    OutspokenDelroy

    June 16, 2013 @ 7:21 am

    Wow! It’s clear that a bunch of smart people put a lot of effort into this comparison, yet the result seems to be disconnected to the concerns of the development teams that I’ve worked in the 15 years I’ve been coding Java.

    I agree with your idea that developers can use a different app server than the one that their code will run in in production, but ultimately what matters is production code. It’s production code that makes money. If, for argument’s sake, your code will run on Weblogic in production (a more likely assumption than most others, given its native accelerator and scalable clustering implementation) then using Weblogic as a dev environment should at least be considered as an alternative.

    Comparing app servers is hard, and scalability and performance should be key factors. Startup time is not performance. If you don’t have the technical competence to do an evaluation like this, then don’t attempt it – what you have done here is write a pretty report that will mislead inexperienced readers and make you look bad for experienced readers.

  19. Avatar  

    Toomas Römer

    June 17, 2013 @ 7:08 am

    I don’t think scalability and performance should be the key factors to consider when comparing application servers.

    Firstly high scalability and high performance usually isn’t the most important when considering which app servers to use (how many of us get to work on really high performance stuff?).

    Secondly there are no app servers that don’t scale or don’t offer high performance (from Jetty to Websphere all scale and perform).

  20. Avatar  

    arhan

    June 17, 2013 @ 8:34 am

    “I agree with your idea that developers can use a different app server than the one that their code will run in in production”

    It is not an idea. It is the reality. This is how a lot of developers work.

  21. Avatar  

    Toomas Römer

    June 17, 2013 @ 8:36 am

    I don’t like this idea. Will introduce issues on the REAL env.

  22. Avatar  

    Simon Maple

    June 18, 2013 @ 2:48 pm

    Hey,

    Thanks for the comment.

    Scalability and Performance are issues for production runtimes, not development. If you want to make your ‘application code’ run in a more performant way, your container is rarely a consideration. If you want your runtime to be performant, then this is an ops consideration. Both these are operations style items which are outside of the scope of this report, which is focused purely on development. (We are looking at doing a production style report which would cover these topics).

    When we talk about performance in this report, it’s around the performance of the developer. How can the dev be as performant in their role. This is absolutely about startup times, initialisations times and so on, as when they lag, the dev cannot be productive.

    Out of interest, which development concerns have you seen in your 15 years which we did not cover in this report?

  23. Avatar  

    Simon Maple

    June 18, 2013 @ 2:49 pm

    Nobody likes this idea, but the alternative is sometimes worse :)

  24. Avatar  

    Simon Maple

    June 18, 2013 @ 2:51 pm

    Scalability and Performance are absolutely key factors! Particularly for Enterprise environments. But these are concerns for production and operations.

    Also, while Jetty and WebSphere do both scale and perform, there will be different efforts and management limitations you’ll hit quite early on with containers like Jetty in comparison to WAS or WL.

  25. Avatar  

    Zack Belcher

    July 1, 2013 @ 8:05 pm

    Just a suggestion – Why not use JBoss EAP (rather than Wildfly, the community edition) in your comparison with Oracle/IBM since it (EAP) is hardened, integrated and enterprise class? Then we could also see your analysis of difference between JBoss Wildfly and JBoss EAP.

    The Wildfly/JBoss AS 7 / EAP 6 architecture is a big step forward, I believe.

    Thanks for the writing this though – great read.

  26. Avatar  

    Andreas Schmidt

    July 2, 2013 @ 11:27 am

    We have an application here that needs about 15 minutes to start in a dev environment using eclipse + WAS8. 8 Minutes alone are needed for the EAR deployment. The project deployed a lot faster on WAS 6.1 with EJBs being declared in XML. Very likely the annotation scanning in WAS is the problem, because there are a lot of annotated EJBs. IBM really failed here. The same EAR deploys in 45s in LibertyProfile. Not to mentions that WAS8 throws a lot of Exceptions, most popular the “annotation merge NullPointerException” known since 11/2013 and still not fixed?!?!?! Last not least, now I have to run WAS8 with 1.8GB of heap instead of the 768 MB that could satsfiy WAS6.1.

    WAS is unusable for development due to its bloatedness, permanent delays and bugs. I would never recommend using that for either dev nor prod. There is so much fiddling involved to ship around weird effects and inconsisntencies..

  27. Avatar  

    Anonymous

    July 10, 2013 @ 7:16 am

    Beautiful article, but worst trailer ever :)

  28. Avatar  

    Marcia Harelik

    July 26, 2013 @ 8:18 pm

    Now let’s take the Great Java Application Server Debate on the road. A live, head-to-head challenge death match for developers.

  29. Avatar  

    Simon Maple

    August 7, 2013 @ 8:41 am

    We try hard to be bad… ;)

  30. Avatar  

    Simon Maple

    August 7, 2013 @ 8:42 am

    Totally agree – I hope you’re using JRebel to turn all that time into < 1 second! http://jrebel.com/download

  31. Avatar  

    Anonymous

    September 5, 2013 @ 7:42 pm

    Still not updated. Will that affect the best application server..

  32. Avatar  

    Simon Maple

    September 20, 2013 @ 11:44 am

    Hey Anon, no it does not affect final standings – it was simply a copy paste error. The graph is correct. We must have missed changing it in our update, we’ll change this during our next one. Thanks for the reminder.

  33. Avatar  

    James

    November 8, 2013 @ 6:40 pm

    Any reason why Resin was left off this list of comparisons? It predates Tomcat as the first Web Profile certified App server and includes a web server faster than nginx. Also, I’ve enjoyed developing on a platform based upon CDI, makes it modular and easy to swap different vendor components :)

  34. Avatar  

    Roman Kharkovski

    November 13, 2013 @ 10:56 pm

    I tested latest versions of all these products, plus WebSphere and WebLogic and posted results here: http://whywebsphere.com/2013/11/13/developer-point-of-view-on-the-app-server-debate/

  35. Avatar  

    arhan

    November 14, 2013 @ 6:12 pm

    Nice comparison! Although some judgements are still highly subjective :)
    Coz JBoss IDE support definitely is not just just Basic…

  36. Avatar  

    arhan

    November 14, 2013 @ 6:13 pm

    Resin has some really nice features indeed… Like running PHP and Java apps on the same server. It is just not as popular as Tomcat.

  37. Avatar  

    Roman Kharkovski

    November 15, 2013 @ 2:51 pm

    Other than IDE – what are other judgements that you find “subjective”?

    IDE is indeed a hard thing to judge and my standard for the “features” was Rational Application Developer. It has many advanced features, but I also agree that it is very “resource intensive” (to put it nicely).

  38. Avatar  

    arhan

    November 15, 2013 @ 10:28 pm

    Basically, any measurement that estimates in non-quantifiable units could be considered “subjective”. For instance, Admin GUI, even though I mostly agree with your estimates. IDE is the only category where I’m in doubts.

    Besides, can’t see a point of having the “Ant/Maven/Jenkins” category, as you don’t provide the analysis anyway and all of the servers are awarded “Yes” :)

  39. Avatar  

    dude20

    December 1, 2013 @ 11:30 am

    No concurrency benchmarks? I think how many request per second these platforms can handle matters a lot more than their start up time.

  40. Avatar  

    SolrWind

    December 3, 2013 @ 5:32 am

    I’m surprised at the results. I’m a hardcore Jetty fan. I use it in my dev environment as well as in production, and it has never let me down. I personally have zero need for EE features, since Spring Framework and Spring MVC handle all of that for me.
    I prefer to use the simplest and most lightweight container. Simple equates to a small footprint, which means reduced memory usage, faster sub-component performance, and easier security auditing.
    Tomcat is actually on my shitlist, since the documentation sucks, the configuration is more difficult than Jetty’s, and it has had more security issues.
    As for an integrated admin console, I don’t need one. That’s what scripts, JMX, and external monitoring software are for.

    Jetty++

    P.S.: IIRC, Google App Engine uses Jetty as the container.

  41. Avatar  

    Al Sargent

    January 28, 2014 @ 1:10 am

    Commercial Tomcat support has been offered since the late 00’s by SpringSource, acquired by VMware and now spun out into Pivotal. (This is in addition to commercial tc Server.) I can’t speak for other vendors, but I believe there are some that offer support.

    Disclosure: I work for Pivotal — Sorry for the commercial plug, but I wanted to comment on the claim that there’s no commercial support for Tomcat.

  42. Avatar  

    miguelkvidal

    March 7, 2014 @ 2:21 pm

    Liberty and GlassFish have the exact same text: “Although you have to accept the license agreement twice, it’s not all that bad as most people just click accept anyway :) Does anyone actually read them? The download is 41.4 MB which isn’t too bad given the extra features it has over say Tomcat or Jetty” (pages 5 and 6)

  43. Avatar  

    Jezzer

    July 23, 2014 @ 4:43 pm

    Your score for JBoss fro ‘Arnel Pallo’ doesn’t add up. It should come out at 38.5. Still puts it in the lead but only by the smallest of margins…..

  44. Avatar  

    Alessandro Mattiuzzi

    November 25, 2014 @ 3:45 pm

    Jetty has all that i need

  45. Avatar  

    apsk

    August 5, 2015 @ 12:30 pm

    tomcat is best?

  46. Avatar  

    apsk

    August 5, 2015 @ 12:31 pm

    pls reply

  47. Avatar  

    Gordon

    August 23, 2015 @ 6:37 pm

    Just installed Glassfish following the tutorial at https://www.rosehosting.com/blog/install-glassfish-4-1-on-a-centos-7-vps/ and I think it is great. Tomcat is great too.

  48. Avatar  

    geetha

    September 22, 2016 @ 5:32 am

    Interesting blog to read

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.