Document ID: ./input/supremecourt_opinions/opinions/20pdf/18-956_d18f.pdf
Page Number: 8.0

4 

GOOGLE LLC v. ORACLE AMERICA, INC. 

Opinion of the Court 

from scratch.”  Oracle America, Inc. v. Google, Inc., 750 F. 
3d 1339, 1349 (2014).  Through an API, a programmer can
draw  upon  a  vast  library  of  prewritten  code  to  carry  out
complex  tasks.    For  lay  persons,  including  judges,  juries, 
and many others, some elaboration of this description may 
prove useful.

Consider in more detail just what an API does.  A com-
puter can perform thousands, perhaps millions, of different 
tasks  that  a  programmer  may  wish  to  use.   These  tasks 
range from the most basic to the enormously complex.  Ask 
the computer, for example, to tell you which of two numbers
is the higher number or to sort one thousand numbers in
ascending order, and it will instantly give you the right an-
swer.  An API divides and organizes the world of computing
tasks in a particular way.  Programmers can then use the 
API  to  select  the  particular  task  that  they  need  for  their 
programs.  In Sun’s API (which we refer to as the Sun Java
API), each individual task is known as a “method.”  The API 
groups somewhat similar methods into larger “classes,” and 
groups  somewhat  similar  classes  into  larger  “packages.”
This  method-class-package  organizational  structure  is  re-
ferred to as the Sun Java API’s “structure, sequence, and 
organization,” or SSO.

For each task, there is computer code, known as “imple-
menting code,” that in effect tells the computer how to exe-
cute the particular task you have asked it to perform (such
as telling you, of two  numbers, which is the higher).  See 
Oracle,  872  F. Supp.  2d,  at  979–980.    The  implementing
code  (which  Google  independently  wrote)  is  not  at  issue
here.  For a single task, the implementing code may be hun-
dreds of lines long.  It would be difficult, perhaps impossi-
ble, for a programmer to create complex software programs
without  drawing  on  prewritten  task-implementing  pro-
grams to execute discrete tasks.

But  how  do  you  as  the  programmer  tell  the  computer
which of the implementing code programs it should choose,