Wednesday, March 28, 2012

Arun Gupta, Java EE6, Spring and James Bayer


It has been entertaining to see the exchange between the Java EE and Spring zealots, as it always is.  Recently Arun Gupta, a Java EE Champion and Evangelist, posted a blog on why he thought Java EE6 is better than Spring:  This stirred the pot and got some interesting comments on the post.

One such comment was from Previous Oracle WebLogic PM James Bayer who now works at VMWare:

I have posted the comments below on Arun’s blog, but the text is too long for James’s blog as a comment, and it would be good to have my opinion stated on my blog, not in someone else’s comments.  Here we go:

This has definitely been an enlightening and entertaining stream of comments!

Disclaimer: I too am employed by Oracle. Draw whatever conclusions you must from that. I thought Spring was a pain in the arse before I joined Oracle and I still hold that opinion. It just so happens that I am now paid by Oracle *while* sharing that opinion Smile

Let’s agree to one thing up front - both the JCP and SpringSource seek to serve the Java community.

In addition to attempting to serve the Java Community, SpringSource needs to continue to serve its own interests.

There is value in developing standards and there is value in breaking away from the standard in the vein of innovation to create something new. Our society definitely rewards individuals who take this approach. Does SpringSource innovate and help advance the Java platform? Absolutely! Innovation helps drive the standards forward and the standard provides a base for innovation. I think we can all assume that neither Java EE nor Spring will die any time soon and that we will never be without defined standards.

One thing I find interesting in the ‘competition’ between Java EE and Spring is that since the JCP is public, SpringSource is able to view the process and take their own tack on how to implement the JSR’s included in the Java EE spec and do so before the community has finalized a new version of the spec. Rightfully so, larger corporations like IBM and Oracle would not begin working on implementing the spec before it was final. How long is ‘acceptable’ for vendors to start releasing implementations of the new spec, anyway? It is not just the spec that they have to implement - it is implementing the spec in conjunction with value-added features, backwards compatibility and testing cycles. SpringSource has the flexibility to watch the process and deliver their proprietary interpretation of things very soon after an Java EE spec is released without being encumbered by any other agenda or process – all while putting their own spin on how things should be instead of influencing the JCP and the Java EE Standard for the greater good.

It would be interesting to see the state of affairs with Java in an alternate universe where Rod Johnson worked through the JCP to improve Java instead of inventing Spring. It was clearly an opportunistic move, and it has served him well. However, I believe that Java would be in a better state if we could have kept the focus on improving Java through the JCP.

As Arun has stated, and what should be common knowledge by now, Java EE 5/6 did a great deal to improve the original problems and perceptions with J2EE. The original reasons for adopting the Spring framework are no longer valid in many cases. For new development EE6 offers a great deal of productivity for developers. Its designed for this and it delivers. Of course – we can all say that we want people to come to their own conclusions (only after we’ve had a chance to influence them). If we agree not to try to influence the decision process then we should take down and ASAP.

Let’s be clear about one thing - there are developers who most definitely do NOT want to use Spring. This is a fact. They have been forced into it and don’t like it. Let’s not try to paint a picture where every developer in the world is dying to use Spring but is held back by an evil dictator making them stay on J2EE 1.3.

They are tired of working with XML files and struggling with getting things wired correctly. Sure, 3.0 and 3.1 help with less XML required but that doesn’t help someone who is stuck on 2.5 and can’t upgrade. It also doesn’t appease the frustrations they have had dealing with XML which make them want to switch – just like the argument for EJB 3.0 being simple doesn’t alone make people want to switch back from Spring if their reason for adopting it was EJB 1.1 tribulation. This is only one point, and my goal here is not to provide an exhaustive list. This is one example of a point that is driving some Spring developers to look for other options.

Also, developers in corporate IT shops do not always get a choice of what they can use. They are often directed what to use by the Team Lead or Architect. You could soundly argue that in order to be a Team Lead or Architect in a large(ish) organization that you need a few years of experience – lets say 5-6. This being the case, when these individuals were ‘coming up’ from being an entry-level developer during the time where Spring was gaining momentum and probably wound up going down the Spring path instead of Java EE. They have learned it and used it for years now and they can be very effective with it – we all use the tools we can be most effective with. I feel this is a major reason for much of Spring’s ongoing success.

One final ‘content’ note - the Oracle Public Cloud is not released, and there is more to test in OPC than the WebLogic implementation. James, you know this – you were here.

It’s easy to be a Monday Morning Quarterback on this because we can look back and see the path history has taken. To be honest, the point of these discussions seems lost in posturing and personal defense/offense. What’s the point of this, seriously? There is nothing to be gained from this aside from putting on a show for the masses. Both Spring and Java EE have their champions. Neither side is innocent of not making things personal or bashing the other side – both sides do it regularly and often. Pointing out individual incidents of bashing is neither productive nor conducive to a peaceful existence – assuming that’s what we want… Smile


  1. Thanks for your valuable comments -- it's good to hear from someone inside the "mother ship" every now and then. I am also glad to have been able to provide some "entertainment".

    I see your point but have to disagree with you on the generalization that "both sides are guilty of making things personal". I am afraid I have a very different perspective on that. Since the years ago that this discussion started until this very day, I can honestly say I've made every attempt to keep this about the technology and not about the people (in fact, Caucho has specific policies around this). Whatever my personal beliefs as to the value of standards, I have also tried my very best as an independent consultant to remain objective, especially to best serve my clients. That sincere effort has been made close to impossible in large part due to SpringSource employees (it seems from the highest level to the lowest ranks) making no such consideration. Personally, I have had enough. If this carries on as something "normal", I feel I have no choice but to seek to change this behavior employing whatever mechanism that will work (if there is any). One thing I will not do is stop saying what I think because I believe the server-side Java community needs this to continue to be a two-way conversation.

    1. Just to be clear, by 'both sides' I mean Spring Champions and EE Champions :)