LoginSignup
10
9

More than 5 years have passed since last update.

【Javaの開発効率UP】DCEVMとHotSwapAgentで、再起動せずにソースコードの変更を反映する

Last updated at Posted at 2018-06-07

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を適用

  1. Add instration directory...をクリックし、JDKのディレクトリを開く
  2. 1で開いたJDKを選択し、Install DCEVM as altjvmをクリック 出典: https://github.com/dmitry-zhuravlev/hotswap-agent-intellij-plugin#dcevm-installation

IntelliJにHotSwapAgentプラグインをインストール

Screen Shot 2018-05-15 at 11.07.01.png (372.8 kB)

HotSwapAgent」で検索してInstallをクリック。インストール完了後IntelliJを再起動

IntelliJで使用するJavaを変更

FileProject Structure...を開き、Project SDKNew...JDKをクリックし、↑でインストールしたJDKを選択
Screen Shot 2018-06-08 at 0.12.25.png

HotSwapAgent Pluginを有効にする

PreferencesToolsHotSwapAgent
HotSwapAgentを有効にする起動設定にチェックを入れる
Screen Shot 2018-06-07 at 23.51.28.png

ついでにHotSwapが有効になっていることを確認
Screen_Shot_2018-05-15_at_11_46_54.png (257.0 kB)

完成!

Javaアプリケーション立ち上げる(デバッグ起動)とHOTSWAP AGENTのログが出る。
Screen Shot 2018-05-15 at 11.24.32.png (136.0 kB)
この状態でコードを変更し、コンパイルすると、アプリケーションを再起動しなくても即時に反映される。

  • 単体でコンパイル(: Command+Shift+F9/ ⊞: Ctrl+Shift+F9)
  • 全部コンパイル(: Command+F9/ ⊞: Ctrl+F9)
10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9