`
白粥若水
  • 浏览: 103515 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

《深入Java虚拟机》_平台无关性与程序的最佳可移植性

阅读更多

在前面的日志中,我简单分析了Java的体系结构对Java在开发网络环境下软件的绝佳支持,主要有三点:平台无关性,安全特性,和可移植性。那么,Java 是如何做到这一点的呢?

 

任何一个学习软件,接触到Java的人都应该知道Java的一大卖点(文雅的叫法是优势)便是它的平台无关性——它宣称同样的Java程序能在不同的OS上面运行,而这又是传统语言,如C,C++等做不到的。

 

Java对平台无关性的支持是分布在整个体系结构上面的:

 

 

1、Java平台
Java平台是体系结构对平台无关性最重要的支持
Java平台实际上是扮演了Java运行程序和操作系统之间的缓冲的角色,也就是说,不同的JVM会将程序(不管原来的程序员本意是为哪种OS所编写的)“翻译”成符合“当前规则”的计算机行命令。因此,无论Java程序放在哪里,它运行时都只需和Java平台进行交互就行了,而不需知道了解具体的操作系统或者是底层的硬件

2、Java语言
Java语言确定了基本数据类型在各种不同操作系统上的一致性
Java中的基本数据类型的值域和方法都是由语言本身确立的。而像C和C++,基本数据类型int的值域是由它的占位宽度确定的,而占位宽度在不同的平台上是不同的。

一般来说,C或C++中int的占位宽度是编译器根据目标平台的字长来决定的
Java语言确保了基本数据类型在所有平台上的一致性。


3、Java Class文件
Class文件定义了一个特定于Java虚拟机的二进制格式。它的格式,包括多字节值的高位优先存放约定,都有严格的定义,而与运行平台无关

4、可伸缩性
Java有多个不同的基础API集合,以适应不同的用户要求,表现了Java的平台伸缩性
API的集合最终被确定有3种:
基础版 J2SE
企业版 J2EE
微型版 J2ME

 

 

 

 

PS:如果你是一个Java程序员,或者想要成为一个Java程序员,当你听到“平台无关性”时不要高兴的太早——你应该明白,没有什么事情是万无一失的。随着Java在应用上面的普及,各种意想不到的问题都随之而来,事实上,“平台无关性”越来越成为制约Java发展的瓶颈而受到程序员的诟病,关于这点,以后再谈

 

 

最后,七个步骤保证程序的最佳可移植性:

1、选择程序要运行的主机和设备的集合(你的“目标宿主机”)

2、在目标主机中选择自认为足够好的Java平台版本,在该版本上编写、运行程序

3、对于每个目标宿主机,选择一些程序要运行的Java平台实现(你的“目标运行时环境”)

4、编写程序,使它只通过Java API的标准库来访问计算机(不要调用本地方法,或者开发商专有的那些调用本地方法的库)

5、编写程序,使它不依赖垃圾收集器及时终结的正确性,也不依赖线程的优先级

6、努力设计一个用户界面,使它在你所有的目标主机上都能运行

7、在所有的目标运行时环境和所有的目标宿主机上测试程序

 

虽然简单平常,但是并不是每个人都能在编写每个程序的时候都做到的哦

0
3
分享到:
评论

相关推荐

    java1234_book

    它的设计目标是“一次编写,到处运行”,这意味着Java程序可以在任何支持Java虚拟机(JVM)的平台上运行,具有高度的可移植性和平台无关性。 在源码方面,学习Java源码有助于深入理解类库和框架的工作原理。例如,...

    java白皮书官方版

    9. **可移植性**:Java的API被设计为与平台无关,使得代码能在不同设备之间轻松迁移。 10. **动态性**:Java允许在运行时动态加载类和资源,适应不断变化的环境和需求。 在学习Java白皮书时,读者会深入了解到这些...

    JAVA程序设计语言

    **体系结构中立:** Java解释器生成的字节码与特定的处理器架构无关,这意味着Java程序可以在任何安装了Java运行时系统的平台上运行,极大地增强了程序的可移植性。Java的类库也提供了针对不同平台的接口支持,...

    Java Programming

    - **可移植性**:源代码级别的可移植性确保了Java程序能够在不同的操作系统上运行而无需修改。 - **“一次编写,到处运行”**(Write once, run anywhere, WORA):这是Java的一个关键优势,通过编译为平台无关的...

    JAVA思想

    Java程序在编译后生成字节码,可以在任何安装了JVM的平台上运行,极大地提高了软件的可移植性。 Java的思想主要体现在以下几个方面: 1. **封装**:这是面向对象的基本特性,Java通过类和对象实现数据和方法的封装...

    JAVA应用教程 PDF高清

    它以其平台无关性、安全性、可移植性和健壮性等特点而受到欢迎,在企业级应用开发、安卓应用开发、Web服务等领域有着广泛的应用。 ### 核心概念与特点 1. **平台无关性**:Java代码(字节码)可以在任何安装了Java...

    java指南tutorial.zip

    它的设计目标是具有平台无关性、安全性、可移植性和高性能。Java的应用场景广泛,包括桌面应用、移动应用(尤其是Android系统)、企业级应用、Web应用以及云计算服务等。 在"tutorial.chm"中,我们可以期待找到以下...

    jni详解高清pdf文档

    Java平台的目标是在不同平台之间提供高度的可移植性,而这正是JNI所发挥的关键作用之一。 #### 七、JNI的角色与未来 JNI在Java与本地代码的桥梁中扮演着不可或缺的角色,它不仅是实现高性能计算的关键,还是跨平台...

    java

    Java虚拟机(JVM)负责解释执行这些字节码,确保了Java程序的跨平台能力。 Java工具则包括了一系列用于开发、调试、性能优化的实用程序。例如,JDK(Java Development Kit)包含了开发Java应用所需的全部工具,如...

    java参考资料

    Java设计为具有高度可移植性、安全性和平台无关性的特性,这使得它在各种不同的操作系统上都能良好运行。Java主要应用于企业级应用开发、移动应用开发(特别是Android应用)、Web开发等多个领域。 ### 2. Java的...

    重塑java基础高级进阶资源分享

    - **平台无关性**:通过Java虚拟机(JVM),Java程序可以在任何安装了JVM的平台上运行。 - **安全性**:Java设计时考虑到了安全性问题,比如自动垃圾回收机制避免了内存泄漏的风险。 - **高性能**:随着JIT编译器技术...

    java基础教学视频附带源码

    - 平台无关性:Java程序可以在任何安装了Java虚拟机(JVM)的平台上运行。 - 安全性高:Java拥有强大的安全机制,能够有效防止恶意代码攻击。 - 可移植性强:编写的Java程序可以在不同的操作系统上运行而无需修改...

    CSharp_深入浅出全接触

    Java是一种跨平台的编程语言,通过字节码和Java虚拟机(JVM)实现平台无关性。Java的优势在于其“一次编写,到处运行”的理念,但在实际应用中,不同JVM的性能差异和兼容性问题可能导致代码移植困难。C#吸取了Java的...

    Java @@@@@Java谁打的

    它的设计目标是具有良好的可移植性、健壮性和安全性,广泛应用于企业级应用、Android应用开发、大数据处理等领域。Java的核心特性包括自动内存管理(垃圾回收)、多线程支持、丰富的类库以及“一次编写,到处运行”...

    javachm.rar\mycodes.com.cn\JAVA语言入门(CHM)

    它的设计目标是“简单、健壮、安全、平台无关、可移植、高性能和多线程”。 2. **Java语法**:Java语法与C++相似,但更简化。它有类、接口、包等概念,支持方法重载、重写、继承、多态性等特性。 3. **类和对象**...

    JVM详解及调优

    这一过程确保了Java程序的高度可移植性和安全性。 **1.3 Java运行的原理** Java程序运行时,首先是编译阶段,将.java源代码文件编译成字节码文件(.class)。然后,字节码文件被加载到JVM中执行。JVM负责解释字节...

    java_theonebytenews:“一个字节的节目”的博客页面,名为“一个字节的新闻”

    JVM通过字节码(.class文件)执行程序,字节码是一种与硬件无关的中间表示,这使得Java代码具有高度的可移植性。 在开发工具方面,Eclipse、IntelliJ IDEA等集成开发环境(IDE)极大地提升了Java开发效率。它们提供...

Global site tag (gtag.js) - Google Analytics