Подтвердить что ты не робот

Играть! Веб-инфраструктура Java. Как их сервер разработки автоматически компилируется?

Посмотрев на Play! Я считаю, что он действительно продуктивен, что сервер разработки, с которым он поставляется автоматически, может компилировать .java файлы и немедленно показывать изменения. Там нет горячего сканера развертывания, который запускает каждую тысячу секунд или около того. Компиляция происходит, когда вы нажимаете обновление, и это намного быстрее, чем мой инкрементный mvn package. Как они это делают?

Я хотел бы знать, потому что мне интересно знать, но и потому, что я не хочу использовать всю игру! рамки для моего небольшого проекта. Меня интересует только процесс компиляции разработки, потому что я бы хотел его принять:).

Любые идеи?

4b9b3361

Ответ 1

Я читал об этом только сегодня утром. Он фактически принимает ваши измененные исходные файлы и использует Eclipse Java Compiler (ECJ) внутри, прежде чем выплескивать скомпилированные файлы на встроенный сервер dev.

Дело в том, что вы, вероятно, не хотите прикладывать усилия к подключению ECJ к вашему "маленькому проекту".

Вы можете определенно аппроксимировать его, но трюк заключается в не делать mvn-пакет, вместо этого вы хотите отбросить измененные файлы .class в ваш каталог warplay взорванных warfile в файловой системе.

Если вы не привязаны к определенному серверу/контейнеру приложения, посмотрите на Eclipse Jetty Plugin - выглядит так, как вы необходимо, и Jetty быстро

Ответ 2

JDT - Играйте! использует Eclipse JDT для компиляции и загрузки классов динамически. Совсем так же, как вы код в Eclipse, и вы видите сообщение об ошибке или предупреждении, как только вы вводите что-то нежелательное. См. ApplicationCompiler класс.

Вы также можете посмотреть JDT.

Ответ 4

То, как они это делают, - это использовать пользовательский загрузчик классов, который будет обнаруживать изменения исходных файлов, использовать компилятор Java Eclipse для компиляции файлов, а затем горячую замену соответствующих классов в JVM. Если вы ищете что-то подобное, проверьте ZeroTurnaround JRebel он не является бесплатным, но стоит экономить время, когда вам нужно перераспределить крупный проект.

Ответ 5

Я не разработчик Play, но Struts2 тоже способен на это, но хотя struts2- spring -plugin. Так как перезагрузка класса обеспечивается Spring, возможно, эта функция Spring может быть использована любым проектом.

http://struts.apache.org/2.2.1/docs/spring-plugin.html Найдите страницу "Перезагрузка класса".