jvm jdk 和 jre
下载jdk -- java development kit
mac下安装jdk后路径如下:
jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/zipfs.jar!/
这里面有三个概念:
jvm jre jdk
JVM – java virtual machine
java虚拟机,它是虚拟出来的计算机,包含自己的堆栈、计数器和指令系统,用于执行.class文件,由虚拟机将.class文件解释给本地系统执行,即调用本地的CPU指令集或OS系统调用。
JRE - Java Runtime Envirnment
JVM + JAVA核心类库和支持文件
JDK - java development kit
jre(jvm+核心库) + java工具(javac/jstack等)
原文链接:https://blog.youkuaiyun.com/axi295309066/article/details/60469630
java 是解释执行吗
我们开发的 Java 的源代码,首先通过 Javac 编译成为字节码(bytecode);在运行时,通过 Java 虚拟机(JVM)内嵌的解释器将字节码转换成为最终的机器码。这是经常说的解释执行
但是常见的 JVM,比如 Oracle JDK 提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)编译器,也就是通常所说的动态编译器,JIT 能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行。
一般是解释执行,流程: 源代码-javac编译->字节码-jvm解释器->机器码
jvm也提供了JIT编译器,针对热点代码 -JIT编译器->机器码
所以 java同时提供了解释执行和编译执行。