`

jdk 与 jre

阅读更多

引用:http://blog.csdn.net/forwayfarer/article/details/3321410

 

1. 定义

JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运行Java程序的平台。JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库(rt.jar)。

2. 区别

JRE主要包含:java类库的class文件(都在lib目录下打包成了jar)和虚拟机(jvm.dll);JDK主要包含:java类库的class文件(都在lib目录下打包成了jar)并自带一个JRE。那么为什么JDK要自带一个JRE呢?而且jdk/jre/bin下的client和server两个文件夹下都包含jvm.dll(说明JDK自带的JRE有两个虚拟机)。

记得在环境变量path中设置jdk/bin路径麽?老师会告诉大家不设置的话javac和java是用不了的。确实jdk/bin目录下包含了所有的命令。可是有没有人想过我们用的java命令并不是jdk/bin目录下的而是jre/bin目录下的呢?不信可以做一个实验,大家可以把jdk/bin目录下的java.exe剪切到别的地方再运行java程序,发现了什么?一切OK!(JRE中没有javac命令,原因很简单,它不是开发环境)那么有人会问了?我明明没有设置jre/bin目录到环境变量中啊?试想一下如果java为了提供给大多数人使用,他们是不需要jdk做开发的,只需要jre能让java程序跑起来就可以了,那么每个客户还需要手动去设置环境变量多麻烦啊?所以安装jre的时候安装程序自动帮你把jre的java.exe添加到了系统变量中,验证的方法很简单,去Windows/system32下面去看看吧,发现了什么?有一个java.exe。

3. 难点

如果安装了JDK,你的电脑就有两套JRE(JRE本身和JDK中的JRE),前面这套比后面那套少了Server端的Java虚拟机。

(1)为什么Sun要让JDK安装两套相同的JRE?这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在/lib/tools.jar里。如果我们将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 是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现/lib目录下的程序都很小,不大于29K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于JDK目录下的那套JRE就是用来运行一般Java程序的。

(2)如果一台电脑安装两套以上的JRE,谁来决定呢?这个重大任务就落在java.exe身上。java.exe的工作就是找到合适的JRE来运行Java程序。java.exe依照以下的顺序来查找JRE:1)自己的目录下有没有JRE;2)父目录有没有JRE;3)查询注册表:[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment]。所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

(3)JDK-->JRE-->Bin目录下有两个文件夹:server与client,这是真正的jvm.dll所在。jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录下的jvm.dll。

4. 最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。

分享到:
评论

相关推荐

    jdk与jre的区别

    JDK 与 JRE 的区别 JDK(Java Development Kit)和 JRE(Java Runtime Environment)是 Java 语言的两个核心组件,它们之间存在着一定的关系和区别。下面我们将详细介绍 JDK 和 JRE 的概念、区别和关系。 JDK JDK...

    jdk与jre的不同

    ### JDK与JRE的不同 #### 一、JDK(Java Development Kit)简介 JDK,全称为Java Development Kit,是Sun Microsystems(后被Oracle收购)为Java开发者提供的一套全面的开发工具集。它包含了编写、编译、调试、...

    jdk与jre的区别.

    ### JDK与JRE的区别 #### 一、JDK与JRE的基本概念 ##### JDK(Java Development Kit) JDK,即Java开发工具包,是面向开发人员使用的软件开发工具包(SDK)。它包含了编译、调试和运行Java应用程序所需的所有工具...

    jdk、jre、jvm的区别

    ### JDK、JRE与JVM的区别详解 #### 一、引言 在深入探讨JDK、JRE与JVM之间的区别之前,我们首先需要明确这三个概念的基本定义及其各自的作用。对于初学者而言,理解这些核心组件是学习Java编程的基础。 #### 二、...

    jdk和jre的区别

    ### JDK与JRE的区别 #### 一、概念解析 **JDK**(Java Development Kit):作为Java开发工具包,它是面向开发人员的核心组件。它不仅包含必要的运行环境(即JRE),还提供了完整的Java软件开发环境,包括编译器...

    JDK和JRE文件的区别

    ### JDK与JRE的区别:深度解析 在深入探讨JDK(Java Development Kit)与JRE(Java Runtime Environment)之间的区别之前,我们先来定义一下这两个概念。JDK是Java开发工具包,它包含了编译、运行和调试Java应用...

    AIX JDK1.8 JRE1.8 32位

    标题中的"AIX JDK1.8 JRE1.8 32位"指的是IBM的Java开发工具包(JDK)和Java运行环境(JRE)的32位版本,这两个组件都是针对AIX操作系统设计的。AIX,全称Advanced Interactive eXecutive,是IBM推出的一种基于UNIX的...

    jdk-6u26-windows-i586安装后jdk中jre文件

    **Java开发工具包(JDK)与Java运行环境(JRE)** JDK,全称为Java Development Kit,是Oracle公司提供的用于开发Java应用程序的软件包。它包含了编译、调试和部署Java应用所需的所有工具,如Java编译器(javac)、...

    官网下载java JDK或JRE的历史版本说明

    在软件开发领域,Java作为一种广泛使用的编程语言,其运行环境(JRE)与开发工具包(JDK)的重要性不言而喻。随着时间的发展,不同的Java版本适应了不同应用场景的需求。本文将详细介绍如何在Oracle官网上下载特定的...

    JDK JRE 的作用与区别

    ### JDK与JRE的作用及区别 #### 一、概述 在深入探讨JDK与JRE的具体差异之前,我们首先需要了解这两个概念的基本定义及其在Java开发环境中的地位。 #### 二、JDK(Java Development Kit) JDK是Java开发工具包的...

    JDK&JRE-8u181-windows-x64.rar

    **Java开发与运行环境:JDK与JRE详解** 在软件开发领域,Java是一种广泛应用的高级编程语言,尤其在企业级应用和分布式系统中占据重要地位。为了编写、编译和运行Java程序,我们需要Java Development Kit (JDK) 和 ...

    JDK&JRE-8u181-windows-i586.rar

    **JDK与JRE的关系** JDK是JRE的扩展,包含了开发和调试Java程序所需的额外工具。JRE是运行Java应用程序所必需的,但不包括编译或调试工具。换句话说,JRE是给终端用户安装的,让他们能够运行Java应用程序,而JDK则是...

    jdk、jre的安装及配置细节

    **Java Development Kit (JDK) 和 Java Runtime Environment (JRE) 安装与配置详解** 在计算机编程领域,Java是一种广泛使用的跨平台编程语言。为了运行和开发Java应用程序,我们需要安装JDK(Java Development Kit...

    JDK与JRE的关系

    **JDK与JRE的关系** Java Development Kit (JDK) 和 Java Runtime Environment (JRE) 是Java编程语言中两个至关重要的组件,它们之间的关系对于理解Java的生态系统至关重要。 **JDK**,全称为Java开发工具包,是...

    JDK,JRE,J2SDK,eclipse SDK之间的关系

    在Eclipse中,JRE与JDK的关系主要体现在以下几个方面: - **运行时JRE**:Eclipse本身作为一个Java应用程序,需要一个JRE作为运行环境。如果未安装JRE或JDK,启动Eclipse时会提示找不到JRE。 - **项目级别的JRE**:...

    java1.8jdk/jre.rar

    Java 1.8 JDK/JRE 是Java开发工具包和Java运行环境的组合,对于任何Java开发者来说都是必不可少的基础。在本压缩包中,你将找到用于编写、编译和运行Java应用程序的所有必要组件。让我们深入了解一下这两个核心组件...

Global site tag (gtag.js) - Google Analytics