2012-02-17 4 views
0

私はhttp://www.humblebundle.comでライブストリームを見ていて、アプリケーションを実行しているのを見て、Eclipseのコードを変更しました。次回のコンパイル時や実行時に変更されただけですか、何らかの形で実行中のアプリケーションを実際に変更していたのでしょうか?リアルタイムコードのコンパイル?

+2

質問にはさらに多くのコンテキストを含める必要があります。そのため、ライブストリームが終了した後は意味があります。 – millimoose

答えて

3

時には。 デバッグ・モードでは、eclipseは実行中のJVMでクラス・ファイルをコンパイルおよび変更できます。これはホット・コード置換と呼ばれます。

アイデアは、あなたが与えられたランタイム ワークベンチ上のデバッグセッションを開始し、開発ワークベンチにJavaファイルを変更し、それが 実行中に デバッガが受信VMのコードを置き換えますことができるということです。再起動は必要ないので、「ホット」への参照。

出典:Eclipse Wiki

Eclipseが再起動を促すメッセージが表示されます。その場合には、これは動作しません特定の状況があります。 Hot code replace failed

+0

「特定の状況」とは、メソッドの本体以外のものを編集しているとき、つまり新しいメソッドを追加したり、署名を変更したり、新しいクラスや設定を変更したりするときのものです。だから、基本的にホットコードの置き換えは非常に非常に限られています –

0

実行中にアプリケーションコードを変更する機能は、デバッガの機能です。 Eclipseや他の多くの普及しているIDEでは、「すぐに」動作します。機能には、いくつかの制限があります。

1

はこれがhot code replaceと呼ばれるなど、クラスのメンバーを追加/削除、メソッドのシグネチャを変更することはできません。

アイデアは、あなたが与えられたランタイムワークベンチ上でデバッグセッションを開始することができるということです開発ワークベンチ内のJavaファイルを変更し、が実行されている間に受信側VMのコードをデバッガで置き換えます。再起動は必要ないので、「ホット」への参照。

0

デバッグモードの場合は、アプリケーションの実行中に特定の変更を加えることができます。有効かどうかは、変更が現在ロードされているコードかどうかによって異なります。たとえば、ソート機能を変更するには、プログラムがソートされていない状態で、次にソートするときに新しいコードを使用します。

1

ストリームから実際には分かりません。 Javaはある程度制限されており、デバッガを使用してJVMによってロードされたクラスを置き換えることができます。 JRebelもあり、これらの制限が大幅に解消されています。