|名词定义|
Java 字节码(Java bytecode)是Java虚拟机执行的一种指令格式。
|特点|
每一个字节,有256个可能的代码值(28=256),因此一个字节的操作码最多可能有256种不同的操作。
指令可以基本分为以下几类:
• 存储指令 (例如:aload_0, istore)
• 算术与逻辑指令 (例如: ladd, fcmpl)
• 类型转换指令 (例如:i2b, d2i)
• 对象创建与操作指令 (例如:new, putfield)
• 堆栈操作指令 (例如:swap, dup2)
• 控制转移指令 (例如:ifeq, goto)
• 方法调用与返回指令 (例如:invokespecial, areturn)
除此之外,还有一些更特殊的指令,作为异常抛出或同步等作用。
大多数的指令有前缀和(或)后缀来表明其操作数的类型。如下表:
|扩展资料|
• 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] 维基百科