学习java这么久了,突然发现自己对JDK和JRE还没有一个清晰的概念,故在网上搜集了一些相关资料并整理下来,填补一下自己的知识断层。
JDK和JRE
----------------
JDK是Java Development Kit的缩写,即java开发工具包,是开发人员使用的SDK,它提供java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JRE是Java Runtime Environment的缩写,即java运行环境,面向的对象是java的使用者,而非开发者。
说白了,JRE只提供用来运行java程序的环境,而JDK不仅可以提供JRE的功能,而且还提供java开发和代码编译的功能。
在安装JDK时会选择是否安装单独的jre,如果选择安装,那么会在JAVA_HOME下会单独有一个jre文件夹,例如:
我安装的是jdk1.6.0_29,安装完后,目录的结构如下:
JAVA_HOME
\jdk1.6.0_29
\jre
\jre6
为什么会有两个jre目录呢?
----------------------------------------
这是因为JDK里面的开发工具有很多是用Java语言实现的(如javac.exe、jar.exe等,放置在 jdk1.6.0_29\lib\tools.jar 里),bin目录下的命令(例如:javac.exe)只是一个包装器(Wrapper),它们的作用是为了让开发者不必直接使用tools.jar(使用tools.jar需要输入很长的指命),所以jdk bin目录下的程序都很小,一般不大于200K。
从下面例子可以看出bin中的工具是用java实现的
-------------------------------------------------------
先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main
这个意思是说,你输入
javac.exe
与输入
java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main
是一样的,会得到相同的结果。
既然这些工具是用java实现的,那么在使用这些工具的时候就必然要用到一套JRE,所以在JDK中自带了一套JRE,而且在这个JRE的bin目录中包含了client和server两个文件夹,其实就是两种jvm。
而位于JAVA_HOME目录下的那套JRE是用来运行一般Java程序用的。
JRE是java的运行环境,既然是运行环境,当然要包含jvm(也就是大家熟悉的虚拟机),还有所有java类库的class文件,这些文件在JRE的lib目录下被打包成了jar(rt.jar)。在windows上的虚拟机就是jre6/bin/client里面的jvm.dll。
如果电脑上安装了两个JRE,那怎么判定运行java的JRE是哪一个呢?
-------------------------------------------------------------------------------------------------
根据环境变量PATH的配置,系统会首先找到配置的的java.exe ;
(注:如果PATH最前面有“%SystemRoot%\system32;%SystemRoot%;”这样的配置,而且在Windows/system32下存在java.exe,那么系统会选择这个java.exe)
Java.exe的工作就是找到合适的JRE来运行Java程序,Java.exe依照底下的顺序来查找JRE:
- 自己的目录下有没有JRE;
- 父目录有没有JRE;
- 查询注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。
关于环境变量path和classpath
----------------------------------------
你在命令行中输入简单的名称(例如:java,javac)就可以执行相关的程序,但是有一个问题,系统是怎么知道这些程序文件放在哪的呢?
这个就是环境变量path的功劳了,path中存放的是一个目录列表,并使用分号“;”间隔,系统就是通过检索这些目录来定位要执行程序位置。
同样的道理,当java编译器或java虚拟机需要使用一个类文件时(当你从类库中引用了一个类),它们也要先知道从哪里可以获得这些文件,环境变量classpath的工作就是设置这些类文件的位置,它存放的也是夜歌目录列表,并使用分号";"间隔,java编译器或虚拟机会通过它来寻找试图加载的类文件。
所以,如果想让你的JDK工作,就必须配置好这两个环境变量,系统会通过path来找到java或javac的位置,java或javac会通过classpath找到他们需要的类文件。
add
----------
eclipse、idea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了
参考:
http://www.cnblogs.com/myitm/archive/2011/05/03/2035942.html
http://shmilylq.iteye.com/blog/244351
http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jdkfiles.html
http://www.ics.uci.edu/~thornton/ics23/LabManual/SettingUpJava.html
相关推荐
JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java 语言的两个核心组件,它们之间存在着一定的关系和区别。下面我们将详细介绍 JDK 和 JRE 的概念、区别和关系。 JDK JDK 是 Java 语言的软件...
此外,了解JDK和JRE的内部工作机制也有助于更好地管理和配置Java环境,从而提高程序的稳定性和性能。 总之,JDK与JRE虽紧密相连,但在功能定位上有明显的区别。理解它们的区别有助于更高效地进行Java开发和部署。
### JDK与JRE的区别:深度解析 在深入探讨JDK(Java Development Kit)与JRE(Java Runtime Environment)之间...总之,JDK和JRE各自服务于不同的目的,了解它们的区别对于正确选择和使用Java开发和运行环境至关重要。
标题中的"AIX JDK1.8 JRE1.8 32位"指的是IBM的Java开发工具包(JDK)和Java运行环境(JRE)的32位版本,这两个组件都是针对AIX操作系统设计的。AIX,全称Advanced Interactive eXecutive,是IBM推出的一种基于UNIX的...
简而言之,JDK和JRE是Java生态系统中的两个关键组成部分,它们之间存在着紧密的联系但也有所区别。对于开发者来说,需要安装JDK来进行Java程序的开发;而对于普通用户来说,则只需要安装JRE即可运行Java程序。理解这...
JDK(Java Development Kit)是开发Java应用程序所需的完整软件包,它包含了JRE以及开发Java应用程序所需的工具和资源。JDK的主要组成部分包括: 1. **JRE**:JDK包含了一个完整的JRE,用于运行Java程序。 2. **...
Java 1.8 JDK/JRE 是Java开发工具包和Java运行环境的组合,对于任何Java开发者来说都是必不可少的基础。在本压缩包中,你将找到用于编写、编译和运行Java应用程序的所有必要组件。让我们深入了解一下这两个核心组件...
Java Development Kit(JDK)是Java编程语言的核心组件,它包含了一个Java运行环境(JRE)、编译器、调试器和其他工具,使得开发者能够编写、测试和运行Java应用程序。JRE则是Java应用程序运行所需的环境,它不包含...
3. **JVM、JRE和JDK的关系** - **JVM**(Java虚拟机)是JRE的核心部分,负责执行Java字节码。 - **JRE** 包含了JVM以及运行Java程序所需的基本类库和其他资源。 - **JDK** 包含了JRE的所有组件,并增加了用于...
JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java programming language 的核心组件,安装和配置它们是 Java 开发的第一步。本文将详细讲解 JDK 和 JRE 的安装和配置过程,并提供了一个简单的...
根据提供的文件信息,我们可以深入探讨有关Java开发工具包(JDK)与Java运行环境(JRE)的相关知识点,特别是针对Java 1.6、1.7和1.8这三个版本。 ### Java JDK 和 JRE 的概念 #### 1. Java Development Kit (JDK)...
JDK和JRE安装视频
JDK 所需jar包
Java 1.8 JDK(Java Development Kit)和JRE(Java Runtime Environment)是Java编程语言的核心组成部分,用于开发和运行Java应用程序。这个压缩包“java1.8_jdk和jre.zip”包含了这两个组件的版本1.8.0_241。在本文...
通过本文,您将了解到 JDK 和 JRE 的安装过程,如何配置 Java 环境变量,包括配置 JAVA_HOME 和 PATH 变量,并验证 Java 的安装和配置是否成功。 一、JDK 和 JRE 的安装 JDK(Java Development Kit)是 Java 开发...