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

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).

DOWNLOAD THE PDF


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.

Leave a comment