前言

我们日常的工作中都使用开发工具(IntelliJ IDEA 或 Eclipse 等)可以很方便的调试程序,或者是通过打
包工具把项目打包成 jar 包或者 war 包,放入 Tomcat 等 Web 容器中就可以正常运行了,但你有没有想
过 Java 程序内部是如何执行的?

执行流程

其实不论是在开发工具中运行还是在 Tomcat 中运行,Java 程序的执行
流程基本都是相同的,它的执行流程如下:

先把 Java 代码编译成字节码,也就是把 .java 类型的文件编译成 .class 类型的文件。
这个过程的大致执行流程:
Java 源代码 -> 词法分析器 -> 语法分析器 -> 语义分析器 -> 字符码生成器 -> 最终生成字节码,其中任何一个节点执行失败就会造成编译失败;

把 class 文件放置到 Java 虚拟机,这个虚拟机通常指的是 Oracle 官方自带的 Hotspot JVM;
Java 虚拟机使用类加载器(Class Loader)装载 class 文件;

类加载完成之后,会进行字节码效验,字节码效验通过之后 JVM 解释器会把字节码翻译成机器码交由操作系统执行。但不是所有代码都是解释执行的,JVM 对此做了优化,比如,以 Hotspot 虚拟机来说,它本身提供了 JIT(Just In Time)也就是我们通常所说的动态编译器,它能够在运行时将热点代码编译为机器码,这个时候字节码就变成了编译执行。Java 程序执行流程图如下:

Java程序是如何执行的相关推荐

  1. Java面试题16 牛客 以下java程序代码,执行后的结果是()

    Java面试题16 牛客 以下java程序代码,执行后的结果是() 1 2 3 4 5 6 7 8 9 10 public class Test {     public static void ma ...

  2. 第 1-1 课:Java 程序是如何执行的?

    了解任何一门语言的精髓都是先俯览其全貌,从宏观的视角把握全局,然后再深入每个知识点逐个击破,这样就可以深入而快速的掌握一项技能.同样学习 Java 也是如此,本节就让我们先从整体来看一下 Java 中 ...

  3. java程序是怎么执行的

    java程序是怎么执行的 埋坑待填, 这一篇是总览,然后细化各个部分. java程序的运行过程是开发人员进行代码的开发,然后通过编译器编译成java字节码文件,java虚拟机(jvm)把字节码文件加载 ...

  4. java怎么运行_不要再问我Java程序是怎么执行的了!

    什么是Java虚拟机? 要弄明白Java程序的执行过程首先要了解一下Java虚拟机. 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构 ...

  5. java flv转mp3_用java程序调用ffmpeg执行视频文件格式转换flv

    用java小例题说明更直观:(可以直接编译运行) 环境我在windows平台下测试的... 需要在e:/下有ffmpeg.exe;mencoder.exe;drv43260.dll;pncrt.dll ...

  6. java程序制作 exe执行文件

    一.工具准备 1.下载 exe4j: Download exe4j 2.下载innosetup:Inno Setup Downloads 二.IDEA制作可执行jar包 file -> Proj ...

  7. Java 程序是如何执行的

    了解任何一门语言的精髓都是先俯览其全貌,从宏观的视角把握全局,然后再深入每个知识点逐个击破,这样就可以深入而快速的掌握一项技能.同样学习 Java 也是如此,本文章就让我们先从整体来看一下 Java ...

  8. java程序基础——SQL执行顺序

    SQL执行顺序 1.from 2.join 3.on 4.where 5. group by(开始使用select中的别名,后面的语句中都可 以使用) 6.avg,sum.... 7.having 8 ...

  9. 编写java程序的常见问题_Java程序的编写与执行、Java新手常见的问题解决

    原标题:Java程序的编写与执行.Java新手常见的问题解决 今天,我们来写一段Java程序.然后看看Java程序是如何执行的,以及Java新手小白遇到的问题和解决办法. HelloWorld的编写 ...

最新文章

  1. 地面标识检测与识别算法
  2. 天堂Lineage(單機版)從零開始架設教學
  3. 2019 牛客多校第一场 F Random Point in Triangle
  4. 分布式系统的那些事儿(六) - SOA架构体系
  5. 如何在 Dapper.NET 中使用事务?
  6. 任务计划命令 linux,linux执行一次性任务计划at命令
  7. 一调计算机专业综合理论试卷,一调计算机专业综合理论试卷(盐城)(新编)
  8. ResourceUtils读取properties文件
  9. [转]ETL随笔(二)
  10. MYSQL 用户的操作
  11. Monte-Carlo算法(基本原理,理论基础,应用实践)
  12. 计算机语言发展简史,计算机语言发展简史
  13. 关于Go语言的底层,你想知道的都在这里!
  14. 注册@MSN.com后缀邮箱的地址
  15. 正菱台体积在线计算机,正多棱台体积,表面积,棱长,斜高,底面积,质量在线计算器_三贝计算网_23bei.com...
  16. 计算机编程语言的应用
  17. 微信小程序快速创建wxml、js、json、wxss新文件
  18. MFC进度条控件颜色的设置
  19. UDP协议、UDP和TCP优缺点对比
  20. 全球与中国半导体晶圆静电卡盘(ESC)市场现状及未来发展趋势

热门文章

  1. 江苏成人高考低于录取分数10分,能被录取吗
  2. 上海擎标助力联通(江苏)产业互联网有限公司荣获ISO22301业务连续性体系认证
  3. android中onclick事件失效,Android中OnClick事件的三种方法
  4. 创维电器拟在创业板上市:收入主要靠代工贴牌,高度依赖小米系
  5. 我年轻的时候通过跳槽涨工资
  6. 矩阵乘积转置规则证明
  7. PHP函数json_decode的用法,PHP json_decode()用法及代码示例
  8. IT服务如何产品化?
  9. SQL 极简核心:算术运算
  10. pandas中的dropna()函数和np.dropna()函数