在Android上运行Java字节码 - 在DalvikVM上运行Sun JVM

Geo*_*rge 18 java android jvm clojure

由于java implementation(OpenJDK)和Android的虚拟机DalvikVM都是开源的,因此必须能够在Google的DalvikVM上实现Sun的JavaVM.这样就可以Clojure, Jython在android上运行基于JVM的应用程序和开箱即用的语言().

是否正在不断努力生成Sun JVM的这种实现?

Tof*_*eer 13

OpenJDK使用本机代码,因此它将是一个非平凡的端口......至少有一个用Java编写的VM(JikesRVM),遗憾的是它不是一个完全可用的Java实现.

由于DalvikVM运行从.class文件转换的类,因此应该可以转换类.然后"唯一"问题是语言在运行时生成字节码 - 因为在程序在DalvikVM上运行时,需要额外的步骤将生成的字节码转换为DalvikVM格式.

嗯......类似于JITT(即时转换器),它在运行时将类文件转换为DalvikVM文件.我想知道会有多慢.


小智 9

可以将OpenJDK移植到Android平台.有很多努力:Shark,Zero和caciocavallo极大地简化了端口进程(=没有ASM,简单的AWT对等体).加上Android只不过是一个Linux内核.唯一的问题是什么时候会由任何人来完成?

顺便说一句,iphone和Android手机都有Jazelle兼容的处理器,非常欢迎有一个非常强大的处理器黑客技能的人加入Jazelle对OpenJDK的支持.这样做,我们可以选择:非常轻的资源加速(Jazelle)和JIT ;-)

关于iPhone,它是一样的:一个端口是可能的.只有Apple在iPhone许可证中放置了一个明确禁止VM使用的部分.根据欧洲法律,对我来说,此许可证部分是非法的.两个原因:你不能强迫/链接购买你的两个产品.在这里我调和Iphone是链接的.你不能拒绝出售你可以出售的东西.一旦VM为iPhone构建,如果拒绝将其放在iTune商店上,那么这一点将适用.有没有人想要在地球上挑战Apple许可合法性?我不这么认为,不快乐的人会飞到Android或任何其他平台.