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] 维基百科

相关文章
|
15天前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
66 6
|
2月前
|
架构师 前端开发 Java
Java开发工程师的职业规划应该是什么样的?
Java开发工程师的职业规划涵盖多个阶段,包括初入行业(0-1年)、技能提升(1-3年)、技术专家(3-5年)及管理或专家路线选择(5年以上)。各阶段设定了明确的技能要求与职业目标,从掌握Java基础、常用框架到深入研究高级技术、微服务架构乃至担任管理职务或成为技术专家。通过持续学习与实践,结合个人兴趣,Java工程师可在技术或管理领域找到合适的发展方向,最终实现职业成功。
429 83
|
27天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
27天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
1月前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
24 3
|
1月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
48 3
|
1月前
|
Java
如何从Java字节码角度分析问题|8月更文挑战
如何从Java字节码角度分析问题|8月更文挑战
|
29天前
|
Java 程序员 编译器
|
2月前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
68 18
|
2月前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
下一篇
无影云桌面