Saturday, August 14, 2010

Help me understand this Oracle/Google lawsuit

I'm confused about the ideas behind the Oracle-Google lawsuit announced last week. The facts are clear enough: Oracle sued Google in the US District Court for the Northern District of California, for infringing on copyrights and patents related to Java, saying that:

Android (including without limitation the Dalvik VM and the Android software development kit) and devices that operate Android infringe one or more claims of each of United States Patents Nos. 6,125,447; 6,192,476; 5,966,702; 7,426,720; RE38,104; 6,910,205; and 6,061,520.

What's considerably less clear is what Oracle is really mad about, and what they want Google to do. In the software industry, patent law is a clumsy tool, and when it is exhibited in this fashion, as this Forbes blog suggests, it usually indicates that something else is going on behind the scenes.

As Bruce Perens points out, the Java Language Specification includes a broad patent grant. Is Oracle claiming that Google violated that grant?

Or, as suggested by this ComputerWorld analysis, is Oracle claiming that Google, who have hired many prominent engineers from the original Sun Java team, could not possibly have followed true "clean-room" techniques when building their Dalvik/Android system?

Or, as Bruce Perens notes in a follow-up article, is the debate about whether Google's version of Java is really compliant to the Java standards and specifications, and, if not, whether that means they cannot call their implementation "Java", similar to the objections that Sun had over Microsoft's not-quite-the-same version of Java years ago?

Or, as suggested by this article, is Oracle trying to save whatever is left of Java Micro Edition, which had achieved a moderate amount of success in the cell phone market, but which is now being crushed by Android's runaway adoption? And, as this article speculates, will this just play into the hands of Microsoft and their lagging, but technically very advanced, .NET mobile platform?

It's all very confusing.

When Android first came out, I was excited by the possibility of an open Java-based mobile computing platform, and I downloaded the Android development tools and tried to write some applications. But I was quite shocked to see that Derby, which is one of the most portable, highest-quality Java applications in existence anywhere, would not run on the Android platform:

  • Derby's use of common Java APIs, such as javax.naming, ran afoul of Android's selective inclusion of the JDK API set

  • Derby's on-the-fly generation of Java byte code, for execution of query plans, ran afoul of Android's custom Dalvik VM, which doesn't interpret standard Java byte code, but rather requires that Java byte code be re-compiled into Dalvik code.

After those discoveries, I gave up in disgust, so there may be more such obstacles lurking. But those incompatibilities were large and severe, and I can see that Sun/Oracle would be upset by them. It brings back memories of the Sun-Microsoft fights over Java last century, when Microsoft similarly produced their own not-quite-the-same version of Java, and Sun fought bitterly to force Microsoft to abandon that technology.

What will happen here? Does it make sense to you? If you have any ideas to share, or pointers to clear and well-written analysis, please let me know!


  1. I wouldn't claim to answer your questions, nor would I blog on the subject myself, but a few comments:

    Since android/dalvik expressly sidesteps claiming to be Java, I guess a patent grant tied to the java language specification doesn't apply.

    Also it's hard to see why questions of clean room implementation should be relevant to a patent case.

    I don't see how the MS case applies either, since that was about Microsoft claiming "this is java", and Google isn't making that claim.

    Oracle trying to protect JME might be plausible, but seems unlikely to me. You don't get to be a hundred-billion-dollar company without understanding the risks of that kind of strategy.

    What does Oracle have to gain if it wins this, or to lose if it loses? Not easy to see this as proportionate. However, I would note that there are lots of patent battles going on in the mobile phone field (e.g. Nokia and Apple at each other's throats), which leads me to wonder if this might have a bearing on someone else's case.

  2. "The Java specification patent grant seems to be only valid as long as you have a fully conformant implementation" according to this blog I read.

  3. J2ME was, in some ways, very successful - it runs on pretty much any normal phone out there, at least here in Europe. Even ones that don't cost $500.

    If you think compiling J2SE code for Android is tough, try compiling it for J2ME. The initial version didn't even have floating point.

    As powerful as they have become, they are still phones, with limited resources, so it's natural that they don't include all of a behemoth like J2SE.

  4. Hi Bryan,

    You may find a good read here: