JVM与Dalvik和/或ART究竟有什么不同?

2022-09-04 21:39:36

首先,我认为我可能给这个问题的标题很差,但我想不出正确的词语,所以请随时提出编辑建议,我会这样做,这样这个问题就更有教育意义,与他人相关。

我知道javax。Swing根本不能用于Android项目,我已经接受了这一点,并学习了基于Android XML的UI设计,但只是出于好奇,我想知道究竟为什么

我意识到手机的屏幕尺寸可能是Swing无法很好地处理的事情,但是有什么能阻止开发人员简单地导入javax。Swing软件包(除了Android Studio之外,首先不让它发生),无论Android设备屏幕上的Swing窗口是否变形和可怕?我也意识到AWT和SWT也必须导入,但同样的问题也适用于这些软件包。

我认为我对此缺乏理解可能真的源于对Java虚拟机和Android等价物缺乏了解(Dalvik是否仍在使用,或者他们是否将冷火鸡切换到ART?)。

与往常一样,非常感谢您能提供的有关该主题的任何信息或阅读。我真的很想更多地了解JVM,Dalvik和ART如何工作的基础知识。


答案 1

至少有三个基本区别:

  • API 不同;例如,即使是最新版本的Android SDK也没有JSR 203;
  • 二进制格式不同;Dalvik/ART 不生成 JVM 字节码;
  • 语言水平不同;这部分是前一点的结果,因为为了支持给定的语言级别,Dalvik/ART必须重新实现所有解析/字节码生产以适应自己的VM。

后一点意味着,因此,Android中仍然没有主流支持5年前在Java中出现的试用资源;随着时间的推移,支持Java 8的“好东西”已经看到了各种努力,但没有一个是真正“核心”的Java;要知道,他们不使用JVM,他们不使用Java编译器。

最近的消息说,这在“Android N”(实际上将使用OpenJDK)中势必会发生变化。这是个好消息。另外,关于第1点,您可能还记得臭名昭着的Oracle与Google关于API受版权保护的案件......这仍然没有完全解决。


答案 2

这篇文章可能对你有所帮助 http://www.techentice.com/dalvik-vs-art-android-drop-dalvik-efficient-art/ 尽管它已经有些过时了。然而,它确实解释了JVM和DALVIK以及ART之间的差异。


推荐