Расширенный код "Горячая замена" в JDK 8?
Я ищу лучше HotSwapping в JavaVM. Возможность применять только те изменения тела метода в порядке, но весьма ограничена.
Доступными параметрами являются JRebel и прекращенный проект под названием Виртуальная машина эволюции динамического кода (DCEVM).
Существует JEP 159, который был написан основным разработчиком DCEVM. В блоге с 2011 года говорится, что разработчики DCEVM теперь работают над Oracle, чтобы интегрировать их в JDK.
Есть ли у нас такая поддержка для бета-версии JDK 8 или она была отложена до JDK 9?
Мне нужна горячая замена для добавления и удаления и переименования частных методов в основном. Это поможет. Есть ли продукт, позволяющий мне это сделать (рядом с JRebel, которые PR-кампании меня расстроили).
Последняя поддерживаемая версия DCEVM для 1.6u24, и она обеспечивает только 32-битные бинарные файлы Linux. Поскольку я использую 1,7 и 64-битную Linux, это для меня и стоп-шоу.
В github есть еще один проект, называемый Fakereplace. Может ли это быть легко использовано для моей цели или я не должен исследовать это?
Ответы
Ответ 1
Существует вилка DCEVM, хранящаяся в репозитории Github. Он недавно был обновлен для Java 8. Бинарные файлы доступны через версии GitHub или на странице downloads.
Для простых вещей, таких как методы добавления/удаления, он должен быть довольно надежным (проверяется автоматическими тестами в 16 различных конфигурациях). Однако это все равно может привести к сбою JVM, поэтому его ни в коем случае нельзя использовать в производстве.
Ответ 2
JEP, входящие в JDK 8 и JDK 9, перечислены в этой странице. JEP-159 не входит в их число. Из jep index вы можете видеть, что JEP-159 еще не нацелен на выпуск JDK, даже не jdk 10.
Статус JEP-159 в настоящее время "Представлено" . Процесс описывается следующим образом:
Успешный JEP проходит через следующие состояния:
- Проект - в обращении автора для первоначального рассмотрения и формирования консенсуса
- Добавлено - Введен в архив JEP автором для более широкого обзора
- Отправлено - Объявлено автором, чтобы быть готовым к оценке
- Кандидат - принят для включения в "Дорожную карту" по OpenJDK Lead.
- Финансируется - оценивается по группе или региону, которая будет полностью финансироваться.
- Завершено - завершено и доставлено
Так что он пока не принят для какой-либо дорожной карты.