从历史了解JVM,以及JVM的学习方向

JVM从编译到执行

image.png

JAVA程序执行过程

一个Java程序,首先经过编译成.class文件,然后JVM将其加载到方法区。执行引擎会执行这些字节码文件。执行时,会翻译成操作系统相关的函数。JVM作为翻译.class文件的存在。输入字节码,调用操作系统函数。

过程:JAVA文件—>编译器—>字节码-->机器码。

JVM全称JAVA Virtual Machine,也就是我们常说的JAVA虚拟机。虚拟机只识别class文件,并且可以把class文件解析成机器阅读的机器码,从而完成我们想要的操作。(最近在健身房健身,大家总是聊最近吃了什么粉(蛋白粉)。实际上,如果把我们的身体内部比作运行时数据区,那么我们常说的鸡蛋,牛肉,鸡胸肉等等就好比我们的各种语言。蛋白粉就相当于这些食物最终统一翻译成的.class文件(蛋白质)被我们人体吸收。当我们直接吃蛋白粉时,也就节约了.java文件编译称为.class文件的过程,能更好更迅速的被人体所吸收!然而更多的食物种类始终被大家所喜爱,就好比现在的Java一般)。

JRE,JRK,JVM的关系

JVM是翻译官,把class文件翻译成机器读得懂的机器码。JVM不会自己生成代码,需要手动编写。并且在编译过程中需要依赖很多类库。这就需要JRE。

JRE是除开JVM外,还为我们提供了相当多的类库jar包。它提供了许多已经封装好的功能,包括IO,SOCKET等等。至此,已经构成了java的运行环境。

但对于程序员来说,仅仅只是运行环境仍然不够,我们需要一个开发环境去编写代码。此时JDK提供了许多工具,包括运行,发布,调试以及反汇编工具。

总结:JVM的核心作用,从软件的角度排除了不同软件与不同系统之间的不兼容问题。

 

从跨平台到跨语言

image.png

跨平台性

可以通过jdk的不同工具翻译成统一的class语言,对于jvm来说读取的东西是一样的,因此体现了语言无关性。

语言无关性

不同的操作系统需要下载不同版本的jdk。因此可以将字节码翻译成对应系统的机器语言,因此体现了语言无关性。

JVM的发展历史

image.png

了解即可。

JVM整体知识模块

image.png

JVM涉及到非常庞大的知识体系,如内存结构,垃圾回收,类加载,性能调优,JVM自身优化技术,执行引擎,类文件结构,监控工具等,但是所有知识体系都一定与内存结构有关系。

垃圾回收是针对内存,类加载也是加载到内存中,性能优化涉及到内存优化,执行引擎与内存密不可分,类文件结构与内存的设计有关,监控工具也会监控内存,所以内存结构处于JVM的C位,因此第一个拉出来学。

JVM的本质其实就是一个虚拟的操作系统。除了虚拟化指令之外,还有一个重点就是虚拟化内存。虚拟化内存就是即将讲到的JVM内存区域。

 

猜你喜欢

转载自blog.csdn.net/weixin_47184173/article/details/109561689