Retropiler: Java 8 Standard Library Backport for Android
github.com
github.com
> The runtime includes GPL classes which will force your application to GPL. Despite the Apache 2 license the project reports, do not use this unless you understand what adding GPL code to your application means. You are not subject to the classpath exemption when the code is bundled in your app.
https://www.reddit.com/r/androiddev/comments/69rvf4/retropil...
Just a guess, though. IANAL and all of that.
If I take OpenJDK JRE, fork it, make Retropiler out of it and publish it under "GPL plus classpath exception" and then package my Java app together with Retropiler then GPL code is bundled in my app - it is the same as above. Why I am not subject to the classpath exception in this case?
1) OpenJDK allows you to fork under a) GPLv2 or b) GPLv2 + Classpath Exception (see http://openjdk.java.net/legal/gplv2+ce.html, "If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version." where library=OpenJDK and exception=Classpath Exception).
2) Android's OpenJDK fork is licensed under GPLv2 + Classpath Exception (see https://android.googlesource.com/platform/libcore/+/master/L...)
3) Retropiler OpenJDK runtime is licensed under GPL only (see https://github.com/retropiler/retropiler, "The Java classes in runtime/ module which were copied from AOSP are licensed as GPL.")
They could fork OpenJDK and license it with classpath exception which would allow you to (statically or dynamically) bundle your app with OpenJDK under any license. But since they didn't include the classpath exception your app bundling parts of the Retropiler's OpenJDK fork must be under GPL! So you can use it only for open source projects...
I meant dead practically, not literally.
Don't mistake other languages growing as another language being dead. Not all of computing is an exercise in following trends.
But hey, lets fork Java and do no evil.
[1] - https://en.wikipedia.org/wiki/List_of_Java_virtual_machines
In any case, I hardly think prolonged failed business negotiations constitute failing to "do no evil".
1: http://www.pcworld.com/article/253666/a_timeline_of_oracles_...
When Java 9 finally gets out, and looking forward to Java 10 roadmap, this situation is only going to get worse.
Are there any restrictions on what I can do with it?
OpenJDK is released under an well-known open-source licensing model, that places no restrictions on your
ability to run OpenJDK. Please check the legal section of the OpenJDK project site to understand the scope
of your rights and obligations.
The legal section contains the GNU General Public License, version 2, with the Classpath Exception.So you're wrong. This also explains why Oracle went for the hail mary copyright claim on the SSO of those 37 Java API's - because it's all they had.
https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibi...
Also, court documents in the Oracle/Google trial also showed that Oracle tried to develop a Java smartphone and failed repeatedly because of their, and I quote from a internal Oracle presentation slide, "Very limited internal expertise to make smart decisions".
How much Symbian development have you done?
I used to work for that little finish company.
Many small companies were doing J2ME on Symbian as a way to write portable code across multiple devices.
As for the Series 30+, the MRE was a market failure, never reaching a fraction of J2ME, Mediatek doesn't even support the SDK anymore.
None, but this doesn't change the fact that C++/Qt was the main development platform. I'd also wager that the C++/Qt apps were vastly superior to the J2ME apps.
>As for the Series 30+, the MRE was a market failure, never reaching a fraction of J2ME, Mediatek doesn't even support the SDK anymore.
Well, at least they're still making S30+ phones. The S30 stopped production in 2013.
Symbian C++ alongside J2ME were vastly more used than C++/Qt ever was.
The adoption of C++/Qt was still being ramped up when the switch to Windows Phone 7 took place. Qt Mobility APIs were still work in progress just as an example.
Actually this angered many Symbian developers as they were still evaluating the transition to C++/Qt SDK when the news came out.
There seems to be a Java 9 OpenJDK Android port here: http://openjdk.java.net/projects/mobile/android.html
One of the greatest accomplishments an adult can achieve.
Bytecode is the thing the Java compiler produces (class files) from your Java source code.
Android N only switched to the Java API (base classes) of OpenJDK. As far as I know they didn't switch runtime environment.
(I know dalvik technically doesn't run bytecode but some other form of intermediary code optimized for mobile devices. I sidestepped that to keep things simple)
"The successor of Dalvik is Android Runtime (ART), which uses the same bytecode and .dex files (but not .odex files), with the succession aiming at performance improvements transparent to the end users. The new runtime environment was included for the first time in Android 4.4 "KitKat" as a technology preview,[4][5] and replaced Dalvik entirely in later versions; Android 5.0 "Lollipop" is the first version in which ART is the only included runtime."
I advise anyone that actually cares about Java™, to spend some time reading AOSP commits regarding OpenJDK integration.
Before Android N they used to come from Apache Harmony and occasionally classes were borrowed from OpenJDK. But thats no longer the case since Android N.
Many methods don't have a full implementation, some classes have partial implementation and not every library class from OpenJDK is taken into Android.
Thanks to Google now I need to search for Android Java libraries, instead of Java libraries.
Funny every time I search for Java on https://developer.android.com/develop/index.html I get several hundred results, and yet Google doesn't call their fork Java, go figure.
The difference, is that I don't live on Silicon Valley, I don't care about Google nor do I need to keep Android team happy to make a living.
What I care is that now I need to write two libraries instead of one.
Oracle (and Sun before) doesn't have a problem with companies that follow the license rules, there several commercial JDK vendors all of them nicely getting along with Oracle.
Android was never intended to be used for Java portability so nothing has been broken.
>I cannot just take a random Java library and have it work on Android.
Android is not compatible with Java so why would you expect a random Java library, meant to work with Java, to work on Android?
>Thanks to Google now I need to search for Android Java libraries, instead of Java libraries.
A comprehensive list of libraries that work with Android has already been created so why would you need to look for Java libraries?
>Funny every time I search for Java on https://developer.android.com/develop/index.html I get several hundred results, and yet Google doesn't call their fork Java, go figure.
The Android SDK is a fork of the JDK. Did you expect them to rename every instance of the word "Java" to something else just for the sake of differentiation?
>What I care is that now I need to write two libraries instead of one.
I'm sure there are a plenty of libraries that work on either platform, but such is the nature of a fork. Support the platform you care about.
>Oracle (and Sun before) doesn't have a problem with companies that follow the license rules, there several commercial JDK vendors all of them nicely getting along with Oracle.
Google doesn't use the Oracle JDK they use the OpenJDK so why is a commercial license needed to use a forked version of an open source project?
Edit: technically dalvik and ART actually execute code from .odex and .oat files
https://android-developers.googleblog.com/2017/03/future-of-...
you can use Lambda expressions and Method References with any Android version... but without Java 8 libraries...
They are supporting Java 8 language features depending on the Android platform version.
Some Java 8 library APIs have been adopted, but require the latest Android versions.
Finally, the JVM bytecodes like invoke dynamic and method handles aren't supported thus making libraries that use them, unusable on Android devices.