JRebel позволяет заново развертывать скомпилированный код без перезапуска приложения. Мне интересно, есть ли альтернатива (бесплатно?). Страница часто задаваемых вопросов отвечает на этот вопрос, но я уверен, что он смещен в сторону JRebel. Этот вопрос был задан год назад на этом сайте, но я возвращаюсь к нему, чтобы узнать, есть ли у кого-нибудь новая информация.
Кстати, мне очень нравится JRebel, но если есть бесплатная альтернатива, я готов попробовать.
Еще одно замечание: я работаю над проектом с открытым исходным кодом, и они предлагают бесплатные лицензии на один год людям, которые могут доказать, что они участвуют в проекте с открытым исходным кодом. Это прекрасно работает для меня (www.kuali.org), но я не буду участвовать в этом проекте вечно.
Ответы:
Взгляните на DCEVM , это модификация виртуальной машины HotSpot, которая позволяет неограниченное переопределение классов во время выполнения. Вы можете добавлять / удалять поля и методы и изменять супертипы класса во время выполнения. Функции DCEVM могут быть интегрированы в будущие обновления Java как часть JEP 159 .
Двоичные файлы, доступные на исходном сайте, ограничены Java 6u25 и ранними версиями Java 7. Проект был разветвлен на Github и поддерживает последние версии Java 7 и 8. Сопровождающий предоставляет двоичные файлы для 32/64 битных виртуальных машин в Windows / Linux. Начиная с Java 11, проект переехал в новый репозиторий GitHub и теперь также предоставляет двоичные файлы для OS X.
DCEVM упакован для Debian и Ubuntu, он удобно интегрирован с OpenJDK и может быть вызван с помощью
java -dcevm
. Имя пакета зависит от версии JDK по умолчанию:источник
Hotswap Agent - это расширение к DCEVM, которое поддерживает множество структур Java (перезагрузка определения bean-компонента Spring, отображение сущности Hibernate, настройка уровня ведения журнала, ...).
Существует также много документации по настройке DCEVM и скомпилированных двоичных файлов для Java 1.7.
источник
DCEVM поддерживает расширенные переопределения классов и доступна для текущих JDK7 и JDK8.
https://github.com/dcevm/dcevm/releases
HotswapAgent является бесплатной альтернативой JRebel и поддерживает DCEVM в различных платформах.
http://hotswapagent.org/
источник
Ребята из Spring, используются для перезагрузки Grails, но работают и с Java:
https://github.com/SpringSource/spring-loaded
источник
Я написал статью о DCEVM : Spring-MVC + Velocity + DCEVM
Я думаю, что это того стоит, так как моя среда работает без проблем.
источник
Я работал над проектом с открытым исходным кодом, который позволяет вам выполнять горячую замену классов сверх того, что позволяет горячая замена: https://github.com/fakereplace/fakereplace
Это может или не может работать для вас, но любая обратная связь приветствуется
источник
Вы можете взглянуть на это:
На данный момент это позволяет только заново скомпилировать тело метода без перезапуска приложения. Все, что вам нужно сделать, это запустить его с помощью отладчика. Я попробовал это в Eclipse, и это прекрасно работает.
Также, как упоминал Эммануэль Бур в своем ответе ( JEP 159 ), есть надежда на поддержку добавления супертипов, а также добавления и удаления методов и полей.
Ссылка: Java Whitepaper 135217: надежность, доступность и удобство обслуживания
источник
JRebel бесплатно. Не покупай это. Выберите опцию «бесплатно» (переключатель) на странице «Купить». Затем выберите «Социальный». После регистрации вы получите полнофункциональный лицензионный ключ JRebel. Затем вы можете скачать JRebel или использовать ключ во встроенной версии IDE. Подвох (да, есть подвох), вы должны разрешить им публиковать от вашего имени (рекламировать) один раз в месяц на вашей временной шкале FB или в учетной записи Twitter. Я дал им свой аккаунт в твиттере, не важно, я никогда им не пользуюсь, и никто из тех, кого я знаю, не пользуется им. Так что сэкономьте 260 долларов.
источник