通过前面的第一篇文章,对JVM整体脉络有了一个大概了解。第二篇文章我们通过对高级语言低级语言不同特性的探讨引出了Java的编译过程。有了前面的铺垫,咱们今天正式进入Java到底是如何运行起来的探讨。
目前大部分公司都是使用maven作为包管理工具,当我们运行mvn compile命令后,会在我们项目下生成一个target目录,该目录会有一个个classes文件。
接下来点击main方法,JVM要运行这些”.classes"文件,此时我们今天的主角就要出场了’类加载器‘。
紧接着JVM会通过自己的字节码执行引擎,来执行已经加载到JVM里的文件。这个过程其实就是把硬盘里的文件加载到计算机内存的过程,只是这部分内存交给JVM管理了。再来看下面这个图。
最后我们结合上篇给大家介绍的编译过程再补充整个流程,如下图
整个流程咱们简单梳理如下
- 源代码编译成.class后缀的字节码文件
- 类加载器把磁盘上的文件给加载到我们的内存中
- JVM充当内存管理者,来处理从外部磁盘加载到内存中的数据
- 针对加载到内存中的类调用执行器执行代码
整个流程其实很清晰了,后续会一步步拆解。