I've been using JBoss Application Server professionally since 2002. During this period, I've also used Tomcat, Jetty, Glassfish, IBM WebSphere and the already dead OC4J. Between these options I would say my personal choice always was JBoss. Do not misunderstand me; Tomcat and Jetty are both great and lightweight web containers. But the point of this post is not to discussion anyone's preferences, but my experiences with the new version of JBoss Application Server (AS).
First of all, I would like to discuss the good points and improvements JBoss 7 has over its older versions. So, my "loves" are:
Strict Java EE 6 compliant
Completely redesigned architecture (very welcome)
Modular design
Say goodbye to microcontainers
They have created an abstraction built on top of OSGI
According to JBoss guys, it is “prepared to support Jigsaw”
Modular dependencies
Modular classloading
Two execution modes
Better security support
Central point of configuration
Better management solutions
Simple and easy management interfaces
Web Console (GWT) with only the most important data
Rest interface
Command line
JMX (actually I’ve never used this, there is no need any more)
A centralized management interface for domain mode
Persistent configuration through any management interface available
Faster startup
Modules were optimized to minimize the startup time
Modules and packages are indexed
Only required modules are loaded
JBoss knows your dependency graph, so there is no reason to load JMS module, for example, if you do not use it. Even though you have configured it to be loaded. Actually, it seems to work pretty well.
Parallel startup
Once JBoss 7 knows your dependency graph, it can use all cores to start your apps
To resolve correctly your dependencies in older versions of JBoss, you have to inform the order you apps must start. So there was no way to start them parallelly
Memory diet
Better support for integration tests through Arquillian
Besides all these good stuff, let me show my "hates":
Strict Java EE 6 compliant
Wait.. You should be thinking: “at first you said it was a good stuff, and now a bad stuff?!?!”. The reason for this is that there are functionalities which are impossible to implement using pure Java EE spec and, most of them, were removed. :-(. Some of them, community yell so much they have decided to add an alternative. Take as an example Container Interceptors which is coming in JBoss AS 7.2 / JBoss EAP 6.1
Completely redesigned architecture
No backward compatible in JBoss specific features
No JBoss AOP any more :-(
The migration documents are useless
Annoying bugs deploying applications through management consoles
JBoss EAP Alpha
The community version of JBoss (i.e. JBoss AS) will now be called as JBoss EAP Alpha. Why?!? Marketing purpose, of course. Imagine you saying to a client they should be using an Alpha version in production
UPDATED: Just received an e-mail from Red Hat saing
JBoss EAP Alpha is not as stable as the JBoss AS Final
Although they say EAP Alpha is stable as the AS Final, it is not complete true. If you take a quick look on JBoss modules, you will easily notice they are using unfinished/unstable libraries.
For example, JBoss EAP 6 Alpha is bundled with hibernate-core-4.2.0.CR1. I don’t recall any CR lib in older versions of JBoss AS.
Obviously it is very ease to people with certain knowledge to modify. But most of people will be using JBoss without any module structure change, for sure.
Domain controller is not fault tolerant
Whenever the domain controller dies, other nodes cannot be restarted or managed. If you try to restart them, they will give you an error saying they cannot connect to domain controller. Hope the fix would be coming.
Does not provide load balancing for EJB Timer
Last, but not least. JBoss EAP support is a pain in the ass
I will make no comments about this. Just try by yourself you will understand what I’m talking about.
My advice is: be prepared, mainly if you have gastritis. :-)
Even with all these issues, I still think JBoss 7 / EAP 6 is one of the best application server available, but I think the move Red Hat is taking would be pushing the community away from them. Actually, I know people which are looking for Jboss alternatives. Some friends are working in a migration from JBoss 5.1 to TomEE, another once told me: “if I have to pay for an Application Server, I will be paying for a WebLogic”. He said that knowing Oracle contracts were more expensive than Red Hat ones.
Anyway, everybody knows that there are many good Application Server options out there (both free and paid ones). So, what do you think? Would you be using the JBoss EAP Alpha in a production environment? Please, leave your comment. I would love to hear it.