Monday, 25 October 2010

Babylon 5 & the Great War of Java

It was the dawn of the third age of Java, ten years after the Sun/Microsoft war.
The Java Community Process was a dream given form.
Its goal: to prevent another war by creating a place where technologists and vendors could work out their differences peacefully.
It's a port of call, home away from home for diplomats, managers, entrepreneurs, and developers.
Technologists and vendors wrapped in two million, five hundred thousand lines of spinning legal document, all alone in the night.
It can be a dangerous place, but it's our last best hope for peace.
This is the story of the last of the JCP's chances.
The year is 2009. The name of the place is the Java Community Process.
-----
The Java Community Process was our last, best hope for peace.
A self-contained world 333 JSRs long, located in neutral territory.
A place of commerce and diplomacy for ten million developers and managers.
A shining beacon in the community, all alone in the night.
It was the dawn of the Third Age of Java, the year the Great War came upon us all.
This is the story of the last of the JCP's chances.
The year is 2010. The name of the place is the Java Community Process.
-----
The Java Community Process was our last, best hope for peace. It failed.
But in the year of the Great War, it evolved into something greater: our last, best hope for victory.
The year is 2011. The place is now the Java Community Process.

With apolgies to Babylon 5.

Babylon 5 and the Great War of Java

I'm re-watching the amazing Babylon 5 TV series at the moment on DVD. I was struck by how the voiceover at the start of each series could be adapted to the current situation. But also how one of the key themes plays out in two key questions - "Who are you?" and "What do you Want?"

The Java Community Process truly was a great hope for peace. A neutral place where everyone from developers to vendors could work together to produce specifications, reference implementations and tests to drive the success of Java.

But the JCP has always been flawed.

The many, many lines of spinning legal agreement have tied up the JCP on more than one occasion. Initially, for example, it wasn't possible to implement any specification in open source. The Apache Software Foundation had to fight for that right in 2002. A right that was then taken away by Sun in the Apache Harmony dispute. And a right that could not be won by the combined forces of every other particpant except the ruler (Sun then Oracle).

And now, in the past few months we are seeing the unravelling of the JCP turning into the wider "Great War of Java".

In a short period of time, Java has gone from the platform designed to unify the entire industry to a highly politicised punch bag.

Java on the desktop now looks pretty meaningless if Apple wants nothing to do with it. (I subscribe to the view that there will be some desktop machines from Apple before too long that will not permit access via any means other than the App Store.) Of course, that could well make Java FX DOA.

Whichever way you look, Java is being squeezed - even by new programming languages on the JVM bypassing much of the Java platform.

Which leads me back to the questions posed in Bablyon 5:

Who are You? What do you Want?

These are questions every single member of the Java Community should be asking themselves right now.

Do we care if Oracle chooses to assert control and break legal agreements?
Do we care if the poison of the last few years from this dispute may have been the cause for the recent moves away from Java?
Do we want to save Java on the desktop? And on the Mac?
What do we "as a community" really want?
Can that question ever be answered when the community is just a diverse group of individuals?
Would an independent JCP really make much difference now?
Can things still get worse?

On the last point, I certainly think they can, if Apache leaves the JCP and ends the rights of Tomcat, Geronimo, OpenJPA, OpenEJB, MyFaces and many more to implement JSRs. Ironically, Doug Leas principled stand makes it harder for Apache to choose a compromise position.

I ended my Babylon 5 word-play above by striking out the "Process", and leaving it as just the "Java Community". And I am still a believer that the community can be a tremendous asset when treated well. But, perhaps as Oracle have found recently, the community knows how to bite back when mistreated.

Bablylon 5 reaches its principle climax in the fourth series:

It was the year of fire.
The year of destruction.
The year we took back what was ours.
It was the year of rebirth.
The year of great sadness.
The year of pain.
And a year of joy.
It was a new age.
It was the end of history.
It was the year everything changed.

Could now be the start of the year of fire and destruction - the year of rebirth?

Summary

We all have to look to ourselves - developers, community members, vendors, Oracle - and decide "Who we Are" and "What we Want". And then find a way to bring all the different answers to those questions together for a common purpose.

Because it really is "The dawn of the third age of Java". Its arriving much faster than we expected. And it looks very much like decline into COBOL from where I'm standing.

There are still a few opportunities to prevent that decline and turn it into renewal. Every decision made now matters.


Stephen Colebourne
Apache Software Foundation member, speaking personally
Oracle Java Champion, speaking personally
Not a committer on Harmony or OpenJDK

20 comments:

  1. It is impressive how fast and efficient Oracle has driven its new property against the wall.

    - Mass exodus of high-profile people.

    - SCO-style pantent trolling.

    - Telling the biggest Java contributor (ASF) to f*** off.

    - Alienating the community.

    - Loosing Java's platfrom independence (Apple deprecating its Java implementation and no word from Oracle if they plan to provide one)

    - Making more and more of Java proprietary

    I really wonder how it is possible as a company to be such a collective a**hole that about every project's community has already forked, away from Oracle.

    Well, we survived SCO. If it is necessary, we will bring Oracle to its knees.

    ReplyDelete
  2. Dude, Java FX is already DOA - a long time ago - even when My Little Pony was in charge.

    ReplyDelete
  3. I choose to view it a bit differently. For far too long, Java developers have been content in their own little isolated world of legacy and mediocrity. Lots of people who went from Windows over to Mac after the first great war, are still living in denial that .NET is leaps and bounds ahead when it comes to productivity and faatures. At least these people have woken up from their illusion, forced to look towards alternatives like Linux and Scala.

    I do wish it could've happened another way, but frankly it was getting tiresome and depressing. Let's celebrate Java for what we got, and acknowledge that some things must die for next generation to live!

    ReplyDelete
  4. @Casper: I agree that "Java as a language" is pretty dead and learning from C#, we see that the language doesn't really scale.
    Not even syntax-wise, the special "LINQ-syntax" is only one small proof of that.

    But luckily the JVM is as strong as ever, because the JVM developers have pushed out improvements and optimizations quite regularly. Performance- and stability-wise nothing else comes even close.

    The CLR has a slightly varied set of features compared to the JVM (no real support co-/contravariance; but "basic" Generics in the VM (no higher-kinded ones)), but is still missing the years of testing and bug-fixing the JVM has.

    So if you speak about "Java as a language" I agree with you. If you thought of "Java as a platform/ecosystem", I have to tell you: You're wrong. No need to discuss that.

    The one thing that makes the real difference between the Java platform/.NET platform camp is the community:

    .NET simply doesn't have a community. If Microsoft "opens things up" to the "community", it is pretty dead. No one cares, no one looks at the code anymore.

    The Java platform has a strong, diverse and healthy community, _despite_ the fact that Oracle behaves like a retarded child.

    Eventually, I only care about the JVM:
    - The JVM doesn't care how I generated my bytecode.
    - I don't care about "Java the programming language"

    As long as I can program in Scala and run it on a JVM, I couldn't care less about Java programming language, but that doesn't mean that "Java the platform/ecosystem" is dead.

    The difference between languages like Groovy, JRuby, Fantom, Clojure, etc. and Scala is that the first group "can solve different problems", but Scala can solve the problems Java can solve plus a whole lot more.

    This makes it a viable replacement for "Java as a language" and the first ones not. But doesn't change the fact that all of them have their useful properties and utilize the JVM underneath.

    ReplyDelete
  5. Eelco Hillenius25 October 2010 19:10

    > .NET is leaps and bounds ahead when it comes to productivity and faatures

    Oh please. I develop in both, and find Java to be much more productive to work with. It's all in the choice of frameworks and how you approach development whether you can make it work efficiently.

    And 'forced to look towards alternatives'? Give me a break.

    ReplyDelete
  6. > .NET is leaps and bounds ahead when it comes to productivity and faatures

    :)

    ReplyDelete
  7. I believe your analogy is somewhat misleading, the continuation series Crusade - Who are You? What do you Want? - has the questions and may be a much more apt comparison (ended after 13 episodes).Note that this series was about earth being blind sided by an aggressor with a nano-virus and the solution was to reverse engineer the product to find a cure. (the actual success of this was not determined as the show ended).
    This makes for a much more interesting comparison.

    ReplyDelete
  8. Satori Singularity26 October 2010 15:04

    I don't understand why Harmony needs to worry about the TCK. Sun licensed Java under the GPL v2, which imparts immunity from field of use restrictions. If I license something under GPL v2, you can do whatever you want with the software...except you have to allow others to do that with whatever derivative you make too.

    So I don't understand why there is an issue with field of use. GPL v2, certainly doesn't say...you can only use the software in this scenario...it's quite explicit. The very first sentence says:

    "1. You may copy and distribute verbatim copies of the Program's source code as you receive it, IN ANY MEDIUM,..."

    Is ASF worried of getting sued? We should have an org that isn't worried about getting sued. Set it up on

    ReplyDelete
  9. Java developers used to be in big time denial about .NET. You still see tidbits of that denial here in these posts, but slowly the realization of how big and actually good .NET is these days is starting to sink in.

    By the way, if you Java guys think that you're going to be living in some polyglot world of Groovy, Clojure, and Scala then think again. In the real world, where there are people responsible for hiring and firing it doesn't roll like that.

    ReplyDelete
  10. The current situation will not "kill" Java so much as relegate it to the long tail of a legacy enterprise language, though much of the damage has already been done in that regard. Uncertainty in the development marketplace forces companies to rethink whether to push forward with new projects in a given language/framework. The longer the uncertainty lingers, the more likely it will be that development companies jump he Java ship for more stable vessels.

    No, Java is not dead, nor will it probably ever be dead. COBOL is not dead, either, but no one uses it to write new systems.

    ReplyDelete
  11. People talk beautiful about Scala or Groovy they think they are no affected about this but they are wrong this Oracle BS also affect to the JVM so it affects directly also to Scala and Groovy.

    ReplyDelete
  12. jacek szymanski27 October 2010 08:16

    "- Mass exodus of high-profile people. "

    Seeing how those high profile people had made Java their kindergarten playground instead of a revenue source for Sun it was meant to be, it's only good that they depart. Oracle is more than able to have other high profile people, or to promote some to this status - and then to keep them under enough control to ensure they'd be working for Oracle's business and not for the open source community or whatever bulls**t.

    "- SCO-style pantent trolling. "

    You mean that Oracle is a failed company with virtually no sales using some very dubious claims as their last hope of getting any money?

    I don't know the ultimate result of this battle (although I think that Google will give up soon and settle, maybe they are already negotiating), but I do know that even Sun had considered suing Google over Android - and that certainly means something.

    "- Telling the biggest Java contributor (ASF) to f*** off. "

    They haven't listened to Sun, maybe they will to Oracle.

    "- Alienating the community. "

    Blog weenies, that is. Irrelevant. Java's success is created by businesses, *not* blog weenies.

    "- Loosing Java's platfrom independence (Apple deprecating its Java implementation and no word from Oracle if they plan to provide one) "

    Java on the desktop is long dead. It has lost to everything it could, and they (Oracle and Apple) are just accepting this fact.

    "- Making more and more of Java proprietary "

    Where did making more and more of Java open source drive Sun? If not Oracle, they'd probably already be in Chapter 11.

    ReplyDelete
  13. Karl Peterbauer27 October 2010 09:18

    Fork. Now.

    ReplyDelete
  14. Finally someone addressed it because I was confused. If Java goes down the drain so does Scala, Groovy and the rest of them. They are just alternative syntaxes to arrive at the same bytecode for the JVM and will rely on the same Java class libraries that Java relies on. The concern here is not about Java the language but Java the platform. Oracle is going to lock it down and if you don't have something else to run Groovy, Scala etc. then you won't be able to freely use them either.

    As for .Net. I've worked with it for a couple of years. Its nothing special at all. Until they came with MVC for web it was complete garbage. Even now I have moved on from MVC to componentized frameworks done right like Wicket. And as someone else mentioned .Net has no community and you must wait on MS to solve everything for you because no one else wants to share any code. Sorry but the LINQ syntax and other sugar aren't that amazing and if Groovy for instance can find a new home its irrelevant.

    What I would like to see happen is the rise of a completely FOSS platform that runs as much of legacy Java code as possible while being more suitable for desktop development and adopting more of the alternative syntax. It would have to be pushed by someone large and since IBM seems to be content with Oracle it would probably be Google. They'd have to use it on App Engine and push it hard. Who knows...maybe what we're looking for is advanced Python.

    At any rate I'm being very cautious now about tying myself into Java. Oracle looks like their going to pull the rug our from everyone and try to make as much money as possible.

    ReplyDelete
  15. I'm preparing to move on. I don't trust Oracle/Ellison. I've been very happy with Java and OpenOffice. Now that NOracle is in charge, I'm figuring out how to move on.

    Here's my blog post about it (rambles a bit as I was pretty tired when I wrote it):
    http://goo.gl/U4xe
    or
    http://chaotic3quilibrium.wordpress.com/2010/10/26/how-oracles-ellison-drove-a-java-advocate-to-netc/

    ReplyDelete
  16. Perl. What else?

    ReplyDelete
  17. What's the deal with the Babylon 5 nonsense. This was a good article without that. It made it very difficult to link to the good bits, and I think half the people i sent it to thought this was an article about Babylon 5 instead of the downfall of Java. Your list of links should be made into a timeline imho.

    ReplyDelete
  18. My worry (suspicion) is that Oracle will start charging for every JVM. What is a typical Oracle price point? How will this impact Open Source IDEs such as Eclipse and NetBeans? How can I supply Open Source or low cost software if every customer must first buy an expensive JVM? What impact will it have on use within universities by staff and students? If only Oracle would be honest and state its intent. Does Apple know more that we do? My suspicions may explain why Google's Dalvik is under attack. Does this mean Java on the desktop is dead?

    ReplyDelete
  19. > A neutral place where everyone from developers

    Developers? As part of the JCP?

    If one species was and is largely absent from the JCP and not being considered by the JCP, than it is Joe Average Programmer. And please, don't give me the list of token programmers (usually consultants, academics and writers, not programmers).

    ReplyDelete