java对平台无关性的支持

 

java体系结构通过几种途径支持java程序的平台无关性,扮演一个运行时java程序与其下的硬件和操作系统

之间的缓冲角色。java程序被编译为可以运行于java虚拟机中的2进制程序。接着运行虚拟机程序,那些api

则给与程序访问底层计算机资源的能力。无论java程序被部署到何处,他只要和java平台交互,而不用担心底层的硬件和操作系统。
java语言主要通过以下方式支持平台无关性:他的基本数据类型的值域和行为是由语言自己定义的。在c这样的语言中,基本数据类型int的值域是由他的占位宽度决定的,而占位宽度是由目标平台决定的。一般来说,

c中int的占位是由编译其分局目标平台的字长来决定,这就意味针对不同平台编译的同一个程序,在运行时

可能会有不同的行为。然而对于java程序,不管平台是什么。java中的int都是32位2进制补码表示的有符号

整数。同样,这一点在java虚拟机内部以及class文件中都是一致的。通过确保基本数据类型在所有平台的一致性,java为java程序的平台无关性提供了强有力的支持。
java class文件定义了一个特定于java虚拟机的2进制格式,calss文件可以在任何平台上创建,也可以被任何平台的java虚拟机运行。他的格式,包括多字节值的高位有限存放的约定,都有严格的定义。并且使和java虚拟机所在的平台无关的。
可伸缩性
java可以在各种各样的不同类型的计算机上实现(从嵌入式设备到大型主机),java最初是被设计用到嵌入
设备的,为了达到这个目标,java运行时系统不得不设计得尽量紧凑,以便于可以使用嵌入式系统优先的资
源以软件的方式来实现。嵌入式微处理器通常有一些特殊限制,比如很少的内存,没有磁盘,没有图形化显示。这样的限制意味着没有必要支持所有的java api。
当编写一个平台独立的java程序,要遵循的是,不要直接或者间接调用不属于java api的本地方法。
在不需要平台无关性的情况下,直接调用本地方法是适用的,一般来说,本地方法在3种情况下使用:为了使用底层主机平台的某个特性,而这个特性不能通过java api访问,为了防卫一个老的系统或者一个已经有的库,而这个库不是java写的,为了加快性能,而将一段时间敏感的代码作为本地方法实现。

对虚拟机的依赖
在编写java程序,还有2条原则,这2条原则和java虚拟机的某些部分有关,java虚拟机种的某些部分可以由

不同开发商用不同的方法实现。
1,不要依赖及时终结(finalization)来达到程序的正确性
2,不要依赖线程的优先级来达到程序的正确性。
所有的java虚拟机都必须有垃圾收集堆,但是不同实现可能使用不同垃圾收集技术。这意味着不同的虚拟机,一个特定的java对象可能在不同时间被收集。这个意味着那些在对象被释放以前由垃圾收集器运行的终结

方法(finalizer),在不同的虚拟机可能使在不同时间运行的。如果使用了一个终结方法来释放优先的内存资源,比如文件句柄,程序可能在一些虚拟机的实现上可以运行,在其他实现上,程序可能在垃圾收集器调用释放资源的终结方法之前,就已经将有限的资源耗尽了。
在不同的java虚拟机实现中,另一个变化和线程的优先级有关,java虚拟机规范只保证了程序中所有拥有最高优先级别的可运行线程会得到一些cpu时间,这个规范也保证了在较高优先级的线程被组塞时,较低的优先级的线程将会运行。但是较高优先级没有被阻塞得情况下,没有禁止较低优先级线程的运行。为了保证多线程的 java程序平台独立,必须依赖同步,而不是优先级来在线程之间协调相互间的动作。

对用户界面的依赖
在不同的java平台的实现间,另一个主要的变化是用户的接口。在编写平台独立的java程序时,用户界面是一个更难的问题。AWT用户界面库向用户提供了一个基本的用户界面组件集,这些组件被映射成每个平台的本地组件。swing库为用户提供了更高级的组件,但他们没有映射成本低组件,用户必须利用这些基础类库建一个接口,以使不同平台的用户使用起来比较舒适,这往往不是一项简单的工作。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值