Горячая замена кода Java | перезагрузка с помощью JDK Java Compiler или groovy - PullRequest
0 голосов
/ 13 января 2012

Мне кажется, что в javax.tools.JavaCompiler JDK должен быть простой способ повысить производительность разработчика за счет замены кода в реальном времени (это JRebel, но более общим способом). Моя идея заключается в том, что я запускаю свое приложение, редактирую исходные коды Java (предположим, вне среды IDE), и работающий код автоматически обновляется новыми источниками. (на стороне разработчика не требуется никакой ручной компиляции или каких-либо других действий).

У кого-нибудь есть рабочий прототип?

Другой моей идеей было бы использовать groovy для перезагрузки классов Java (таким образом, используя Groovy только для разработки, но не для выполнения).

пс. Я знаю, что в отладчике Eclipse Java есть это, но это неоптимально.

1 Ответ

1 голос
/ 14 января 2012

Есть только пара способов, которыми я добился большого успеха с горячей заменой кода на JVM, а не внутри проекта Grails.Оба были с Spring:

1) Использовать bean-компонент, написанный на скриптах, написанный на Groovy / Ruby / Beanshell с установленным в конфигурации 'refresh' или 'reload' (не могу вспомнить, какой именно сейчас, но я могу найти, еслиобязательно) -> http://static.springsource.org/spring/docs/2.0.5/reference/dynamic-language.html

2) Начните с использования Groovlet -> http://groovy.codehaus.org/Groovlets

3) Если у вас есть класс bean-компонента Spring, я, кажется, не забываю перекомпилировать, затем иметь скриптвозьмите файл класса и перезаписать на Tomcat с некоторым успехом некоторое время назад.Я думаю, что Spring прокси мог бы сделать эту работу, но я уже давно с этим не справился.

Удачи!

...