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

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

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

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

    Голосов: 1 25.0%
  • Я бубалех

    Голосов: 2 50.0%

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

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

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

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

Мой агент лежит в корне D, а вы вспоминайте, куда засунули свой
3. Результаты
После нажатия Build (Ctrl+B) изменённый код применится в клиенте все счастливы
Во избежание частых просадок и вылетов, отключайте функцию автосборки и избегайте сохранения кода с ашипками
 
Последнее редактирование:
Сообщения
4,784
Лучшие ответы
45
Реакции
646
Всю жизнь запускал через жучка в эклипсе и изменения в коде применялись сразу же, кроме радикальных, таких как изменение константы или что то в ините. Зачем это надо? :unsure: Жучок разве не тоже самое?
 
Сообщения
2,871
Лучшие ответы
182
Реакции
512
В IDEA есть хот свап из коробки.
Зачем мне эклипс?
 

tox1cozZ

aka Agravaine
Модератор
Сообщения
6,168
Лучшие ответы
348
Реакции
1,578
Уууу, товарищам выше лишь бы ляпнуть.

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

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

tox1cozZ

aka Agravaine
Модератор
Сообщения
6,168
Лучшие ответы
348
Реакции
1,578
Может и можно, но иногда у меня тоже падало. Хз, возможно это из-за среды, а в билде такого не будет
 
Сообщения
17
Лучшие ответы
0
Реакции
1
при тестах на клиенте ниче такого не возникает, почему будет на сервере?
У меня тоже иногда крашит после замены, но это редко, не могу воспроизвести причину.
Всё же позиционирую это как сугубо инструмент для тестирования и отладки. Негоже микроскопом гвозди забивать.
 
Сверху