2012-02-18 2 views
2

Я разрабатываю свое первое веб-приложение Java (Spring/Hibernate/Freemarker), и моя единственная проблема - скорость разработки.Как эффективно развивать веб-приложения Java?

Я использовал для разработки на PHP, где было достаточно просто перезагрузить браузер, чтобы увидеть результат. С Java мне нужно всегда нажимать на «ресурсы обновления» в моей среде IDE, чтобы увидеть изменения, сделанные для шаблонов. Мне кажется, что этот способ развития действительно неэффективен, поскольку перераспределение занимает до нескольких секунд.

Кроме того, я не тот, кто будет готовить шаблоны - это будет просто графический парень, и он тоже захочет проверить их. Нужно ли ему иметь собственный сервер приложений и продолжать повторное развертывание приложения, или есть еще несколько способов «PHP», где вы просто «перезагружаете» страницу?

+1

Я разрабатываю/запускаю Webapps с Eclipse/Tomcat, и любые изменения в моих jsps автоматически развертываются на сервере. Так что для меня, при разработке нажатия F5 в браузере достаточно хорошо. Изменение классов Java приводит к перезапуску. Похоже, что он действительно зависит от IDE, но в Eclipse его нормальная развернута <1 секунда. – proko

ответ

6

Да, скорость разработки является серьезной проблемой и недостатком по сравнению с динамическими языками и платформами, такими как PHP или Rails. Очевидно Java побеждает в различных областях, но вот несколько советов:

  1. Предпочитает блок-тестирования к передислокации - если вы чувствуете себя комфортно с модульным тестированием, вы значительно уменьшить количество перераспределений. Я обнаружил, что развертываю полную функцию только один раз, когда это делается. Вся логика уже протестирована, поэтому мне не нужно развертывать снова и снова, теряя секунды или минуты.

    Также, когда я начинаю работать с графическим интерфейсом, мне не нужно возвращаться к серверу, так как теперь я работаю. Как только я вижу повторяющиеся повторные развертывания, я пытаюсь проверить его, используя JUnit.

  2. Используйте лучшие рамки. Spring MVC очень консервативен, хотя и очень хорош и чистый. Я слышал, что Play! framework может сократить время обработки путем перекомпиляции классов «на лету».

    С другой стороны, современные рамки JVM, такие как Grails, могут ускорить вашу разработку, поскольку они создают для вас домен, CRUD и GUI.

  3. Некоторые рамки поощряют свободные шаблоны. Если вы используете Freemarker или простые JSP, работать с графическим интерфейсом сложно. Но фреймворки, такие как Wicket, отделяют в значительной степени Java-код от шаблонов, написанных в простом HTML. Также в настоящее время я работаю над приложением, которое обслуживает только статический HTML, а динамический контент обновляется через службы AJAX/REST и JavaScript.

  4. Рассмотрите возможность покупки JRebel и посмотрите на встроенные функции горячей замены в JVM. Иногда изменение кода не означает перераспределение.

  5. IntelliJ IDEA может обновлять измененные ресурсы (HTML, JavaScript) на лету, когда окно выходит из фона. Это означает, что ваши ресурсы обновляются после переключения окна из среды IDE в браузер. Вероятно, другие IDE тоже могут это сделать.

+0

Что действительно неутешительно в игре, так это то, что оно не соответствует структуре приложения Inversion of Control. В противном случае это выглядит как хороший выбор для разработки веб-приложений. –

1

Возможно, вы захотите взглянуть на Play framework, который делает именно это - он позволяет вам обновлять свой код (HTML, CSS, Java) и видеть результаты сразу после нажатия кнопки обновления в вашем браузере, без необходимости передислоцировать ваше приложение.

2

Вы можете настроить свою среду IDE для автоматического обновления развертывания.Изменения на веб-страницах не требуют повторного развертывания приложения, потому что серверы Java обновляют их на лету. Что касается вашего второго вопроса - вы можете создать некоторую общую установку, видимую на количестве компьютеров, и настроить IDE (или написать сценарии), которые копируют новые страницы в развертывание.

Смежные вопросы