《深入Java虚拟机》学习笔记二:平台无关性

 2019-12-22 11:03  阅读(871)
文章分类:JVM

第二章 平台无关
1、Java体系结构对平台无关性的支持

对平台无关性的支持,是分布在整个Java体系结构中的,所有的组成部分,包括语言、class文件、API及虚拟机,都在对平台无关性的支持方面扮演着重要角色。
Java平台扮演一个运行Java程序与其下的硬件和操作系统间的缓冲角色。Java程序被编译为可运行于Java虚拟机的二进制程序,并且假定JavaAPI的class文件在运行时都是可用的,接着虚拟机运行程序,那些API则给与程序访问底层计算机的能力,无论Java程序被部署到何处,它只需要与Java平台交互, 担心底层的硬件和操作系统,因此它能够运行于任何拥有Java平台的计算机。
Java编程语言主要通过基本数据类型的值域和行为都是由语言自己定义的(在C和c++中,基本整数类型中的int的值域是它的占位宽度来决定,而它的占位宽度则是由目标平台决定,这就意味着针对不同的平台编译的同一个C++程序在运行时可能会有不同的行为,而这仅仅是因为基本数据类型在不同平台上值域的不同)。通过确保基本数据类型在所有平台上的一致性,Java语言本身为Java程序的平台无关性提供了强有力的支持。
Class文件定义了一个特定于Java虚拟机的二进制格式,Java class文件可以在任何平台上创建,也可以被任何平台的Java虚拟机装入并运行。
Java 的可伸缩性:Java支持平台无关性,一个方面就是它的可伸缩性,Java平台可以在各种各样不同平台的计算机上实现。具体表现在有三个基础的API集合(J2EE,J2SE,J2ME).
2、影响平台无关性的因素
Java程序的平台无关性依赖于多种因素,其中有些因素不在开发人员的控制范围之内,但是大多数是由开发人员控制的(从根本上说,任何Java程序的平台无关程度都依赖于作者怎样编写它)。
1) java平台的部署:决定Java程序其平台无关性的最主要因素就是Java平台在不同的平台上被部署的程度。
2) Java平台的版本,Java平台的版本始终在动态变化中。
3) 本地方法:决定Java程序的平台无关程度的另一个主要因素就是是否调用了本地方法。(当编写一个平台独立的Java程序时,必须遵守的一条最重要的原则就是:不要直接或者间接的调用不属于JavaAPI的本地方法。)

3、对虚拟机的依赖
在编写平台独立的Java程序时,必须遵循两条原则:
1)不要依赖及时终结(finalization)来达到程序的正确性。
2)不要依赖线程的优先级(thread prioritization)来达到程序的可正确性。(为了保证多线程Java程序的平台独立,必须依赖同步Sychronization而不是优先级来在线程之间协调相互间的动作。
这两条原则可以防止Java虚拟机规范中允许的垃圾收集和线程在不同实现中的变化所带来的不利影响。
4、对用户界面的依赖
在不同的Java平台之间,另一个主要的变化就是用户接口。

点赞(1)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> 《深入Java虚拟机》学习笔记二:平台无关性

相关推荐