平台无关系的好处….. 省略1000字
Javaís Architectural Support for Platform Independence
为了支持平台无关系,就像支持安全性和网络灵活性一样,分散到了java各个地方.
java语言,类文件,API,虚拟机都在平台无关性中扮演了一个角色.
The Java Platform
java 平台在支持平台无关性中起主要作用java平台在应用和操作系统以及硬件之间起缓冲区的作用
java 程序由虚拟机编译后.运行在虚拟机上面的.在可以调用java api 的前提下,API 可以使得 Java
程序可以使用底层资源.无论java程序在那个平台上,他都可以去调用底层的资源.java程序之和java虚拟机进行交互并不关心虚拟机是如何和底层硬件进行交互的
The Java Language
java 语言在平台无关性上反应在一点 他的原始类型的取值范围和行为上. 在c或者c++上,int 类型的取值范围是有类型占内存多少个字节决定的.而平台不同所占的内存大小也不一样.这就有肯仅仅由于int 类型的取值范围在每个平台都不一样,程序的结果也可能不同.
java 中不管平台是什么,一个int 分配32个字节. 一个float 类型分配32字节
The Java Class File
类文件按照虚拟机的规范定义了一组2进制格式.class文件可以在任意平台上转换.在任意平台上均可执行.
设计java 的目的是提供一个可以在网络传播,不同平台和类型的的终端中运行的软件
由于需求 不同,虚拟机的版本也不一样.
the Java Embedded Platform
- the Java Personal Platform
- the Java Card Platform
Factors that Influence Platform Independence
Java Platform Deployment
要想运行java的程序,必须安装java 平台
The Java Platform Version and Edition
保证在所有的java平台可以运行的API被称作 核心API JAVA 虚拟机和这些核心的API组成了java 核心平台不同版本的java 可能是不兼容的.
在实际中,当有新的java 平台版本发布时候,你需要证明写的程序和这个版本是兼容的
Native Methods
另外一点决定程序平台无关系的因素是,你是否调用了本地方法.当编写需要平台无关系这个特性的java程序的时候,要牢记一点.你是否调用了本地方法.不要直接或者间接任何不是java api中的本地方法.下图说明
调用本地方法,使得程序失去了平台无关系.
有三种情况可以调用本地方法
通过java api无法处理的底层主机平台的特性,
处理遗留的系统或者 不是用java实现的API
为了提高速度,通过本地方法去实现.;
Non-Standard Runtime Libraries
厂商提供的 java 扩展库不一样,也会影响平台无关性
Virtual Machine Dependencies
还有两点,要注意:
1程序不能依靠垃圾回收的时间
2 程序不能依赖线程的优先级
在虚拟机的规范中是这两点是被强调的.
所有的java 虚拟机都要有一个垃圾回收堆.但是不同的实现可以使用不同的垃圾回收技巧.这就意味这在不同平台的虚拟机上面运行相同的程序.由于实现的方法不一样,进行垃圾回收的时间是不一样的.All Java
这意味这finalizers这个垃圾回收调用的方法在去释放对象,在不同的平台运行的时间是不一样的.
另外一个不同的地方是虚拟机在实现线程的时候,保证所有那些有最高优先权的线程会取得一些cpu时间
虚拟机也保证了那些低优先级的进程会在高优先级进程中断的时候运行.但要注意一点虚拟机一点不保证的是
在高优先级线程运行的时候,那些低优先级线程是否运行.
如果你要是想保证你多线程的程序的正确性,你必须依赖synchronization,而不是线程间的优先级.
User Interface Dependencies
Bugs in Java Platform Implementations
Testing
要在所有可能部署程序的平台上面进行测试.
Seven Steps to Platform Independence
- Choose a set of host computers that you will claim your program runs on (your "target hosts").
- Choose a version of the Java Platform that you feel is well enough distributed among your target hosts. Write your program to run on this version of the Java Platform.
- For each target host, choose a set of Java Platform implementations that you will claim your program runs on (your "target runtimes").
- Write your program so that it accesses the host computer only through the standard runtime libraries of the Java API. (Donít invoke native methods, or use vendor-specific libraries that invoke native methods.)
- Write your program so that it doesnít depend for correctness on timely finalization by the garbage collector or on thread prioritization.
- Strive to design a user interface that works well on all of your target hosts.
- Test your program on all of your target runtimes and all of your target hosts.
The Politics of Platform Independence
sun的目标是各个vendor提供虚拟机的内容是一致的,不一致的地方是性能和扩展的地方
根据客户的需要决定是否要平台无关系.
本文详细探讨了Java如何实现跨平台特性,从Java语言、类文件格式到Java虚拟机等多个层面解析其平台无关性的实现机制,并讨论了影响平台无关性的因素。
2507

被折叠的 条评论
为什么被折叠?



