前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java虚拟机:我们写的java代码究竟是如何运行起来的

Java虚拟机:我们写的java代码究竟是如何运行起来的

作者头像
kk大数据
发布2019-08-14 15:56:24
7880
发布2019-08-14 15:56:24
举报
文章被收录于专栏:kk大数据

点击上方蓝字关注我,让我成为你的专属小太阳

首先假设咱们写好了一份Java代码,那这份Java代码中,是不是会包含很多的“.java”为后缀的代码文件?

比如User.java,OrderService.java,CustomerService.java

平时在Eclipse、Intellij Idea等开发工具中,就有很多类似这样的Java源代码文件。

现在思考一下,当写好这些“.java”后缀的代码文件之后,接下来你要部署到线上的机器去运行,你会怎么做?

一般来说,都是把代码打成“.jar”后缀的jar包,或者是“.war”后缀的war包

然后,就是把打好的包放到机器上去部署

像下图这样:

实际上这里有一个非常关键的步骤,就是“编译”

也就是说,在我们写好的“.java”代码打包的过程中,一般就会把代码编译成“.class”后缀的字节码文件,比如 User.class,Hello.class,Customer.class

然后这个 class 后缀的字节码文件,他也是可以被运行起来的

就是下图的过程:

接着就要思考下一个问题:

对于编译好的这些 .class 字节码,是怎么让他们运行起来的呢?

这个时候就需要诸如 java -jar 之类的命令来运行我们写好的代码了

此时一旦你采用 java 命令,实际上此时就会启动一个JVM进程

这个 JVM 就会来负责运行这些 .class 字节码文件,也就相当于是负责预先我们写好的系统

下一步,JVM 要运行这些 “.class” 字节码文件中的代码,首先得把这些“.class”文件中包含的各种类给加载进来

此时就会有一个“类加载器”的概念

此时会采用类加载器把编译好的那些“.class”字节码文件给加载到JVM中,然后供后续代码运行来使用

最后一步,JVM 就会基于自己的字节码执行引擎,来执行加载到内存里我们写好的那些类了

比如你的代码有一个 main 方法,那么 JVM 就会从这个 main 方法开始执行里面的代码

它需要哪个类的时候,就会使用类加载器来加载对应的类,反正对应的类就在 class 文件中

最后,整体的过程就是这样的:

这就是通俗的java代码执行的过程

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 KK架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档