Saturday, August 14, 2010

My 5 Cents On Oracle vs Google

This seems to be the hottest topic in the past two days: Oracle sues Google over some JVM patents.
Long story short: When Sun GPL'd Java, it did so only for the standard JVM. The mobile version requires every mobile device vendor to license (=pay Sun) its usage.
So Nokia paid, and so did others, but Google wanted more. Google wanted the standard JVM. And here starts the problems: the standard JVM license doesn't allow a company to create a superset (nor a sunset) of the JVM. What does that mean? That each JVM must pass Sun's testing kit that verifies the newly created JVM behaves just like Sun's.

So instead of settling for the standard JVM, or license the ME, Google decided to create their own JVM. Only it is not a JVM, rather a superset of it. But that's forbidden, so Google solved it quite cleverly - they created a totally different VM. The Dalvik VM isn't bytecode compatible with Sun's, and implements parts of the JVM that would have never pass Sun's tests. In order for developers to migrate from one VM to another, the code must be either recompiled or use a special tool that converts the bytecode.

Now that Oracle owns Sun, Oracle does what's good for Oracle, which means pursue their patents. I bet they're expecting Google to pay some ransom in order to keep this story from exploding, and scare developers back to iPhone development. But if Google would do so, it'll give Oracle a case to actually pursue every mobile phone vendor that uses Android, and it'll be very bad for Google.

Some suggest Google would opt to use a different VM, such as Mono, but I seriously doubt it. Not only because C# sounds like "Microsoft .NET" (a thing which I completely disagree with), but because developers are expecting them to keep the same language they use today, so they won't need to learn a new language and slow down their development cycle, even for a little while.

This does raise another issue: the Maemo, Meego and other Linux-based mobile OSes can theoretically run the standard JVM, but Oracle won't allow it, since it wants mobile devices to use the ME (this is where the money is). Does this mean we can expect to see Java on those devices? Or could Mono be the answer here?

As for those people asking "why would Sun/Oracle charge only for the JVM ME usage, and not for the other versions", here's what I think: A good software company would like to make the developer's life as easy and cheap as possible. So the JVM on the desktop (the development machine) is free, and so does for the server (for web applications). The price of the ME rolls over to the end-user, which is best for developers. For comparison, both Apple and MS charge high prices on both ends.