Edit: http://www.cand.uscourts.gov/wha/oraclevgoogle the original Alsup opinion
http://regmedia.co.uk/2014/05/09/oracle_google_appeal_opinio... The appeal opinion -- which, as it stands, rules that programming APIs are in fact copyrightable.
(Also, look at the list of counsel -- heavy hitters, damn.)
Oracle appeals from the portion of the final judgment entered against it, and Google
cross-appeals from the portion of that same judgment entered in favor of Oracle as to
the rangeCheck code and eight decompiled files. Because we conclude that the declaring
code and the structure, sequence, and organization of the API packages are entitled
to copyright protection, we reverse the district court’s copyrightability determination
with instructions to reinstate the jury’s infringement finding as to the 37 Java
packages. Because the jury deadlocked on fair use, we remand for further consideration
of Google’s fair use defense in light of this decision.Many judges probably do, every day, in lots of technically specialized fields, and we're just not paying attention because we're not experts in those fields, either.
Shouldn't assume our field is so much harder for judges to understand than medical, scientific, and other specialized fields judges need to weigh in on.
So do programming languages.
Things could be worse. This could be decided in East Texas, for instance. That well-known hotbed of technical innovation ... /s
(interface)* = (class)*
(class) = (method_stub)* | (ivar)* | (class_var)* |(property}* | {delegate}* | {some_LINQy_constructs}* | {other_stuff_from_NETCLR3.5_onwards}* | ...
.
"Alright, now implement IEnumerator OnNext(); bool MoveNext(); IDisposible Dispose();"[1] and your data now has the trait/type-class/whatever of IEnumerable! That's all an API is really -- method signatures and code contracts between the requester/requestee. The real gold isn't in that, but in the implementation details of the JVM (and the greybeards who know the -Xxs256 -Xmm10230 blah blah, I suppose.)I.e. Azul ZING(tm) and the lot of insanely high-performance and/or hard-real-time-in-the-QNX-sense is priced at... a lot. In finance we used to use it because operations could be bounded deterministically. There was enough value in that that CTOs cut 7 figure checks to run that specific API implementation rather than use the Sun/Oracle JVM.
[1] Yep that's probably gobblydygook. My C# and Java meld together, I always confuse IEnumerable,IEnumerator,IDispose,and all the damn duals smash together in my mind, even worse now with Rx one more tensor rank was added (Time). Gods of the CoreCLR, smite me not. Also I'm not in PL design, forgive my bad BNF.
The java.* API is not even that good (it is very verbose to achieve basic things). The only reason to re-implement it is compatibility with existing, third-party software using that API.
If you would come with API, that would be technically better, but doing the same thing, do you think that everyone would rewrite all their libraries, frameworks and apps? No way.
Oracle apparently bamboozled the Federal Circuit into deciding that something called the "structure, sequence and organization" of the API should be copyrightable. But of course nobody cares about that part -- the order doesn't matter. You can sort the API into alphabetical order and strip out all the comments and it would make no real difference to anybody. But here is Oracle claiming that the copyrightable part is worth billions of dollars.
The tack they are taking is to define any computer that does "one specific thing" as an embedded device and ask you for $300+ per "device", plus some other lofty fees. (http://www.oracle.com/us/corporate/pricing/price-lists/java-...)
So, if you're using Java in a kiosk, ATM, media player, etc, they may be coming for you.
My guess is that this just spawns a mass migration to OpenJDK, but perhaps they trap enough Java shops that it's worth the effort?
Not knowing when Oracle might decide to shake down your business is a massive incentive to use anything else.
Since Windows has been clear from the start that any commercial use requires a paid license, it's not similar in any way at all.
I'm not a lawyer but I believe this what you can do that you can't do with windows is ship the kiosk without java but give the customer a CD-ROM to install it themselves.
It didn't end well.
In spite all of this, Android Team has given zero support for anything other than Java on Android, even for its own languages.
The NDK is anemic, because "In general, you should only use the NDK if it is essential to your app—never because you simply prefer to program in C/C++. When examining whether or not you should develop in native code, think about your requirements and see if the Android framework APIs provide the functionality that you need."
http://developer.android.com/tools/sdk/ndk/index.html
And the Go and Dart teams had to work on their own even for the NDK integration.
The results of their work aren't even described in any of the official Android documentation sites.
True, it runs in the same runtime, but it does allow them to slowly move away from 20 years of history. Mind you, the obj-C runtime / Foundation isn't badly set up at all, I'd argue it's better than the Java SDK.
That ticket was raised before Go 1.0, so I very much doubt it.
Unfortunately that still means that there is no good way to write cross-platform mobile apps.
Google should have started looking at alternatives back them and making another environment first-class on Android as well
(or maybe they can just compile Go to Dalvik and flip the switch, I don't know)
The bad news was, that everything was reimplemented in Dart, including the widgets, so they had that not-quite-native feel.
This is even harder for the Android runtime because it's run on a virtual machine with characteristics that don't easily map to another language.
Basically if they switch to any other language all the apps that currently use Java (ie. all of them) will have to practically use their own VM -which would be slow - or reprogram everything in another language - which would be expensive.
It sounds like this all would take a lot of time to complete. What would be the point for Google to do all this work?
However I suppose they could just add an extra one on the side. I wouldn't really consider that switching though.
Kotlin is JVM + Java interoperable language and this is its major if not sole selling point. So it does not help Google in any way regarding Oracle-Google copyright and patent issues.
Any kind of support might come when some developers get down and write lot of code to support that language. Android team is not going to add any support just because someone wanted or voted to support new language on Android platform.
At least people who wanted Go on android have written extensive amount of code to add support and still they are far from done.
Since it outputs bytecode, IANAL but it probably does not helps with Java APIs litigation.
I miss PJ and Groklaw, too.
Let's give Oracle 10 years from now to fade from relevance as yet another fucked by cloud vendor and Google can then orchestrate a hostile takeover.
P.S. Dart actually has a Java-to-Dart converter hidden somewhere. I can't find the link, but the static analyzer was ported from Java to Dart using it. Perhaps they could expand that effort?
:-)
Imagine if Microsoft granted Google a perpetual license to use C#.
In another 2005 e-mail admitted as evidence by Oracle, Rubin tells Google co-founder Larry Page: “If Sun doesn’t want to work with us, we have two options: 1) Abandon our work and adopt MSFT CLR VM and C# language, or 2) Do Java anyway and defend our decision, perhaps making enemies along the way.”
http://arstechnica.com/tech-policy/2013/02/microsoft-foresee...
http://techcrunch.com/2015/03/05/microsoft-and-google-collab...
Looking at gomobile and CLs on golang-dev etc I feel Go support in Android is worked on by small focussed team rather than order from top management.
I also invite anyone reading this comment, to read the following story, which always comes to my mind in this sort of events: http://www.folklore.org/StoryView.py?story=MacBasic.txt
2. If Oracle's dumb lawyers win, I'm happy. I get paid a salary to work. Why should companies get code for free, why do they need me. Copying and violating a license is bad. Even GPL and other code I write, respect the license.
3. To summarize, would you want Google to violate GPL?
Yes, coming up with ever-more-creative theories about why Google owes Oracle might have some tactical advantages, but any victory in court on those terms would be pyrrhic.
It doesn't matter how many billions Google coughs up if the next phone call is IBM demanding the company for using SQL.
Aren't Oracle's lawyers looking past the next move? Are they that confident that their API arguments will lose? Do they really have that much faith in the hairs they're splitting between Google's API reuse and Oracle's?
Or is their advice being colored by all the follow-on legal work there will be because Oracle is going down this path?
If I understand correctly, Oracle would have to prove that Google's use of the Java API did not fall under the fair use exception in copyright law.
That is, if I write something, you can't publish it as your own. That's copyright. But there are exceptions within the law. One exception is fair use (others are criticism, parody, and there may be more, but fair use is the one in play in this case). Note that fair use was in the original trial, and the jury deadlocked on whether that was a valid defense for Google.
Below here, my understanding is less solid. But I think that one category of fair use is interoperability. That is, if I have a copyright interface (like, say, an API), you can copy that API in order to interface to something. To what degree, and what the boundaries are, I'm not sure.
Has Google's use of Java somehow damaged Oracle? Are they worse off now than they would be if Android were built on a different technology?
While with Microsoft everyone went out with their pitchforks.
Android Java is nothing more than Google's J++.
You probably know this, but Java-the-language is not the same as Java-the-platform (VM); Google only uses the language bit, not the runtime. They created their own runtime (Dalvik, and later ART) with its own bytecode format. What Microsoft did was implement an intentionally-incompatible JVM, hopefully you see the differences between Google and Microsoft's action (both technical and the reasoning behind the actions)
Edit: changed quote from wikipedia to [1], added reference.
1.http://www.javaworld.com/article/2077055/soa/what-does-sun-s...
The fact is that Google forked all of it.
You cannot use anything besides a pseudo Java 6.5 (the language), because there isn't support for all features available.
You cannot make use of the full Java SDK libraries, because Google's fork only supports cherry picked portions of the JDK, to the point that people have ported JDK classes to Android to close the gaps when porting Java code.
You cannot rely JVM features, because Dalvik/ART don't support everything that it is possible in a certified JVM like invokedynamic or more updated JNI versions.
The fact is that Google broke the Java eco-system, regardless how Google fanboys want to paint the picture that Google != Microsoft.
They tried to screw Sun and take advantage of their economic misfortune.
Luckily I don't suffer from Google colored glasses.
They claimed that you can write Android apps in Java language, or reuse your existing libraries written in Java - like Google themselves did with Apache Commons.
On the contrary, J++ claimed to be Java implementation.
If APIs are going to be copyrightable, it will allow Oracle to hold all the third-parties using Java (or another JVM-based, like Kotlin or Scala) language hostage wrt where they can run their own software.