1.java的体系结构对平台无关的支持
- java平台(java虚拟机及javaAPI):java程序只需要与java平台交互,不需要担心底层硬件和操作系统
- java语言:基本类型的值域和行为都是由语言自己定义的,C和C++的值域由占位宽提供,占位宽由目标平台决定
- java class文件:可以在任何平台创建,也可以在任何平台被装载,它的格式如高位优先等有明确规定
- 可伸缩性:除了J2SE,对不同的低端,微型版,嵌入式等定义各自的子集(profile),组成J2ME;针对企业服务,定义一个API超集,除了标准api,包括servlet,javabean等企业常用的服务,为J2EE
2.影响平台无关性的因素
- java平台的部署和版本:有些过时的特性在java平台的新版本中被删除了,针对java新版本编写的程序不一定能在老版本运行
- 本地方法:调用java API以外的本地方法将使程序平台相关
- 对虚拟机的依赖:平台相关需遵循两个原则:不要依赖即时终结(finalization)(在对象被释放以前由垃圾收集器运行的finalizer,在不同的虚拟机可能在不同的时间运行);不要依赖线程优先级(只能保证最高优先级的线程可以得到一些CPU时间,没有禁止较低优先级线程的运行),必须依赖同步来保证线程之间协调相互间的动作