2013-01-19 8 views
15

最近ホット・コードを使用しなければならない作業がありました。そこで、tools.jarで利用可能なJava Instrumentation APIを使用して作成しました。eclipseでホット・コード用のJava Instrumentation APIを使用していますか?

eclipseは新しいクラスファイルのホットリプレースに同じロジックを使用するのですか、同じJava APIを使用しますか?私はいくつかの場所から読み取るしようとしたが、明確ではありませんでした :

のEclipse JavaデバッガがEclipse Hot Code Replaceで別のJVM

にデバッグ チャネルを介してこの行を新しいクラスファイルを送信は明確ではありませんでした。

+0

あなたのリンクが壊れている、これを試してみてください - http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F。 – Perception

+0

@Perception私はそれが動作するnwを変更しました –

+0

Eclipseはオープンソースです - なぜあなたは*見ていないのですか?あなたはここでそれを見てどのように頭を起動することができます:http://www.vogella.com/articles/EclipseCodeAccess/article.html。また、あなたのソリューションが "うまくいけば"、Eclipseがどうやって*気にしますか? – paulsm4

答えて

7

私はeclipseが同じロジックを使用していると信じていますが、どちらもJVMTIというネイティブインターフェイスに依存しています。 JVMTIは、状態を検査し、Java仮想マシンで実行されているアプリケーションの実行を制御するためのツールを提供します。

Java Instrumentation ImplementationにJVMTIのエージェントがあります。 vmと対話して特定のタスクを実行するエージェント。 redefineClassesメソッドもあります。

Eclipse Javaデバッガまたはその他のツールはJPDA(Java Platform Debugger Architecture)を使用し、JPDAは主に3つの部分(JVMTI、JDWP、JDI)を持ちます。 JVMTIはデバッガとして動作し、JDIはデバッガとして動作し、JDWPはそれらの間の通信チャネルとして動作します。

最後に、それらはすべてJVMTIとやりとりし、同じロジックを使用します。

+0

貧しい質問への優秀な答え:) – paulsm4

関連する問題