JavaEE or Spring? Neither! We Call Out For a Fresh Competitor!


If you’ve been following some key Java people on Twitter or reading the “news” on Reddit, you could not have missed the hilarious quarrel between some Spring and JavaEE evangelists.

First, Jürgen Höller’s provocative article:

“Happy second birthday, Java EE 7! How is it going in production?”

Then, Reza Rahman’s response:

“The Ghosts of Java EE 7 in Production: Past, Present and Future”

And in between, there had been hundreds of equally amusing tweets.

If you haven’t already, take out your popcorn🙂

EDIT: This discussion went on further than this blog post. There are also discussions going on:

Troll marketing

At Data Geekery, we’re certainly not unacquainted with the fun and effective technique that we like to refer to as “troll marketing”, e.g. when we recently ranted against the (ab-)use of annotations by both Java EE and Spring, or when we compared Hibernate with the good old Nokia 3310.

It’s childish, yes. But it is also effective. The only reason why it is effective is because by doing so, you’re stirring up a hornets’ nest. You have a point, after all, and you start triggering a very polarised discussion that has no right/wrong answer, which all participants will fail to accept, and thus fight. While they’re fighting, you can put your brand in each and every message. Bingo.

Spring folks do exactly the same thing. If you’ve heard a talk by Josh Long from Pivotal, you will certainly have noticed that much of the talk is just ranting about things like Internet Explorer. If you’re not the kind of person that takes everything personally, seriously, and/or literally, then such a talk can be quite amusing.

The interesting bit here is the fact that the “standards” evangelists react to Spring’s provocative article way too much. At the bottom of Reza’s article, there is a linked presentation by Bert Ertman, in favour of Java EE (and it wouldn’t be wrong to say that Reza thus endorses this talk’s content and style):

The key point I’m trying to make here is not that two opposing technology vendors try to get a hold of their communities, convincing people that their tech is better (that’s what engineers have been doing long before Tesla vs. Edison).

The key point I’m trying to make here is the fact that one of the vendors claims for themselves to be a “standard”, putting themselves (the JCP = Oracle) on eye level with real standards committees like ISO, DIN, w3c, IETF.

JavaEE is a Standard?

It is, in a way. It is a de facto standard, just like Spring. It is a very loose set of small interest groups that are governed mostly by Oracle (and other vendors) who try to promote and establish their interests and technology over alternative, “proprietary” tech.

JavaEE is a “standard” with a long history. It has always been a rather “weak” standard, which is why Spring was created in the first place. The fact that Reza from Oracle reacts so sensitively to Spring’s deliberate provocation can be interpreted as a sign that the “standard” is still weak and endangered by Spring as an alternative.

An interesting comparison could be made to Siebel vs. Salesforce. Siebel was the de facto “standard” in the CRM industry but Salesforce managed to harass Siebel so much that Siebel had to acknowledge Salesforce as a real competitor in its business long before they even remotely met on eye-level, revenue-wise. This was ultimately leading to Siebel’s demise and acquisition by – how ironic – Oracle, where much of the JCP is hosted.

The same thing has been happening with Java EE and Spring. Spring is now so extremely successful in the market, even if completely (= admittedly) proprietary, that Java EE will have to fight hard to get back on top of Spring. Much harder than merely calling out the old and lame “standards” argument. Java EE has to be better and faster than Spring, not just a “standard”. With all the JCP politics going on, I don’t see that happening, though.

So, will Spring win?

My prediction is: Nope.

This whole story just shows us that standards in our Java ecosystem are weak. There are an incredible amount of players on the market. Niche products like Hibernate and jOOQ can shake up the database access market segment. Niche products like GWT, Vaadin, ZK, Spring MVC, Play Framework, etc. can shake up the HTML UI market segment (no way JSF or JSR 371 can prevent further market fragmentation in this area).

Heck, language agnostic technologies like Akka or Vert.X show that not even the Servlet API is really sound and safe. And with Oracle having introduced Nashorn, the whole JavaScript ecosystem might just as well threaten Java EE. The only thing that can be taken for granted for another 5-10 years, I suspect, is the JVM and the Java SE JDK with its libraries, including JDBC.

Our industry is advancing so quickly right now, it seems to be impossible for a highly distributed, rather political committee like the JCP to keep up the pace and deliver the quality and innovation that we’re seeing elsewhere.

In other words, the Java EE “standard” is nothing more than a 5-10 year-behind body of, admittedly, proven technologies. Proven some time ago. Given that a single player like Pivotal has successfully challenged the “standard” for more than 10 years now, I suspect that new players might soon enter the market with new alternatives.

Who will be the new players?

One of them will be the soon-to-be-renamed Typesafe. Why do you think they’re getting rebranded after all? And what do you think they’re trying to prove with Akka + Play + ConductR? They’re trying to prove that you can do software entirely differently on top of the JVM, that’s what they’re trying to prove.

Besides, they’re using the same low-content, high-emotion troll marketing technique that Pivotal / Spring had been so successful with. Observe their use of the evil term “monolith” everywhere (= Java EE, what else):

monolith

Another one of them might be… Microsoft! Why not? Their recent Open Sourcing moves might help establishing .NET on top of Linux, eventually. And once you’re on top of Linux, you might as well get on top of the JVM. The .NET ecosystem is much more coherent than Java’s and this will exert a lot of innovation pressure on our ecosystem.

microsoft+linux

All of this is happening while the JCP is still recovering from the politics behind the game-changer data interchange APIs JSR-353, JSR-367, and JSR-374

Interesting future

The above predictions might or might not become true. But one thing I’m very certain of. We will have even more competition and thus more choices for our infrastructure software in the near future. The current de facto standards will lose market shares. Tough luck for them, better tech for us.

While the evangelists are fighting their little personal fights, I’m looking forward to a very interesting future on the JVM.

Read about a concurring opinion by our friends at Takipi here

4 thoughts on “JavaEE or Spring? Neither! We Call Out For a Fresh Competitor!

  1. There’s no doubt about .Net on Linux can make (and is making) some pressure on Java eco-system, enforcing to improve itself. But as you said the issue about Java is the language (and all the standards around it), not the JVM itself and with Typesafe, Pivotal and others which are actually showing we can do much more than meet the eye with JVM, is that .Net on Linux a real competitor?

    I’m just asking since what’s the point at the end? Are we really starting to think there could be a winner in all of this? My answer? NOPE. No one is going to take over another and vice versa. Why? Well it’s simple: free to choice in a world where almost everything is open-source. The competition is just another word for saying “improve yourself”, if you won’t able to do that, yes you’re a looser, but let’s face it in all of this we got Community! And theoretically the Community is tireless and even the Companies know (Apple as well at last! Swift open-source! wait… WTF?), hence it’s a forever-run.

    This is just my point of view.

    • I think your opinion essentially aligns well with the article. There can’t be a “winner” in all of this. The article (and your opinion) highlights the fact that the Java EE vs. Spring battle has been trapped in the thought that this whole “EE” approach is a “standard”, i.e. something that should be chosen as a “default” for any architecture. It’s not. It’s just one out of dozens of ways how to write software on top of the JVM (and perhaps on top of the Java SE). As this becomes more and more clear, both JavaEE AND Spring will eventually lose market share.

      • well that’s for sure, if the competition is only focused on “I’m more standard than you”, there’s going to be an implosion of both. However from what I’m able to see and to understand Spring Framework (and all satellite projects) are going pretty far from being a “standard” (i.e. Spring Boot can and must be more than that), but I can’t go further about it since I’m a little bit biased (I’m a Spring developer…).

        I’m only wondering now, is that “default” (Framework, standard, whatever) really necessary? Following trends as above why don’t we also consider Microservices then (http://martinfowler.com/articles/dont-start-monolith.html)? And with Microservices we can potentially start our project with different technologies (and we need a lot of full-stack developers, but this is another story) where such discussions (like mine or yours) are going to be something of the past, perhaps?

        • Spring Framework (and all satellite projects) are going pretty far from being a “standard”

          They are, but on the other hand, they work in the same market as Java EE, and they have mimicked a fair share of Java EE APIs, concepts, etc. (and the other way round, too).

          is that “default” (Framework, standard, whatever) really necessary

          It *depends*. Having defaults is extremely useful whenever interfaces are concerned. E.g. JDBC, HTTP, HTML, etc. Within a system, however, these defaults (framework, standards), are just proprietary products with pros and cons.

          where such discussions (like mine or yours) are going to be something of the past, perhaps?

          Perhaps. We’ll see if a market fragmentation is introduced, and if this will really transform our industry…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s