Gavin King [1], the father of Hibernate, recommended that developers upgrade to the Java EE 6 platform, and pointed out that the current reluctance to upgrade is actually unfounded.
After the release of Java EE 6, I saw a lot of resistance to upgrading to the new platform. Most of these objections are raised by users of Tomcat / Jetty and some open source frameworks (such as Hibernate and Spring).
Of course, there are many benefits to choosing non-standard, open source technology. In addition, in EE 6, you can use the open source frameworks you are interested in. Servlet 3 and CDI can seamlessly integrate third-party frameworks. So there's no reason not to use EE 6. Still, I saw someone say:
Upgrading to EE Application Server is Difficult
This seems to be a political issue for the specific organization rather than an actual technical issue. Of course, upgrading a server such as GlassFish or JBoss is a very trivial task. (Upgrading third-party frameworks is even more painful.) Some organizations have a very heavy-weight process for upgrading servers, but not so much for upgrading the frameworks running within the servers. Therefore, it is easier for the development team to upgrade third-party frameworks.
I think developing a more convincing and better process is the most important thing, rather than abandoning Java EE. There are many risks associated with running your application on an old, outdated server platform, and the process should not encourage such practices.
But from a practical perspective, almost everyone is planning to upgrade to Servlet 3 in the near future. Whether you are using Tomcat, Jetty, JBoss, GlassFish, Resin, WebLogic, Oracle or WebSphere, it means a server upgrade. This is a great opportunity to upgrade to EE 6 Web Profile, golden time.
EE application server is too big
The objection is that EE Server contains many features that are not (currently) available. The opponents' arguments usually involve discussing the size of the jar package and the disk space occupied by the Servlet engine + third-party framework and the EE application server. In fact, this argument is problematic:
The disk usage and disk space discussed are actually trivial when measured in $, and the application war package is much more important than the size of the server installation package. The server actually contains many functions to minimize the size of the war.
In addition, I think the most convincing thing is that Java EE 6 Web Profile is not huge at all. Once certified Web Profile servers are on the market, we can find a balance between large EE application servers and small Servlet containers.
Bad J2EE and EJB2!
With the standardization process of JCP, this problem actually no longer exists:
1. It has been 8 years since EJB2 appeared! Is it still your best choice?
2. Good specifications have been merged through the continuous standardization of JCP, and some of them can be used with great certainty. However, JCP is not 100% successful in standardization.
3. Everyone working on the EE 6 platform hates EJB2 and J2EE. That's why people are constantly joining the JCP to help fix these problems. For example, the founder of Hibernate and the author of this article. Do you really want to teach him a lesson about EJB2? :-)
4. Almost all the people who work on Entity Beans are retired now!
In fact, Java EE 6 Web Profile is sufficient. If you don't try Java EE 6 yourself, you can't really feel the benefits of EE6 for development.
Application server portability is such a mystery!
Really? We see many people splitting their applications and deploying them on different application servers? Oh, I've seen that mean 100% flawless application 0-change porting, a Platonic ideal of portability. I understand the weakness for absolute truth and Platonic ideals, but let's look at examples first.
Here's a very typical view of a portability problem:
9% of the code, 85% of the external metadata are fully compatible on different server platforms, and the remaining 1% and 15% can be appropriately split
0% code, 80% external metadata tied to non-standard, single-vendor container architecture
As I was dividing these points, I suddenly wanted to change the topic of this section from application server portability is too mysterious to I don't care at all about container portability. The idea of a theme change confirms that the server portability issue is real and that it will be very useful for many organizations.
I've always wanted to see real reviews of EE 6 from non-EE 6 technical maintainers. Some of the arguments mentioned above do not come from the real world, so it is difficult to trigger discussions on actual technical issues of application development on the EE platform. The latest round of JCP specifications seems to have left the anti-EE camp (temporarily?), but lacks factual support for success.
Editor's Note:
[1] Gavin King: Founder of Hibernate, member of the EJB3 Expert Committee, one of the core members of JBoss, leader of the Seam framework, JSR-299 (CDI) specification leader, and author of the book "Hibernate in Action".
Source: You should upgrade to Java EE 6