第二章 平台无关
1.为什么要平台无关
用Java创建的可执行二进制程序,能不加改变地运行于多个平台.新兴的网络化嵌入式设备则展示了Java又一擅长的领域,因为它的平台无关性在这种环境下非常有用.这给于了网络一个同构的运行环境.
2.Java的体系结构对平台无关的支持
2.1 Java平台
Java平台扮演一个运行时Java程序与其下的硬件和操作系统这间的缓冲角色.
2.2 Java语言
它的基本数据类型的值域和行为都是由语言自己定义的.
通过确保基本数据类型在所有平台上的一致性,Java语言本身为Java程序的平台无关性提供了强有力的支持.
2.3 Java class文件
2.4 可伸缩性
三个基础API集合,表现Java平台不同的伸缩性:
企业版(J2EE)
标准版(J2SE)
微型版(J2ME)
3.影响平台无关性的因素
3.1 Java平台的部署
3.2 Java平台的版本
标准API:Java平台中保证可用的基本库集合
标准扩展API:Sun定义了一些标准运行时库,它把这些库作为标准版的可选项
3.3 本地方法
编写平台独立的Java程序时,原则:不要直接或间接调用不属于Java API的本地方法
本地方法的适用情况:
(1)为了使用底层的主机平台的某个特性,而这个特性不能通过Java API访问
(2)为了访问一个老的系统或者使用一个已有的库,而这个系统或库不是用Java编写的
(3)为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现
3.4 非标准运行时库
如果开发者侧重于平台无关性,那么就必须清楚地知道所使用的那些非标准运行库是否调用了本地方法.
3.5对虚拟机的依赖
编写平台独立的Java程序必须遵从的两条原则:
(1)不要依赖及时终结(finalization)来达到程序的正确性
那些在对象被释放以前由垃圾收集器运行的终结方法(finalizer),在不同的虚报机中可能是在不同的时间运行的.
(2)不要依赖线程的优先级(thread prioritization)来达到程序的正确性
为了保证多线程Java程序的平台独立,必须依赖同步(sychronization)而不是优先级来在线程之间协调相互间的动作.
这两条原则可以防止Java虚报机规范中允许的垃圾收集和线程在不同实现中的变化所带来的不得影响
3.6 对用户界面的依赖
3.7 Java平台实现中的bug
3.8 测试
4.平台无关的七个步骤
5.平台无关性的策略
所有Java平台的开发商必须签署许可证,要求保证在Java虚报机和JavaAPI层的相容性,但是允许在性能和扩展等领域存在差异.
作为一个开发人员,当思考怎样编写某个特定的Java程序时,软件工业和策略和宣传不一定是主要的考虑因素.对于写的有些程序,可能适合平台无关性;而对于其他的一些,则平台相关的程序可能会有意义一些.在每种情况下,都需要做出决定,这个决定要基于用户的需要什么,以及要把自己放在市场的什么位置.
6.平台无关性和网络移动对象
———————————————————————思考的分割线————————————————————————
作为一个J2EE开发人员,平常都是在windows操作系统上Jboss的J2EE实现下进行代码的编写与测试.最后再把class文件放到linux操作系统上Jboss服务器上.开发和运行代码的JVM都是sun的JDK.
可平常看到的一些招聘要求上有的是在UNIX或LINUX环境中的开发经验,那像我这样算是windows还是linux呢?????
对于像我这样不关心操作系统和JVM实现变化的开发者来说,真的不知道这是什么操作系统下的开发,除非我写到了windows或linux的嵌入,才会把操作系统环境分得这么仔细吧.又或者我用到不同的JVM实现,如果现在linux上用的是IBM的JVM或BEA的JRockit,不知现在写的这些代码还能不能在上面跑???????
分享到:
相关推荐
深入理解Java虚拟机学习笔记借鉴.pdf
深入java虚拟机笔记http://blog.csdn.net/yangzl2008/article/details/8074667
java虚拟机读书笔记,主要描述阅读Java虚拟机核心技术的描述。
1. JVM调优 1.1 JVM调优总结(一)-一些概念 1.2 JVM调优总结(二)-一些概念 1.3 JVM调优总结(三)-基本...4.1 JVM内存管理:深入Java内存区域与OOM 4.2 JVM内存管理:深入垃圾收集器与内存分配策略 4.3 深入理解JVM
java学习笔记3(java虚拟机)java学习笔记3(java虚拟机)
读书笔记——AGoodManIsHardToFind.pdf
NULL 博文链接:https://zhanjia.iteye.com/blog/1842733
该文档是本人的学习笔记,尚未精修,后续会精修排版. 学习笔记:深入浅出 Java 虚拟机.docx
上课笔记——虚拟机基础知识
Thinking in Java 自学笔记——第二章 一切皆对象 个人原创,不喜勿喷。
Java虚拟机的基本结构图:Java虚拟机包含一个类装载器(class loader),可以从程序和API中装载class文件,其中API只有程序执行时需要的那
Java编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZF
深入Java虚拟机JVM类加载学习笔记:jvm java classloader 垃圾回收 gc
深入理解Java虚拟机笔记(带目录).docx
arm体系结构与编程 读书笔记——Page72
良葛格————JavaJDK5.0学良葛格————JavaJDK5.0学习笔记PDF.rar习笔记PDF.rar良葛格良葛格————JavaJDK5.0学习笔记PDF.rar————JavaJDK5.0学习笔记PDF.rar良葛格————JavaJDK5.0学习笔记PDF.rar良...
Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据)
Java JDK 6学习笔记——ppt简体版 第21章.ppt
Java JDK 6学习笔记——ppt简体版 第20章.ppt
Java JDK 6学习笔记——ppt简体版 第19章.ppt