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!