`
白粥若水
  • 浏览: 100872 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

《深入Java虚拟机》_平台无关性与程序的最佳可移植性

阅读更多

在前面的日志中,我简单分析了Java的体系结构对Java在开发网络环境下软件的绝佳支持,主要有三点:平台无关性,安全特性,和可移植性。那么,Java 是如何做到这一点的呢?

 

任何一个学习软件,接触到Java的人都应该知道Java的一大卖点(文雅的叫法是优势)便是它的平台无关性——它宣称同样的Java程序能在不同的OS上面运行,而这又是传统语言,如C,C++等做不到的。

 

Java对平台无关性的支持是分布在整个体系结构上面的:

 

 

1、Java平台
Java平台是体系结构对平台无关性最重要的支持
Java平台实际上是扮演了Java运行程序和操作系统之间的缓冲的角色,也就是说,不同的JVM会将程序(不管原来的程序员本意是为哪种OS所编写的)“翻译”成符合“当前规则”的计算机行命令。因此,无论Java程序放在哪里,它运行时都只需和Java平台进行交互就行了,而不需知道了解具体的操作系统或者是底层的硬件

2、Java语言
Java语言确定了基本数据类型在各种不同操作系统上的一致性
Java中的基本数据类型的值域和方法都是由语言本身确立的。而像C和C++,基本数据类型int的值域是由它的占位宽度确定的,而占位宽度在不同的平台上是不同的。

一般来说,C或C++中int的占位宽度是编译器根据目标平台的字长来决定的
Java语言确保了基本数据类型在所有平台上的一致性。


3、Java Class文件
Class文件定义了一个特定于Java虚拟机的二进制格式。它的格式,包括多字节值的高位优先存放约定,都有严格的定义,而与运行平台无关

4、可伸缩性
Java有多个不同的基础API集合,以适应不同的用户要求,表现了Java的平台伸缩性
API的集合最终被确定有3种:
基础版 J2SE
企业版 J2EE
微型版 J2ME

 

 

 

 

PS:如果你是一个Java程序员,或者想要成为一个Java程序员,当你听到“平台无关性”时不要高兴的太早——你应该明白,没有什么事情是万无一失的。随着Java在应用上面的普及,各种意想不到的问题都随之而来,事实上,“平台无关性”越来越成为制约Java发展的瓶颈而受到程序员的诟病,关于这点,以后再谈

 

 

最后,七个步骤保证程序的最佳可移植性:

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

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

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

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

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

6、努力设计一个用户界面,使它在你所有的目标主机上都能运行

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

 

虽然简单平常,但是并不是每个人都能在编写每个程序的时候都做到的哦

0
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics