在进行“我们写的Java代码是怎么运行起来的?”这个话题之前,我们先来了解一个概念:JVM。
什么是JVM?
先来看下百度百科的定义:
定义描述得很清楚,其实我们只需要把它理解为一种工具,一种将java代码翻译给具体计算机是别的翻译机器,类似于你跟一个老外交流,但是你不懂英语,需要一个懂英语的帮你进行翻译,你才能理解老外的意思,这里你就是具体的计算机了。
百度百科
每个学习Java的人都应该听过这句话“write once run anywhere”编写一次,到处运行。实际上并不是你写的代码真的可以运行到任何计算机上,而是计算机之上又封装了一个虚拟的运行环境jvm,代码实际运行在jvm上,jvm对底层计算机做了封装,所以jvm我们可以理解为 "用于运行Java代码的一个虚拟的机器"。上图应该修改如下
我们写的Java代码是怎么运行起来的?
现在让我们来回到主题,来探讨下java代码是怎么运行的。
假设现在有一个写好的项目HelloWorld,其中包含很多Java后缀的代码,譬如:HelloWorld.java 。
我们来回顾下这些代码是怎么部署并运行的?
一般情况下我们会先将代码打成jar包或者war包,然后通过以下两种方式部署:
通过容器如Tomcat等来部署代码
通过“Java”命令来运行jar包中的代码
图中打包就是一个编译的过程:将.java代码编译成.class后缀的字节码文件 HelloWorld.class
编译好的“.class"字节码文件是怎么运行的?实际启动的时候,就是启动了一个JVM,由它负责运行机器上的这些代码
jvm运行字节码机制
jvm是如何将class文件加载到内存中供后续运行使用的呢?这里引入一个概念叫:类加载器。
类加载器:将.class文件加载到JVM中。供后续代码运行使用
总结
以上就是编写的java类具体运行机制,让我们来梳理一下:
了解JVM是个什么东西
写好的代码编译成”.class"后缀的字节码文件
JVM跟我们平时运行在机器上的系统之间是什么关系
类加载器的概念
领取专属 10元无门槛券
私享最新 技术干货