オブジェクトウェブ ASM

ASM
原作者エリック・ブルネトン
開発者OW2
初回リリース2002年; 23年前 (2002年
安定版リリース
9.7.1 / 2024年10月6日; 13か月前 ( 2024-10-06 )
リポジトリ
  • gitlab.ow2.org/asm/asm.git
書かれたジャワ
オペレーティング·システムクロスプラットフォーム
タイプバイトコードエンジニアリングライブラリ
ライセンスBSDライセンス
Webサイトasm.ow2.io

ASMライブラリはOW2コンソーシアムのプロジェクトです。バイナリJavaクラス(バイトコード)分解、変更、再構成するためのシンプルなAPIを提供します。このプロジェクトは、Eric Brunetonによって考案・開発されました。ASMは現在Java中心であり、他のバイトコード実装(.NETバイトコード、Pythonバイトコードなど)を公開するバックエンドは提供していません。

「ASM」という名前は頭字語ではなく、C言語のasmキーワードへの参照です。これにより、一部の関数をアセンブリ言語で実装できるようになります。[1]

用途

ASMは、ビジター指向APIを通じて、特定のJavaクラスの内部集約コンポーネントを公開するシンプルなライブラリを提供します。また、ASMはこのビジターAPIに加えて、クラスをオブジェクト構造として表現するツリーAPIも提供します。どちらのAPIも、バイナリバイトコードの変更や、新しいバイトコードの生成(既存のコードへの新しいコードの挿入、または新しいクラスの生成)に使用できます。ASMライブラリは、以下のような様々なアプリケーションで使用されています。

パフォーマンスとプロファイリング
パフォーマンス メトリックをキャプチャするインストルメンテーション呼び出しを Java クラス バイナリに挿入して、メモリ/カバレッジ データを調べることができます。(たとえば、エントリ ポイント/終了ポイントにインストルメンテーションを挿入します。)
新しい言語意味論の実装
例えば、Groovyはバイトコードの生成にASMを使用しています。また、 Java言語へのアスペクト指向の追加機能は、ポイントカット識別のためにクラス構造をASMで分解し、その後、アスペクト関連のコードをバイナリに注入することでクラスを再構成することで実装されています。(参照: AspectWerkz )

インボークダイナミック

バージョン3.2以降、ASMは新しいコードのサポートを追加し、最新のJDK 7バイナリでの動的型チェックinvokedynamicに依存するメソッド呼び出しを可能にし、動的型付け言語のサポートを容易にしました。[2] [3]

リリース履歴

この表には、主にバグ修正やパフォーマンス向上を行ったバージョンを除き、ObjectWeb ASMの歴史において重要なステップを踏んだリリースのみを示しています。[4]

リリース発売日ハイライト
2.02005年5月17日Java 5言語サポート
3.22009年6月11日新しいinvokedynamicコードのサポート。[2]
4.02011年10月29日Java 7言語サポート
5.02014年3月16日Java 8言語サポート
6.02017年9月23日コードベースを Gitlab
Java 9 言語サポート に移行しました
6.12018年3月11日Java 10 言語サポート
7.02018年10月27日Java 11 言語サポート
7.12019年3月3日Java 13 言語サポート
8.02020年3月28日Java 14 言語サポート
9.02020年9月22日Java 16言語サポート
9.12021年2月6日Java 17 言語サポート
9.22021年6月20日Java 18 言語サポート
9.32022年4月3日Java 19 言語サポート、新しい Maven BOM

参照

  • バイトコードエンジニアリングライブラリ
  • ジャバシスト

参考文献

  1. ^ エリック・ブルネトン;ロマン・ラングレ。クーパイ、ティエリー (2002)。 「ASM: 適応可能なシステムを実装するためのコード操作ツール」。 FranceTélécom R&D、DTL/ASR。CiteSeerX  10.1.1.117.5769 2023 年8 月 23 日に取得
  2. ^ ab Forax, Remi (2009-06-11). 「ASMがinvokedynamicをサポートするようになりました」 . 2009年11月14日閲覧
  3. ^ “2009年6月11日: ASM 3.2 (cvs-tag: ASM_3_2)”. ObjectWeb. 2009年6月11日. 2009年11月14日閲覧
  4. ^ “バージョン”. ObjectWeb . 2020年6月6日閲覧。
  • 公式サイト
  • OW2 ホーム - OW2 コンソーシアムのホーム ページ。
  • AspectWerkz - AspectWerkz プロジェクトのホームページ。(ASM を活用した注目度の高いプロジェクトの 1 つです。)
  • バイトコード ビジュアライザー - ASM ライブラリを使用する Java バイトコードの表示とデバッグのための無料の Eclipse プラグイン
「https://en.wikipedia.org/w/index.php?title=ObjectWeb_ASM&oldid=1311748360」から取得