Android 编译成dalvik字节码的编译器?

Android 编译成dalvik字节码的编译器?,android,cross-compiling,dalvik,Android,Cross Compiling,Dalvik,所以我一直在努力理解android是如何工作的 从我目前收集的信息来看: -似乎编写android应用程序的唯一方法是使用java -应用程序在名为“dalvik虚拟机”的虚拟机中运行 -java文件被编译成dalvik字节码(可以在虚拟机上运行)的方式是,首先使用java编译器进行编译以获得java字节码,然后使用android提供的编译器将java字节码“翻译”成dalvik字节码 我的问题是,如果仅此而已 那么,难道不可能创建一个C/C++(或任何其他编译语言)编译器,可以编译成dalvi

所以我一直在努力理解android是如何工作的 从我目前收集的信息来看:

-似乎编写android应用程序的唯一方法是使用java

-应用程序在名为“dalvik虚拟机”的虚拟机中运行

-java文件被编译成dalvik字节码(可以在虚拟机上运行)的方式是,首先使用java编译器进行编译以获得java字节码,然后使用android提供的编译器将java字节码“翻译”成dalvik字节码

我的问题是,如果仅此而已
那么,难道不可能创建一个C/C++(或任何其他编译语言)编译器,可以编译成dalvik字节码吗

我的意思是,我们已经有了支持各种CPU体系结构的C++跨平台编译器,为什么他们不让它们支持Dalvik“体系结构”? 似乎编写android应用程序的唯一方法是使用java

应用程序在名为“dalvik虚拟机”的虚拟机中运行

仅适用于Android 4.4及更高版本。较新的设备使用一种称为ART的新运行时环境

那么,难道不可能创建一个C/C++(或任何其他编译语言)编译器,可以编译成dalvik字节码吗

你能设计其他编译成Dalvik字节码的语言吗?当然你能把一些现有的语言编译成Dalvik字节码吗?只有当该语言的语言特性可以(合理地)在Dalvik字节码中实现时

似乎编写android应用程序的唯一方法是使用java

应用程序在名为“dalvik虚拟机”的虚拟机中运行

仅适用于Android 4.4及更高版本。较新的设备使用一种称为ART的新运行时环境

那么,难道不可能创建一个C/C++(或任何其他编译语言)编译器,可以编译成dalvik字节码吗


你能设计其他编译成Dalvik字节码的语言吗?当然你能把一些现有的语言编译成Dalvik字节码吗?只有当该语言的语言功能可以(合理地)在Dalvik字节码中实现时。

Dalvik字节码的结构比x86或arm指令要复杂得多。它高度以java为中心,具有高级概念,如类和方法,它们遵循java的语义


作为粗略的近似,想象一下你可能如何尝试将C++编译成java程序。当试图编译C++到Dalvik字节码时,你会遇到同样的困难。

< P>比Dalvik bytecode,X86或ARM指令结构要好多了。它高度以java为中心,具有高级概念,如类和方法,它们遵循java的语义


作为粗略的近似,想象一下你可能如何尝试将C++编译成java程序。当试图编译C++到Dalvik字节码时,你会遇到同样的困难。

你可以从谷歌I/O 2017开始用Kotlin编写Android应用程序。你可以从谷歌I/O 2017开始用Kotlin编写Android应用程序。