2013-11-28 1 views
24

Я ищу лучше HotSwapping в JavaVM. Возможность применять только методы изменения тела вполне нормально, но довольно ограничена.Расширенный код Горячая замена в JDK 8?

Возможные варианты: JRebel и прекращенный проект под названием Dynamic Code Evolution Virtual Machine (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. Может ли это быть легко использовано для моей цели или я не должен исследовать это?

+4

Один из разработчиков JRebel однажды сделал небольшой обзор различных решений по обмену кода на рынке - http://stackoverflow.com/a/17642585/2269816 По моему личному мнению JRebel очень хорошо справляется с работой, ни один участник не может приближайтесь в данный момент.Не использовать инструмент только потому, что вам не нравится их маркетинг, вероятно, хотя сам инструмент является самым высоким качеством, в основном ущемляет себя. –

ответ

10

JEP, входящие в JDK 8 и JDK 9, указаны в this page. JEP-159 не входит в их число. От jep index вы можете видеть, что JEP-159 еще не нацелен на выпуск JDK, даже jdk 10.

Состояние JEP-159 в настоящее время "Submitted". Процесс is described следующим образом:

Удачная СЭП проходит через следующие состояния:

  • Проекта - В обращении автора для первоначального анализа и формирование консенсуса
  • Добавлено - Вступил в СЭП Архив автора для более широкого обзора
  • Отправлено - Объявлено автором будет готово для оценки
  • Кандидат - принят для включения в Дорожную карту Ope nJDK Lead
  • ФИНАНСИРУЕМЫХ - Судят свинцовой группы или зоны, которые будут полностью финансироваться
  • Завершено - Закончено и доставлены

Так что это еще не принято для любой дорожной карты.

+1

Вот почему я задаюсь вопросом, есть ли предварительная альфа-версия или что-то сопоставимое. Проект DCEVM был довольно развит, поэтому я удивляюсь, почему нет версии 1.7 и надеемся на версию 1.8. –

+0

@MartinKersten Я не вижу, как будет существовать какая-либо предварительная альфа-версия, поскольку она даже не была включена в какую-либо область действия, по крайней мере пока. – eis

+2

Я надеялся на что-то вроде фрагмента, который можно установить и запустить. Видя, что версия DCEVM работает для JDK6 и тех людей, нанятых Oracle уже два года, я надеялся на то, что показывает текущую разработку. Я просто надеюсь, что Oracle не решит остановить свои собственные идеи и уйти в отставку. –

11

В репозитории хранится вилка DCEVM на Github. Он был недавно обновлен для Java 8. Бинарные файлы доступны через версии GitHub или на downloads page.

Для простых вещей, таких как методы добавления/удаления, он должен быть довольно надежным (проверяется автоматическими тестами в 16 различных конфигурациях). Однако это все равно может привести к сбою JVM, поэтому его ни в коем случае нельзя использовать в производстве.

+0

Спасибо. Я это проверю. Мне нужно это для развития, так что это будет потрясающе, если это сработает. –

+0

Я просто хочу изменить методы рендеринга html-страниц на лету, чтобы дать мне опыт, похожий на PHP. Как только я получу результат, я бы адаптировал модульные тесты для страницы, чтобы ожидать исправленного результата. Сегодня мне приходится каждый раз перезапускать сервер переднего плана, а не просто автоматически перезагружать страницу при каждом изменении кода (просто добавлена ​​функция дрока на страницу с запросом статуса сервера). –

+3

Большое спасибо, я просто попробовал его с oracle java 1.8.0_05 x86-64 на linux, и он прекрасно работает. Fastdebug довольно медленный, поэтому используйте профиль «product». –