Java代码是如何运行起来的

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

比如User.java,OrderService.java,CustomerManager.java

其实咱们Java程序员平时在Eclipse、Intellij IDEA等开发工具中,就有很多类似这样的Java源代码文件。

当我们写好这些".java"后缀的代码文件之后,接下来你要部署到线上的机器上去运行,你会怎么做?

一般来说,都是把代码给打成".jar"后缀的jar包,或者是".war"后缀的war包,是不是?

然后呢,就是把你打包好的jar包或者是war包给放到线上机器去部署。

这个部署就有很多种途径了,但是最基本的一种方式,就是通过Tomcat这类容器来部署代码,也可以是你自己手动通过"java"命令来运行一个jar包中的代码。

但是实际上这里有一个非常关键的步骤,那就是"编译"​

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

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

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

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

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

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

所以平时我们写好的某个系统在一台机器上部署的时候,你一旦启动这个系统,其实就是启动了一个JVM,由它来负责运行这台机器上运行的这个系统。


接着下一步,JVM要运行这些".class"字节码文件中的代码,那是不是首先得把这些".class"文件中包含的各种类给加载进来?

这些".class"文件不就是我们写好的一个一个的类吗?对不对?

此时就会有一个"类加载器"的概念。

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

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

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

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

相关推荐
大鸡腿同学2 分钟前
【成长类】《只有偏执狂才能生存》读书笔记:程序员的偏执型成长地图
后端
0xDevNull12 分钟前
MySQL数据冷热分离详解
后端·mysql
AI袋鼠帝20 分钟前
OpenClaw(龙虾)最强开源对手!Github 40K Star了,又一个爆火的Agent..
后端
新知图书2 小时前
搭建Spring Boot开发环境
java·spring boot·后端
宸津-代码粉碎机2 小时前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python
小码哥_常2 小时前
一个Starter搞定六种防护,Spring Boot API的超强护盾来了
后端
小村儿4 小时前
连载04-最重要的Skill---一起吃透 Claude Code,告别 AI coding 迷茫
前端·后端·ai编程
IT_陈寒5 小时前
Vite的alias配置把我整不会了,原来是这个坑
前端·人工智能·后端
gelald5 小时前
Spring Boot - 自动配置原理
java·spring boot·后端
希望永不加班6 小时前
SpringBoot 集成测试:@SpringBootTest 与 MockMvc
java·spring boot·后端·log4j·集成测试