Following last week's jury verdict that Google has not violated any of the patents Oracle inherited from Sun in connection with Android, a discussion has been developing on the effect of the verdict on Java.
Google's statement that the “jury verdict that Android does not infringe Oracle’s patents was a victory not just for Google but the entire Android ecosystem” seems to hold true, but stops short of the full story. By testing its Java defence system in public and having it demonstrably fail, Oracle has weakened its ability to "protect" Java. It's interesting to consider Oracle's statement when the verdict was delivered: "We plan to continue to defend and uphold Java’s core write once run anywhere principle and ensure it is protected for the nine million Java developers and the community that depend on Java compatibility."
It's not programming languages themselves that define the compatibility of a program to a platform; rather, it's the APIs or class hierarchy the platform uses to allow it to be programmed. Since Android does not claim to be a Java platform, merely using the syntax of the language to weave together a different set of objects to those used for most Java programs, it's in no way obvious why the "write once run anywhere principle" Oracle speaks of here - WORA - is even involved.
Java ME Already Fragmented
Most developers I've spoken with have no clue why Oracle thinks WORA is in any way threatened. It's something they believe is associated with Java SE - the variety of Java used for most programming tasks - and not with the mobile variant, Java ME. That mobile variant has been fragmented for years, as each handset vendor has added their own unique approach to their own unique features. The fragmentation had nothing to do with Android and existed before it. The Java Verified initiative Sun launched in 2004 and the JATAF project launched at JavaOne in 2009 were completely independent of it, as this video interview I conducted with a product manager in 2009 confirms - fragmentation of Java ME was an ongoing and acknowledged issue.
When I first mentioned this on Twitter, I got some push-back from certain quarters. Some folks claimed "Java has never been WORA" - a view I believe arises mainly from taking WORA as a technical statement instead of as a guiding principle. People who I've heard say this over the years tend to be from the Linux generation of the early 2000s and later. WORA was always a marketing slogan and obvious technically incomplete as many scenarios are possible where the underlying platform shows through. But it was a vision statement that captured a reality of platform independence that was sufficiently well delivered to revolutionise the software industry at the start of the web age.
The way Sun released Java in 1995 was revolutionary for its day. At IBM Labs where I worked at the time, we were able to port Java to multiple platforms without establishing any relationship with Sun. It was by far the most "open" commercial activity the market had seen in its day, and it only took off because Sun created a way to protect it from stronger competitors like Microsoft and IBM.
Java delivered platform independence that was quite good enough for most people at a time when Microsoft was attempting monopoly control of the whole desktop market. WORA was a marketing slogan we all understood to be hyperbolic that still nicely captured the spirit of Java. That value proposition has continued for many developers. Several people commented in my Google+ thread on the subject to confirm their positive experiences of platform independence for Java SE and EE.
The defence for WORA that Sun devised back in the 90s was interesting. It used the collected patents, copyrights and trademarks of the Java platform and offered everyone and anyone a license to them, on the condition they maintained the compatibility that delivered WORA. The exact mesh of rights used in the defensive weaponry were not listed anywhere; developers were just left with the impression that if they deviated from compatibility, there was a fearsome engine waiting for them. The successful lawsuit against Microsoft's attempt to "embrace, extend and extinguish" Java only served to reinforce the impression of strength.
But the Microsoft lawsuit was actually a breach-of-contract suit rather than a test of the Java defences, so the case of Google's Android project was different. While there was understandable angst inside Sun about Google's decision to route around them, as James Gosling reports Sun decided to try to make good rather than make war. When Oracle came to press the case against Google, there was thus a strong sense in which the Java defences had never actually been tested. Why? Well, to do so was to risk losing them.
Is that what has happened? Time will tell, but Google's successful assault on the patent portfolio - invalidating the majority of them used in the case - shows that while the wall is high, it is not strong. An independent implementation of the technology used in Java needs to avoid plagiarism, but in Europe at least the World Programming/SAS case seems to imply the class libraries may be freely re-implemented, so the only remaining weapon in the Java defence is the trademark. Perhaps the most significant outcome of the lawsuit against Google may be that the Java defences have been tested and found wanting.