理論的には、クラスのリロードは JVM に組み込まれていますが、メソッドの本体内のコードのみを変更する限り、ほとんどの実装 (特に Oracle の) はリロード (ホット スワップ) のみです。
もう 1 つの問題は、Eclipse では WTP アダプターが連携して、変更されたクラス定義のみをデプロイする必要があることです (インクリメンタル デプロイ)。何らかの理由で、GlassFish は常に段階的な展開の大きな反対者でした。そのため、GlassFish の WTP アダプターは、最も小さな変更を加えた後でもサーバーを再起動します。
JBoss は以前は段階的な展開の支持者でしたが、AS 7 (「すべてを変更する必要がある」) 以降は、「サーバーの再起動」派の信奉者でもあります。
さらに別の問題は、単純なクラスのロードは多くの場合、ストーリーの一部にすぎないということです。EJB、JSF、JPA、および他の多くのフレームワークでは、クラスもフレームワークによって再登録する必要があり、キャッシュをクリアする必要があります。
これが、JRebel のようなものが登場する場所です。クラスに対するほぼすべての種類の変更をリロードします。また、WTP アダプターとは独立して動作するため、再起動が今日流行で明日は不自由なのか、それともまったく逆なのかというサーバー ベンダーの気まぐれから解放されます。JRebel には、多くのフレームワークの知識とプラグインもあります。
残念ながら、JRebel は完璧ではなく、失敗することもありますが、全体的にはうまく機能します。
もう 1 つアドバイスがあります。最新のアプリケーション サーバーのほとんどは、比較的高速なハードウェアでは 1 秒で起動し、小さなアプリケーションでは 1 秒、大規模なアプリでは 10 秒ほどで起動します。それらとセッションのシリアル化により、 JRebel のようなものはもうほとんど必要ありません。