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