一、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与JVM三者的关系:探讨Java应用程序的执行流程,让您以后不会再为JDK与JRE的版本问题苦恼;讲解类别载入器的运作机制:类别载入器兼具Java程序的弹性与安全性两项重大任务,您不能不了解它...
简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。 JDK就是Java Development Kit JRE是Java Runtime ...
本书特色有:说明JDK,JRE与JVM三者的关系:探讨Java应用程序的执行流程,让您以后不会再为JDK与JRE的版本问题苦恼;讲解类别载入器的运作机制:类别载入器兼具Java程序的弹性与安全性两项重大任务,您不能不了解它...
JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 SE(JavaSE),standard edition,标准版,是我们通常用的一个...
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及类库和支持文件,以实现您的应用程序。 JDK 使用 Java 基础类(包括 Swing 和 Java Platform Debugger Architecture)打包了说明性源代码和特定 API。它还以各种 ...
JDK、JRE、以及JVM 及初学配置 非常清晰的PDF
本书特色有:说明JDK,JRE与JVM三者的关系:探讨Java应用程序的执行流程,让您以后不会再为JDK与JRE的版本问题苦恼;讲解类别载入器的运作机制:类别载入器兼具Java程序的弹性与安全性两项重大任务,您不能不...
JDK和JRE之间的区别? 1:分别表示的含义不同 jdk:java软件开发工具包 jre:java运行环境 2:作用不同 jdk:当一个电脑上面安装jdk之后 会自动的安装jre 所以既可以编写程序 又可以运行程序 jre:当一个电脑...
JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。
您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及类库和支持文件,以实现您的应用程序。 JDK 使用 Java 基础类(包括 Swing 和 Java Platform Debugger Architecture)打包了说明性源代码和特定 API。它还以各种 ...
Java嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从Sun下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。
在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。 1.1jdk JDK(Java Development Kit) 是整个JAVA的核心,...
Preview the new Java 9 modules, SDK, JDK, JVM and more in this comprehensive early adopter title. This book covers what’s new in Java 9 and how to use these new features. Java 9 Revealed is for ...
Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。其基本思想是使用对象、类、继承、...1.3 JVM、JRE和JDK的关系是什么? JDK是(Java Development Kit)的缩写,它是功能齐全的 Java SDK。它拥有 JRE 所拥
VERSION=20.0.0 ./build安装sudo dpkg -i {graalvm-deb-path}将GraalVM安装到主要JRE / JDK对于包含.jinfo文件的安装,您可以在已安装的替代方法中设置主要的jre / sdk安装。此命令设置所有与jre / jdk相关的二进制...
java版斗地主源码 ...它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。 JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟
来使用和存储我的所有数据的任务和注意事项: 第一天: 为了在 Linux 上更快,我首先想通过 Eclipse 和 STS(Spring 工具套件)。 但我放弃并继续使用 IDEA 社区版。 我在这里需要一些 Linux 命令。 设置 $PATH 和 $...
o JDK 5 or JDK 6 (JRE alone is not sufficient) o Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows o Not Not Not Not compatible with Gnu Compiler for Java (gcj) Note: Note: Note: ...