What's DCEVM
https://github.com/dcevm/dcevm
http://hotswapagent.org/
Java実行中に動的にコードを差し替えるためのJVMの拡張。
HotSwapAgentと組み合わせて、アプリケーションを再起動することなしにコードの変更を反映することができる。
IntelliJのプラグインがあるのでそれと合わせて使う方法を書きます
参考:
https://github.com/dmitry-zhuravlev/hotswap-agent-intellij-plugin#dcevm-installation
他のHot Swapツールとの比較
Javaを再起動せずにソースコードの変更を反映する方法はいろいろある
IntellijやEclipse等のIDEのホットスワップ機能
クラスの構成に変更がなければ動的に差し替えられる。
が、変更があったときには差し替えられない(メソッドが増えた、名前が変わった、pricvate→publicにした、など)
JRebel
最強。だけどお値段が高い
Spring Loaded (※Spring専用)
開発が止まっている
DCEVM + HotSwapAgent
親クラスやインターフェースの変更以外は差し替えられる
インストール方法
参考:
https://github.com/dmitry-zhuravlev/hotswap-agent-intellij-plugin#dcevm-installation
1. JDKをインストール
DCEVMはすべてのバージョンのJDKに対応しているわけではない。
現在(2018/5/22)対応している最新のバージョンはJava 8u152
なのでこのバージョンのJavaをダウンロードしてインストール
ここからダウンロードできる。が、過去のJDKをダウンロードするにはユーザ登録が必要。
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
2. DCEVMをインストール
ダウンロード
https://github.com/dcevm/dcevm/releases/ からDCEVM-8u152-installer.jar
をダウンロード。
インストーラ起動
管理者権限で起動
sudo java -jar DCEVM-8u152-installer.jar
JDKにDCEVMを適用
-
Add instration directory...
をクリックし、JDKのディレクトリを開く - 1で開いたJDKを選択し、
Install DCEVM as altjvm
をクリック
出典: https://github.com/dmitry-zhuravlev/hotswap-agent-intellij-plugin#dcevm-installation
IntelliJにHotSwapAgentプラグインをインストール

「HotSwapAgent
」で検索してInstallをクリック。インストール完了後IntelliJを再起動
IntelliJで使用するJavaを変更
File
→ Project Structure...
を開き、Project SDK
のNew...
→JDK
をクリックし、↑でインストールしたJDKを選択
HotSwapAgent Pluginを有効にする
Preferences
→Tools
→HotSwapAgent
HotSwapAgentを有効にする起動設定にチェックを入れる
完成!
Javaアプリケーション立ち上げる(デバッグ起動)とHOTSWAP AGENTのログが出る。
この状態でコードを変更し、コンパイルすると、アプリケーションを再起動しなくても即時に反映される。
- 単体でコンパイル(: Command+Shift+F9/ ⊞: Ctrl+Shift+F9)
- 全部コンパイル(: Command+F9/ ⊞: Ctrl+F9)