Java工程师必知词汇:Java字节码

简介: Java 字节码(Java bytecode)是Java虚拟机执行的一种指令格式。

|名词定义|


Java 字节码(Java bytecode)是Java虚拟机执行的一种指令格式。

|特点|


每一个字节,有256个可能的代码值(28=256),因此一个字节的操作码最多可能有256种不同的操作。

指令可以基本分为以下几类:
• 存储指令 (例如:aload_0, istore)
• 算术与逻辑指令 (例如: ladd, fcmpl)
• 类型转换指令 (例如:i2b, d2i)
• 对象创建与操作指令 (例如:new, putfield)
• 堆栈操作指令 (例如:swap, dup2)
• 控制转移指令 (例如:ifeq, goto)
• 方法调用与返回指令 (例如:invokespecial, areturn)
除此之外,还有一些更特殊的指令,作为异常抛出或同步等作用。
大多数的指令有前缀和(或)后缀来表明其操作数的类型。如下表:

image.png

|扩展资料|


• Jikes,编译Java源代码到Java字节码(由IBM开发,用C++实现)
• Espresso,编译Java源代码到Java字节码(仅支持Java 1.0)
• GCJ,GNU Compiler for Java,编译Java代码到Java字节码;亦可以编译到机器代码。作为GNU Compiler Collection (GCC)的一部分提供。
有一些项目提供Java汇编器以便于直接用Java字节码进行开发。主要的Java汇编器如下:
• Jasmin,读取Java类的文字描述;用一种简单的使用Java虚拟机指令的类汇编语法,输出Java类文件
• Jamaica, 一种为Java虚拟机编写的宏汇编语言。其中,类与接口由Java语法定义,而其中的方法却由Java字节码定义。
还有其他的一些编译器,对于其他语言生成Java字节码,使其可以运行在Java虚拟机之上。
• ColdFusion
• JRuby和Jython, 两种基于Ruby和Python的脚本语言
• Groovy, 一种基于Java的脚本语言
• Scala,一种类型安全的通用编程语言,支持面向对象编程和函数式编程
• JGNAT和AppleMagic,编译Ada语言到Java字节码
• Clojure, 一种函数式的通用编程语言,提供优秀的并发性。是一种LISP方言
• MIDletPascal
• JavaFX Script 由Sun公司开发的一种脚本语言,运行于Java虚拟机之上

|参考资料|


[1] Jasmin Home Page
[2] Jamaica: The Java Virtual Machine (JVM) Macro Assembler. [2014-01-28].
[3] 维基百科

相关文章
|
5月前
|
自然语言处理 前端开发 算法
Java编译器优化秘籍:字节码背后的IR魔法与常见技巧
编译器将源代码转换为机器码的过程中,会经历多个中间表达形式(IR)的转换与优化。前端生成高级IR(HIR),后端将其转为低级IR(LIR)并进行机器相关优化。Java编译流程包括源码到字节码、再由即时编译器转换为内部HIR(如SSA图)、优化后生成LIR,最终编译为机器码。常见优化技术包括常量折叠、值编号、死代码消除、公共子表达式消除等,旨在提升程序性能与执行效率。
234 0
|
7月前
|
搜索推荐 算法 Java
2025 年互联网大厂校园招聘 JAVA 工程师笔试题及备考要点解析
本文针对互联网大厂校招Java工程师笔试题进行解析,涵盖基础知识、面向对象编程、数据结构与算法、异常处理及集合框架等核心内容。从数据类型、运算符到流程控制语句,从类与对象、继承多态到数组链表、排序算法,再到异常捕获与集合框架应用,结合实际案例深入剖析,助你系统掌握考点,提升应试能力。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
304 9
|
7月前
|
Java 数据库连接 API
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
322 2
|
11月前
|
机器学习/深度学习 Java PyTorch
Java工程师如何理解张量?
刚接触AI和PyTorch,理解“张量(Tensor)”是入门关键。张量可类比为Java中的多维数组,但更强大,尤其在AI领域支持GPU加速、自动求导等特性。它不仅能高效存储数据,还能进行复杂运算,是深度学习的核心数据结构。掌握张量的维度、数据类型及GPU加速特性,对学习PyTorch至关重要。
325 3
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
767 6
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
235 5
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
470 5
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
174 3
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
547 3