每日一点:java原来是这么运行的(java程序运行的步骤)

yumo6661周前 (07-27)技术文章9

Java 是一种高级编程语言,它被设计成可以跨平台执行的语言,也就是说,Java 代码可以在任何支持 Java 虚拟机(JVM)的操作系统上运行。在 Java 中,源代码需要被编译成 Java 字节码(bytecode)才能被 JVM 执行,JVM再将Java字节码翻译成计算机可以理解的机器语言才能被执行。整个过程大致分为两个阶段:

第一阶段是将源代码转换成一种中间代码格式——Java 字节码(bytecode)。Java 字节码并不是直接由源代码翻译而来,而是通过将源代码经过编译器编译成中间代码,然后由虚拟机(JVM)将其翻译成机器码执行。这个过程称为解释执行。相比于直接将源代码翻译成机器码的方式,Java 字节码的优势在于它是一种平台无关的格式,也就是说,同一个字节码文件可以在不同的操作系统和硬件平台上执行。

Java 字节码是基于栈的指令集,它包含了一系列的指令,用于执行各种操作,例如:变量赋值、算术运算、逻辑运算、方法调用等。Java 编译器将源代码翻译成 Java 字节码的过程如下:

  1. 词法分析和语法分析:编译器会对源代码进行词法分析和语法分析,将源代码转换成抽象语法树(AST)的形式。
  2. 语义分析:编译器会对 AST 进行语义分析,检查代码的语义是否正确,并将 AST 转换成中间代码表示形式。
  3. 中间代码优化:编译器会对中间代码进行优化,以提高程序的性能和效率。常见的优化技术包括常量折叠、循环展开、代码移动等。
  4. 中间代码生成:编译器会将优化后的中间代码转换成 Java 字节码,生成的字节码文件通常以 .class 扩展名结尾。

Java 字节码被 JVM 解释执行的过程是将字节码文件加载到内存中,并对其进行解释执行。JVM 的执行过程如下:

  1. 类加载:JVM 会先将字节码文件加载到内存中,并对字节码文件进行验证、准备和解析。
  2. 字节码解释执行:JVM 会将字节码文件解释成机器指令,然后依次执行指令,将程序逐步执行到结束。
  3. JIT 编译:JVM 还可以使用即时编译器(JIT)对字节码进行动态编译,将字节码编译成本地代码,以提高程序的执行效率。

第二阶段是将字节码转换成机器码。这个过程发生在程序运行时,由 JVM 完成。在执行字节码之前,JVM 将会对其进行验证、解析、优化和执行等一系列操作,最终将字节码转换成机器码执行。

Java 的编译过程是一个复杂而严密的过程,它需要编译器、虚拟机等多个组件的协作。通过字节码这种中间格式,Java 实现了平台无关性的特性,并为 JIT 编译等高级优化技术的应用提供了基础

相关文章

微软发明了世界上最流行的编程语言!国产重量级选手紧随其后

Excel用户12亿碾压Python程序员,职场真相让人破防。微软最新数据揭露,全球每天有12亿人使用Excel处理数据,远超Python用户规模。电子表格早在引入LAMBDA函数后已成为图灵完备的编...

什么是java?java的优点是什么?包含Java快速入门课程,干货分享

一、什么是java?java是一种高级语言,简单,面向对象,多线程,高性能,安全。java语言:数据结构+算法+内存管理数据结构:数据在内存的分布方式算法:解决问题的方式内存的管理:内存的划分和释放j...

为什么会有这么多编程语言,我该怎么选择?

首先,恭喜所有的码农成为了新生代农民工!随着互联网时代的发展,码农、程序员也越来越被大家认可,甚至有很多人放弃原本的专业,想通过自学或者其他方式学习一门编程语言来进军互联网大厂,可当你看见五花八门的编...

Java做的IDE真的比C++做的慢很多吗?是偏见,还是技术在悄悄进化

今天,咱们要直面一个程序员界流传已久、甚至有点刻板印象的观点:Java做的IDE(集成开发环境)就是比C++做的IDE慢很多。 听到这话,很多刚入行的小白可能也会信以为真,觉得Java就是慢的代名词。...

java好学吗?java是不是最难学的语言?

java好学吗?java是不是最难学的语言?对于一些刚接触java的朋友来说,可能会有这样的疑问,下面就来一起了解下吧。 1、 java好学吗?  从某些方面来说,java比较容易学,如果是大学毕业...

都在学Java开发,Java语言到底好在哪儿?

Java语言作为编程界的应用最为广泛的语言,成为大家编程的首选。有些人可能只是因为听说Java前景好、Java比较好找工作、Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体...