ad

《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》_求知之路漫漫_1.4.3 小家碧玉: Mobile/Embedded VM

网友投稿 154 2023-11-07

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

1.4.3 小家碧玉: Mobile/Embedded VM

Sun/Oracle 公司所研发的虚拟机可不仅包含前面介绍到的服务器、桌面领域的商用虚 拟机,面对移动和嵌入式市场,也有专门的Java 虚拟机产品。

由于Java ME产品线的发展相对Java SE来说并不那么成功,所以 Java ME中的 Java 虚 拟机相比 HotSpot要低调得多。Oracle 公司在 Java ME这条产品线上的虚拟机名为CDC-HI (C Virtual Machine,CVM) 和 CLDC-HI(Monty VM)。其中 CDC/CLDC全称是 Connected (Limited)Device Configuration, 这是一组在JSR-139 及 JSR-218 规范中进行定义的JavaAPI 子集,这组规范希望能够在手机、电子书、PDA 等移动设备上建立统一的Java 编程接口,

CDC-HI VM和 CLDC-HI VM就 是JSR-139 及 JSR-218 规范的参考实现,后面的HI 则是 HotSpot Implementation 的缩写,但它们并不是由HotSpot 直接裁剪而来,只是借鉴过其中 一些技术,并没有血缘关系,充其量能叫有所渊源。

Java ME中的Java 虚拟机现在处于比较尴尬的位置,所面临的局面远不如服务器和桌 面领域乐观,它最大的一块市场——智能手机已被Android 和 iOS 二分天下日,现在CDC 在智能手机上略微有点声音的产品是Oracle ADF Mobile,原本它提出的卖点是智能手机上 的跨平台( “Developing with Java on iOS and Android”),不过用Java 在 Android 上开发应 用还要再安装个 CDC 虚拟机,这事情听着就觉得别扭,有多此一举的嫌疑,在iOS 上倒确 实还有一些人在用。

而在嵌入式设备上,Java ME Embedded 又面临着自家 Java SE Embedded(eJDK) 的直 接竞争和侵蚀,主打高端的CDC-HI 经过多年来的扩充,在核心部分其实已经跟Java SE非 常接近,能用Java SE的地方大家自然就不愿意用Java ME, 所以市场在快速萎缩,Oracle 也基本上砍掉了CDC-HI 的所有项目,把它们都划归到了Java SE Embedded下 。Java SE Embedded里带的Java 虚拟机当然还是 HotSpot, 但这是为了适应嵌入式环境专门定制裁剪 的版本,尽可能在支持完整的Java SE功能的前提下向着减少内存消耗的方向优化,譬如只 留下了客户端编译器 (C1), 去掉了服务端编译器 (C2); 只保留Serial/Serial Old 垃圾收集 器,去掉了其他收集器等。

《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》_求知之路漫漫_1.4.3 小家碧玉: Mobile/Embedded VM

面向更低端设备的 CLDC-HI 倒是在智能控制器、传感器等领域还算能维持自己的一 片市场,现在也还在继续发展,但前途并不乐观。目前CLDC 中活得最好的产品反而是原 本早该被 CLDC-HI 淘汰的KVM, 国内的老人手机和出口到经济欠发达国家的功能手机 (Feature Phone) 还在广泛使用这种更加简单、资源消耗也更小的上一代 Java ME虚拟机。

1.4.4 天下第二: BEA JRockit/IBM J9 VM

前面三节介绍的都是由Sun/Oracle 公司研发的Java 虚拟机,历史上除了Sun/Oracle 公 司以外,也有其他组织、公司开发过虚拟机的实现。如果说 HotSpot 是天下第一的武林盟 主,那曾经与HotSpot 并称“三大商业 Java 虚拟机”的另外两位,毫无疑问就该是天下第 二了,它们分别是 BEA System公司的 JRockit 与IBM 公司的 IBM J9。

JRockit 虚拟机曾经号称是“世界上速度最快的Java 虚拟机”(广告词,IBM J9虚拟机 也这样宣传过,总体上三大虚拟机的性能是交替上升的),它是BEA 在2002年从 Appeal Virtual Machines公司收购获得的Java 虚拟机。BEA 将其发展为一款专门为服务器硬件和 服务端应用场景高度优化的虚拟机,由于专注于服务端应用,它可以不太关注于程序启动 速度,因此JRockit 内部不包含解释器实现,全部代码都靠即时编译器编译后执行。除此之

外 ,JRockit 的垃圾收集器和 Java Mission Control 故障处理套件等部分的实现,在当时众多 的Java 虚拟机中也处于领先水平。JRockit 随着 BEA 被 Oracle 收购,现已不再继续发展, 永远停留在 R28 版本,这是 JDK6 版 JRockit 的代号。

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

上一篇:《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_3.4 使用Nginx 作为软件仓库
下一篇:《Python学习笔记 从入门到实战》_更了解Python的途径之一_7.4.3 方法调用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×