gpt4 book ai didi

java - 在 Dalvik VM(Android 的 VM)上,您不能在 Sun VM 中做什么?

转载 作者:IT老高 更新时间:2023-10-28 20:24:32 26 4
gpt4 key购买 nike

我知道你可以在 Dalvik 的 VM 中运行几乎所有的 Java,而你可以在 Java 的 VM 中运行,但是限制不是很清楚。有没有人遇到任何主要的绊脚石?有什么大图书馆有问题吗?任何编译成 Java 字节码的语言(ScalaJython 等)都不能按预期工作?

最佳答案

Dalvik 不会处理或不会以与标准 Java 字节码完全相同的方式处理许多事情,尽管其中大多数都非常先进。

最严重的例子是运行时字节码生成和自定义类加载。假设您想创建一些字节码,然后使用类加载器为您加载它,如果该技巧在您的普通机器上有效,则保证在 Dalvik 上无效,除非您更改字节码生成。

这会阻止您使用某些依赖注入(inject)框架,最著名的例子是 Google Guice(尽管我相信有些人在做这方面的工作)。另一方面,AspectJ 应该可以工作,因为它使用字节码检测作为编译步骤(尽管我不知道是否有人尝试过)。

至于其他 jvm 语言——最终编译为标准字节码并且在运行时不使用字节码检测的任何东西都可以转换为 Dalvik 并且应该可以工作。我知道人们确实在 Android 上运行过 Jython,而且运行良好。

需要注意的另一件事是没有及时编译。这不是严格意义上的 Dalvik 问题(如果你愿意,你可以随时编译任何字节码)但是 Android 不支持并且不太可能这样做。实际上,虽然标准 Java 的微基准测试毫无用处——组件在测试中的运行时特性与作为大型系统的一部分不同——但 Android 手机的微基准测试完全有意义。

关于java - 在 Dalvik VM(Android 的 VM)上,您不能在 Sun VM 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/230193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com