ad

《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》_求知之路漫漫_1.4.6 Apache Harmony/Google Android Dalvik VM

网友投稿 157 2023-11-07

【摘要】 本书摘自《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》一书中第1章,第4节,周志明著。

1.4.6 挑战者 Apache Harmony/Google Android Dalvik VM

这节介绍的 Harmony 虚拟机(准确地说是Harmony 里的 DRLVM) 和 Dalvik 虚拟机只 能称作“虚拟机”,而不能称作 “Java 虚拟机”,但是这两款虚拟机以及背后所代表的技术 体系曾经对Java 世界产生了非常大的影响和挑战,当时甚至有悲观的人认为成熟的Java 生 态系统都有分裂和崩溃的可能。

Apache Harmony 是一个 Apache 软件基金会旗下以Apache License 协议开源的实际兼 容于JDK5 和JDK6 的 Java 程序运行平台,它含有自己的虚拟机和Java 类库 API, 用户可 以在上面运行Eclipse 、Tomcat 、Maven 等常用的Java 程序。但是,它并没有通过 TCK 认 证,所以我们不得不用一长串冗长拗口的语言来介绍它,而不能用一句“Apache 的 JDK” 或者 “Apache 的 Java 虚拟机”来直接代指。

如果一个公司要宣称自己的运行平台“兼容于Java 技术体系”,那该运行平台就必须要 通过TCK(Technology Compatibility Kit) 的兼容性测试, Apache 基金会曾要求当时的 Sun 公司提供TCK 的使用授权,但是一直遭到各种理由的拖延和搪塞,直到 Oracle 收购了 Sun 公司之后,双方关系越闹越僵,最终导致Apache 基金会愤然退出JCP 组织,这是 Java 社 区有史以来最严重的分裂事件之一。

当 Sun公司把自家的JDK 开源形成 OpenJDK项目之后, Apache Harmony 开源的优势 被极大地抵消,以至于连Harmony 项目的最大参与者IBM 公司也宣布辞去 Harmony 项目 管理主席的职位,转而参与OpenJDK 的开发。虽然 Harmony 没有真正地被大规模商业运 用过,但是它的许多代码(主要是Java类库部分的代码)被吸纳进IBM 的 JDK 7实现以及 Google Android SDK 之中,尤其是对 Android 的发展起了很大推动作用。

说到 Android, 这个时下最热门的移动数码设备平台在最近十年所取得的成果已经远远 超越了Java ME在过去二十多年所获得的成果, Android 让 Java 语言真正走进了移动数码 设备领域,只是走得并非 Sun 公司原本想象的那一条路。

《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》_求知之路漫漫_1.4.6 Apache Harmony/Google Android Dalvik VM

Dalvik 虚拟机曾经是Android 平台的核心组成部分之一,它的名字来源于冰岛一个名 为Dalvik 的小渔村。Dalvik 虚拟机并不是一个Java 虚拟机,它没有遵循《Java 虚拟机规 范》,不能直接执行Java 的 Class 文件,使用寄存器架构而不是Java 虚拟机中常见的栈架

构。但是它与Java 却又有着千丝万缕的联系,它执行的 DEX(Dalvik Executable) 文件可 以通过Class 文件转化而来,使用Java 语法编写应用程序,可以直接使用绝大部分的 Java API 等。在Android 发展的早期,Dalvik 虚拟机随着 Android 的成功迅速流行,在 Android 2.2中开始提供即时编译器实现,执行性能又有了进一步提高。不过到了Android 4.4时代, 支持提前编译 (Ahead of Time Compilation,AOT) 的 ART 虚拟机迅速崛起,在当时性能 还不算特别强大的移动设备上,提前编译要比即时编译更容易获得高性能,所以在 Android 5.0里ART就全面代替了 Dalvik 虚拟机。

1.4.7 没有成功,但并非失败: Microsoft JVM 及其他

在 Java 虚拟机二十几年的发展历程中,除去上面介绍的那些被大规模商业应用过的 Java 虚拟机外,还有许多虚拟机是不为人知地默默沉寂,或者曾经绚丽过但最终夭折湮灭 的。我们以其中Microsoft 公司的 Java 虚拟机为代表来介绍一下。

在Java 语言诞生的初期(1996年~1998年,以JDK1.2 发布之前为分界),它的主要应 用之一是在浏览器中运行Java Applets 程序,微软为了在 Internet Explorer 3 浏览器中支持

Java Applets应用而开发了自己的Java 虚拟机,虽然这款虚拟机只有Windows 平台的版本, “一次编译,到处运行”根本无从谈起,但却是当时Windows 系统下性能最好的Java 虚拟 机,它在1997年和1998年连续获得了《 PC Magazine》杂志的“编辑选择奖”。但是好景 不长,在1997年10月,Sun 公司正式以侵犯商标、不正当竞争等罪名控告微软,在随后对 微软公司的垄断调查之中,这款虚拟机也曾作为证据之一被呈送法庭。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Python学习笔记 从入门到实战》_更了解Python的途径之一_9.1 生成器 装饰器和闭包
下一篇:《Python学习笔记 从入门到实战》_更了解Python的途径之一_6.4 变量的作用域
相关文章
×