Java Materials Are Copyrighted
Total Page:16
File Type:pdf, Size:1020Kb
Oracle v. Google 1 What Google Wanted Sun To Do • “[T]hrow away their standard license, because it isn’t what we’re asking for, and they needed to develop a new license that was specifically what we’re asking for.” • “So what we’re asking them to do is basically change their business model.” Andy Rubin Co-Founder of Android • “And we would come in and we would basically say, hey, why April 24, 2012 Trial Tr. 1606:8-17; don’t you open source your technology? Why don’t you make 1618:8-15; 1596:15-20 it available for free to the world as part of our platform? And, in return, we’ll pay you a little bit of money to do that, so you guys can go and create some derivative of your business model.” 1 Java Materials Are Copyrighted TX 475, 450, 451, 452, 453, 454, 455, 460, 461, 462, 463, 464, 476, 509, 513, 518, 520, 521, 523, 524, 526, 598, 599, 601, 602, 603, 659 2 What Google Copied JAVA ANDROID Google copied Java structure, Question 1.A sequence, and organization into Android core library Google copied Java API Question 2 documentation into Android API documentation Google copied from Java code Question 3 into Android code 3 4 The Android APIs Have The Same Structure, Sequence, and Arrangement As The Java APIs “For the 37 accused Q. And the Structure, THE COURT: And API packages, Sequence and then the names and Android and Java 2 Organization of the declarations SE version 5.0 have the API elements you're going to say substantially the is virtually are the same. same selection, identical across arrangement, and those 37 packages, THE WITNESS: That's structure of API correct? right. elements.” A. That's right. Owen Astrachan, Ph.D. Dan Bornstein, Former Google Google’s Admission April 23, 2012 Trial Tr. 1337:21-24 Google’s Technical Expert Android Tech Lead April 27, 2012 Trial Tr. 2214:3-9 April 25, 2012 Trial Tr. 1792:4-6 5 Google’s Expert Admits That Google Copied Java Structure, Sequence, And Organization Into Android Core Library Q. And with respect to the packages and the structure of the packages, are there any similarities between the two platforms? A. No. The Package names, Class names, and Method names for the 37 packages are the same; otherwise, there are no – they are different. Owen Astrachan, Ph.D. Google Technical Expert Q. And do you have an opinion as to whether there are any April 27, 2012 Trial Tr. 2184:22-2185:9 reasons why those things are the same, the structure, the organization, and the names? A. As I've mentioned before, that structure of the names of the classes, packages, and methods needs to be the same so that the code will work on both platforms, be compatible, inter-operate, so that I can call the methods. Those need to be the same. 6 Android Core Library Copies Java Structure, Sequence, And Organization API CODE package java.security package java.security ProtectionDomain(CodeSource codesource, PermissionCollection ClassLoader getClassLoader () permissions) public Returns class ProtectionDomainthe ClassLoader { of this public class ProtectionDomain { Creates a new ProtectionDomain domain with the given CodeSource and publicPermissions. ProtectionDomain (CodeSource codesource, public ProtectionDomain(CodeSource cs, PermissionCollection permissions) { PermissionCollection permissions) { public final ClassLoader getClassLoader() { public final ClassLoader getClassLoader() { TX 623 TX 46.20 7 Google’s Copying Was Extensive Google copied 37 packages with approximately: CLASS 400 classes METHOD 4,500 methods DECLARATION 7,000 declarations 11,000 printed pages of specifications TX 46 8 Google’s Example Downplays Its Copying TX 3452 9 Copied Java APIs And Class Libraries * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * TX 1028 (poster only) 10 Java Structure, Sequence, And Organization Are Complex ByteBuffer Methods: static ByteBuffer allocate(int capacity) static ByteBuffer allocateDirect(int capacity) byte[] array() int arrayOffset() abstract CharBuffer asCharBuffer() abstract DoubleBuffer asDoubleBuffer() Methods inheritedabstract from FloatBuffer asFloatBuffer() abstract IntBuffer asIntBuffer() class java.nio.Buffer:abstract LongBuffer asLongBuffer() capacity abstract ByteBuffer asReadOnlyBuffer() abstract ShortBuffer asShortBuffer() clear abstract ByteBuffer compact() int compareTo(ByteBuffer that) flip abstract ByteBuffer duplicate() boolean equals(Object ob) hasRemaining abstract byte get() isReadOnly ByteBuffer get(byte[] dst) ByteBuffer get(byte[] dst, int offset, int length) limit abstract byte get(int index) abstract char getChar() limit abstract char getChar(int index) abstract double getDouble() mark abstract double getDouble(int index) position abstract float getFloat() abstract float getFloat(int index) position abstract int getInt() abstract int getInt(int index) remaining abstract long getLong() abstract long getLong(int index) reset abstract short getShort() rewind abstract short getShort(int index) boolean hasArray() int hashCode() abstract boolean isDirect() ByteOrder order() ByteBuffer order(ByteOrder bo) abstract ByteBuffer put(byte b) 11 Google’s Copying Is Substantial Q. Now, you said that the -- I think you were talking about 7,000 lines of code as just a small piece of Android. Do you recall that testimony? A. Yes, I do. Q. And this is the 7,000 lines of code that word-for-word, symbol-for-symbol, is identical in the Android core libraries Owen Astrachan, Ph.D. as compared with the Java core libraries, correct? Google Technical Expert A. Yes. Those are the Method signatures that are the same in April 27, 2012 both platforms. Trial Tr. 2212:3-19 Q. As to the 37 packages? A. That's correct. Q. What would happen if you ripped those lines out of Android? A. Well, for the purposes of the Android core libraries, those are part of it, so they need to be there for Android to work as it's been designed. 12 Google’s Expert Admits Google Could Have Chosen Not To Infringe Q. Couldn't the Android developers have written their own Application Programming Interfaces for the overwhelming majority of the 37 packages that are in dispute? A. If you're asking is it possible to write a different API, then it would be possible to write a different API. Q. And couldn't you write a different API that would provide the same basic functionality in terms of what services it provided? Owen Astrachan, Ph.D. A. Yeah, I think it would be possible to provide an API that Google Technical Expert performed similar functionality; not maybe exactly the same but April 27, 2012 Trial Tr. 2212:25-2213:10, similar. 2213:17-19 Q. Well, they wrote most of their own core libraries, according to you; right, sir? A. Yes, that's correct. 13 Fair Use 1 14 Google’s Copying Is Not Fair Use Instruction 28: “For example, fair use may include use for criticism, comment, news reporting, teaching (including multiple copies for classroom use), scholarship, or research.” Fair Use Google’s Use Criticism NO Comment NO News Reporting NO Teaching NO Scholarship NO Research NO 15 Fair Use Factor 1 16 Google’s Launched Android To Make Money “The vast majority of Google's revenue at the time and today comes from search revenue. And so the primary reason to have something like Android is that people will do more searches, and then we'll get more money Eric Schmidt Google Chairman and as a result. And that's how we, essentially, pay Former CEO for the strategy of Android.” April 24, 2012 Trial Tr. 1458:12-16 17 Android Is Hugely Profitable For Google Q. And, in fact, I think you -- you said that the revenue that you received as a result of the additional search revenue generated by Android paid for Android and, I think you said, Eric Schmidt and a whole bunch more. Do you recall that? Google Chairman and Former CEO A. Yes. April 24, 2012 Trial Tr. 1456:15-19 Q. Would you agree with the statement that Android is hugely profitable? A. Yes. Aditya Agarwal Google’s Representative on Android Revenues April 27, 2012 Trial Tr. 2225:18-2226:24 (by videotape) 18 Fair Use Factor 1 19 Google Did Not Transform The 37 Java API Packages Google copied the 37 APIs from Java core libraries into Android core libraries 37 APIs 37 APIs 20 Java Had Been Used For Smartphones Google’s counsel: “No one before Google had been able to use Java to build a successful smart phone. Nobody.” (Tr. 247:7-9) Danger’s Sidekick BlackBerry Nokia Series 60 Google employees admitted: Danger built a Java based smartphone. Rubin Bornstein Swetland 21 Fair Use Factor 2 22 API Design Requires Significant Expertise And Time API design is done by Oracle’s most “experienced and talented software engineers.” Larry Ellison, Oracle CEO, April 17, 2012 Trial Tr. 291:11-16 It took Dr. Reinhold and a team of engineers two years to develop just one package – java.nio. Mark Reinhold, Oracle Chief Java Architect, April 18, 2012 Trial Tr. 623:17-624:1 23 Designing APIs Requires Creativity And Skill Designing APIs “is a very creative process” and “[c]ompared to other programming tasks, I would say it is the most creative” Edward Screven, Oracle Chief Corporate Architect, April 18, 2012 Trial Tr. 513:14-18 “In anything except the most trivial API design, there are so many choices to be made I wouldn't know how to start counting them.” Mark Reinhold, Ph.D., Oracle Chief Architect Of The Java Platform Group, April 18, 2012 Trial Tr. 627:21-628:1 “Just as it’s hard to find people that are really good at anything that’s hard, whether it be, you know, being an artist, a football player, a concert violinist. Those things are hard. This is something that’s hard in the same way.” Owen Astrachan, Ph.D., Google’s Copyright Expert, Sept.