《深入Java虚拟机》导读之二: 平台无关性

为什么要平台无关性这个问题已经不需要再说,因为java号称“一次编译,到处运行”(当然早期的时候微软也嘲笑它“一次编译,到处调试”), java的平台无关性是java语言, class文件, API, JVM共同作用的结果.

java平台(即java虚拟机和java API)是java的平台无关性的最重要的保证. 因为JVM和API在不同的硬件和操作系统上得以实现,使得java程序不用关心底层, 因为它在任何时候都只和java平台打交道. java平台在java程序和底层平台之间扮演了缓冲的角色.

 

java语言能够从它的原始类型的的行为上折射出平台无关性, java的原始类型的范围和长度是由java语言规定的, 而不像C, C++那样依赖于硬件平台. 如int和float任何时候都是32位。

 

class文件, 如前面提到的一样, 是为JVM定制的二进制文件格式, class文件可以在任何平台上产生, 但它们的格式在任何平台上都被严格定义和实现.

 

影响平台无关性的因素

java平台的部署程度, 说通俗一点就是到底世界上有多少人的电脑安装了java。

java平台的版本, java平台在不断的进步和完善,不断地有新版本推出来。平台的升级会给原有的 java程序带来冲击。

本地方法, 如果你要写出平台无关的程序, 你一定不要直接调用本地方法, 毫不犹豫, 本地方法都是平台相关的. 但是本地方法也有它的好处: 1: 能够使用一些Java API 没有的, 底层的特性; 2: 可以访问遗留的, 不是用java语言写的系统; 3: 对于时间要求严格的进程, 可以调用本地方法提高性能.

 

两条需要遵守的规则
1 不要依靠及时的内存回收来保证程序的正确性,  因为不同厂商的JVM的GC算法不一样;

2 不要依靠线程的优先级保证程序的正确性, 不同厂商的JVM对线程调度的细节处理也不一样.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值