Oracle accused Google of copying Java API designs into the APIs of its Android mobile operating system; basing Android class libraries on Java API designs; and copying from Java code into Android code.
It also alleged that Google had violated its patents - seven were originally cited, but five were overturned before the trial, and only two were being considered.
The trial began on April 16 and in the first phase, the jury came to the conclusion that while Google was guilty of copyright violation, it could not decide whether this was covered by the principle of fair use or not.
The second phase of the trial, dealing with patents, went conclusively in favour of Google, with the jury concluding that Oracle's patents were in no way violated.
Justice Alsup had instructed the jury to assume that APIs were covered by copyright for the deliberations in phase one and reserved the actual determination for himself.
As he wrote in his final order yesterday: "For their task of determining infringement and fair use, the jury was told it should take for granted that the structure, sequence and organization (sic) of the 37 API packages as a whole was copyrightable. This, however, was not a final definitive legal ruling. One reason for this instruction was so that if the judge ultimately ruled, after hearing the phase one evidence, that the structure, sequence and organization (sic) in question was not protectable but was later reversed in this regard, the court of appeals might simply reinstate the jury verdict. In this way, the court of appeals would have a wider range of alternatives without having to worry about an expensive retrial. Counsel were so informed but not the jury."
In his summary of the ruling on the matter of the APIs, Judge Alsup wrote: "So long as the specific code used to implement a method is different, anyone is free under the Copyright Act to write his or her own code to carry out exactly the same function or specification of any methods used in the Java API. It does not matter that the declaration or method header lines are identical. Under the rules of Java, they must be identical to declare a method specifying the same functionality — even when the implementation is different. When there is only one way to express an idea or function, then everyone is free to do so and no one can monopolize that expression. And, while the Android method and class names could have been different from the names of their counterparts in Java and still have worked, copyright protection never extends to names or short phrases as a matter of law.
"It is true that the very same functionality could have been offered in Android without duplicating the exact command structure used in Java. This could have been done by re-arranging the various methods under different groupings among the various classes and packages (even if the same names had been used). In this sense, there were many ways to group the methods yet still duplicate the same range of functionality.
"But the names are more than just names — they are symbols in a command structure wherein the commands take the form
"Each command calls into action a pre-assigned function. The overall name tree, of course, has creative elements but it is also a precise command structure — a utilitarian and functional set of symbols, each to carry out a pre-assigned function. This command structure is a system or method of operation under Section 102(b) of the Copyright Act and, therefore, cannot be copyrighted. Duplication of the command structure is necessary for interoperability."