jvm、jre、jdk区别
刚刚遇到的问题,搭建docker所需的环境,需要将jvm与tomcat压缩文件传到虚拟机上,以为jvm就是jdk的包,查了一下,其实不是。
哈哈,原谅我是小白咯。
下面就说说吧。
1、jvm:java虚拟机,负责把.class 二进制文件翻译成不同系统上的机器操作指令。因此JVM实现了java的跨平台运行,它把它可识别的.class 文件在不同平台上翻译成不同的机器操作指令,可以在windows、linux上等不同平台上运行。jvm负责把class文件加载进内存, 它包含类加载器子系统,运行时数据区:方法区(静态区)、堆(new的对象)、栈(局部变量和方法的中间结果)、程序计数器、本地方法,垃圾回收系统、执行引擎。
2、jre:java运行环境,它包含了jvm和java项目运行所需要的java 类库, java.util java.sql java.long java.net 等。如果不编译只运行,那么有jre就可以了,java 命令负责拉起 JVM。
3、jdk:包含jre和编译等开发java项目所需要的一些工具,这些工具都在 jdk安装目录下的 bin目录下,包括 javac.exe java.exe jar.exe jvisiovm.exe、jconsole 等负责 编译、运行 和项目调试等。
在eclipse中执行 run as java application的时候,其实是调用 jdk的 java exe,javac 命令工具,根据 .classpath 的配置去找项目的本身的class文件和依赖的jar包的文件(classpath 里会去maven仓库里找依赖的jar包,不是找 targer下的lib包),然后执行的。
classpath配置的是java类库的位置以及执行字节码文件时查找文件的路径。 Java执行环境本身就是一个平台,执行于这个平台上的程序是已编译完成的Java程序( 会以.class文件存在)。