.j 文件转换为 .class 文件,.java 文件转换为 .class 文件。所以
为什么我会选择 Jasmin 而不是 javac?是否有任何性能成本?或任何其他喜欢 Jasmin 的原因。
Jasmin 的格式比较低级。例如,当你编译一个 .java 文件时,你不能得到一些你可以用 .j 文件得到的字节码序列。
因此,通过生成 .j 文件,您将拥有更多自由
来自 Jasmin 项目的网页:
Jasmin 最初是作为“Java 虚拟机”一书的伴侣而创建的
Jasmin 不是为了创建生产 Java 应用程序而编写的,Jasmin 主要用于教育目的。从一般的角度来看,您可以将任何 Java 应用程序表示为 Java 源代码,然后将其编译为 Java 字节码,这是对的。此外,没有任何 JVM 语言(例如 Scala 或 Groovy)能够创建不同的字节码。但它们有时能够以不同的、更易读的方式表达相同的字节码。
Jasmin 是用同样的想法构建的。如果你想了解 Java 虚拟机是如何工作的,你需要玩一点。因此,以更原始的方式表达 Java 类是有意义的,这样您就可以理解编译后的 Java 类的结构概念。但是,Jasmin 格式仍然比字节码格式更高级。例如,您不需要管理常量池。你可以写:
ldc "Hello World"
Hello World
而不是在将字符串添加到类的常量池后从索引中加载值。后者是相当无聊的簿记,Jasmin 会为您管理。因此,使用 Jasmin 进行学习。不是为了编写实际代码。使用 Jasmin 将无法获得性能。字节码是一种临时格式,Java 应用程序的速度由 JVM 的即时编译器获得,该编译器将解释字节码并加速它。通过编写自己的 Jasmin 指令,您甚至可能会降低性能,因为即时编译器无法识别您的模式。但同样,Jasmin 并不是为此而生的。茉莉是为了学习。