.j文件转换为.class文件,.java文件转换为.calass文件。所以
为什么我会选择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不适合这个。Jasmin是为了学习。