Why Oracle is Right to Sue Google

The tech industry loves a good vendor slugfest, and the upcoming legal battle between Google and Oracle has all the makings of a truly spectacular one.

At issue is Dalvik, the unique, Java-based runtime at the heart of Google's Android smartphone OS. Oracle, which gained stewardship of the Java platform when it bought Sun Microsystems in 2009, claims Dalvik knowingly, willfully, and deliberately infringes on Java intellectual property. According to a complaint filed with the U.S. District Court in San Francisco earlier this month, Oracle is seeking a halt to any further Android development, destruction of all infringing Android software, and for Google to pay damages, both actual and statutory.

[ InfoWorld's Martin Heller says Oracle will open a Pandora's box of evil if it wins this fight. | Keep your Java skills sharp with our JavaWorld Enterprise Java newsletter. ]

Bloggers, pundits, and developers wasted no time decrying the suit. Farata Systems' Anatole Tartakovsky wrote, "Oracle managers are clearly out of their minds." PC World's Tony Bradley described Oracle as a patent troll, while others made unflattering comparisons to the SCO Group. InfoWorld's own editor in chief, Eric Knorr, compared Oracle to Darth Vader and to Batman's nemesis the Joker in the same column.

Such knee-jerk reactions are misguided. Google is no Luke Skywalker, and its handling of Java has been questionable at best. To suggest that Oracle is being heavy-handed ignores the larger truth, which is that in recent years Sun's governance of Java has been meek and ineffective. In the absence of strong leadership, the Java community has been saddled with a slow and burdensome development process that has left the future of the platform in serious doubt. The complaint against Google is proof that Oracle aims to change all that -- and it could be just what the Java community needed.

Java in Name Only

Ironically, few companies have been as outspoken on the issue of Sun's failed leadership as Google. Speaking at the Red Hat Middleware 2020 virtual conference in April, Google chief Java architect Josh Bloch described the platform as "rudderless" and called on Oracle to take a lead role in steering its future direction. "Technical and licensing disputes over the last few years have been highly detrimental. They've sapped the energy of the community and caused plenty of bad press," Bloch said.

But talk is cheap. In practice, rather than wait for Oracle, Google has forged ahead with its own plans for Java. The result is Android, a platform that is Java in name only. The Dalvik virtual machine doesn't even execute Java bytecode; rather, Java class files must be recompiled into Google's own .dex format before they will run. And the Android development platform is neither Java SE nor Java ME, but a hodgepodge of classes drawn from stock Java, the Apache Foundation, and Google's own contributions.

This was no accident. In a blog post, Java creator James Gosling recalls Sun's early talks with Google and how the search giant was more interested in "disrupting Apple's trajectory" with Android than in upholding Java's core principle of interoperability -- despite Sun's strong objections. How would Sun benefit from Android? It wouldn't: "Google did have a financial model that benefited themselves," Gosling writes, noting "they weren't about to share."

Nor is this the only example of Google's disregard for accepted Java standards. In 2009 Simon Phipps, Sun's then-chief open source officer, criticized Google for not supporting the full set of Java core classes in its App Engine cloud computing platform. "Creating subsets of the core classes in the Java platform was forbidden for a really good reason," Phipps wrote in a blog post, "and it's wanton and irresponsible to casually flaunt the rules."

Similarly, the Google Web Toolkit (GWT) is advertised as a tool to allow developers to write client-side Web applications in Java and deploy them as JavaScript, but Google itself admits GWT supports only "most of the core Java language syntax" and "a small subset" of the standard Java classes. It seems Google's fondness for Java extends only to its popularity as a language, not its cohesiveness as a platform.

Oracle's Case Against Google

But if the goal of creating Java was simply to invent a new language, Sun would never have bothered. Java borrowed much of its syntax from C, C++, and elsewhere. What made it new -- and important -- was the JVM, with its sandbox security model and its "write once, run anywhere" promise. Coupled with the Java class libraries, the JVM made Java a unique platform that freed developers from dependence on the underlying operating system. While Java has fallen short of its loftiest goals in various ways over the years, Sun has remained constant in its efforts to preserve that platform as a consistent, unified whole.

The greatest challenge to those efforts came in the late 1990s, when Microsoft tried to splinter the Java community by offering a Windows-only version of the language. Sun took the issue to the courts, arguing that Microsoft's implementation violated the Java license agreement. When the dust finally cleared in 2001, Microsoft had agreed to scupper its Java work and pay Sun $20 million in damages.

"Now if Microsoft wants to use Java, they will have to use the same Java everyone else does," Sun vice president Rich Green said at the time. Should not Google be held to the same standard? Oracle thinks so, and like Sun of old, it has chosen a legal remedy.

Java's licensing is more complex now that it's open source, which might explain why Oracle favored the patent route in its complaint against Google. Open source luminary Bruce Perens points out that the Java Language Specification includes language granting Java implementers free license to Sun's patents, but that doesn't apply here. That license is only valid for complete implementations of Java and its required packages, "without subsetting or supersetting," which the Android implementation clearly is not.

Oracle's complaint also mentions copyrights, but here the details are scant. Java and Android are both open source, but although Java uses the GPL, Google favors the more business-friendly Apache license. If Google included verbatim Java source in its code base, that license discrepancy could be sufficient grounds to establish infringement.

What Happens Next?

Google claims Oracle's actions are "an attack on the Java community," but that would only be true if Google were promoting Java. To the extent that Android and the Dalvik VM are a divergent implementation that flouts the established Java standards, however, Oracle is right in describing Android as a competitor to pure Java. And as the owner of the Java intellectual property, Oracle has the right -- and, perhaps, the responsibility -- to defend the platform against such a competitor.

But let's not kid ourselves. The comparison to Darth Vader is hyperbole, but nobody ever accused Oracle of being a white knight, and it's certainly not acting out of selfless motives here. At the end of the day, this is all about the money. With Android now a well-established platform, Google can little afford a protracted legal battle. Oracle expects Google to settle, and the end result will be a Java coffee-cup logo on every Android smartphone and a nice, new revenue stream for Oracle. What's more, the suit will further cement the idea that the path to Java lies through Oracle, and Java implementers avoid that path to their peril.

Still, is that so terrible? The Java community needs a leader. Sun's attempt to push Java governance into the loving arms of the community has proven to be like so many other ideas that came out of that failed company: academically sound, diplomatically prudent, but ultimately unworkable. Google's Bloch was right in calling for Oracle to take a firm hand on the reins. Maybe he should have been more careful what he wished for.

Mind you, a legal victory for Oracle is not assured. The specific patents named in its complaint have raised many eyebrows and much skepticism.

There's time yet for Google to dodge this bullet -- and the easiest way might be to dodge Java itself. So don't be surprised to hear that a future iteration of Android will be the first platform based on Google Go.

This article, "Why Oracle was right to sue Google," originally appeared at InfoWorld.com. Read more of Neil McAllister's Fatal Exception blog and follow the latest news in programming at InfoWorld.com.

Subscribe to the Best of PCWorld Newsletter