2017-04-06 6 views
0

実行時にコードインジェクションについて読んでいましたが、Javassist、GluonJ、AspectJのように、コードを挿入する機能を提供するツールやAPIがたくさんあります。しかし、実行時にコードを注入する目的は理解できませんでしたが、Javaでサブクラス化することでオーバーライド動作を行うことができます。 JavassistとGluonJでは、実行時にクラスを作成できますが、なぜ誰もがそれをやっていますか?コードの差異と目的を理解するのに助けてください。Javaのコードインジェクションとサブクラスの違い

答えて

0

コードインジェクションは通常application that are used to modify/check/trace other software.に使用されています。Javaでは、通常、この種のライブラリをBytecode modification librariesと言います。インターネットで見ると、おそらくこの名前の下に詳細情報があります。

  1. Evosuite

    ここで私は、私は今、彼らのコアにバイトコード変更を使用している大規模かつ有名なプロジェクトの例をいくつか記載されているこのプロジェクトは、入力中のアプリケーションを取り、それのためのユニットテストを生成します。コードの挿入は、目的のプロジェクトと依存関係とトレーサビリティを探るために使用されます

  2. JaCoCO:このプロジェクトはJavaプロジェクトのためのツールです。アプリケーションに接続されているはずですが、JUnitテストを実行すると、達成されたカバレッジに関するレポートが生成されます。明らかにここでコードの注入は、テストの実行中に行われたすべてのメソッド呼び出しをトレースするために必要です。
関連する問題