Oracle vs. Google: Who owns the Java APIs?

Oracle calls dibs on the Java APIs, even if Java itself is open

What if you owned the copyright on the French language? Or Swahili? That's essentially the claim Oracle is making when it says it owns the copyright to the Java language and its associated APIs. If Oracle gets its way, it could change software development forever.

The issue looks to be decided in the lawsuit between Oracle and Google, which began with testimony in a San Francisco courtroom this week. The trial is expected to last up to 10 weeks.

[ InfoWorld Open Sources blogger Simon Phipps simply states: "If Oracle wins its Android suit, everyone loses." | Keep up with software development issues and trends with InfoWorld's Fatal Exception blog. | Master the latest in Java development with our JavaWorld Enterprise Java newsletter. ]

Oracle sued Google in 2010 over the nonstandard implementation of the Java platform in the search giant's Android mobile OS. Android uses its own class library that's a subset of Java's. It's also powered by Dalvik, a unique virtual machine that uses its own binary format rather than standard Java bytecode.

Oracle says these details violate not just the Java license terms, but specific Oracle patents and copyrights. Google has contested both claims. The copyright claim, in particular, it says is baseless. But the case will be hard won for either side.

Oracle: We own Java, probably

For Oracle's part, the copyright claims are increasingly important to the overall success of its suit. It has withdrawn two of its original seven patent claims, and four out of the remaining five have already been rejected by the court. Unless Oracle asserts further patents, copyright is effectively the crux of the case.

If Oracle successfully argues any of its claims, Google will likely have to pay royalties or other licensing fees to Oracle for every Android smartphone and tablet. The problem is that Oracle appears to be talking from both sides of its face.

During his testimony on Tuesday, Oracle CEO Larry Ellison was asked whether the Java language was free for anyone to use without a license. Ellison hesitated before replying, "I am not sure."

That answer appeared to contradict testimony Ellison gave in a video deposition in August 2011. There, when asked what was fundamentally the same question, he answered that yes, Java was free and open for anyone to use.

It also appeared to contradict Oracle's own slides, which it presented during its opening arguments. A table on one slide clearly says it is not necessary to obtain a license from Oracle to write programs in the Java language.

What Oracle is arguing, however, is that because Android uses the copyrighted Java APIs, it infringes on Oracle intellectual property. Android developers are free to use Java, just not its APIs. Google says that's nonsense, and it has strong arguments to back up its position.

Can you copyright an API?

Chiefly, Google argues that the Java language and the Java APIs are one and the same. You can't effectively use one without the other. The Java language syntax is just a shell. Most of the basic building blocks of even the simplest programs -- including data structures, math routines, and routines to print text to the screen, among others -- are not part of the core language. They are included in the Java class libraries, which are described by the Java APIs.

Furthermore, the very idea that you can copyright an API is disputed. There are limits to what copyright covers. You can't copyright a simple recipe, for example, or a list of instructions. Google will argue that's essentially what the Java APIs are; they're an instruction manual for building a Java implementation, not a copyrightable expression in their own right.

The Java class libraries, as shipped by Oracle, are a specific implementation of the Java APIs. That means they are protected by copyright, just like all computer code has been since the 1960s.

But Google doesn't ship Oracle's Java class libraries with Android. Instead, it drew upon code from the Apache Harmony project, an open source implementation of the Java APIs. Harmony works the same as Oracle's version -- because it mimics the same APIs -- but it contains all original code. Because it does not share code with Oracle's class libraries, Google argues, it does not infringe on Oracle's copyright.

Serfs on the Java farm

Naturally, Oracle disagrees. It says Google's implementation doesn't need to share any code to violate the API copyright. If it can convince the court, it will be a bad day for programmers.

Oracle's argument is roughly akin to me claiming that because I own the copyright to a book of commonly used English phrases, publishers of Shakespeare need to pay me royalties. If it holds true for Java, it will hold true for any programming language, from any source. That could radically change the relationship between developers and platform vendors.

For one thing, it raises questions about programming language licensing. If the most basic language APIs can be copyrighted, would that not in effect make any program written in any language a derivative work of that language's APIs? How would that work in practice? Who would developers have to pay? What rights would they have to sign away?

At worst, it could cement the idea that programming languages are not tools but products. Instead of being partners with a platform vendor, programmers become just another customer segment, consuming developer tools the way business users consume word processors or spreadsheet apps. In short, it would be back to the bad old days.

No clean hands

It's worth noting that Google is not blameless in this case. It could have created an alternative to Java for Android. It's certainly more than technically capable. It chose Java because using an existing platform was more expedient.

Google could have licensed Java. In fact, among the most damning evidence in Oracle's favor are emails from Google employees -- apparently overruled by senior management -- advising that licensing Java was the best course.

Google has already proposed a settlement plan that would give Oracle a cut of past and future Android profits, so it's not being totally unreasonable. It doesn't want something for nothing. It just wants to license Java on its own terms, not Oracle's.

In the end, maybe Java creator James Gosling said it best when he wrote that this case is less about "patents, principles, and programming languages" than it is about "ego, money, and power" -- on both sides. It's just a shame that the future of programming may hang in the balance.

This article, "Oracle vs. Google: Who owns the Java APIs?," originally appeared at InfoWorld.com. Follow the latest news in programming at InfoWorld.com. For the latest business technology news, follow InfoWorld.com on Twitter.

Copyright © 2012 IDG Communications, Inc.