Google is replacing the Java application programming interfaces (APIs) in Android with OpenJDK, the open source version of Oracle’s Java Development Kit (JDK). The news first came by a “mysterious Android codebase commit” from last month submitted to Hacker News. Google confirmed to VentureBeat that Android N will rely solely on OpenJDK, rather Android’s own version of the Java APIs.
“As an open-source platform, Android is built upon the collaboration of the open-source community,” a Google spokesperson told VentureBeat. “In our upcoming release of Android, we plan to move Android’s Java language libraries to an OpenJDK-based approach, creating a common code base for developers to build apps and services. Google has long worked with and contributed to the OpenJDK community, and we look forward to making even more contributions to the OpenJDK project in the future.”
If this is what it takes to get those Oracle slimebags off Android’s back, so be it.
Could also lead to Android programs running natively on standard desktop distributions with “minimal” changes as the run time would be similar between them. I could see that as a good thing for the Linux desktop world.
I don’t understand what this means. Surely they weren’t using any Oracle code anyway? And for OpenJDK to be a Java JDK it would have to have the same API as the Oracle JDK, right? So what has changed? Wasn’t Android always using its own implementation anyway? What am I missing or misunderstanding?
It’s not made clear, but I’d guess that the change is that they’re no longer implementing Oracle-owned APIs. They’re deleting their own “illegal” code, and replacing it with the stock Java implementations of the same APIs – and since that stock code is explicitly under open-source licensing, Oracle can’t dispute it.
It isn’t their own illegal code, it was code from Apache Harmony, another attempt at an open source version of java. So, both were open source so that’s not the problem.
I’m not sure what difference it would make.
There’s a *very* big difference. Harmony was an independent re-implementation of Java, so if you buy the argument that APIs can be copyrighted, Harmony had the same problems that Android ran afoul of. As such, Google had no license to use that copyrighted code.
In contrast, OpenJDK is not a re-implementation of the copyrighted APIs – it’s the official upstream implementation of those APIs. Oracle can hardly claim copyright violation when it’s their own code, explicitly released under an open license that allows Google to use it.
Hmm… I’m not sure about the legal aspects of that.
If its truly the API, and not the implementation of the API I don’t think that argument makes sense. But by implication, then the GPL doesn’t allow additional conditions to be added on the license. So Is API itself released under the GPL, therefore allowing any implementation of itself?
If this sounds wacky, that’s because it is. API’s should not be copyright-able. It makes everything too confusing.
100% agreement on that.
But that’s how I’m understanding this move – using the upstream code explicitly open-sourced by Sun/Oracle is seen as safer than using an independent re-implementation of the same API. Stupid, but that seems to be the logic.
The headline makes no sense, of course Android will still use Oracle’s JAVA APIs, it’s impossible to have Java without those APIs and, for now at least, it’s impossible to have Android without Java.
What it won’t have anymore is the Google’s proprietary implementation of those APIs, instead relying on Oracle’s open-source implementation.
Seems to me Google will have to pay Oracle for past infringement and this is a measure taken to stop the infringement moving forward.
I wonder what will become of Dalvik/ART/Dex byte code. The OpenJDK for all intents and purposes IS Oracle’s JDK no?
A big point of contention was compatibility between Java the platform and Google’s implementation of the Java the language on top of the Dalvik VM. This looks like it resolved that by moving to Oracle’s platform, which unless I’m misunderstanding means that Google is effectively using Java the platform on Android.
One just has to wonder why Google didn’t just do this from the start? Arguably (depending on your feelings on API copyrightability) they achieved much much worse, by losing so spectacularly to Oracle that APIs are now copyrightable.
Yes, but I think you’re misunderstanding what they’re doing with it. All they’re talking about is using some of the API implementations from OpenJDK – which means they’re replacing a bunch of their own Java source files with a bunch of the upstream ones.
This doesn’t change anything about the platform that code is compiled and run on, which will presumably remain Dalvik/ART as it is now.
I wish they would just get off Java entirely. Or, failing that, support a current version of the language.
Get off Java isn’t going to happen, because that would mean breaking compatibility with every existing Android app.
Supporting a newer version would be nice, but it’s a lot of work – they can share API implementations with OpenJDK, but not stuff at the VM/bytecode layer. All those nice features in Java 8 – someone needs to re-implement them all on Dalvik/ART.
And it would have to be done without breaking compatibility with older Android versions. As we all know, the upgrade cycle for Android is slow, and you can’t have new apps failing to run because they’ve been compiled for the latest Android which only a few percent of devices are supporting.
Agreed, this is something Apple mostly got right with Swift.
I don’t know what stops Android from supporting 2 major languages at the same time through a migration period for applications.
Creating languages is hard but maybe a MS/Google collaboration is possible on something these days. Maybe C# and .NET is more suitable. I think MS released .NET core for Linux and Mac in April and might be willing to grant Google a flexible enough license to roll their own custom version for Android since Sun seems unwilling.
Politics.
The Android team doesn’t even support Google’s own languages.
The half baked support for Go and Dart on Android has been done by the respective teams, not Android’s.
That’s not exactly surprising. Google is a massive company these days, and just because one team is working on new programming languages, doesn’t mean that other teams have any association with it. Big companies are just like the open-source community in that respect – the divisions are just better hidden.
That’s what Google is saying its doing by migrating to Open JDK. Going to Java 8.
…dump java. Swift is so superior.
I understand that Android runs Java because each phone requires it’s own slew of device drivers and to include all those drivers into Android would make it too big to fit onto most phones.
I’ve always wondered if Android could just go the source code compilation route and skip the bytecode/Java and compile everything needed when it’s needed.
Getting a ARM/Atom Chip with a sub processor dedicated/built for compilation would certainly easier that getting every major phone maker and phone component maker to contribute source code to Google so that Android could do the initial load/compilation on any phone it could be installed on.
Android could run in a VM sandbox with emulated stock-hardware for reference phones if drivers aren’t disclosed. Yes, functionality for some phones might be slowed down or non-functional in that case – the companies that comply would have an advantage! This may even lead phones to accepting plug-and-play or some other pin/part compatibility standard like desk/laptops.
Why shouldn’t phones – e.g. the nanocomputer to the PC’s microcomputer and the AS/400’s mid-range computer, work differently? Especially in this homogenization age where mobile and fixed computing increasingly merge.
I might be a dreaming here, but why can’t we just have Andoid Mint\Droid-buntu\etc, etc? If we live in a Post-PC world, then shouldn’t we expect our PC-replacements to start adopt PC axioms? How can they be PC replacements if they don’t adopt some of the PC’s axioms?
Java processors do exist:
https://en.wikipedia.org/wiki/Java_processor
I hope everyone knows OpenJdk is also owned by Oracle?
So that leaves new questions?
1. We know Open JDK is behind standard Java. So how can Google get OpenJdk up to standard Java level without using anything that already is an issue in the Oracle lawsuit.
2. Will Oracle sue and try to force Google to Opensource all of Android since Openjdk uses the GPL license while Davlik uses the Apache license which allowed them to only open parts of Android.
In the end this isn’t a clean slate and will not get them away from Oracle.
OpenJDK uses a modified GPLv2 with the “CLASSPATH” exception. Basically, it allows linking to the GPL based CLASSPATH components (the standard libraries) of the JDK without the GPL being applied to your code.
http://openjdk.java.net/legal/gplv2+ce.html
I would upvote this for being informative had I not already commented in the thread.
For sure what this means are the delays in Android N schedules
…to bad rubbish.