このHotSwapを使用した実際の経験

コードをデバッグし、悪名高い「バグ」を探すと、変更を確認するためにアプリケーションサーバーを再起動しなければならない状況がしばしば発生します。 これは、我々が「ストリーム」から抜け出さなければならず、神経接続の脆弱な砂の城を破壊しなければならないという事実につながります。 アプリケーションサーバーで変更が利用可能になると、現在のタスクとwait-wait-waitから気をそらします。 ときどき大変です...変更されたクラスを「ホット」に置き換えてすぐに結果を見るのは素晴らしいことです。

画像

私たちの多くは、Java HotSpot VM Swapメカニズムの存在を認識しています。これにより、ホットスワップを行い、アプリケーションサーバー全体の再起動を回避できます。

画像

IntelliJ IDEAでは、キーボードショートカットを使用できます(:Command + Shift + F9 /⊞:Ctrl + Shift + F9)

Javaの現在の制限により、HotSpotでは、既存のクラスメソッドの本体を変更するためにのみこれを行うことができます。 その他の場合、変更されたクラスは「ホットスワップ」中に更新されません。

画像

この制限を克服するために、動的コード進化仮想マシン( DCEVM-Java HotSpot(TM)VMの修正を使用できます。これにより、リアルタイムで無制限の「ホット」クラス置換を行うことができます。

特にSpringなどのさまざまなフレームワークを使用する場合は、単にクラスを置き換えるだけでは不十分な場合があります。 そのような場合、いずれかのフレームワークの「ライフサイクル」を考慮する必要があります。 この問題をDCEVMと一緒に解決するには、特別なHotSwapAgentエージェントを使用できます。これにより、ホットスワップ機能が拡張され、お気に入りのIDEとの統合が簡単になります。

IntelliJ IDEAと統合するには:

1.特別なHotSwapAgent プラグインをインストールします

画像

2. HotSwapセクションで、IntelliJ IDEAの「コンパイル後のクラスの再ロード:常に」構成を設定します。

画像

3.プラグインを使用すると、プロジェクト全体または特定の構成に対してHotSwapAgentエージェントをアクティブ化できます。

画像

4.設定が成功すると、起動時に「HOTSWAP AGENT」というメッセージがコンソールに表示されます。

画像

5. 「ホットスワップ」では、変更されたクラスをコンパイルする必要がありますそのためには、キーの組み合わせを使用します(:Command + Shift + F9 /⊞:Ctrl + Shift + F9)。

視覚的なプレゼンテーションの例:

シナリオ1:クラスメソッドの本体を変更します。

画像

シナリオ2:クラス内にメソッドを追加し、コントローラーを変更します。

画像

素晴らしい「 ホット 」な開発を!

参照:
IntelliJ IDEAの HotSwap プラグインHotSwapAgentプロジェクトDCEVM

Source: https://habr.com/ru/post/J325700/


All Articles