The reason Andy Rubin chose Java for Android Dev is not publicly known, only speculations, but it seems to me that the combination of being able to run a Java app everywhere (because the earliest version of Android used JVM) and the huge popularity of Java made it a sexy choice.
Android Run Time (ART) is the second Iteration of Java Virtual Machine after Dalvik Virtual Machine.
Obviously, Write once, run everywhere, which Java promised is not True on Android due to the highly modified JVM == ART.
My question is this: since apps written for Android are not portable (i.e the apps are platform dependent), why still hold on to it?
Why convert to bytecode before running it on ART and not just compile to native code directly without the need for an interpreter (ART) like in the case of Apple's Swift?
Why tolerate the performance loss just for ART? an iPhone App on 4gb ram will perform better than the same app on Android with 6gb of RAM due to the absence of the possibly unnecessary ART layer.
In 2019 and beyond why is the ART necessary?