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.
So unless you want to wage a perpetual war at the border between your app and Android base libraries, forget Go, or about any language that does not run on JVM.
It's the high-level language and interfaces that would be hard. The real factor, though, is social given lock-in is in full effect here. Java was a bad, long-term bet given the Oracle acquisition.
I can see Android rolling this out across two major releases. The first adding support for a new VM or app language and the second removing Java. Time between those releases will give developers the chance to catch up.
I just think it's silly that you are opposed to throwing everything away. That is what got us in this mess to begin with. Android was supposed to be a simple transition for existing J2ME devs.
Nobody really throws away anything, that other people are depending on. Especially, if you are depending on their continued investment into your platform.
Otherwise, Windows Mobile to Windows Phone happens. Or Python2 to Python3 (how many years it is already taking?)
So two major releases is too optimistic. Especially in android world, where more than two major releases are used simultaneously.
"I just think it's silly that you are opposed to throwing everything away"
That may be, but I'm pretty sure Google wouldn't think so :)
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.
I think you meant AOT-ed. The language really doesn't matter though, as long as it can be converted to Dalvik bytecode.
However I suppose they could just add an extra one on the side. I wouldn't really consider that switching though.
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?
Since it outputs bytecode, IANAL but it probably does not helps with Java APIs litigation.
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.