本文作者:凯少技术网

Java实践:我们写的java代码究竟是如何运行起来的?

凯少技术网 1个月前 ( 08-15 ) 60 抢沙发
摘要: 首先假设咱们写好了一份Java代码,那这份Java代码中,是不是会包含很多的“.java”为后缀的代码文件?比如User.java,OrderService.java,Custom...

首先假设咱们写好了一份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代码执行的过程


凯少技术网官方公众号

文章版权及转载声明:

作者:凯少技术网本文地址:https://www.skyko.cn/?id=494发布于 1个月前 ( 08-15 )
文章转载或复制请以超链接形式并注明出处凯少技术网

赞(0

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

发表评论

快捷回复:

评论列表 (暂无评论,60人围观)参与讨论

还没有评论,来说两句吧...