This week, Oracle appealed Google’s win at the patent trial over the Java application programming interface (API) being used in the Android operating system.
In a new document published this week (PDF), Oracle’s lawyers start by introducing a character called Ann Droid. And then tell a story about Ann ripping off Harry Potter: The Order of the Phoenix. Quite strange, but hilarious to think of a serious legal department putting this into such an important document:
Ann Droid wants to publish a bestseller. So she sits down with an advance copy of Harry Potter and the Order of the Phoenix—the fifth book—and proceeds to transcribe.
She verbatim copies all the chapter titles—from Chapter 1 (“Dudley Demented”) to Chapter 38 (“The Second War Begins”). She copies verbatim the topic sentences of each paragraph, starting from the first (highly descriptive) one and continuing, in order, to the last, simple one (“Harry nodded.”). She then paraphrases the rest of each paragraph. She rushes the competing version to press before the original under the title: Ann Droid’s Harry Potter 5.0. The knockoff flies off the shelves. J.K. Rowling sues for copyright infringement.
Ann’s defenses: “But I wrote most of the words from scratch. Besides, this was fair use, because I copied only the portions necessary to tap into the Harry Potter fan base.”
Obviously, the defenses would fail.
Defendant Google Inc. has copied a blockbuster literary work just as surely, and as improperly, as Ann Droid—and has offered the same defenses.
How do you solve a problem like Dalvik?
Java is “write once, run anywhere” code. You write the code in the Java language and a “virtual machine” (VM) on the device or computer you use then interprets the code into a language that specific device can understand. Unsurprisingly, the virtual machine is called the Java Virtual Machine or JVM.
Dalvik is the core of the Android operating system; it is Google’s virtual machine for running Java code. Given its purpose, i.e. running Java code, Oracle started investigating whether the JVM had been ripped off. Oracle having acquired Java’s original creators, Sun Microsystems, a few years ago. They claim it has been ripped off. Meanwhile, Google claims they are only superficially similar.
Google has two options here: stand up for their Dalvik virtual machine, or ditch it for something else.
We’ve seen them stick by Dalvik before, and things went well for Google, this is likely the option they will take this time too – it makes pragmatic sense. But (!!) if they were to consider ditching Dalvik what opportunities are available? The benefits would have to outweigh the huge hurdles of a switch, namely:
- Existing applications wouldn’t work on the new VM – all code would need to be migrated or translated
- New development tools would need to be created to support Android developers
- Existing devices (smartphones, tablets, TVs, etc.) would likely be difficult to upgrade to a new virtual machine (although not impossible – that’s sort of the beauty of using virtual machines to run code)
There is one clear choice for an alternative virtual machine and that is the Common Language Runtime (CLR). The CLR is the VM built by Anders Heijlsberg’s team at Microsoft to run C#.NET, Visual Basic.NET and other languages in a unified, managed way.
Once you start thinking about the CLR being at the heart of Android, things become a bit exciting.
- Developers would get the brilliant Visual Studio suite to create their applications with.
- Developers would get Microsoft’s phenomenally good Developer Network documentation and support.
- Applications could be cross-compiled for Android, Windows, XBox and Windows Phone at the touch of a single button.
Sadly, that last point stands out for why this will probably never happen. Microsoft are already having enormous problems getting their Windows Phone handsets shipping at a good, profitable rate. And Windows 8 has largely been a PR disaster for Microsoft – although sales figures haven’t actually been that dismal for various reasons beyond the scope of this article. The last thing Microsoft needs or wants is to give anything to arch-nemesis, Google, without a very good reason (and a few trucks filled with Benjamins). Android is the most popular device platform out there already so helping to ease Google’s patent burden probably isn’t high on Steve Ballmer’s to-do list.
Even so – there may be something to this idea. Those clever guys at The Mono Project have built their own VM which mimics the CLR on Linux machines (as opposed to Windows machines which is where the CLR can be natively found) which is what the underlying Android platform runs. And the CLR provides more than just write-once-run-anywhere-there’s-a-CLR flexibility, it also lets you write code in any language than follows the Common Language Infrastructure (CLR), which includes many languages today including C#, Visual Basic, PHP, etc. But then you can combine code written in all of these different languages into a single application. So developers wouldn’t be limited to only using Java for their apps.
Furthermore, after some very serious Java security vulnerabilities were discovered in the past few months the Homeland Security Dept in the US recommended removing Java from machines, even after an update was released. Since its early 2000s-inception, .NET has been a relatively secure platform for developers to write code confidently against.
I’m not an Android developer, but I have dabbled (I have “just enough knowledge to be dangerous”). So I may have missed the point. If I have, or if you can spot some flaws in my understanding, please feel free to educate me in the comments below!