深入Java虚拟机之平台无关性

平台无关性:

Java体系结构对平台无关性的支持:

①Java平台

Java平台扮演一个运行时Java程序与其下的硬件和操作系统之间的缓冲角色,Java程序被编译成可运行于Java虚拟机中的二进制程序,并且假定Java API的class文件在运行时都是可用的,接着虚拟机运行程序,那些API则给予程序访问底层计算机资源的能力。无论Java程序被部署到何处,,它只需要与Java平台交互,而不需要担心底层的硬件和操作系统。因此,他就能够运行于任何拥有Java平台的计算机。

②Java语言

Java语言的基本数据类型的值域和行为都是由语言自己定义的,在像C或者C++这样的语言中,基本整数类型int的值域是由它的占位宽度决定的,而它的占位宽度则由目标平台决定,一般来说,C或者C++中int的占位宽度是由编译器根据目标平台的字长来决定,这就意味着针对不同平台的变异的同一个C++程序在运行时可能会有不同的行为,这仅仅是因为基本数据类型在不同的平台上的值域不同。而java中的int都是32位二进制补码表示的有符号整数,而float则总是遵循浮点标准的32位浮点数。这一点在Java虚拟机内部以及class文件中都是一致的,通过确保基本将数据类型在所有平台上的一致性,java语言本身为Java程序的平台无关性提供强有力的支持。

③Java class文件

Class文件定义了一个特定于Java虚拟机的二进制格式,Java class可以在任何平台上创建,也可以被任何平台的Java虚拟机装入并运行。它的格式包括多字节值得高位存放约定,都有严格的定义,并且都是Java虚拟机所在平台无关的。

④可伸缩性

Java平台可以在各种各样不同类型的(从嵌入式设备到大型主机)计算机上实现。每一个平台提供的API子集都是面向一个特定的目标领域。最终Sun改变过的API定义方式得到了三个基础API集合,他们表现Java平台不同的伸缩性:

企业版(J2EE)

标准版(J2SE)

微型版(J2ME)

当编写一个平台独立的Java程序时,必须遵守的一条最重要的原则是:不要直接或者间接调用不属于Java API的本地方法,调用Java API意外的本地方法将使程序平台相关。

平台无关的七个步骤:

为了保证程序的最佳可移植性而可采取的途径:

①选择程序要运行的主机和设备的集合(你的“目标宿主机”)

②在目标宿主机中选择自认为足够好的Java平台版本,在该版本Java平台上编写、运行程序。

③对于每个目标宿主机,选择一些程序将要运行的Java平台实现(你的“目标运行时环境”)

④编写程序,使它只通过Java API的标准运行库来访问计算机(不要调用本地方法,或开发商专有的那些调用本地方法的库)

⑤编写程序,使它不依赖垃圾收集器及时终结的正确性,也不依赖线程的优先级。

⑥努力设计一个用户界面,使它在你所有的目标宿主机上都能正常工作。

⑦在所有的目标运行时环境和所有的目标宿主机上测试程序

人的价值,在遭受诱-惑的一瞬间被决定

深入Java虚拟机之平台无关性

相关文章:

你感兴趣的文章:

标签云: