13

首先,我认为我可能对这个问题的标题不好,但我想不出合适的词,所以请随时提出修改建议,我会做的,这样这个问题就更有教育意义,并且与其他人相关。

我知道 javax.Swing 根本不能用于 Android 项目,我已经接受了这一点并学习了基于 Android XML 的 UI 设计,但出于好奇,我想知道确切的原因

我意识到手机的屏幕尺寸可能是 Swing 不能很好处理的,但是阻止开发人员简单地导入 javax.Swing 包(除了 Android Studio 根本不让它发生)变形和丑陋的 Swing 窗口可能出现在 Android 设备屏幕上?我也意识到 AWT 和 SWT 也必须被导入,但同样的问题也适用于这些包。

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

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

4

2 回答 2

9

至少存在三个根本区别:

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

后一点意味着,5年前Java出现的try-with-resources在Android中仍然没有主流支持;随着时间的推移,已经有各种努力支持这一点以及 Java 8 的“好东西”,但它们都不是真正的 Java“核心”;明白,他们不使用 JVM,他们不使用 Java 编译器。

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

于 2016-03-31T14:05:03.467 回答
3

这篇文章可能对您有所帮助http://www.techentice.com/dalvik-vs-art-android-drop-dalvik-efficient-art/虽然它已经有点过时了。但是,它确实解释了 JVM 与 DALVK 和 ART 之间的差异。

于 2016-03-31T13:58:52.910 回答