Skip to content

Instantly share code, notes, and snippets.

@odrotbohm
Last active August 29, 2015 14:23
Show Gist options
  • Save odrotbohm/ee2c4a4e0d378b04277d to your computer and use it in GitHub Desktop.
Save odrotbohm/ee2c4a4e0d378b04277d to your computer and use it in GitHub Desktop.
Translation of a comment I wrote for the German Java Magazin to oppose the impression of a "Spring VS JavaEE" created in another article. https://jaxenter.de/von-einem-spring-versus-javaee-zu-reden-ist-faktisch-eigentlich-falsch-20965

There is no Spring VS. JavaEE

"Why Spring 5 is planning without JavaEE 7" — the opposite of that is true. The framework already supports a lot of specifications of the JavaEE 7 release: Servlet 3.1, JTA 1.2 (@Transactional), JPA 2.1, WebSocket 1.0 etc. are already supported by Spring 4. The JCache support in Spring is so old (introduced in 4.0), many Java developers don’t even realize that the spec hasn’t been included in any official JavaEE release yet.

It’s a matter of fact that for a lot of projects that run on application servers like IBM WebSphere and Oracle Weblogic using Spring as a platform is the only way to use these new APIs at all. Speaking of a "Spring VS. JavaEE" is indeed wrong. But what is it, that Jürgen is duiscussing in his blog post?

The post is taking an inventory of the JavaEE world in relation to the project planning for Spring 5. We usually use major version bumps in the framework to raise certain base lines regarding the referenced platforms. For the JDK this will be version 8, mostly because it has gained a lot of traction and is used quite widely already — one year after its release.

Unfortuately the picture is quite different for JavaEE: as it can be seen here, the number of JavaEE 7 certified application servers is pretty low. For the planning of Spring 5, it’s especially remarkable that for the server implementations that cover a broad spectrum of the market (Oracle Weblogic, IBM WebSphere, JBoss Wildfly, Tomitribe TomEE) there either is no JavaEE 7 implementation available or the existing implementations are not commercially supported and only see sporadic updates (e.g. Glassfish — 1 feature release as of 4.0 (2 years), no bug fix releases).

This situation makes it pretty much impossible for customers of those vendors to upgrade to a version that supports JavaEE 7. Switching to one of the newer vendors (Payara etc.) is often not considered due to the lack of trust (justified or not), migration efforts etc. The bottom line is: a majority of the application server users can’t and won’t upgrade to JavaEE 7 soon — 2 years after the spec was released.

Thus, if Spring 5 required JavaEE 7, we’d cut off exactly this majority of the market as it would not be able to upgrade to exactly that version of Spring. That’s why Spring 5 is going to stick to JavaEE 6 as minimum baseline. No more, no less is in Jürgen’s post. Turning that into a "Spring VS JavaEE" is quite adventurous, I think.

To sum things up: current Spring 4 already supports a lot of JavaEE 7 APIs, Spring 5 will do as well. Depending on the progress of JavaEE 8 until its release date, Spring 5 will definitely support the upcoming spec versions, too, just as has always done.

@arcivanov
Copy link

WildFly 8/9 is not commercially supported but isn't even mentioned. It is, however a Java EE 7 compliant container.

@odrotbohm
Copy link
Author

I've listed JBoss to include that and constraint the observation to even those implementations lacking commercial support (same paragraph). I'll go ahead and make the list more precise.

@arjantijms
Copy link

The bottom line is: a majority of the application server users can’t and won’t upgrade to JavaEE 7 soon — 2 years after the spec was released.

This may be true, and over at OmniFaces we had a fierce debate a while back about exactly this point; should be have Java EE 7 as a minimum baseline for OmniFaces 2.0 or not (after a community poll we decided we more or less should, but the dice could have rolled the other way, especially since back then there were even less compliant servers).

The problem is however that the tone of the original post made it sound as if Java EE 7 is a special kind of failure. That it's exactly Java EE 7 that failed, while for instance Java EE 6 was adopted fairly rapidly.

This is not the case.

I did some research into this a while ago (see http://arjan-tijms.omnifaces.org/2014/10/java-ee-process-cycles-and-server.html), and until now the pace is approximately the same as it was with Java EE 6. For better or worse, 2.5 years was the time it took for "most" servers being Java EE 6 certified last time around. At nearly exactly 2 years, the original article was perhaps a bit too fast to declare failure for Java EE 7.

@odrotbohm
Copy link
Author

@arjantijms - That's impressive research and indeed interesting news. However, the statistics you got are basically proving our point: JavaEE 7 is lacking the backing of the major players in the market, which JavaEE 6 lacked less. I'd especially denote the (non-)availability of WebSphere and WebLogic.

Again, the point is not that we claim there are no supported JavaEE 7 runtimes. It's the fact that virtually none of the implementations that cover a huge base of the current JavaEE 6 installations haven't released any update yet or the updates are not (commercially) supported.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment