在Java源文件上生成Jasmin j文件有什么好处?

时间:2014-06-08 13:59:49

标签: java bytecode jasmin

.j文件转换为.class文件,.java文件转换为.class文件。所以

为什么我选择Jasmin而不是javac? 有任何性能成本吗? 或者更喜欢Jasmin的任何其他原因。

2 个答案:

答案 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是为了学习。