Even Jake Wharton already complained about this publicly, and he is now working at Google, go figure.
> Happy Tuesday Android developers! Java 13 out today. Java 8 is now 5½ years old. Here's your bi-yearly reminder that Android is holding back the Java library and language ecosystem.
https://twitter.com/JakeWharton/status/1174020113466568704
> The Android platform is on the cusp of holding Kotlin back. New bytecodes not being available both in the Dalvik set but also on devices in the ecosystem means Kotlin is forced to target older Java bytecode versions which can hinder new language functionality.
https://twitter.com/JakeWharton/status/1017597264225857536
> Kotlin is great but there's no reason anyone should need to target Java 6 bytecode and APIs in 2019. IntelliJ platform switched to 8 in 2016.1 and 11 in 2019.1. Servers are mostly 8 trending towards 11.
https://twitter.com/JakeWharton/status/1174024747400777729
So we are just in the same position as if J++ would be kept being a product, any Java library author that wants to have market share on Android needs to constrain themselves to the Android's view of what means to be Java.
And I have to bow to Jake as he is doing a very good job adding support to R8 and D8, to at very least desugar modern Java features into Android Java.
Had Google used a completely different language instead, this market wouldn't exist at all, and Java library authors wouldn't even have the option of choosing to target it.
I don't disagree that Google's handling of the language is bad, but that doesn't mean it should be illegal. Creating a bad legal precedent harms us all.
Java 7 byte code was a big mistake. People complained but Oracle didn’t listen. As always.
http://chrononsystems.com/blog/java-7-design-flaw-leads-to-h...
Not just because of this issue, but because of tons of other mistakes made by Oracle: users shouted, Oracle ignored.
The net result is inertia is high, but Java is stable declining. Existing projects continue to be developed in Java, new projects often choose something else.
They forked the shit out of it too with tons of base functionality being in org.dvb. and javax.tv.
GCC is an ISO C++ and ISO C compliant compiler, plus a set of language extensions.
Any ISO C++ or ISO C code will compile under GCC.
Not every piece of standard compliant Java code will compile under Android Java.
Not only this produces a burden writting portable Java libraries, it creates a false perception to many developers that learned Java via Android and assume Android Java == Java.
The later point is usually used by Google when they sell how Kotlin fares against Java, because naturally if they would compare it against a proper up to date version, some of the plus points wouldn't uphold.
"James Gosling Triangulation's Interview on Google vs. Sun"
https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be...
Google should face the same penalty as Microsoft did, plain and simple.