Установка HotSwap в Eclipse

Было полезно?

  • Да! Не знал о таком, буду пользоваться

    Голосов: 9 47.4%
  • Нет, я и так уже профи

    Голосов: 5 26.3%
  • Я бубалех

    Голосов: 5 26.3%

  • Всего проголосовало
    19
17
3
Во время разработки\отладки своей модификации разработчики тратят кучу времени на перезапуск приложения или ожидания деплоя кода.
Хватит это терпеть! На помощь приходит HotSwap - подмена изменённых классов приложения "на лету" без перезапуска всего проекта (нужно только немного подождать)
Я не буду расписывать всю технологию (для этого есть хабр)
Скажу лишь, что использовать будем
Dynamic Code Evolution Virtual Machine
FZ57rjy.png

Эта "волшебная палочка" позволит нам делать неограниченное количество «горячих» замен классов в режиме реального времени.
Итак. Приступаем к установке.
0. Что нам понадобится?
HotSwapAgent Гитхаб
DCEVM Гитхаб
На момент написания статьи поддерживаемая версия JDK 8u181, качаем её отсюда
1. Установка
Устанавливаем JDK
Качаем HotSwapAgent, пихаем его куда Вам удобно (без кириллицы и пробелов в пути)
Качаем установщик DCEVM, запускаем, выбираем нашу 8u181 и устанавливаем как альтернативную
Данный установщик может ругаться, что нет прав на запись или открытые Java приложения. Закрываем всё, запускаем из-под администратора
MN7aIb6.png

2. Настройка Eclipse
Топаем в Настройки, ищем там JRE и добавляем свежеустановленную
TWbgDjO.png

Теперь открываем Run Configurations и добавляем в начало такие параметры
Java:
-XXaltjvm=dcevm -javaagent:D:\hotswap-agent-1.4.0.jar=autoHotswap=true

Мой агент лежит в корне D, а вы вспоминайте, куда засунули свой
3. Результаты
После нажатия Build (Ctrl+B) изменённый код применится в клиенте все счастливы
Во избежание частых просадок и вылетов, отключайте функцию автосборки и избегайте сохранения кода с ашипками
C4vsYD0.png
 
Последнее редактирование:
5,018
47
783
Всю жизнь запускал через жучка в эклипсе и изменения в коде применялись сразу же, кроме радикальных, таких как изменение константы или что то в ините. Зачем это надо? :unsure: Жучок разве не тоже самое?
 
3,005
192
592
В IDEA есть хот свап из коробки.
Зачем мне эклипс?
 

tox1cozZ

aka Agravaine
8,454
598
2,890
Уууу, товарищам выше лишь бы ляпнуть.

Зачем это надо? :unsure: Жучок разве не тоже самое?
Жучок позволяет слишком мало. DCEVM же позволяет создавать новые классы, добавлять/удалять методы и все что захочешь. И перезагружать классы без перезапуска приложения.

В IDEA есть хот свап из коробки.
Там такой же хотсвап как и эклипсе. DCEVM - это совершенно другая вещь, ее нужно ставить отдельно.
 
17
3
Зачем это надо? :unsure: Жучок разве не тоже самое?
У меня Eclipse из коробки. "жучок" останавливается на брэкпойнтах, показывает потоки и текущие переменные. Но делает он это запуская новый клиент. А тут я могу не запускать его тыщу мильёнов раз, желая посмотреть, что я сделал вот этим изменением\добавлением строчки.
Для чайников, вроде меня, это очень актуально.
Зачем мне эклипс?
На идею тоже можно поставить, просто я ей не пользуюсь
В IDEA есть хот свап из коробки.
DCEVM это более узкая модификация Java HotSpot, снимающая часть ограничений(и более быстрая, как мне показалось)
 
17
3
Вот только ТС забыл указать, что для 8 жабы - максимальная версия 181...
Если собрать не релиз верисию, там есть 202
На момент написания статьи поддерживаемая версия JDK 8u181, качаем её отсюда
Мне просто интересно, вы внимательны?
 
7,099
324
1,509
Эту штуку можно юзать на проде?
 
17
3
Эту штуку можно юзать на проде?
Данный инструмент я использую для работы с клиентом, но почему бы и не попробовать с сервером?
Но просадки до 2-5 сек на время подмены классов и связанные с этим возможные вылеты\баги\краши неизбежны
 
7,099
324
1,509
17
3
при тестах на клиенте ниче такого не возникает, почему будет на сервере?
У меня тоже иногда крашит после замены, но это редко, не могу воспроизвести причину.
Всё же позиционирую это как сугубо инструмент для тестирования и отладки. Негоже микроскопом гвозди забивать.
 
48
1
4
Хз, не работает.
Впрочем, у меня даже обычный хотСвап перестал работать почему-то)
 
Сверху