`
水上风荷
  • 浏览: 9049 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类

《深入Java虚拟机》学习笔记二:平台无关性

    博客分类:
  • Java
阅读更多

第二章 平台无关
1、Java体系结构对平台无关性的支持

      对平台无关性的支持,是分布在整个Java体系结构中的,所有的组成部分,包括语言、class文件、API及虚拟机,都在对平台无关性的支持方面扮演着重要角色
      Java平台扮演一个运行Java程序与其下的硬件和操作系统间的缓冲角色。Java程序被编译为可运行于Java虚拟机的二进制程序,并且假定JavaAPI的class文件在运行时都是可用的,接着虚拟机运行程序,那些API则给与程序访问底层计算机的能力,无论Java程序被部署到何处,它只需要与Java平台交互, 担心底层的硬件和操作系统,因此它能够运行于任何拥有Java平台的计算机。
      Java编程语言主要通过基本数据类型的值域和行为都是由语言自己定义的(在C和c++中,基本整数类型中的int的值域是它的占位宽度来决定,而它的占位宽度则是由目标平台决定,这就意味着针对不同的平台编译的同一个C++程序在运行时可能会有不同的行为,而这仅仅是因为基本数据类型在不同平台上值域的不同)。通过确保基本数据类型在所有平台上的一致性,Java语言本身为Java程序的平台无关性提供了强有力的支持。 
      Class文件定义了一个特定于Java虚拟机的二进制格式,Java class文件可以在任何平台上创建,也可以被任何平台的Java虚拟机装入并运行。 
      Java 的可伸缩性:Java支持平台无关性,一个方面就是它的可伸缩性,Java平台可以在各种各样不同平台的计算机上实现。具体表现在有三个基础的API集合(J2EE,J2SE,J2ME).
2、影响平台无关性的因素
      Java程序的平台无关性依赖于多种因素,其中有些因素不在开发人员的控制范围之内,但是大多数是由开发人员控制的(从根本上说,任何Java程序的平台无关程度都依赖于作者怎样编写它)。
     1) java平台的部署:决定Java程序其平台无关性的最主要因素就是Java平台在不同的平台上被部署的程度。
     2) Java平台的版本,Java平台的版本始终在动态变化中。 
     3) 本地方法:决定Java程序的平台无关程度的另一个主要因素就是是否调用了本地方法。(当编写一个平台独立的Java程序时,必须遵守的一条最重要的原则就是:不要直接或者间接的调用不属于JavaAPI的本地方法。)

3、对虚拟机的依赖
     在编写平台独立的Java程序时,必须遵循两条原则:
    1)不要依赖及时终结(finalization)来达到程序的正确性。
    2)不要依赖线程的优先级(thread prioritization)来达到程序的可正确性。(为了保证多线程Java程序的平台独立,必须依赖同步Sychronization而不是优先级来在线程之间协调相互间的动作。
这两条原则可以防止Java虚拟机规范中允许的垃圾收集和线程在不同实现中的变化所带来的不利影响。
4、对用户界面的依赖 
    在不同的Java平台之间,另一个主要的变化就是用户接口。

 

分享到:
评论

相关推荐

    理解虚拟机--有笔记版

    除了上述提到的基础知识点外,《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》这本书籍还深入探讨了JVM的性能调优、并发编程、以及各种高级特性的具体应用。比如,对于性能调优,书中讲解了如何根据不同的...

    基于java的学习笔记

    - 平台无关:通过Java虚拟机(JVM),Java代码可以在任何支持JVM的平台上运行。 - 自动内存管理:垃圾回收机制自动管理内存,避免了内存泄漏。 - 安全性:Java提供了沙箱模型,确保程序运行时的安全。 - 多线程...

    java学习笔记 适合自学java的朋友

    ### Java学习笔记知识点详解 #### 一、Java环境配置 - **JAVA_HOME**: 指定JDK安装目录。这是非常重要的环境变量,因为它告诉操作系统JDK安装在何处。 - **Linux系统**: 在`.bash_profile`文件中设置,例如: ```...

    Java编程思想学习笔记

    在讨论Java编程思想学习笔记时,首先需要了解的是Java语言的平台无关性,而这一特性正是通过Java虚拟机(JVM)得以实现的。JVM作为Java程序设计的关键组成部分,对于Java开发人员来说是必须掌握的基础知识。在该学习...

    Java基础学习全笔记

    1. 平台独立性:Java是解释性语言,具有平台无关性,而C++是编译型语言,依赖于特定平台。 2. 继承机制:Java支持单一继承,而C++支持多继承。 3. 预处理:Java不使用预处理概念,C++在编译时有预编译阶段。 编写、...

    java基础总结大全(笔记).pdf

    - JVM(Java Virtual Machine)是Java虚拟机,它是Java跨平台的关键,负责执行字节码。 - JRE(Java Runtime Environment)包含了JVM和Java的核心类库,提供了运行Java应用程序的环境。 - JDK(Java Development ...

    java 学习笔记(经典)

    它具有平台无关性、面向对象的特点,并且支持多线程处理。Java的设计目的是为了提高可移植性和安全性,使其成为网络应用开发的理想选择。 #### 面向对象编程(OOP)基础 面向对象编程是Java的核心特性之一,其基本...

    JAVA学习笔记整理(全)

    JAVA学习笔记整理全面涵盖了从基础语法到高级技术的多个领域,包括数据库管理、Web服务器、缓存技术、框架、容器、网络、虚拟机、操作系统、数据结构和操作系统等多个方面。以下将详细介绍其中的关键知识点。 一、...

    Java相关课程系列笔记之一Java学习笔记.doc

    2. **Java的特点**:Java具有平台无关性(Write Once, Run Anywhere,WORA),通过Java虚拟机(JVM)实现跨平台运行。此外,它具备自动内存管理(垃圾回收机制),确保程序稳定运行,还有丰富的类库支持各种功能的...

    Java面试进阶解析笔记.pdf

    2. 平台无关性:Java程序编译后的字节码可以在任何支持Java的平台上运行,无需重新编译,这得益于Java虚拟机(JVM)的存在。 3. 简单性:Java简化了许多C++中的复杂特性,如没有指针,使用垃圾回收机制自动管理内存...

    郝斌Java笔记.pdf

    - **跨平台性**:Java 的源代码会被编译成一种中间格式——字节码,这种字节码可以在安装了 Java 虚拟机 (JVM) 的任何平台上运行,从而实现了“一次编写,到处运行”的理念。 - **多线程**:Java 支持多线程编程,...

    JAVA学习笔记(全面)

    - **平台无关性**:Java代码被编译成字节码后,可以在任何支持Java虚拟机(JVM)的平台上运行,这使得Java应用程序具有很高的可移植性。 - **简单性**:Java的设计理念强调简单易学,避免了C++等语言中的一些复杂...

    jvm指令手册 +JVM必知必会,掌握虚拟机编译过程.rar

    《JVM必知必会》记录了对JVM的总结及学习笔记,详解的介绍了什么是jvm,以及弄清楚jvm的工作原理等等,会深入了解JVM有一定的帮助。 Java Virtual Machine(Java虚拟机),它bai是一个虚构出来du的计算机,是通过在...

    java笔记整理(超详细) java笔记整理(超详细)

    - Java的平台无关性得益于Java虚拟机(JVM),它负责解析和执行字节码,使得编译后的Java程序可以在任何支持JVM的平台上运行。 3. **多线程支持**: - Java内建了多线程机制,通过`Thread`类或实现`Runnable`接口...

    java个人学习笔记总结

    1. JVM 是 Java 应用程序的运行环境,它负责将字节码转化为机器码执行,提供了内存管理、垃圾回收和平台无关性等功能。 2. **对象头**:在 JVM 内存模型中,对象头包含 MarkWord 和类类型指针。MarkWord 存储对象...

    JAVA学习笔记JDK6课件含演示代码

    1. **Java基础知识**:Java是一种面向对象的语言,它的核心特性包括平台无关性、自动内存管理(垃圾回收)、异常处理和丰富的类库。学习Java首先要掌握基本语法,如变量、数据类型、运算符、流程控制语句等。 2. **...

    java私塾基础入门笔记

    Java的核心优势在于其跨平台性,即“一次编写,到处运行”(Write Once, Run Anywhere)的理念。 Java分为三个主要版本: 1. **Java标准版(JSE,Java Standard Edition)**:适用于桌面应用程序和服务器端应用。 ...

    Java基础知识笔记详细版-菜鸟翻阅必备

    - 平台无关性:通过Java虚拟机(JVM)实现了“一次编写,到处运行”的目标。 - 健壮性:具有自动垃圾回收功能,减少了内存泄漏等问题。 - 安全性:内置了多种安全机制,如沙箱模型等。 - 简洁性:简化了C++中的...

    Java基础面试题 91道.pdf

    - **JRE**:Java Runtime Environment,包含了运行Java程序所需的Java虚拟机和核心类库。 - **JVM**:Java Virtual Machine,是Java程序运行的平台,负责解析字节码并执行程序,实现跨平台性。 5. **跨平台性**:...

    Java学习笔记

    Java作为高级语言的一员,尤其以其平台无关性著称,这得益于Java虚拟机(JVM)的存在,使得Java代码能在任何安装了JVM的平台上运行。 **1.2 Java的特点** Java作为一种现代编程语言,其特点鲜明: - **平台无关性...

Global site tag (gtag.js) - Google Analytics