一、SDK、JDK、JRE和JVM的关系
SDK(Software Develop
Kit,软件开发工具包),用于帮助开发人员的提高工作效率。各种不同类型的软件开发,都可以有自己的SDK。Windows有Windows SDK,DirectX
有 DirectX 9 SDK,.NET开发也有Microsoft .NET Framework SDK。JAVA开发也不含糊,也有自己的Java SDK。
Java SDK最早叫Java Software Develop Kit,后来改名为JDK,即Java Develop Kit。
JDK作为Java开发工具包,主要用于构建在Java平台上运行的应用程序、Applet 和组件等。
JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具和Java基础的类库(rt.jar)。
JRE(Java Runtime
Environment),
Java运行环境
。
所有的Java程序都要在JRE下才能运行。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
JVM(Java Virtual
Machine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机
,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。
下图清晰地展示了JDK(Java SDK)、JRE和JVM之间的关系:
可进一步了解 JDK和JRE目录的文件结构
二、为什么安装JDK后可能会出现两套相同的JRE?
jdk安装目录下会有一套JRE。
另一套JRE:C:\Program
Files\Java\jre6(用户选择的安装目录)---安装jdk后可以选择安装jre
根本原因就是:jdk提供了很多开发工具,本身就是用java编写的,运行这些工具的时候,就需要jre。
很容易证明这点:
JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在
<JDK安装目录>\lib\tools.jar 里。
① 命令行执行javac命令,可以看到输出javac命令提示
② 重命名jdk安装目录下的\lib\tools.jar为tools1.jar,然后执行javac,就会报错java.lang.ClassNotFoundException。
③ 执行java -classpath ..\lib\tools1.jar com.sun.tools.javac.Main 又正确了。
本质上javac.exe只是一个包装器(wrapper),底层调的是com.sun.tools.javac.Main,目的是为了让开发者免於输入太长的指令。既然com.sun.tools.javac.Main是用java编写的,那么运行时就需要jre。
三、如果一台电脑在安装JDK后有两套以上的JRE,谁来决定使用哪套JRE呢?
这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。
执行java.exe时,一定要记得两件事:
1. 那一个java.exe被执行:先搜索当前目录,然后搜索path指定的目录。
2. java.exe找到哪一套JRE搜索顺序如下:
① 自己的目录下有没有jre目录。
② 父目录底下jre子目录。
③ 查询Windows:Registry( HKEY_LOCAL_MACHINE\Software\JavaSoft\Java
Runtime Environment\ )。
[参考]
SDK、JDK、JRE和JVM的关系总结: http://javaeyes.iteye.com/blog/30667
- 大小: 13.6 KB
分享到:
相关推荐
虽然JDK和JRE都有各自的职责,但它们之间存在着密切的关系。实际上,JRE是JDK的一个子集,也就是说,JDK包含了所有JRE的功能,同时还添加了更多的开发工具和资源。这意味着如果你安装了JDK,你就同时拥有JRE的功能,...
### JDK、JRE、J2SDK与Eclipse SDK之间的关系 #### 1. JDK与JRE的关系 **JRE(Java Runtime Environment)**,即Java运行时环境,它包含了运行Java程序所需的基本组件,如Java虚拟机(JVM)、核心类库等。简单来说...
压缩包子文件的文件名"Java8.jre.tar"和"Java8.sdk.tar"分别代表JRE和SDK的打包文件,".tar"是一种常见的归档文件格式,通常用于Linux和UNIX系统中,用于将多个文件或目录打包成一个单一的文件以便传输和存储。...
3. **JVM、JRE和JDK的关系** - **JVM**(Java虚拟机)是JRE的核心部分,负责执行Java字节码。 - **JRE** 包含了JVM以及运行Java程序所需的基本类库和其他资源。 - **JDK** 包含了JRE的所有组件,并增加了用于...
它不仅包含了Java编译器、Java运行时环境(JRE),还提供了许多开发工具,如JavaDoc、Java虚拟机(JVM)、Java调试器(JDB)等。这个版本主要的新增功能包括: 1. **Lambda表达式**:这是Java 8最大的亮点之一,它...
标题"AIX-JDK8-JRE8_64位.rar"所指的是一款针对AIX操作系统的Java Development Kit(JDK)和Java Runtime Environment(JRE)的64位版本安装包。AIX,全称Advanced Interactive eXecutive,是由IBM开发的一种强大的...
Maven的POM文件描述了项目的配置、依赖关系和构建指令,使得团队协作和项目维护变得更加简单。 在实际开发中,开发者通常会设置Maven的本地仓库路径以缓存下载的依赖,减少网络请求。此外,Maven还支持插件机制,...
深入理解Java 2 SDK,尤其是JDK、JRE和JVM之间的关系,对每一个Java开发者来说都是必修课。从技术角度看,它们是构建和运行Java应用程序的基石;从学习角度看,探索其内部机制有助于提升编程技能和解决问题的能力。...
Java Development Kit(JDK)是Java编程语言的核心组件,它包含了一个Java运行环境(JRE)、编译器(javac)、各种工具(如jar、javadoc等)以及Java类库,使得开发者能够编写、编译、调试和运行Java程序。JDK的不同...
IBM的JDK1.8 64位版本包含了Java运行环境(JRE)和Java开发工具集(SDK)。其中,JRE使得用户能够在AIX系统上执行Java程序,而SDK则提供了编译、调试和性能分析等开发所需工具。 在提供的压缩包文件中,有两个重要...
对于Java开发者来说,JDK是必不可少的,因为它包含了Java编译器(javac)、Java虚拟机(JVM)、Java运行时环境(JRE)、Java文档生成器(javadoc)以及各种实用工具,如jar打包工具等。JDK 8u231是Oracle公司发布的...
本书特色有:说明JDK,JRE与JVM三者的关系:探讨Java应用程序的执行流程,让您以后不会再为JDK与JRE的版本问题苦恼;讲解类别载入器的运作机制:类别载入器兼具Java程序的弹性与安全性两项重大任务,您不能不了解它...
关于JDK和JRE的关系,一个常见的误解是它们可以单独使用。实际上,对于开发人员而言,安装了JDK就无需单独安装JRE,因为JDK自带了JRE组件。而如果是普通用户,只需要运行Java程序,则只需要安装JRE。 在JDK中,\lib...
这个版本的JDK不仅包含了基础的编译器javac和运行时jre,还有许多其他开发工具,如javadoc用于生成API文档,jps用于查看Java进程,jconsole用于监视JVM性能等。对于Java开发者而言,理解和掌握JDK 1.8的特性是至关...
JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 SE(JavaSE),standard edition,标准版,是我们通常用的一个...
JDK是Oracle公司提供的用于开发和运行Java应用程序的重要工具集合,它包含了Java编译器、Java运行时环境(JRE)、调试器、文档以及各种开发工具,如Java Archive(JAR)打包工具等。 描述中提到的“版本:JDK1.8.0_...
JVM是JRE的核心,它负责解析和执行Java字节码,使得Java应用程序具有跨平台的特性。 在安装或配置JDK时,通常需要设置两个重要的环境变量:JAVA_HOME和PATH。JAVA_HOME环境变量应该指向JDK的安装目录,例如解压后的...