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

Cite as:  593 U. S. ____ (2021) 

3 

THOMAS, J., dissenting 

Oracle’s declaring code was central to its business model. 
Oracle  profited  financially  by  encouraging  developers  to
create programs written in Java and then charging manu-
facturers a fee to embed in their devices the Java software 
platform needed to run those programs.  To this end, Oracle 
created  a  work  called  Java  2  Platform,  Standard  Edition, 
which included a highly organized library containing about
30,000 methods.  Oracle gave developers free access to these 
methods to encourage them to write programs for the Java
platform.  In return, developers were required to make their 
programs compatible with the Java platform on any device. 
Developers were encouraged to make improvements to the
platform, but they were required to release beneficial mod-
ifications to the public.  If a company wanted to customize
the platform and keep those customizations secret for busi-
ness purposes, it had to pay for a separate license.

By 2005, many companies were racing to develop operat-
ing systems for what would become modern smartphones.
Oracle’s  strategy  had  successfully  encouraged  millions  of 
programmers to learn Java.  As a result, Java software plat-
forms were in the vast majority of mobile phones.  Google
wanted to attract those programmers to Android by includ-
ing in Android the declaring code with which they were now 
familiar.  But the founder of Android, Andrew Rubin, un-
derstood that the declaring code was copyrighted, so Google 
sought  a  custom  license  from  Oracle.  At  least  four  times 
between  2005  and  2006,  the  two  companies  attempted  to 
—————— 

public static int MaxNum (int x, int y, int z) { 

if (x >= y && x >= z) return x; 
else if (y >= x && y >= z) return y;
else return z; 
}

The first line is declaring code that defines the method, including what
inputs  (integers  x,  y,  and  z)  it  can  process  and  what  it  can  output  (an 
integer).  The remainder is implementing code that checks which of the 
inputs is largest and returns the result.  Once this code is written, a pro-
grammer could invoke it by typing, for example, “MaxNum (4, 12, 9).”