| I know pretty much what happened. 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. |
Even thought the specifics don't seem to matter to you, I'll add a bit more detail. "The sticking point is that Microsoft decided the Core Java class libraries were insufficient for its needs. Now there's nothing wrong with extending things by subclassing and placing the new objects in a package outside of the java.* class hierarchy. But deciding to add about 50 methods and 50 fields into the classes within the java.awt, java.lang, and java.io packages, as Microsoft did, is extremely problematic. "Microsoft deceptively altered key classes and inserted them into their SDK," said Baratz, which results in developers thinking they are writing Java, when actually they are writing something that runs only on Internet Explorer.[1]
> They tried to screw Sun and take advantage of their economic misfortune.
I have some sympathy for Sun, but had Google asked for permission for Java on Mobile, Sun would have insisted on the abomination that was J2ME because that was their mobile strategy. I'll take Java 6.5 over J2ME any day
1. http://www.javaworld.com/article/2077055/soa/what-does-sun-s...