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

2022-09-02 21:22:07

由于java实现()和Android的虚拟机DalvikVM都是开源的,因此必须能够在Google的DalvikVM之上实现Sun的JavaVM。这将使在Android上运行基于JVM的应用程序和语言()成为可能。OpenJDKClojure, Jython

是否有正在进行的工作来生成 Sun JVM 的这种实现?


答案 1

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

由于DalvikVM运行的类是从.class文件转换而来的,因此应该可以转换这些类。那么“唯一”的问题是当语言动态生成字节码时 - 为此,当程序在DalvikVM上运行时,它需要额外的步骤将生成的字节码转换为DalvikVM格式。

嗯....有点像JIT(Just In Time Translator),它在手机上运行时将类文件隐藏为DalvikVM文件。我想知道这会有多慢。


答案 2

将OpenJDK移植到Android平台是可能的。有像这样的努力:Shark,Zero和caciocavallo大大简化了移植过程(=没有ASM,简单的AWT对等体)。另外,Android只不过是一个Linux内核。唯一的问题是什么时候有人会这样做?

顺便说一句,iPhone和Android手机都获得了Jazelle兼容的处理器,具有非常强大的处理器黑客技能的人将非常欢迎将Jazelle支持添加到OpenJDK中。这样做,我们可以在以下选项之间进行选择:非常轻的资源加速(Jazelle)和JIT ;-)

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


推荐