您的位置  > 互联网

虚拟机安装JDK的区别是什么?/bin目录

在安装JDK的时候肯定会选择是否安装单独的jre。 一般情况下,它们会安装在一起。 我也建议你这样做。 因为这将帮助您找出它们的差异:

Jre即java,java程序的运行环境。 既然运行起来,当然就必须包含jvm,也就是大家熟悉的虚拟机,以及所有java类库的class文件,打包成jar放在lib目录下。 你可以自己验证一下。 至于虚拟机在哪个文件上? 学过MFC的人都知道dll文件是什么,那我们看看jre/bin/下有没有jvm.dll? 那是一个虚拟机。

jdk是java kit,java的开发工具包,里面包含各种类库和工具。 当然,还包括另一个Jre。 那么为什么还要包含另一个 Jre呢? 此外,jdk/jre/bin 两个文件夹中都包含 jvm.dll。 描述是有两个虚拟机。 不知道你有没有注意到这一点?

相信大家都知道,jdk的bin目录下有Java程序需要使用的各种命令。 和jre的bin目录最明显的区别就是javac只能在jdk下使用。 这个很容易理解,因为jre只是一个运行环境。 这与发展无关。 正因为如此,一个具有开发功能的jdk,会同时拥有一个 jvm,以及自己的jre下的一个 jvm。 然而,一个只是运行环境的jre只需要本质jvm.dll。

记得在环境变量path中设置jdk/bin路径吗? 这应该是大家学习Java的第一步。 老师会告诉你javac和java不设置就不能使用。 确实jdk/bin目录包含了所有命令。 但是有没有人想过,我们使用的java命令并不在jdk/bin目录下而是在jre/bin目录下呢? 如果你不相信我,你可以做一个实验。 可以将jdk/bin目录下的java.exe剪切到其他地方,然后运行java程序。 你发现了什么? 一切都好!

那么有人就会问了? 我明明没有把jre/bin目录设置到环境变量中啊?

试想一下,如果Java是供大多数人使用的话,他们就不需要jdk进行开发了。 他们只需要jre就可以让java程序运行。 那么每个客户手动设置环境变量会有多麻烦呢? 所以当你安装jre的时候,安装程序会自动帮你把jre的java.exe添加到系统变量中。 验证方法非常简单。 可以看到系统环境变量的路径有类似“%%;%%;”的配置一开始。 ,那就接着往下看吧。 你发现了什么? 有一个java.exe。

如果你可以强制将jdk/bin移到变量前面,当然你也可以强制在jdk/jre中使用java,但除非必要,我不建议你这样做。 使用单独的jre来运行java程序也可以算是在客户环境下的测试。

通俗地说:jdk是java的开发包,其中包括jre; jre只是java的运行环境; 而JDK除了编译器和其他工具之外还包括相同版本的JRE

JDK是java开发工具包(java Kit)的缩写。 它是一个用于构建在 Java 平台上发布的应用程序、应用程序和组件的开发环境。 JDK是所有java应用程序的基础,所有java应用程序都构建在它之上。 它是一组API,也可以说是一些java Class。 要成为一名Java程序员,JDK是最必备的工具。

JRE是Java运行时环境(Java)的缩写。 它与Java虚拟机的概念基本相同。 一般来说,在谈论具体产品时,可以说“JRE”,而在理论上谈论模型时,我们经常使用“Java虚拟机”。 要使用Java程序,JRE是必不可少的环境。

如果机器上安装了多个版本的jdk,如下:

BEA 7.0自带一套JDK1.3.1_02

下载了最新的一套JDK1.4.1_02

自带一套JKD1.4.1_02

.1.7自带一套JRE1.1.7

Rose自带一套JDK1.3

自带JDK1.3一套

有6套JRE,每套JRE安装在不同的目录下,不会互相影响。 当在控制台中执行java.exe时,操作系统会按如下方式查找JRE:

首先检查当前目录下是否有JRE

然后检查父目录中是否有JRE。

然后在PATH路径中找到JRE(一般运行时从路径中查找,按照设置路径的顺序,以先到者为准)

注册表\\Java\你查看的键值指向哪个JRE(一般XP下是这个:C:\Files\Java\jre6)

最常用的方法是在PATH路径中查找JRE。 一般情况下,在运行自己的程序之前,你会在批处理文件中临时设置PATH,并将你使用的JRE放在PATH路径的前面,这样你就一定会运行它。 JRE不会造成版本混乱。

JDK是Java工具包。 简单来说,JDK是为开发者提供的SDK。 它提供了Java开发环境和运行环境。 SDK即Kit,一般指软件开发工具包,可以包括函数库、编译器等。

JRE代表Java,指的是Java运行环境,是为Java程序的用户提供的,而不是为开发人员提供的。

如果你安装了JDK,就会出现你的电脑有两套JRE,一套位于\jre,一套位于C:\Files\Java\jre1.5.0_15目录。 后一组的 Java 不如前一组先进。 虚拟机,不过只是把之前的Java虚拟机复制过来而已。 并且在安装JDK时,可以选择是否安装位于C:\Files\Java目录下的JRE。 如果只安装 JRE,而不安装 JDK,那么 C:\Files\Java 目录中只会安装一组 JRE。

JRE的地位就像一台PC。 我们编写的Win32应用程序需要操作系统来帮助我们运行它们。 同样,我们编写的Java程序也必须使用JRE来运行。 所以你安装了JDK之后,如果你在硬盘的两个不同的地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC,它们都具有运行Java程序的功能。 所以我们可以说,只要你的计算机安装了JRE,就可以正确运行Java应用程序。

1. 为什么Sun要求JDK安装两套相同的JRE?

这是因为JDK中有很多用Java编写的开发工具(如javac.exe、jar.exe等),它们都放在\lib\tools.jar中。 从下面的例子可以看出,先将tools.jar重命名为.jar,然后运行javac.exe,会显示如下结果: in "main" java.lang.: com/sun/tools/javac /Main这意味着,您输入的 javac.exe 与 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 相同,您将得到相同的结果。 从这里我们可以证明javac.exe只是一个包装器(),制作它的目的是为了避免开发者输入过长的命令。 而且我们可以发现\lib目录下的程序都很小,不超过29K。 从这里我们可以得出结论。 JDK中的工具几乎都是用Java编写的,因此它们也是Java应用程序。 因此,如果想要使用JDK附带的工具来开发Java程序,还必须自己附带一套JRE,所以位于C:\Files\Java目录下的JRE是用来运行一般Java的程式。

2、如果一台计算机上安装了两套以上的JRE,由谁来决定?

这个重要的任务落在了java.exe身上。 Java.exe的工作是找到合适的JRE来运行Java程序。 Java.exe 按以下顺序搜索 JRE: 自己的目录中是否有 JRE? 父目录中是否有JRE? 查询注册表:[\\Java ] 因此,java.exe 的运行结果与您的计算机使用的是哪种 JRE 有关。 执行力与此有很大关系。

添加:(摘要)

1. JVM——java就是我们常说的java虚拟机。 它是整个java实现跨平台的核心部分。 所有java程序首先都会被编译成.class类文件。 这个类文件可以在虚拟机中执行,也就是说该类并不直接对应机器的操作系统,而是通过虚拟机间接与操作系统交互,而虚拟机将程序解释到本地系统来执行。

2.JRE——java指的是java运行环境。 单独的JVM是无法执行类的,因为解释类时,JVM需要调用解释所需的类库lib。 在JDK安装目录中可以找到jre目录,其中包含bin和lib两个文件夹。 这里可以认为bin就是jvm,lib就是jvm工作所需的类库,jvm和lib是结合在一起的。 它被称为jre。 因此,当你写了一个java程序并编译成.class后,你可以将.cl​​ass文件用jre打包并发送给你的朋友,这样你的朋友就可以运行你写的程序了。 (jre中有java.exe运行.class)

3.JDK——java是一个java开发工具包。 基本上每个学习java的人都会先在机器上安装一个JDK。 那么它包括哪些部分呢? 我们先看一下JDK的安装目录。 目录下有六个文件夹,一个src类库源码压缩包,以及其他几个声明文件。 其中,运行java时真正有效的有以下四个文件夹:bin、lib、jre。 现在我们可以看到这样一个关系,JDK包含JRE,JRE包含JVM。 bin:最重要的是编译器(javac.exe):用于java与JVM交互的头文件 lib:类库 jre:java运行环境(注意:这里的bin和lib文件夹与bin和lib不同)在jre中)一般来说,JDK是用来开发java程序的,而jre只能运行类,而不能编译函数。

、idea等IDE都有自己的编译器,而不是使用JDK bin目录自带的编译器,所以在安装的时候你会发现它们只需要你选择jre路径就可以了。

欢迎工作一到五年的Java工程师加入Java技术交流群:

群内免费提供Java架构学习资料(包括高可用、高并发、高性能与分布式、Jvm性能调优、源码、Netty、Redis、Kafka、Mysql、、、Dubbo、Nginx等知识请利用好每一分钟、每一次趁着年轻,努力学习,提升自己,别用“没时间”来掩饰自己的懒惰!