引言
- 在自学JAVA部分,前面已经配置好了编写工具,但是下载JDK的时候我就看到了关于JDK,JRE,JVM这些东西,只是理解的模模糊糊,本文为个人专门搜索理解后的一个简单通俗的总结。
正文
首先是java的优势:
- 个人抽取了最关键的一个信息就是:
- Java是基于JVM虚拟机的跨平台语言,一次编写,到处运行;
其次是java优势的根源:
java介于编译型语言和解释型语言之间。编译型语言如C、C++这些底层,代码是直接编译成机器码执行,但是不同的平台(x86、ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码。解释型语言如Python、Ruby没有这个问题,可以由解释器直接加载源码然后运行,代价是运行效率太低。而Java是将代码编译成一种“字节码”,它类似于抽象的CPU指令,然后,针对不同平台编写虚拟机,不同平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,到处运行”的效果。
- 这样不就找到了其中一个JVM的存在?
关于JVM,JRE,JDK
-
JDK是整个Java开发的核心,它包含了JRE(运行环境);Java的基础类库(Java API),提供了编译、运行Java程序所需的各种工具和资源。(里面包含的文件介绍见参考资料,有更详细的解答)
-
JRE:jjava程序的运行环境,所有的Java程序必须依赖jre才能运行。
- jre中包含了jvm
- JVM+ lib库=JRE。
-
JVM是一个虚拟的中间处理站(个人理解可以比作只有唯一功能的虚拟机),只负责将编译后的字节码文件转换成当前计算机能理解并执行的指令(或者说是CPU指令),这是上述又是根源实现的所在地
-
关系如下:
-
通俗讲:JDK是面向开发者的,JRE是面向使用JAVA程序的用户的,这个点后续等理解深刻了再赘述更加通俗的个人理解,目前我需要理解的就是下面这个流程
- 利用JDK这个java工具包写出java程序,然后储存到.java文件中,然后由java的源码编译器javac变成成java字节码,储存到.class文件中
- 使用jre加载,验证执行java字节码,并使用包含的jvm讲字节码文件解析成机器码或者说机器指令来进行执行