JVM基础知识
一个Java程序到底是如何运行的?
一个Java程序,首先要经过javac编译成.class文件,.class文件是给JVM进行识别的,JVM将.class文件加载到方法区,执行引擎会执行这些字节码,执行时,会翻译成操作系统相关的函数。
过程如下:Java文件-编译器-字节码-JVM-机器码
JVM,JRE,JDK的关系
首先看一下这个图,最表象的,就是JDKJREJVM,也就是JDK包含JRE,JRE包含JVM,那么这三个到底有什么区别呢?先从最小的开始说
JVM:JVM具体可以理解成就是一个平台,一个虚拟机,可以把class翻译成机器识别的代码。但是需要注意,JVM不会自己生成代码,需要大家编写代码,同时需要很多依赖库,这个就需要用到JRE
JRE:JRE除了包含JVM之外,还提供了很多的类库,也就说我们说的jar包(比如:读取和操作文件,连接网络,IO等等),这些东西都是JRE提供的基础类库。JVM标准加上实现了一大堆类库,就组成了Java的运行时环境,也就是我们常说的JRE
JDK:玩过Java的小伙伴应该都用过java-jar,javac等命令吧,如果只有jvm,jre,我们代码是写完了,但是怎么编译呢?或者代码出了问题怎么调试呢?这些都是JDK提供的,所以,jdk其实就是给我们提供了一些工具,一些命令,让我们完成编译代码,调试代码,反编译代码等操作。
为什么说Java是一次编译到处运行
不管是windows,mac,还是linux,unix,oracle