Когда мы программируем, отлаживаем код, ищем пресловутый «баг», зачастую возникает ситуация, когда приходится перезапускать сервер приложений, чтобы увидеть наши изменения. Это приводит к тому, что нам приходится выходить из «потока», разрушать наш хрупкий песочный замок нейронных связей. Отвлекаться от текущей задачи и ждать-ждать-ждать, когда на сервере приложений будут доступны наши изменения. Порой это так утомительно… Как было бы здорово, сделать «горячую» замену измененных классов и сразу увидеть результат.

Многие из нас знают о существовании Java HotSpot VM Swap механизме, который позволяет сделать «горячую» замену и избежать перезапуск всего сервера приложений.

В IntelliJ IDEA можно использовать комбинацию клавиш (: Command+Shift+F9/ ⊞: Ctrl+Shift+F9)
В силу существующих ограничений Java HotSpot, позволяет это делать только для изменения тела существующих методов класса. В остальных случаях, измененные классы не будут обновлены при «горячей замене».

Для того что бы преодолеть это ограничение, можно воспользоваться Dynamic Code Evolution Virtual Machine (DCEVM) — это модификация Java HotSpot(TM) VM, что позволит делать неограниченное количество «горячих» замен классов в режими реального времени.
Иногда простой замены классов недостаточно, особенно при использовании различных фреймворков, например, Spring. В таких случаях необходимо учитывать «жизненный цикл» того или иного фреймворка. Для решений этой проблемы вместе с DCEVM можно использовать специальный агент HotSwapAgent, который расширяет возможности «горячей замены» и упрощает интеграцию с вашей любимой IDE.
Для интеграции с IntelliJ IDEA:
1. Установите специальный HotSwapAgent плагин.

2. Установите «Reload classes after compilation: Always» конфигурацию в IntelliJ IDEA в секции HotSwap.

3. Плагин позволяет активировать HotSwapAgent агент для всего проекта или для определенной конфигурации.

4. В случае успешной конфигурации при запуске в консоли будет отображаться сообщение «HOTSWAP AGENT».

5. Для «горячей замены» необходимо скомпилировать измененные классы, для этого используйте комбинацию клавиш (: Command+Shift+F9/ ⊞: Ctrl+Shift+F9).
Несколько примеров для наглядного представления:
Сценарий 1: Изменение тела метода класса.

Сценарий 2: Добавление метода внутрь класса, изменение контроллера.

Приятной "горячей" разработки!
Ссылки:
HotSwap plugin for IntelliJ IDEA, HotSwapAgent project, DCEVM

Многие из нас знают о существовании Java HotSpot VM Swap механизме, который позволяет сделать «горячую» замену и избежать перезапуск всего сервера приложений.

В IntelliJ IDEA можно использовать комбинацию клавиш (: Command+Shift+F9/ ⊞: Ctrl+Shift+F9)
В силу существующих ограничений Java HotSpot, позволяет это делать только для изменения тела существующих методов класса. В остальных случаях, измененные классы не будут обновлены при «горячей замене».

Для того что бы преодолеть это ограничение, можно воспользоваться Dynamic Code Evolution Virtual Machine (DCEVM) — это модификация Java HotSpot(TM) VM, что позволит делать неограниченное количество «горячих» замен классов в режими реального времени.
Иногда простой замены классов недостаточно, особенно при использовании различных фреймворков, например, Spring. В таких случаях необходимо учитывать «жизненный цикл» того или иного фреймворка. Для решений этой проблемы вместе с DCEVM можно использовать специальный агент HotSwapAgent, который расширяет возможности «горячей замены» и упрощает интеграцию с вашей любимой IDE.
Для интеграции с IntelliJ IDEA:
1. Установите специальный HotSwapAgent плагин.

2. Установите «Reload classes after compilation: Always» конфигурацию в IntelliJ IDEA в секции HotSwap.

3. Плагин позволяет активировать HotSwapAgent агент для всего проекта или для определенной конфигурации.

4. В случае успешной конфигурации при запуске в консоли будет отображаться сообщение «HOTSWAP AGENT».

5. Для «горячей замены» необходимо скомпилировать измененные классы, для этого используйте комбинацию клавиш (: Command+Shift+F9/ ⊞: Ctrl+Shift+F9).
Несколько примеров для наглядного представления:
Сценарий 1: Изменение тела метода класса.

Сценарий 2: Добавление метода внутрь класса, изменение контроллера.

Приятной "горячей" разработки!
Ссылки:
HotSwap plugin for IntelliJ IDEA, HotSwapAgent project, DCEVM