Oracle vs. Google (2014) Court Filing, retrieved on May 9, 2014, is part of HackerNoon’s Legal PDF Series. You can jump to any part in this filing here. This is part 2 of 16.
Sun Microsystems, Inc. (“Sun”) developed the Java “platform” for computer programming and released it in 1996.[1] The aim was to relieve programmers from the burden of writing different versions of their computer programs for different operating systems or devices. “The Java platform, through the use of a virtual machine, enable[d] software developers to write programs that [we]re able to run on different types of computer hardware without having to rewrite them for each different type.” Copyrightability Decision, 872 F. Supp. 2d at 977. With Java, a software programmer could “write once, run anywhere.”
The Java virtual machine (“JVM”) plays a central role in the overall Java platform. The Java programming language itself—which includes words, symbols, and other units, together with syntax rules for using them to create instructions—is the language in which a Java programmer writes source code, the version of a program that is “in a human-readable language.” Id. For the instructions to be executed, they must be converted (or compiled) into binary machine code (object code) consisting of 0s and 1s understandable by the particular computing device. 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” that has been designed for that device. Id. The Java platform includes the “Java development kit (JDK), javac compiler, tools and utilities, runtime programs, class libraries (API packages), and the Java virtual machine.” Id. at 977 n.2.
Sun wrote a number of ready-to-use Java programs to perform common computer functions and organized those programs into groups it called “packages.” These packages, which are the application programming interfaces at issue in this appeal, allow programmers to use the prewritten code to build certain functions into their own programs, rather than write their own code to perform those functions from scratch. They are shortcuts. Sun called the code for a specific operation (function) a “method.” It defined “classes” so that each class consists of specified methods plus variables and other elements on which the methods operate. To organize the classes for users, then, it grouped classes (along with certain related “interfaces”) into “packages.” See id. at 982 (describing organization: “[e]ach package [i]s broken into classes and those in turn [are] broken into methods”). The parties have not disputed the district court’s analogy: Oracle’s collection of API packages is like a library, each package is like a bookshelf in the library, each class is like a book on the shelf, and each method is like a how-to chapter in a book. Id. at 977.
The original Java Standard Edition Platform (“Java SE”) included “eight packages of pre-written programs.” Id. at 982. The district court found, and Oracle concedes to some extent, that three of those packages—java.lang, java.io, and java.util—were “core” packages, meaning that programmers using the Java language had to use them “in order to make any worthwhile use of the language.” Id. By 2008, the Java platform had more than 6,000 methods making up more than 600 classes grouped into 166 API packages. There are 37 Java API packages at issue in this appeal, three of which are the core packages identified by the district court.[2] These packages contain thousands of individual elements, including classes, subclasses, methods, and interfaces.
Every package consists of two types of source code— what the parties call (1) declaring code; and (2) implementing code. Declaring code is the expression that identifies the prewritten function and is sometimes referred to as the “declaration” or “header.” As the district court explained, the “main point is that this header line of code introduces the method body and specifies very precisely the inputs, name and other functionality.” Id. at 979-80. The expressions used by the programmer from the declaring code command the computer to execute the associated implementing code, which gives the computer the step-by-step instructions for carrying out the declared function.
To use the district court’s example, one of the Java API packages at issue is “java.lang.” Within that package is a class called “math,” and within “math” there are several methods, including one that is designed to find the larger of two numbers: “max.” The declaration for the “max” method, as defined for integers, is: “public static int max(int x, int y),” where the word “public” means that the method is generally accessible, “static” means that no specific instance of the class is needed to call the method, the first “int” indicates that the method returns an integer, and “int x” and “int y” are the two numbers (inputs) being compared. Copyrightability Decision, 872 F. Supp. 2d at 980-82. A programmer calls the “max” method by typing the name of the method stated in the declaring code and providing unique inputs for the variables “x” and “y.” The expressions used command the computer to execute the implementing code that carries out the operation of returning the larger number.
Although Oracle owns the copyright on Java SE and the API packages, it offers three different licenses to those who want to make use of them. The first is the General Public License, which is free of charge and provides that the licensee can use the packages—both the declaring and implementing code—but must “contribute back” its innovations to the public. This arrangement is referred to as an “open source” license. The second option is the Specification License, which provides that the licensee can use the declaring code and organization of Oracle’s API packages but must write its own implementing code. The third option is the Commercial License, which is for businesses that “want to use and customize the full Java code in their commercial products and keep their code secret.” Appellant Br. 14. Oracle offers the Commercial License in exchange for royalties. To maintain Java’s “write once, run anywhere” motto, the Specification and Commercial Licenses require that the licensees’ programs pass certain tests to ensure compatibility with the Java platform.
The testimony at trial also revealed that Sun was licensing a derivative version of the Java platform for use on mobile devices: the Java Micro Edition (“Java ME”). Oracle licensed Java ME for use on feature phones and smartphones. Sun/Oracle has never successfully developed its own smartphone platform using Java.
[1] Oracle acquired Sun in 2010.
[2] The 37 API packages involved in this appeal are: java.awt.font, java.beans, java.io, java.lang, ja-va.lang.annotation, java.lang.ref, java.lang.reflect, java.net, java.nio, java.nio.channels, java.nio.channels.spi, java.nio.charset, java.nio.charset.spi, java.security, java.security.acl, java.security.cert, java.security.interfaces, java.security.spec, java.sql, java.text, java.util, java.util.jar, java.util.logging, java.util.prefs, java.util.regex, java.util.zip, javax.crypto, javax.crypto.interfaces, javax.crypto.spec, javax.net, javax.net.ssl, javax.security.auth, javax.security.auth.callback, javax.security.auth.login, javax.security.auth.x500, javax.security.cert, and javax.sql.
Continue Reading Here.
About HackerNoon Legal PDF Series: We bring you the most important technical and insightful public domain court case filings.
This court case 10-CV-3561 retrieved on September 22, 2023, from law.justia.com is part of the public domain. The court-created documents are works of the federal government, and under copyright law, are automatically placed in the public domain and may be shared without legal restriction.