《Inside the JVM》一开始就指出,所谓“虚拟机”实际上在不同的语境下有不同的涵义。有时候它指的是虚拟机的“规范”(spec),有时候指的是虚拟机的具体实现(如Sun JDK, BEA JRockit),有时候指的是正在运行着的一个虚拟机的实例(你启动Tomcat或者JBoss,甚至一个j2se程序,都同时启动了一个虚拟机实例)。书中如无特别说明,指的一般都是“规范”。
虚拟机规范规定了.class文件的格式、类装载的规则、运行时内存的逻辑区块、方法调用时栈的动作等等。一旦某个虚拟机的具体实现(如Open JDK)声称它实现了Java虚拟机规范,那么也就是同时声称它在运行时的外部行为跟规范中所描述的是一样的。对于Java程序员而言,他的“平台”只有一个,就是虚拟机规范,只要他的.class编译完,无论到哪一个虚拟机上,Open JDK也好,JRockit也好,Sun JDK也好,甚至芯片级实现的JVM也好,都应该能够正常运行。这就是Java跨平台的真正涵义(当然,实际项目中,100%的跨平台项目是很少的,比如有些没有完全遵守规范写出的bug,在这个虚拟机上运行的时候或许能糊弄过去,但在另一个虚拟机上却未必能够)。帖子作者认为Java的跨平台是个“设计巧妙的骗局”,实在是言重了,我们不能天真地认为,“跨平台”就可以没有平台,事实上无论怎样我们总需要至少一个的。此外,即使是“跨平台”也是相对的,一个平台因为没有JVM的实现而“跨”不上去,太正常了,世上哪有什么绝对的事。
原文:http://www.iteye.com/topic/495977
分享到:
相关推荐
根据给定的文件标题“Java虚拟机规范”及其描述“Java虚拟机规范,了解虚拟机原理”,我们可以深入了解Java虚拟机(JVM)的核心概念和技术细节。虽然提供的部分内容未能直接展示文本内容,但从标题和描述中可以推断出...
《Java虚拟机规范 Java SE 8版》是Java开发者必须深入了解的重要文档,它详细阐述了Java应用程序在各种操作系统上运行的基础——Java虚拟机(JVM)的工作原理和行为规范。这个中文版的扫描版为中国的Java程序员提供...
这份"Java8语言和虚拟机规范"包含了对Java编程语言和Java虚拟机(JVM)的详细定义,是开发者深入理解Java平台核心机制的重要参考资料。下面我们将深入探讨其中的关键知识点。 一、Java 8语言规范(JLS8) 1. **...
《Java虚拟机规范(Java SE 7 中文版)》是Java开发者不可或缺的重要参考资料,它详细阐述了Java程序运行的核心平台——Java虚拟机(JVM)的工作原理与规范。本书针对Java SE 7版本,提供了关于JVM的深入理解,帮助...
介绍JVM规范中的最重要的内容——Class文件结构,同时介绍ASM库的使用以及对class文件的修改。 第十一课 字节码执行 案例以及javap JIT及相关参数 介绍JVM的字节码以及反汇编方法,同时介绍JIT相关的参数和应用。
《Java虚拟机规范(Java_SE_7)》详细阐述了Java SE 7版本的JVM工作原理、内存模型以及指令集等关键概念。这份规范是开发者深入理解Java平台和优化代码的重要参考资料。 首先,我们来谈谈Java虚拟机的主要职责。JVM...
### JVM底层原理——类加载子系统详解 #### 一、引言 Java虚拟机(JVM)作为Java程序运行的基础环境,其内部结构复杂且功能强大。本文将基于“JVM底层原理课件PPT”中关于类加载子系统的介绍进行深入解析。类加载子...
JVM是一个抽象的计算机,它遵循Java语言规范中的“Java虚拟机规范”。当Java程序被编译后,生成的是.class文件,里面包含的是二进制字节码。这些字节码在JVM上运行时会被解释成机器语言,从而在不同的操作系统上执行...
《Java虚拟机规范》是Java开发人员和技术爱好者深入了解JVM内部工作原理的关键文档之一。本规范详细介绍了Java SE 7版本中的JVM架构、设计原则及其运行机制,为Java平台上的应用程序提供了一致且高效的操作环境。 #...
- **Java定义**:Java是一种广泛使用的面向对象的编程语言,设计初衷是为了实现“一次编写,到处运行”的跨平台能力,这得益于其运行环境——Java虚拟机(JVM)的存在。 - **Java的开发流程**:Java应用程序的开发...
【JVM 分享】——深入理解Java程序的生命周期与执行机制 Java程序的生命周期始于源码,经过编译、加载和执行,最终在Java...通过深入学习JVM的工作原理,开发者可以更好地驾驭Java,创造出高效、稳定的软件系统。
【编译原理课程设计——算符分析法】是关于计算机科学中的一个重要领域,它涉及到如何将高级编程语言如Java转化为机器可理解的指令的过程。在Java开发中,编译器扮演着至关重要的角色,它负责将源代码转换为字节码,...
本文主要介绍了MIPS目标平台CLDC的Java虚拟机移植,包括Java虚拟机的概念、特征、发展现状,以及CLDC虚拟机的开源实现——phoneME Feature虚拟机的移植原理、移植过程和验证。同时,本文还对CLDC虚拟机的优化进行了...
JVM(Java Virtual Machine),即Java虚拟机,是一种用于计算设备的规范,它模拟了一个计算机环境,允许Java程序在这个虚拟环境中运行而无需针对不同平台进行重新编译。这一特性使得Java语言能够实现“一次编写,...
- 文件格式验证:验证字节流是否符合Class文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持的类型。 - 元数据验证:对字节码描述的信息进行语义分析,比如这个类是否有父类,是否...
这不仅为读者提供了更广泛的学习资源,也表明了《Java虚拟机规范》作为系列之一的重要性。 - **The Java™ Virtual Machine Specification**:这部分由Tim Lindholm、Gilad Bracha、Alex Buckley和Frank Yellin等人...
验证是为了确保类的数据结构符合JVM规范;准备阶段为类变量分配内存并设置初始值;解析则是将符号引用转换为直接引用的过程。 - **初始化**:在初始化阶段,类中的静态变量会被赋予程序员定义的初始值,同时类的...
【深入Java虚拟机(二)——类的生命周期(上)类的加载和连接】 Java虚拟机(JVM)是Java程序的核心,它负责解释和执行Java字节码。类的生命周期在JVM中是一个关键的概念,它涵盖了从类的加载到卸载的整个过程。...