Коли ми програмуємо, налагоджуємо код, шукаємо горезвісний «^», часто виникає ситуація, коли доводиться перезапускати сервер додатків, щоб побачити наші зміни. Це призводить до того, що нам доводиться виходити з «потоку», руйнувати наш крихкий пісочний замок нейронних зв'язків. Відволікатися від поточного завдання і чекати-чекати-чекати, коли на сервері додатків будуть доступні наші зміни. Часом це так втомливо... Як було б здорово, зробити «гарячу» заміну змінених класів і відразу побачити результат.
Багато хто з нас знає про існування 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