1

.j ファイルは .class ファイルに変換され、.java ファイルは .class ファイルに変換されます。そう

javac ではなく Jasmin を選択するのはなぜですか? パフォーマンスコストはありますか?または、ジャスミンを好むその他の理由。

4

2 に答える 2

2

Jasmin の形式はより低レベルです。たとえば、.java ファイルをコンパイルすると、.j ファイルで取得できる一連のバイト コードを取得できません。

したがって、.j ファイルを生成することで、より自由になります。

于 2014-06-08T14:26:26.170 に答える
0

Jasmin プロジェクトの Web ページから:

Jasmin はもともと、書籍「Java Virtual Machine」のコンパニオンとして作成されました。

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 命令を作成すると、ジャスト イン タイム コンパイラがパターンを認識しないため、パフォーマンスが低下することさえあります。しかし、繰り返しますが、ジャスミンはこれを意図したものではありません. ジャスミンは学習用です。

于 2014-06-09T17:51:29.210 に答える