decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
Oracle v. Google - Day 5 Filings; What Is the "Work as a Whole?" ~mw
Saturday, April 21 2012 @ 10:00 AM EDT

Day 5 and the activity is still centered on the courtroom, which is as it should be. However, there continue to be filings in the case, the first of which is the stipulation the parties submitted for the court's approval yesterday with respect to the selection, arrangement and structure of the 37 APIs (946 [PDF; Text])

More important is the order issued by Judge Alsup requesting another brief on the copyright issue. (948 [PDF; Text]) With the order we are finally getting to the conflict among what Oracle argued in its complaint, what it dances around with in court when talking about infringement versus damages, and Oracle's licensing practices with respect to Java.

When talking about copyright infringement in its complaint (Amended Complaint [PDF]), here is what Oracle has to say:

9. One of the most important technologies Oracle acquired with Sun was the Java platform. The Java platform, which includes code and other documentation and materials, was developed by Sun and first released in 1995. The Java platform is a bundle of related programs, specifications, reference implementations, and developer tools and resources that allow a user to deploy applications written in the Java programming language on servers, desktops, mobile devices, and other devices. The Java platform is especially useful in that it insulates applications from dependencies on particular processors or operating systems. To date, the Java platform has attracted more than 6.5 million software developers. It is used in every major industry segment and has a ubiquitous presence in a wide range of computers, networks, and devices, including cellular telephones and other mobile devices. Sun’s development of the Java platform resulted in many computing innovations and the issuance to Sun of a substantial number of important patents.

...

11. Oracle America owns copyrights in the code, documentation, specifications, libraries, and other materials that comprise the Java platform. Oracle America’s Java-related copyrights are registered with the United States Copyright Office, including those attached as Exhibit H.

...

38. As noted in paragraph 11 above, Oracle America owns copyrights in the code, documentation, specifications, libraries, and other materials that comprise the Java platform.

39. Google’s Android infringes Oracle America’s copyrights in the Java platform, and Google infringes Oracle’s exclusive rights under copyright by reproducing and distributing Android and inducing others to reproduce and distribute Android or the code contained within it.

40. Android includes infringing class libraries and documentation. Approximately one third of Android’s Application Programmer Interface (API) packages (available at http://developer.android.com/reference/packages.html) are derivative of Oracle America’s copyrighted Java API packages (available at http://download-llnw.oracle.com/javase/1.5.0/- docs/api/ and http://download-llnw.oracle.com/javase/1.4.2/docs/api/) and corresponding documents. The infringed elements of Oracle America’s copyrighted work include Java method and class names, definitions, organization, and parameters; the structure, organization and content of Java class libraries; and the content and organization of Java’s documentation. Examples of this copying are illustrated in Exhibit I to this complaint. In at least several instances, Android computer program code also was directly copied from copyrighted Oracle America code. For example, as may be readily seen in Exhibit J, the source code in Android’s “PolicyNodeImpl.java” class is nearly identical to “PolicyNodeImpl.java” in Oracle America’s Java, not just in name, but in the source code on a line-for-line basis.

41. Google has distributed Android to many companies interested in the mobile device market, including the members of the Open Handset Alliance, with the understanding and intention that those companies would distribute Android to developers and end-users, all with the purpose of encouraging and promoting the creation and execution of Android software applications. Users of Android must copy and use infringing Java class libraries, or works derived therefrom, to manufacture and use functioning Android devices, in violation of Oracle’s copyrights. Such use is not licensed. Google has thus induced, caused, and materially contributed to the infringing acts of others by encouraging, inducing, allowing and assisting others to copy and distribute infringing works. [empahsis added]

So at different times Oracle talks about infringement of the Java platform versus infringement of select components of the Java platform. More recently the Oracle arguments have become more limited focusing on the 37 API specifications (not code) and the limited number of lines of directly copied code. And yet Oracle at times persists in trying to paint the picture of damages as being the entire Java platform. Whatever. The parties, and particularly Oracle, per the judge's order are going to have to settle on what has been copied and limit its infringement and damages assertions to those items.

What comes out of the judge's recent order, though, are two things. When determining "substantial similarity" what is Oracle comparing. The entire Java platform? Each separate API? It would seem the only thing they can prove is the latter. However, the more and more fine grained the degree of alleged infringement, i.e., the lower in the platform structure one goes (Java platform -> Java class libraries -> Java API specifications) the greater the likelihood that what is encompassed by the infringement allegation is beyond the scope of copyright protection, i.e., functional in nature or subject to the merger of idea and expression. So the judge is trying to clarify this.

However, there is another place we see the words "work as a whole" used in the licensing of software, and that is in the GPL version 2, the very license that Sun applied and Oracle now applies to the Java programming language. Why is this important. Let's take a look at selected sections of GPLv2:

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

So the question is, given that the Java programming language is licensed under GPLv2, are the APIs and associated class libraries necessary to make programs run in the Java language "associated interface definition files?" If so, one could argue that those 37 APIs are a part of the "work as a whole" (the Java programming language) and, thus, also subject to the GPLv2. Interesting.

The briefs are due Sunday, and it will be interesting to see how Oracle dances around all of this.


*************

Docket

04/20/2012 - 946 - ORDER GRANTING STIPULATED STATEMENT by Hon. William Alsup granting 945 Stipulation.(whalc1, COURT STAFF) (Filed on 4/20/2012) (Entered: 04/20/2012)

04/20/2012 - 947 - Minute Entry: Jury Trial held on 4/20/2012 before William Alsup (Date Filed: 4/20/2012). Witnesses called. Further Jury Trial 4/23/2012 7:30 AM. (Court Reporter Kathy Sullivan; Debra Pas.) (dt, COURT STAFF) (Date Filed: 4/20/2012) (Entered: 04/20/2012)

04/20/2012 - 948 - ORDER RE ADDITIONAL ISSUES FOR SECOND BRIEF DUE SUNDAY. Signed by Judge Alsup on April 20, 2012. (whalc1, COURT STAFF) (Filed on 4/20/2012) (Entered: 04/20/2012)

04/20/2012 – 949 - Transcript of Proceedings held on 4/18/20, before Judge William H. Alsup. Court Reporter/Transcriber Katherine Powell Sullivan and Debra L. Pas, OfficialReporters, Telephone number 415-794-6659 Katherine_Sullivan@cand.uscourts.gov. Per General Order No. 59 and Judicial Conference policy, this transcript may be viewed only at the Clerks Office public terminal or may be purchased through the Court Reporter/Transcriber until the deadline for the Release of Transcript Restriction.After that date it may be obtained through PACER. Any Notice of Intent to Request Redaction, if required, is due no later than 5 business days from date of this filing. Redaction Request due 5/11/2012. Redacted Transcript Deadline set for 5/21/2012. Release of Transcript Restriction set for 7/19/2012. (Sullivan, Katherine) (Filed on 4/20/2012) (Entered: 04/20/2012)

04/20/2012 – 950 - Transcript of Proceedings held on 4/19/12, before Judge William H. Alsup. Court Reporter/Transcriber Katherine Powell Sullivan and Debra L. Pas, OfficialReporters,Telephone number 415-794-6659/ Katherine_Sullivan@cand.uscourts.gov. Per General Order No. 59 and Judicial Conference policy, this transcript may be viewed only at the Clerks Office public terminal or may be purchased through the Court Reporter/Transcriber until the deadline for the Release of Transcript Restriction.After that date it may be obtained through PACER. Any Notice of Intent to Request Redaction, if required, is due no later than 5 business days from date of this filing. Redaction Request due 5/11/2012. Redacted Transcript Deadline set for 5/21/2012. Release of Transcript Restriction set for 7/19/2012. (Sullivan, Katherine) (Filed on 4/20/2012) (Entered: 04/20/2012)


*************

946

UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
SAN FRANCISCO DIVISION

ORACLE AMERICA, INC.
Plaintiff,
v.
GOOGLE INC.
Defendant.

CASE NO. CV 10-03561 WHA

STIPULATION AND [PROPOSED]
ORDER REGARDING SELECTION,
ARRANGEMENT AND STRUCTURE

Judge: Honorable William H. Alsup


STIPULATION

WHEREAS, the parties have met and conferred and have reached agreement regarding a statement that Google made in a brief to the Court regarding substantial similarity of the selection, arrangement and structure of API elements in the 37 accused API packages;

NOW THEREFORE THE PARTIES HEREBY STIPULATE AND AGREE as follows:

1. The following statement shall be read to the jury on the same terms as the other statements in the Court’s Order Granting in Part Oracle’s Motion to Deem Issues Undisputed and Denying Relief Regarding Statement to Jury (ECF No. 938):

For the 37 accused API packages, Android and Java 2 SE Version 5.0 have substantially the same selection, arrangement and structure of API elements.
2. This stipulation is made without prejudice to Oracle arguing that the selection, arrangement and structure of the 37 API packages are virtually identical between Android and Java 2 SE.

3. This stipulation is made without prejudice to Google arguing that the 37 accused API packages in Android and Java 2 SE are only a small portion of the Android and Java platforms, respectively, as a whole.

ORDER

The foregoing stipulation is approved, and IT IS SO ORDERED.

Date: April 20, 2012

/s/William Alsup
Honorable William H. Alsup
Judge of the United States District Court

1



948

IN THE UNITED STATES DISTRICT COURT
FOR THE NORTHERN DISTRICT OF CALIFORNIA

ORACLE AMERICA, INC.,
Plaintiff,
v.
GOOGLE INC.,
Defendant.

No. C 10-03561 WHA

ORDER RE ADDITIONAL
ISSUES FOR SECOND BRIEF
DUE SUNDAY

In addition to all other issues raised this morning (definition of “class libraries” for example), please address the following in the second brief due Sunday.

1. What case law or other authority is there that states the judge must identify the “work as a whole” (for similarity, fair use, and de minimis) for the jury? Quote the entire relevant paragraphs. Which party has the burden to identify the “entire work”?

2. With respect to what segment of the “work” can stand alone within the meaning of Hustler v. Moral, 796 F.2d 1148, 1155 (9th Cir. 1986), the Court wishes to know whether the implementation of the 37 API packages inherit, call upon, invoke, or incorporate any method, field, or class outside the 37.

3. Why shouldn’t we let the jury decide what the “work as a whole” is?

4. Is the “work as a whole” the same for purposes of “substantial similarity (or virtually identical)”, “fair use,” and “de minimis copying? If not, how are the “works as a whole” to be found for these purposes?


5. For purposes of identifying the “work as a whole,” should Oracle be held to the copyrighted work identified in the operative complaint? Quote key case law.

6. If the SSO and declarations are held to be protected elements, then why are there still issues of access and similarity for purposes of infringement (excluding de minimis and fair use)? Put another way, isn’t substantial similarity only an issue if there isn’t admission of factual copying of protectable elements?

IT IS SO ORDERED.

Dated: April 20, 2012.

/s/William Alsup
WILLIAM ALSUP
UNITED STATES DISTRICT JUDGE

2



  


Oracle v. Google - Day 5 Filings; What Is the "Work as a Whole?" ~mw | 104 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
The java language is not what is being licensed
Authored by: s65_sean on Saturday, April 21 2012 @ 10:25 AM EDT
Mark, I think you are confused. You say:
So the question is, given that the Java programming language is licensed under GPLv2, are the APIs and associated class libraries necessary to make programs run in the Java language "associated interface definition files?" If so, one could argue that those 37 APIs are a part of the "work as a whole" (the Java programming language) and, thus, also subject to the GPLv2. Interesting.
The license that you were quoting before that statement appears to be a license for a software program, as it talks about "the program as a whole". The java programming language is not a software program, it is the language that you use to write programs. Perhaps the license you are quoting from is for a java compiler or for a java environment implementation, but it certainly should not be for the java programming language, otherwise the stipulation that was made in court this week that hte java programming language is free to use by anyone would make no sense.

[ Reply to This | # ]

Java API under GPL
Authored by: Anonymous on Saturday, April 21 2012 @ 10:26 AM EDT
The Java API's have been released under the GPL as part of OpenJDK. See
http://openjdk.java.net/legal/gplv2+ce.html . However, for Goggle or anyone
else to take advantage of this, any version they derive from the OpenJDK would
have to be release under the GPL. In other words, Google would have to license
Android under the GPL, and all phone manufacturers would have to release the
code to the phones under the GPL. Google chose not to use a GPL license or GPL
derived code for Android because they did not believe the platform would be
adopted by the phone manufacturers if they had to release their derivative code
under the GPL.

But the bottom line is that anyone can release a Java environment under the GPL
can claim the benefit of the OpenJDK license, but if their Java environment is
not released under the GPL, the OpenJDK license doesn't help them.

[ Reply to This | # ]

Corrections here
Authored by: SilverWave on Saturday, April 21 2012 @ 10:27 AM EDT
:-)

---
RMS: The 4 Freedoms
0 run the program for any purpose
1 study the source code and change it
2 make copies and distribute them
3 publish modified versions

[ Reply to This | # ]

Off Topic Here
Authored by: SilverWave on Saturday, April 21 2012 @ 10:28 AM EDT
:-D

---
RMS: The 4 Freedoms
0 run the program for any purpose
1 study the source code and change it
2 make copies and distribute them
3 publish modified versions

[ Reply to This | # ]

News Picks Here
Authored by: SilverWave on Saturday, April 21 2012 @ 10:29 AM EDT
#-#

---
RMS: The 4 Freedoms
0 run the program for any purpose
1 study the source code and change it
2 make copies and distribute them
3 publish modified versions

[ Reply to This | # ]

Oracle v. Google - Day 5 Filings; What Is the "Work as a Whole?"
Authored by: Anonymous on Saturday, April 21 2012 @ 11:07 AM EDT
That part of the license just means, that if you take OpenJDK under the GPL
license and want to extract *a part* of it and give away that part, you still
have to give the source code for the work as a whole (i.e. the entire OpenJDK,
not just the little piece you are giving away as part of your program).

It doesn't apply to Google anyway, because they didn't use any OpenJDK code.

[ Reply to This | # ]

The dependency graph will be a tough one for Oracle
Authored by: Anonymous on Saturday, April 21 2012 @ 11:17 AM EDT
2. With respect to what segment of the “work” can stand alone within the meaning of Hustler v. Moral, 796 F.2d 1148, 1155 (9th Cir. 1986), the Court wishes to know whether the implementation of the 37 API packages inherit, call upon, invoke, or incorporate any method, field, or class outside the 37.

That's a tough one for Oracle. Again it demonstrates Judge Alsup's superb technical understanding. The 2nd part leaves Oracle no wiggle room, no hand-waving. It's a completely objective technical question and I hope Google's lawyers recruit some competent techies to present that dependency graph in an impressive manner.

While I have not checked it myself, my feeling is that depending on the dependencies you look at, almost all of the 37 APIs and in fact much more than that is interconnected. In particular, and that's the major issue I see for Oracle here, the dependency graph will show that you cannot cleanly separate what Oracle contends is the "Java language" from the "Java APIs". For instance java.lang.String (conceded by Oracle to be part of the freely usable "Java language") has a constructor that throws java.io.UnsupportedEncodingException which puts us straight into the "java.io" package which as I understand it, Oracle claims is not free. And the court not only asks about the declarations but also the implementation ("call upon", "invoke") and when you go down to that level, you find even more interconnectness. Here are the imports from the implementation of java.lang.String from OpenJDK 6:

import java.io.ObjectStreamClass;
import java.io.ObjectStreamField;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Formatter;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
I'm quite sure that the above java.util.* classes are on Oracle's "non-free" list. But how are they going to explain that you are free to use the String class as part of the Java language, if that class cannot be implemented without using non-free classes?

[ Reply to This | # ]

Hmmm, I just had thought
Authored by: calris74 on Saturday, April 21 2012 @ 11:28 AM EDT
In C and C++, the API definitions are in a bunch of header files and you program needs to include the header before it uses the API

But the library is nowhere to be seen when you write the code The compiler only needs the headers to know how the API should be called (function name, number and type of arguments etc)

The library needs to be available when you run the program. The dynamic loader/linker will load the library and do all sorts of behind the scenes stuff to make sure you program can call functions in the library.

But, the library does not need to be the the same one as the one written by whoever wrote the header files - so long as the implementation exactly matches the definition. Wine is a perfect example - it is a collection of independently written libraries which implement the Windows APIs

Now header files have never been copyrighted (or the copyright never enforced) as to do so would mean nobody else could write programs using your API.

But Java is different - There are no headers. The API definition is in the Java library (.jar) files themselves. So now you have a file with a mix of API definition and API implementation which (at least part) is definitely covered by copyright...

[ Reply to This | # ]

APIs vs. API *Documentation*
Authored by: Anonymous on Saturday, April 21 2012 @ 11:48 AM EDT
It seems to me that Oracle keeps conflating "the ideas that constitute
APIs" with "the documentation that constitutes fixed descriptions of
those ideas".

You can copyright Harry Potter, the movie, and the corresponding script, and
even the sentence, "a child awakens to their magic powers, trains, and
defeats a world-threatening evil", but the idea behind all three remains
free. APIs as "the essential plot points of software" leans closer to
a literal description than a metaphor.

[ Reply to This | # ]

How does dalvik development work?
Authored by: Anonymous on Saturday, April 21 2012 @ 12:01 PM EDT
1. Does a programmer install the javac compiler and the rest of the Java
Development Kit on a PC?
2. Does the programmer add some Android/Dalvik/Harmony-specific
classes to the classpath?
3. Does the programmer write x.java source files?
4. Does the programmer compile them with the standard Java compiler
javac?
5. Does the programmer then use some Android/Dalvik-specific program to
do something with the bytecodes in the x.class files written by the
compiler?

[ Reply to This | # ]

I think i can PROOVE that API cannot be copyrighted
Authored by: vadim on Saturday, April 21 2012 @ 01:38 PM EDT
Assuming that:
1) Current law allows reverse engineering of the software
2) If API is copyrightable it means that any use of the API requires
permission of the copyright holder

By virtue of 1) i can reimplement java library to ensure that java apps can
run on my platform
But by virtue of 2) i can't do it if copyright holder doesn't allow it.

It means that assumption 2 contradicts assumption 1 which is current law. Ergo
- assumption 2 is incorrect

[ Reply to This | # ]

definition of “class libraries”
Authored by: Anonymous on Saturday, April 21 2012 @ 02:44 PM EDT
Easy: This is already in copyright law and what is purported to protect software
copying.

“class libraries” are an "expression of the source code"

This goes to the whole tangible medium thing.

ExcellentGame(tm) is distributed on Cassette tape.

Joe takes a binary copy of the tape, and records it onto a floppy disk.

Joe is a flagrant copyright violator, he has copied the expression in the
tangible medium.


Bob, takes a copy of Joes floppy disk, and transfers it on tape. Whoops, wrong
tangible medium, yet Bob clearly has a copy of ExcellentGame(tm) and is having
fun with it without paying.

Easily fixed. The binary is a (tangible) expression of the source code.

The "Class Libraries" are an expression of the "Java API source
code"

The source code is protected, the "Class Libraries" are protected, the
"English language Book" describing the libraries (API Specification)
is protected.

The facts about the class libraries, which are contained in all three items are
not.


Game over.


Done.

[ Reply to This | # ]

The whole work and nothing but the work.
Authored by: Ian Al on Saturday, April 21 2012 @ 03:11 PM EDT
The Java API Specification is a manual and not source code for a program. The
GPL refers throughout to a copyright program. You cannot derive a program from a
manual. Thus the GPL does not apply to the Specification. There is another
licence that applies to documentation. The documentation licence explains
document copying, modification and redistribution.

As with any book about making things, the names, ideas and concepts in the
Specification book can be used by programmers to write libraries for the use of
Java application programmers.

A clever programmer can even replace all of the Sun libraries with their own
version and the application programmer can use them in just the same way as the
Sun library originals. For this to work, they have to use the same function
names and use that name to locate the function packaged in the same way as the
original Sun library packages. This may be where the valuable SSO comes into
play. However, knowing that the function foobar must be placed in package foo
for compatibility does not use much of the SSO. How much SSO is lots?

The APIs in Sun Java, Harmony and OpenJDK are not interfaces. They are source
code and byte code (binaries) for libraries of functions that can be used with
Java.

There are no interfaces in software. The interfaces are abstract concepts
documented in manuals to help programmers write down what is necessary to make
available functions in libraries or other programs. All there is is functional
program code that is either provided by the programmer of an application or
provided by libraries or other programs including operating system programs.

APIs are a higher level way of getting at functions. An API is the use of a name
in the syntax of a computer language to match to the same name in the library
thus identifying the function code to be used.

When programmers were real men, they wrote their program code, put it directly
into the memory and arranged for any libraries of functions to be loaded
somewhere else in memory. The individual functions in the library were found
using the number of bytes offset from the start in memory of the library at
which the specific function code could be found.

Some microprocessor instruction sets made offset jumps very easy. Some did not.
If the worst came to the worst, one could look up the offset in the library
manual, add it to the base address of the library and make the processor start
executing the code at the new location.

JMP [Address]

Now those operating system monsters and hard drive file system loonies have got
on the scene, a programmers memory is not his own. He is forced by these malign
monsters to use ABIs and APIs and to 'jolly well put up with being loaded where
we want you loaded'. They won't even tell you where the libraries are kept in
memory, any more.

The programmer has to look up in a book how to get access to system or library
functions. The Java Api Specification is just such a book... compilation of
books... list of compilation of compilations of books.

The compiler and the library code just don't care. They look at function names
in the programmers code and pick out the function code in the library identified
by the name.

Then they look in specific places in the programmers code for any parameter data
to be used with the library code. The compiler then plops library and program
code (in byte-code form) into the class file as a single logical set of
instructions.

As far as the compiler and library are concerned, you can use the Specification
to resolve the offset in a kitchen table leg.

---
Regards
Ian Al
Software Patents: It's the disclosed functions in the patent, stupid!

[ Reply to This | # ]

Java under the GPL not relevant for this case?
Authored by: Anonymous on Saturday, April 21 2012 @ 03:15 PM EDT
'So the question is, given that the Java programming language is licensed under
GPLv2, are the APIs and associated class libraries necessary to make programs
run in the Java language "associated interface definition files?" If
so, one could argue that those 37 APIs are a part of the "work as a
whole" (the Java programming language) and, thus, also subject to the
GPLv2. Interesting.'

AFAIK this case is about Java 5 which was never released under the GPL. So I
doubt this argument is relevant - even if Java 6 (which was) and 5 are
substantially similar? 5 is not a derivative of 6 for simple causality reasons,
lol

IANAL, etc.

[ Reply to This | # ]

Don't understand Mark's point about GPLv2
Authored by: Anonymous on Sunday, April 22 2012 @ 12:30 AM EDT
I have been reading Groklaw since the beginning. This is my first post. I am completely missing Mark's point:
So the question is, given that the Java programming language is licensed under GPLv2, are the APIs and associated class libraries necessary to make programs run in the Java language "associated interface definition files?" If so, one could argue that those 37 APIs are a part of the "work as a whole" (the Java programming language) and, thus, also subject to the GPLv2. Interesting.

Yes, it is clear that the JRE including the APIs is licensed under the GPLv2. This is not news. But what relevance does this have to Oracle-Google ? I don't see how this can be used to either attack or defend, either Oracle or Google ?

[ Reply to This | # ]

Oracle v. Google - Day 5 Filings; What Is the "Work as a Whole?"
Authored by: RMAC9.5 on Monday, April 23 2012 @ 11:28 AM EDT
It is a specific instance of the Java language just like a poem or a story is a
specific instance of what ever language it is written in.

[ Reply to This | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )