Oracle Am., Inc. v. Google Inc.

Citation872 F.Supp.2d 974
Decision Date31 May 2012
Docket NumberNo. C 10-03561 WHA.,C 10-03561 WHA.
PartiesORACLE AMERICA, INC., Plaintiff, v. GOOGLE INC., Defendant.
CourtU.S. District Court — Northern District of California

David Boies, Boies Schiller & Flexner, Armonk, NY, Deborah Kay Miller, Matthew M. Sarboraria, Oracle USA, Inc. Legal Department, Redwood Shores, CA, Dorian Estelle Daley, Redwood City, CA, Marc David Peters, Michael A. Jacobs, Richard Steven Ballinger, Morrison & Foerster LLP, Palo Alto, CA, Steven Christopher Holtzman, Boies, Schiller & Flexner LLP, Oakland, CA, for Plaintiff.

Donald F. Zimmer, Jr., Cheryl A. Sabnis, Geoffrey M. Ezgar, King & Spalding LLP, San Francisco, CA, Brian C. Banner, Truman H. Fenton, King and Spalding LLP, Austin, TX, Robert F. Perry, Bruce W. Baber, Christopher C. Carnaval, Mark H. Francis, Scott T. Weingaertner, King & Spalding LLP, New York, NY, Steven T. Snyder, King & Spalding LLP, Charlotte, NC, Robert A. Van Nest,Christa M. Anderson, Daniel E. Purcell, Eugene M. Paige, Matthias A. Kamber, Michael S. Kwun, Reid P. Mullen, Keker & Van Nest LLP, San Francisco, CA, Dana K. Powers, Joseph R. Wetzel, Greenberg Traurig LLP, San Francisco, CA, Heather J. Meeker, Ian Ballon, Luis Villa, IV, Greenberg Traurig LLP, East Palo Alto, CA, Valerie Wing Ho, Wendy M. Mantell, Greenberg Traurig, LLP, Santa Monica, CA, Renny F. Hwang, Google Inc., Mountain View, CA, for Defendant.

ORDER RE COPYRIGHTABILITY OF CERTAIN REPLICATED ELEMENTS OF THE JAVA APPLICATION PROGRAMMING INTERFACE

WILLIAM ALSUP, District Judge.

INTRODUCTION

This action was the first of the so-called "smartphone war" cases tried to a jury. This order includes the findings of fact and conclusions of law on a central question tried simultaneously to the judge, namely the extent to which, if at all, certain replicated elements of the structure, sequence and organization of the Java application programming interface are protected by copyright.

PROCEDURAL HISTORY

In 2007, Google Inc., announced its Android software platform for mobile devices. In 2010, Oracle Corporation acquired Sun Microsystems, Inc., and thus acquired Sun's interest in the popular programming language known as Java, a language used in Android. Sun was renamed Oracle America, Inc. Shortly thereafter, Oracle America (hereinafter simply "Oracle") sued defendant Google and accused its Android platform as infringing Oracle's Java-related copyrights and patents.

Both Java and Android are complex platforms. Both include "virtual machines," development and testing kits, and application programming interfaces, also known as APIs. Oracle's copyright claim involves 37 packages in the Java API. Copyrightability of the elements replicated is the only issue addressed by this order.

Due to complexity, the Court decided that the jury (and the judge) would best understand the issues if the trial was conducted in phases. The first phase covered copyrightability and copyright infringement as well as equitable defenses. The second phase covered patent infringement. The third phase would have dealt with damages but was obviated by stipulation and verdicts.

For the first phase, it was agreed that the judge would decide issues of copyrightability and Google's equitable defenses and that the jury would decide infringement, fair use, and whether any copying was de minimis. Significantly, all agreed that Google had not literally copied the software but had instead come up with its own implementations of the 37 API packages. Oracle's central claim, rather, was that Google had replicated the structure, sequence and organization of the overall code for the 37 API packages.

For their task of determining infringement and fair use, the jury was told it should take for granted that the structure, sequence and organization 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 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.

Each side was given seventeen hours of "air time" for phase one evidence (not counting openings, closings or motion practice). In phase one, as stated, the parties presented evidence on copyrightability, infringement, fair use, and the equitable defenses. As to the compilable code for the 37 Java API packages, the jury found that Google infringed but deadlocked on the follow-on question of whether the use was protected by fair use. As to the documentation for the 37 Java API packages, the jury found no infringement. As to certain small snippets of code, the jury found only one was infringing, namely, the nine lines of code called "rangeCheck." In phase two, the jury found no patent infringement across the board. (Those patents, it should be noted, had nothing to do with the subject addressed by this order.) The entire jury portion of the trial lasted six weeks.1

This order addresses and resolves the core premise of the main copyright claims, namely, whether the elements replicated by Google from the Java system were protectable by copyright in the first place. No law is directly on point. This order relies on general principles of copyright law announced by Congress, the Supreme Court and the Ninth Circuit.

* * *

Counsel on both sides have supplied excellent briefing and the Court wishes to recognize their extraordinary effort and to thank counsel, including those behind the scenes burning midnight oil in law libraries, for their assistance.

SUMMARY OF RULING

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

java.package.Class.method( )

Each command calls into action a pre-assigned function. The overall name tree, of course, has creative elements but it isalso 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.

STATEMENT OF FINDINGS
1. Java and Android.

Java was developed by Sun, first released in 1996, and has become one of the world's most popular programming languages and platforms.2 The Java platform, through the use of a virtual machine, enables software developers to write programs that are able to run on different types of computer hardware without having to rewrite them for each different type. Programs that run on the Java platform are written in the Java language. Java was developed to run on desktop computers and enterprise servers.3

The Java language, like C and C÷÷, is a human-readable language. Code written in a human-readable language—"source code"—is not readable by computer hardware. Only "object code," which is not human-readable, can be used by computers. Most object code is in a binary language, meaning it consists entirely of 0s and is. Thus, a computer program has to be converted, that is, compiled, from source code into object code before it can run, or "execute." In the Java system, source code is first converted into "bytecode," an intermediate form, before it is then converted into binary machine code by the Java virtual machine.

The Java language itself is composed of keywords and other symbols and a set of pre-written programs to carry out various commands, such as printing something on the screen or retrieving the cosine of an angle. The set of pre-written programs is called the application programming interface or simply API (also known as class libraries).

In 2008, the Java API had 166 "packages," broken into more than six hundred "classes," all broken into over six thousand "methods." This is very close to saying the Java API had 166 "folders" (packages), all including over six hundred pre-written programs (classes) to carry out a total of over six thousand subroutines (methods). Google replicated the exact names and exact functions of virtually all of these 37 packages but, as stated, took care to use different code to implement the six thousand-plus subroutines (methods) and six-hundred-plus classes.

An API is like a library. Each package is like a bookshelf in the library. Each class is like a book on the shelf. Each method is like a how-to-do-it chapter in a book. Go to the right shelf, select the right book, and open it to the chapter that covers the work you need. As to the 37packages, the Java and...

To continue reading

Request your trial
13 cases
6 books & journal articles
  • RISE OF THE API COPYRIGHT DEAD? AN UPDATED EPITAPH FOR COPYRIGHT PROTECTION OF NETWORK AND FUNCTIONAL FEATURES OF COMPUTER SOFTWARE.
    • United States
    • Harvard Journal of Law & Technology No. 31, March 2018
    • 22 Marzo 2018
    ...F.2d 1510, 1522 (9th Cir. 1992). (605.) See id. at 1510. (606.) 203 F.3d 596 (9th Cir. 2000). (607.) Oracle Am., Inc. v. Google Inc., 872 F. Supp. 2d 974, 1000 (N.D. Cal. 2012) (characterizing the Sega and Sony cases as "close analogies" to the Oracle v. Google (608.) Oracle Am., Inc. v. Go......
  • Repurposed Foul Lines after Google v. Oracle
    • United States
    • ABA General Library Landslide No. 14-2, December 2022
    • 1 Diciembre 2022
    ...in throughout along with seemingly nonsubstantive deletions and alterations to the text. 3. See Oracle Am., Inc. v. Google Inc., 872 F. Supp. 2d 974, 999–1000 (N.D. Cal. 2012). 4. Oracle Am., Inc. v. Google Inc., 750 F.3d 1339, 1348 (Fed. Cir. 2014). 5. Oracle Am., Inc. v. Google LLC ( Orac......
  • Software's Copyright Anticommons
    • United States
    • Emory University School of Law Emory Law Journal No. 66-2, 2017
    • Invalid date
    ...and needing to obtain permission for such uses in each case may become prohibitively expensive).30. Oracle Am., Inc. v. Google Inc., 872 F. Supp. 2d 974, 978 (N.D. Cal. 2012), aff'd in part, rev'd in part, 750 F.3d 1339 (Fed. Cir. 2014). 31. Dan Farber, Former Sun CEO Says Google's Android ......
  • Oracle v. Google and the Scope of a Computer Program Copyright
    • United States
    • University of Georgia School of Law Journal of Intellectual Property Law (FC Access) No. 24-1, 2016
    • Invalid date
    ...such as pictorial or graphic works, but that has nothing to do with the program copyright.24. Luettgen, supra note 5, at 258-60.25. 872 F. Supp. 2d 974 (N.D. Cal. 2012), rev'd, 750 F.3d 1339 (Fed. Cir. 2014). The action as originally filed included patent claims, so even though no patent qu......
  • Request a trial to view additional results

VLEX uses login cookies to provide you with a better browsing experience. If you click on 'Accept' or continue browsing this site we consider that you accept our cookie policy. ACCEPT