直感的なAPIを備えた、手入れの行き届いたJavaバイトコード操作ライブラリを探しています。そこにはかなりの数があるようです。どれを試すべきかについて何か提案はありますか?
3 に答える
あなたの質問に対する最良の答えは、あなたの特定のニーズと目的によって決まります。あなたが達成しようとしていることを拡張することができれば、私はおそらくよりカスタマイズされた応答を提供することができます.
しかし、その代わりに、私の経験では、ASMはおそらく成熟度、柔軟性、使いやすさの最良の組み合わせを提供します。
- 比較的活発な開発が行われています。最新のリリースは 2009 年 6 月のものですが、開発者は定期的に VCS にコミットしています。
- これは、AspectJ、Groovy、Cobertura などの多くの著名な Java 製品ですでに広く使用されており、幅広いユーザー ベースとサポートのための幅広いコミュニティを約束しています。
- これはかなり完全に文書化されており、 OW2 コンソーシアムとコミュニティ全体から入手できる多数のチュートリアル、ユーザー ガイド、および参照ドキュメントがあります。
注意: @Yuri が下に残したコメントは、私が個人的にまだ遭遇したことのない状況を説明していますが、それは重大な障害となる可能性があります。さまざまなバイトコード操作ライブラリを評価する際は、彼の観察/経験を念頭に置いてください。
それは実際には、直感をどのように定義するかによって異なります;-) 私は現在のプロジェクトの特定のタスクのために 2 週間前にASMを使い始めましたが、それは魅力的に機能しました。それを理解して使用できるようになるまでに数時間しかかかりませんでしたが、API を直感的とは言えません。しかし、Java バイトコードについて少し知っていて、ビジター パターンに精通している場合、学習曲線はそれほど高くありません (IMO)。
ASM のもう 1 つの利点は、別のパッケージ (com.sun.xml.internal.ws.org.objectweb.asm およびサブパッケージ) ではあるものの、少なくとも Sun JDK では標準 API に明らかにバンドルされていることです。
この記事を見てみましょう: http://www.pabrantes.net/blog/space/start/2008-03-24/1
少し古いですが、まだ関連性があります。
ASM と Javassist は、現在最も使用されているものです。Bcelは死んでいます。