除了Dalvik,Android应用程序还有其他的虚拟机可用吗?

3
是否可能将不同的JVM包含到应用程序中,并使应用程序在此JVM中运行,而不是由Android提供的Dalvik VM中运行?
我之所以这样问,是因为Oracle的ADF Mobile在Android和iOS上都使用自己的JVM,但并没有明确说明他们是如何做到的。它应该基于J2ME CDC VM。
我的同事认为他们在Dalvik VM中运行它,并添加那些需要实现Java ME CDC规范的库到apk中。
如果它真的是完全独立的JVM,那么理论上也应该可以包含一个Java EE JVM,并将后端可重用的业务逻辑放入其中,对吧?

我怀疑他们使用调用API / JNI通过C带起了一个真正的JVM,然后将他们的东西加载到其中 :) - Shark
这对我来说似乎完全可行,但需要考虑的一件事是交互操作的成本。我怀疑从Dalvik VM到您的自定义VM编写必要的Interop代码并不容易。既然您的业务逻辑是Java,为什么不直接将其编译为在Dalvik VM上运行呢? - Wesley Wiser
1个回答

2
是的,理论上你甚至可以添加对C#的支持,这意味着你可以添加CLR/CLI支持,或者任何你喜欢的语言或虚拟机。
所有的Android组件都非常模块化,整个操作系统都是可定制的,问题在于这需要大量的资金、时间、专业知识和最有可能的专利控告。 点击我查看YouTube回复 这来自一次关于Android的官方讲座。

好的,Oracle拥有所有上述的金钱、时间和专业知识,因此他们可以编写自己的VM直接针对内核。太好了,这就是我需要了解的所有信息。在iOS上,他们使用Objective C代码编写了一个JVM,最可能只是使用X code编译的普通JVM,因为C是Objective C的子集。非常有趣的事情,但我不知道为什么他们没有做出一个真正有用于企业应用开发环境的J2ME版本。 - pascalwhoop
@user1170940 无法回答这个问题,我实在不了解这个产品,但是一些 J2ME profile 支持 JNI,可以用来编写 C/C++ 代码,因此您可以通过扩展此平台实现更多可能性。 - axis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接