Альтернативи для повторного використання JRebel [закрито]


190

JRebel дозволяє перекомпонувати повторно складений код без перезавантаження програми. Мені цікаво, чи є альтернатива (безкоштовна?). Сторінка FAQ відповідає на це запитання, але я впевнений, що він упереджений щодо 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 - миттєво замінює ваш живий код.
користувач1050755

Спробуйте опублікувати це на сестринському сайті - Обмін рекомендаціями щодо програмного забезпечення .
Василь Бурк

Відповіді:


97

Погляньте на DCEVM , це модифікація HotSpot VM, яка дозволяє необмежену кількість класів визначати під час виконання. Ви можете додавати / видаляти поля та методи та змінювати супер типи класу під час виконання. Особливості 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, але підтвердження ще немає.
KrishPrabakar

5
Тут ви знайдете кілька повних бінарних файлів JVM 1.7: dcevm.nentjes.com, тому не потрібно виправляти JVM. Я спробував win64 один, і він відмінно працював для мене. Я також про це блогував
dnang

42

Агент Hotswap - це розширення до DCEVM, яке підтримує безліч фреймворків Java (перезавантажити визначення Spring Bean, зіставлення сплячого об'єкта, налаштування рівня реєстратора, ...).

Існує також багато документації щодо налаштування DCEVM та компільованих бінарних файлів для Java 1.7.


5
Зараз у них є спеціалізований веб-сайт: hotswapagent.org . Проект зовсім новий, але, здається, він працює досить добре.
Дідьє Л

Я слідував за цим підручником, щоб інтегрувати його у затемнення після того, як його зашпаровувати : tirthalpatel.blogspot.fr/2014/06/… він працює як шарм
jpprade

@edudant Після установки "агента гарячої заміни" нам потрібно встановити DCEVM? Оскільки я встановив DCEVM, використовуючи "sudo apt install openjdk-11-jre-dcevm" в Ubuntu 19.04, а також плагін в IntelliJ Ultimate 2019.1.3. Якщо встановити "агент Hotswap", не кажучи вже про роботу JRebel, в чому полягає DCEVM !?


20

Хлопці Spring, які використовуються для перезавантаження Grails, але також працюють з Java:

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


3
Я не хочу бурчати, але навантажена пружиною не підтримує перезавантаження залежностей.
lbednaszynski

Наскільки я пам’ятаю, є системні властивості, які ви можете встановити, щоб сказати, які пакунки зробити доступними для завантаження. У нього є інші обмеження, і я, мабуть, скоріше за все пітимуть з DCEVM у будь-якому випадку.
Рамон

1
"які пакети зробити завантажуваними" - правильно. Проблема, на яку вказував @lbednaszynski, полягає в тому, що вона не буде перезавантажувати залежні JAR. Це важливо для багатомодульних проектів Maven.
Marcel Stör

Цей проект зараз на горищі!
jpmottin


9

Я працював над проектом з відкритим кодом, який дозволяє вам замінити класи на вище, ніж те, що дозволяє гаряча заміна: https://github.com/fakereplace/fakereplace

Можливо, це може не працювати для вас, але будь-який відгук цінується


4

Ви можете поглянути ось так:

Підтримка HotSwap: об'єктно-орієнтована архітектура Java HotSpot VM дозволяє вдосконалити такі функції, як переопределення класу "на леті" або "HotSwap". Ця функція забезпечує можливість заміни модифікованого коду в запущеній програмі через API відладчика. HotSwap додає функціональність архітектурі налагодження Java Platform, що дозволяє оновлювати клас під час виконання, перебуваючи під контролем налагоджувача . Це також дозволяє операції з профілювання виконувати за допомогою гарячої заміни у версіях методів, в які вставлено код профілювання.

На даний момент це дозволяє лише перекомпонувати новий метод методу без перезавантаження програми. Все, що вам потрібно зробити - це запустити його налагоджувачем. Я спробував це в Eclipse, і він чудово працює.

Крім того, як згадував Еммануель Бург у своїй відповіді ( JEP 159 ), є надія на підтримку додавання супертипів та додавання та видалення методів і полів.

Довідка: Java Whitepaper 135217: надійність, доступність та зручність обслуговування


-3

JRebel безкоштовний. Не купуйте. Виберіть варіант "безкоштовно" (перемикач) на сторінці "купити". Потім виберіть "Соціальний". Після реєстрації ви отримаєте повністю функціональний ліцензійний ключ JRebel. Потім можна завантажити JRebel або використовувати ключ у вбудованій версії IDE. Улов, (так, є улов), ви повинні дозволити їм розміщувати від вашого імені (рекламувати) раз на місяць на вашій шкалі FB або Twitter. Я дав їм свій акаунт у твіттері, ніяких біггі, я ніколи не користуюся ним і ніхто, кого я знаю, справді не використовує. Тож заощадите 260 доларів.


14
Є ще один улов. It JRebel Social безкоштовний лише для некомерційного використання. Так, звичайно, ми не перевіримо, чи ви насправді використовуєте його для особистого проекту чи на роботі, але аудиторам це може не сподобатися, якщо вони побачать, що ви зловживаєте програмним забезпеченням.
Антон Архипов

2
Я б ніколи не запропонував інакше. Насправді - єдина причина, яку я піднімаю, це те, що вже немає «індивідуальної» ліцензії. Мені вдалося змусити мою компанію заплатити за ліцензію на роботу. Потім я також оплачував особисту ліцензію, за особисте користування, понад 3 роки. Але коли ціна, коли північ 260 доларів на рік, це стало непрактичним. Це найкраще рішення для мене (та інших), але я б також продовжував платити за це, якби ціна була розумною.
Майкл Ендрюс

42
Також засмучує той факт, що мені потрібно щороку викуповувати програмне забезпечення, яке я вже придбав. Жодна інша компанія цього не робить. Зазвичай ви купуєте програмне забезпечення один раз. Якщо ви вирішили оновити - тоді ви купуєте його знову за повну ціну (або, можливо, ціну на оновлення, залежно від компанії). Але те, за що ви платите, - це НОВІ функції - не ті самі функції, які ви вже заплатили. Це було б як Apple або Microsoft щороку відключати ваш комп’ютер, поки ви знову не заплатите за ОС. Їжа для роздумів.
Майкл Ендрюс

2
JRebel Social замінено на myJRebel. Безкоштовно для некомерційного використання, вам просто потрібно дозволити обмін статистикою: my.jrebel.com
Стів Свінзбург

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