An API generally defines the tools available to programmers wishing to work with a software package. These tools include two aspects: (1) declaring code and (2) implementing code.
A programmer uses declaring code, which includes the name of an instruction, to identify for the computer which piece of the API’s functionality the programmer wants to use. For example, “public static int max(int x, int y)” is the declaring code specifying a function that finds the larger, i.e. “max,” of two integers, x and y. The computer then executes corresponding implementing code. The implementing code provides necessary steps to carry out the requested functionality, such as how to actually determine the max of x and y. One benefit of APIs is that they allow interoperability—that is programs can communicate using APIs even though they were written by different people.
In Oracle, a main issue concerned Google’s reproduction of the declaring code in its Android operating system. Believing programmers accustomed to working with Oracle’s Java product would want to find the same set of functionalities with the same names in Android, Google reproduced the declaring code from 37 Java API packages. These 37 API packages represented more than 600 classes and 6,000 methods. With a few exceptions, Google wrote its own implementing code for all of the functions.
The Court overturned the decision of the district court, holding in favor of Oracle on the issue of whether it was entitled to copyright protection of the overall structure, sequence and organization of the 37 Java API packages as represented in the 7,000 lines of declaring code.
The Court expressly “decline[d] any invitation to declare that protection of software programs should be the domain of patent law, and only patent law.”
Left for future resolution, however, is Google’s defense of fair use of the API’s declaring code.