凡是接触过 Java 的人都知道 JRE 的概念,即 Java 运行时环境( Java Runtime Environment ),因为它是运行 Java 程序必不可少的(除非程序用 GCJ 等编译,但我怀疑这样处理后还能不能称之为“ Java 程序”了)。
Java 喊出的带有标志性的口号“ Write Once , Run Anywhere (一次编写,到处运行)”(记得某老师给俺们上课讲到这里时还不忘幽一默:到处运行?没有计算机就运行不了……),正是建立在 JRE 的基础之上。何以实现?就是在 Java 应用程序和操作系统之间增加了一虚拟层—— JRE 。程序源代码不是直接编译、链接成机器代码,而是先转化到字节码( bytecode )这种特殊的中间形式,字节码再转换成机器码或系统调用。前者是传统的编译方法,生成的机器代码就不可避免地跟特殊的操作系统和特殊的机器结构相关,很多装双系统的用户无法在 Linux 运行 Windows 下的大型游戏,心里那个郁闷(于是很多虚拟软件和模拟程序应运而生)。而 Java 程序的字节码文件可以放到任意装有 JRE 的计算机运行,再由不同 JRE 的将它们转化成相应的机器代码,这就实现了 Java 程序的可移植性。这样程序员也不用去关心程序运行的具体环境,而可以专心编写软件。这种分层抽象、隐藏细节的思想在计算机科学中处处可见,比如机器组织结构的设计、网络协议的实现等。 Pascal 语言的发明者 Niklaus Wirth ,就富有预见性地指出应该有这样一种可移植的语言,其生成的中间代码可以在一台假想的机器( a hypothetical machine )上运行。而 Java 虚拟机( Java virtual machine 或 JVM )就是这样的一台机器,它模拟实际处理器的结构,解释字节码。怎么一会说是 JRE ,一会儿又成了 JVM ,两者是否同物不同名?
回答是否定的。
JVM 是 Java 平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域。 JVM 通过抽象操作系统和 CPU 结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方法、主机硬件、主机操作系统无关。但是在一些小的方面, JVM 的实现也是互不相同的,比如垃圾回收算法,线程调度算法(可能不同 OS 有不同的实现)。 JVM 的主要工作是解释自己的指令集(即字节码)到 CPU 的指令集或 OS 的系统调用,保护用户免被恶意程序骚扰。 JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。
而 JRE 是 Sun 公司发布的一个更大的系统,它里面就有一个 JVM 。 JRE 就与具体的 CPU 结构和操作系统有关,我们从 Sun 下载 JRE 的时候就看到了不同的各种版本。同 JVM 一起组成 JRE 的还有一些 API (如 awt , swing 等)。 JRE 是运行 Java 程序必不可少的。
分享到:
相关推荐
一张图看懂JVM、JRE、JDK
JRE(Java Runtime Environment)是运行Java应用程序所必需的环境,它包含了JVM以及运行Java应用程序所需的库文件和其他资源。JRE的主要组成部分包括: 1. **JVM**:如前所述,JVM是JRE的核心组件,负责执行Java...
它包括Java运行环境(JRE),一套Java工具(如javac编译器、java命令行解释器、jdb调试器等),以及Java API类库,这些类库使得开发者能够访问Java的各种功能和类。JDK分为三个版本:标准版(Java SE)、企业版...
2. **Java虚拟机**(JVM):JVM是Java程序的执行引擎,它负责解释和执行字节码,实现跨平台运行。 3. **Java运行时环境**(JRE):JRE是运行Java应用程序所需的最小环境,包括JVM和Java核心类库。 4. **Java文档生成...
理解数据类型可以帮助我们更好地编写代码,而理解JDK、JRE和JVM的工作原理则有助于我们优化程序性能,解决运行时问题。 总之,Java中的数据类型是编程的基本元素,而JDK、JRE和JVM是Java程序开发和运行的基础设施。...
JDK(java Development Kit):java 的开发和运行环境,包括java 的开发工具和 jre,在程序员的电脑上当然要安装JDK; JRE(Java Runtime Environment):它是Java运行环境,包括,java 运行的所需的类库+JVM(java ...
JDK则是开发Java程序的工具集,包含JRE和开发工具;JVM作为两者之间的桥梁,使得Java程序能够在不同平台上无缝运行。理解这三个组件的作用和关系对于Java开发者来说至关重要,有助于他们更好地进行开发和部署工作。
此外,通过修改`jre/lib/management/management.properties`等配置文件,可以调整JVM的监控和管理选项,以适应SAP系统的管理需求。 6. **安全性**:SAP JVM通常会包含最新的安全补丁,以保护系统免受已知的Java安全...
JVM是Java平台的核心,它负责解释和执行Java字节码,实现了“一次编写,到处运行”的跨平台特性。 JVM是JDK中的关键组件,它的主要任务是加载、验证、解析、执行字节码。JVM还管理着内存区域,包括堆、方法区、栈、...
Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java应用程序的运行基础。理解这三个术语以及它们之间的关系是每个Java开发者必备的知识。 JDK(Java Development Kit)是Java开发工具包,它是Java开发...
本文主要讲解JDK、JRE和JVM之间的区别。 一、JDK、JRE、JVM的关系 1. JDK(Java Development Kit):Java开发工具包,是Java开发人员必备的软件,包含了编译器(javac)、JRE、调试器、文档生成工具、打包工具等。...
Java开发中的JDK、JRE和JVM是三个至关重要的组件,它们构成了Java技术栈的基础。理解它们的区别和关系对于任何Java开发者来说都是至关重要的。 首先,Java开发工具包(JDK)是Java编程的核心组件,它包含了开发Java...
Java代码的编译和执行涉及从源代码到字节码的转换,再到JVM执行引擎解释执行字节码的过程。Java源码编译机制包括三个主要步骤:分析和输入到符号表、注解处理和语义分析、生成class文件。生成的class文件包含了类的...
Java 技术体系的核心组成部分包括 JDK (Java Development Kit),JRE (Java Runtime Environment) 和 JVM (Java Virtual Machine)。理解这三个概念对于Java开发者至关重要。 首先,JDK是Java开发工具包,它是Java...
Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java技术的基础框架。下面将详细阐述这三个术语的区别与联系。 首先,JDK(Java Development Kit)是Java开发工具包,它是整个Java开发的核心。JDK包含...
- **JRE**:主要由Java虚拟机(JVM)和Java核心类库构成,用于支持Java程序的运行。 ##### 2. 使用对象差异 - **JDK**:面向的是开发者,用于开发Java应用程序。 - **JRE**:面向的是最终用户,只需安装JRE即可...
### JDK与JRE的区别:深度解析 在深入探讨JDK(Java Development Kit)与JRE(Java Runtime Environment)之间...总之,JDK和JRE各自服务于不同的目的,了解它们的区别对于正确选择和使用Java开发和运行环境至关重要。
Java运行环境(JRE,Java Runtime Environment)是执行Java应用程序必不可少的组件,它为Java程序提供了运行所需的系统库和环境。JRE包含了Java虚拟机(JVM,Java ...正确安装和配置JRE和JDK是进行Java开发的第一步。
通过以上介绍,我们可以清晰地看到JDK、JRE和JVM之间的关系: 1. **JDK** 包含了JRE,并增加了开发工具,如编译器、调试器等,主要用于开发Java应用程序。 2. **JRE** 包含了JVM和核心类库,主要用于运行已编译的...