jdk,jre,jvm的理解
jdk里面包好了jre(jre里面又有jvm),当然jdk里面不只有jre,jre里面也不是只有jvm
jdk里面有javac编译器,可以将源代码编译成.class字节码,然后由java执行。
如果我们发给别人的就是class后缀的java文件,那么别人只需要安装jre就可以运行了。
使用jdk开发完成的java程序,交给jre去运行
安装JDK后,Java目录下有jdk和jre两个目录,但jdk下还有一个jre目录,而且这个jre比前面那个jre在bin目录下少了个server文件夹(Server端的Java虚拟机)!前一个jre俗称通用jre,后一个俗称内置jre。如下图所示:
两个jre大体相同,有细微的差别。
JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 里面,它们本身运行的时候必须自行附一套JRE才行;所以开发人员需要 java 开发环境,安装jdk时,内置jre在JDK安装过程中会自动安装。
通用JRE则是用来执行我们自己编写的JAVA程序;所以普通用户装通用jre即可。
注意:因为编译时,系统找的是jdk下的jre,而不是最外层的jre。这意味着外层jre不能用于调试,否则会报错,例如在eclipse中会提示Unknown Source
再说三个libJDK下的lib包括java开发环境的jar包,是给JDK用的,例如JDK下有一些工具,可能要用该目录中的文件。例如,编译器等。
JRE下的lib只是运行java程序的jar包,是为JVM运行时候用的。包括所有的标准类库,和扩展类。
JDK下的JRE下的lib是开发环境中,运行时需要的jar包。最典型的就是导入的外部驱动jar包。因为编译时,系统找的是jdk下的jre。而不是最外层的jre。
参考文章:https://www.cnblogs.com/sylvia-liu/p/4203797.html
JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。
JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。
java的基础类库是在jdk下面的lib目录下面的(基础类库是写代码的时候要用到的java api开发文档)
java类库的包:https://www.cnblogs.com/tangjiang-code/p/8313395.html
JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。