2

ASMとJavassistには、Javaバイトコードの生成/変換に関して異なる長所と短所があるようです。たとえば、Javassistのバイトコード生成機能は、プログラムを文字列で生成してその場でコンパイルするのと同じくらい簡単なので、非常に使いやすいです。ただし、ASMのビジターアプローチは、他の種類のタスク(Javaルーチンを別の言語に変換するなど)に便利な場合があります。

同じJavaプロジェクトで両方のライブラリを使用して、それぞれの異なるシナリオの要件に応じて最も便利なライブラリから利益を得ることができますか?覚えておくべき特別な考慮事項はありますか?同じクラスのバイトコードを操作するために両方のライブラリを使用することはできないという直感がありますが、それでも可能ですか?

4

1 に答える 1

1

常識的に言えば、苦労して ASM や低レベルの Java バイトコードを学習した場合、Javassist はやや冗長になります。しかし、実用的な観点からは、両方を使用することを妨げるものは何もありません。私が間違っていなければ、Hibernate はまさにそれを行います。

同じクラスで ASM と Javassist を使用する場合、各フレームワーク API の詳細には立ち入らず、バイト配列だけを扱う場合は、1 つのツールでロードして変換し、結果のバイト配列を取得し、別のフレームワークを使用してそれを処理するだけで済みます。バイト配列。

于 2012-10-24T15:43:06.323 に答える