As the second week of the Oracle-Google trial got underway Monday, Judge William Alsup continued to probe the depths of Java and Android APIs and copyright law. Prior to the jury entering the courtroom, Alsup asked the Google team whether Google admitted that it copied the 37 APIs at the center of the lawsuit.
"I quibble with the word "copy," Google lawyer Bruce Baber said. "APIs have been out for long time, in books, on the web and available in (Apache) Harmony. We absolutely used and included them in Android so we would have them exactly right for the [Java] specification."
The APIs are essential to fully implement the Java language.
Judge Alsup asked what was special about the 37 APIs, which are a subset of the Java APIs, and what are core APIs. "The 37 are the ones where they [Oracle] think they can assert rights," Baber said. "Four of the 37 packages [java.lang, java.util, java.io, java.net] are core, and some of the other 33 are sub-packages.""These are the packages programmers expect to have in Java language to write programs," Baber said. Android includes 51 API packages, some of which were developed by Google. Android's implementation of the 37 APIs call 28 packages that are not part of Java 2 SE, Google stated in its April 22 Copyright Liability Trial Brief.
Judge Alsup told the two tables of seven lawyers each, representing Google and Oracle, that he wasn't convinced that the 37 APIs are the "Holy Grail" of copyright law. "I am curious why you would want the judge to instruct the jury that the 37 APIs are a whole. That is not what the evidence is," he said.
He cited U.S. code, USC 107, regarding fair use, considering the amount and substantiality of the portion used in relation to the copyrighted work as a whole. "I turning over in my mind how we deal with the work as a whole issue," he said. Judge Alsup said he would tell the jury that copyright could extend to structure, sequence and organization of the APIs, and let the jury consider Google's fair use claim in its deliberations.
See also: Full coverage: Oracle v. Google
Oracle's lawyer, Michael Jacobs, described the APIs as a body of work, and Google's use of Java APIs as akin to taking articles from a journal or notes of a song, citing case law.
Oracle's expert witness, John Mitchell, a professor of computer science at Stanford University, gave the jury a detailed tutorial in APIs and object-oriented programming. Following the tutorial, Jacobs attempted to establish through Mitchell's testimony that 37 APIs in question are unique, creative works that Google illegally copied from Java. "By and large, they are identical," he said, referring to the 37 Java APIs in Android. Quantitatively, they are approximately 90 percent the same, he added. Google doesn't dispute that fact that it used the 37 Java APIs.
Mitchell also noted code beyond the APIs, from the Java code base, that he found in Android code, disputing Google's claim that it applied it developed Android in a "clean room" environment.
The specific example of copied code was "range check," 9 lines of code that were almost identical in Java and Android. Mitchell also asserted that some Android source code was generated through decompiling Java class files. "The developers had access to and used an Oracle (Java) installation," he said.
In his cross-examination of Mitchell, Google lead lawyer Robert Van Nest tried to establish that the Java programming language is free for anyone to use without a royalty, as Oracle CEO Larry Ellison stated in his deposition in the case, and that the core APIs, such as java.net and java.io, are integral to the language specification.
Van Nest went down the APIs as parts of speech path, a description of how to perform a task rather than the specific implementation. He cited Mitchell's video deposition in which he described packages, names, classes, interfaces, methods, named relations between methods and other elements as "parts of speech" that make up APIs.
Van Nest also addressed the code analysis Mitchell citied in his testimony during direct examination, in which 12 files with code in common between Android and Java were identified. In one of the files, Timsort.java, only nine lines in a "range check" function were found, Van Nest noted. "It's still nine lines," Mitchell said.
Van Nest asked him if it were true only that only the nine lines of "range check" from the 12 files were found on a handset. Mitchell agreed.
In redirect, Jacobs asked Mitchell about the significance of "range check." He said he found "range check" was called 2,600 times in his study when a handset is started up.
According to a Google spokesman, the "range check" code is not in the latest Android version shipped by the company.