Перераспределить альтернативы JRebel [закрыто]


190

JRebel позволяет заново развертывать скомпилированный код без перезапуска приложения. Мне интересно, есть ли альтернатива (бесплатно?). Страница часто задаваемых вопросов отвечает на этот вопрос, но я уверен, что он смещен в сторону JRebel. Этот вопрос был задан год назад на этом сайте, но я возвращаюсь к нему, чтобы узнать, есть ли у кого-нибудь новая информация.

Кстати, мне очень нравится JRebel, но если есть бесплатная альтернатива, я готов попробовать.

Еще одно замечание: я работаю над проектом с открытым исходным кодом, и они предлагают бесплатные лицензии на один год людям, которые могут доказать, что они участвуют в проекте с открытым исходным кодом. Это прекрасно работает для меня (www.kuali.org), но я не буду участвовать в этом проекте вечно.


53
Хороший вопрос. Мы искали альтернативу JRebel, так как их отдел продаж чрезвычайно агрессивен. У нас нет проблем с оплатой такого продукта, как JRebel, но не тогда, когда они беспокоят наших разработчиков и ИТ-отдел 24/7.
neu242

4
Есть альтернатива jRebel от собственного ZeroTurnAround: бесплатная версия Jrebel для проектов с открытым исходным кодом и изучения кейса ... my.jrebel.com
dellasavia

2
Я знаю, что это поздний ответ, вы можете взглянуть на Spring Loaded - агент JVM для перезагрузки изменений файла класса во время работы JVM. Он преобразует классы во время загрузки, чтобы сделать их пригодными для последующей перезагрузки. В отличие от «горячей замены кода», которая допускает простые изменения только после запуска JVM (например, изменения в теле методов), Spring Loaded позволяет добавлять / изменять / удалять методы / поля / конструкторы и многое другое ...
Simple-Solution

Eclipse debugger - мгновенно заменяет ваш живой код.
user1050755

Попробуйте опубликовать это на родственном сайте, Stack Exchange , « Рекомендации по программному обеспечению» .
Базилик Бурк

Ответы:


97

Взгляните на 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 по умолчанию:


5
Он работает нормально, я нашел это быстрее и меньше потребляет память, чем JRebel. Единственное ограничение - придерживаться Java 6u25.
Эммануэль Бур

3
Большое спасибо. Я испортил весь день, пытаясь заставить jRebel работать так, как хотелось бы. DCEVM пришел на помощь.
Alehro

4
Вот полные инструкции по сборке и установке для DCEVM на JDK 7u45 и MacOSX: neu242.livejournal.com/52962.html
neu242

1
JEP 159 не является частью JDK 8. Возможно, он перенесен на JDK 9, но подтверждения пока нет.
КришПрабакар

5
Здесь вы найдете несколько полных двоичных файлов JVM 1.7: dcevm.nentjes.com, так что нет необходимости исправлять вашу JVM. Я попробовал win64 один, и он отлично работал для меня. Я также написал об этом здесь, если вам нужна более подробная информация: javainformed.blogspot.com/2014/01/jrebel-free-alternative.html
dnang

42

Hotswap Agent - это расширение к DCEVM, которое поддерживает множество структур Java (перезагрузка определения bean-компонента Spring, отображение сущности Hibernate, настройка уровня ведения журнала, ...).

Существует также много документации по настройке DCEVM и скомпилированных двоичных файлов для Java 1.7.


5
Теперь у них есть специальный веб-сайт: hotswapagent.org . Проект довольно новый, но, похоже, работает довольно хорошо.
Дидье Л

Я следовал этому уроку, чтобы интегрировать его в Eclipse после того, как установил его: tirthalpatel.blogspot.fr/2014/06/… он работает как талисман
jpprade

@edudant После установки «Hotswap agent», нужно ли нам устанавливать DCEVM? Потому что я установил DCEVM, используя «sudo apt install openjdk-11-jre-dcevm» в Ubuntu 19.04, а также плагин в IntelliJ Ultimate 2019.1.3. Если установка 'Hotswap agent' не говоря уже о работе JRebel, какая польза от DCEVM !?


20

Ребята из Spring, используются для перезагрузки Grails, но работают и с Java:

https://github.com/SpringSource/spring-loaded


3
Я не хочу ворчать, но подпружиненный не поддерживает перезагрузку зависимостей.
lbednaszynski

Насколько я помню, есть системные свойства, которые вы можете установить, чтобы указать, какие пакеты нужно перезагрузить. У него есть другие ограничения, и я бы предпочел пойти с DCEVM в любом случае.
Рамон

1
«какие пакеты сделать перезагружаемыми» - правильно. Проблема, на которую указывает @lbednaszynski, заключается в том, что она не будет перезагружать зависимые файлы JAR. Это важно для многомодульных проектов Maven.
Марсель Стёр

Этот проект на чердаке сейчас!
jpmottin


9

Я работал над проектом с открытым исходным кодом, который позволяет вам выполнять горячую замену классов сверх того, что позволяет горячая замена: https://github.com/fakereplace/fakereplace

Это может или не может работать для вас, но любая обратная связь приветствуется


4

Вы можете взглянуть на это:

Поддержка HotSwap: объектно-ориентированная архитектура Java HotSpot VM обеспечивает расширенные функции, такие как переопределение класса «на лету» или «HotSwap». Эта функция обеспечивает возможность замены измененного кода в работающем приложении через API-интерфейсы отладчика. HotSwap добавляет функциональность в архитектуру отладчика платформы Java, позволяя обновлять класс во время выполнения находясь под управлением отладчика . Это также позволяет выполнять операции профилирования путем горячей замены в версиях методов, в которые вставлен код профилирования.

На данный момент это позволяет только заново скомпилировать тело метода без перезапуска приложения. Все, что вам нужно сделать, это запустить его с помощью отладчика. Я попробовал это в Eclipse, и это прекрасно работает.

Также, как упоминал Эммануэль Бур в своем ответе ( JEP 159 ), есть надежда на поддержку добавления супертипов, а также добавления и удаления методов и полей.

Ссылка: Java Whitepaper 135217: надежность, доступность и удобство обслуживания


-3

JRebel бесплатно. Не покупай это. Выберите опцию «бесплатно» (переключатель) на странице «Купить». Затем выберите «Социальный». После регистрации вы получите полнофункциональный лицензионный ключ JRebel. Затем вы можете скачать JRebel или использовать ключ во встроенной версии IDE. Подвох (да, есть подвох), вы должны разрешить им публиковать от вашего имени (рекламировать) один раз в месяц на вашей временной шкале FB или в учетной записи Twitter. Я дал им свой аккаунт в твиттере, не важно, я никогда им не пользуюсь, и никто из тех, кого я знаю, не пользуется им. Так что сэкономьте 260 долларов.


14
Есть еще один улов. Это JRebel Social бесплатно только для некоммерческого использования. Да, конечно, мы не будем проверять, действительно ли вы используете его для своего личного проекта или на работе, но аудиторам может не понравиться, если они увидят, что вы злоупотребляете программным обеспечением.
Антон Архипов

2
Я бы никогда не предложил иначе. На самом деле, единственная причина, по которой я это поднимаю, в том, что больше нет «индивидуальной» лицензии. Я смог заставить свою компанию заплатить за мою лицензию на работу. Затем я также заплатил за личную лицензию, для моего личного использования, на более чем 3 года. Но когда цена на север составляет 260 долларов в год, это стало непрактичным. Это лучшее решение для меня (и других), но я бы также продолжал платить за него, если бы цена была разумной.
Майкл Эндрюс

42
Кроме того, разочаровывает тот факт, что каждый год мне нужно выкупать программное обеспечение, которое я уже купил. Ни одна другая компания не делает этого. Обычно вы покупаете программное обеспечение один раз. Если вы решите перейти на обновление - вы покупаете его снова по полной цене (или, возможно, по цене обновления, в зависимости от компании). Но то, за что вы платите, это НОВЫЕ функции, а не те, за которые вы уже заплатили. Это будет похоже на то, как Apple или Microsoft отключают компьютер каждый год, пока вы снова не заплатите за ОС. Пища для размышлений.
Майкл Эндрюс

2
Социальная сеть JRebel была заменена на myJRebel. Это бесплатно для некоммерческого использования, вам просто нужно разрешить обмениваться статистикой: my.jrebel.com
Steve Swinsburg

1
В целом, JRebel является относительно дешевой лицензией на программное обеспечение для разработчиков.
Джаред Хупер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.