Статьи

Разработка веб-приложений на Java с облегченной IDE

Мы тратим много времени на взлом наших IDE Java (IntelliJ и Eclipse), пытаясь найти самый быстрый способ разработки. В этом смысле разработка веб-приложений — это сука, потому что IDE выпускаются только в двух вариантах:

  • Редакция Java SE : действительно для простой разработки приложений ( IntelliJ Community EditionEclipse Standard Edition )
  • Выпуск Java EE (Всё на Земле) : требуется для веб-разработки (IntelliJ Ultimate, Eclipse для Java EE). Это версия, которая включает в себя плагины для JavaScript, CSS, XML, JSP, TLD и армии  пони с желе,  скачущей над  радугой конфет .

Мы хотели бы использовать vanilla IDE даже для веб-приложений на Java, но, видимо, это не так просто, поэтому мы разработали собственное решение. Для других способов сделать это, перейдите прямо к  последнему разделу .

Код

Вы можете начать с разветвления  этого прототипа на Github . Он включает в себя встроенный Jetty и пример веб-приложения, каждое из которых имеет две задачи:  idea и  eclipse.

cd jetty-embedded
gradle idea
cd ../helloworld
gradle idea

Это создаст два проекта, которые могут быть открыты напрямую с помощью vanilla IDE (Community / Java SE, а не Bells-and-Whistles Edition).

Привет мир

helloworld это демонстрационное веб-приложение, которое будет компилировать классы и копировать ресурсы в  src/main/webapp/WEB-INF/classes. Он использует аннотации web 3.0 для развертывания сервлетов без использования  web.xml дескриптора развертывания.

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

Важное примечание для пользователей IntelliJ : вам следует активировать  make project automatically этот проект (находится внутри  Settings » Compiler), поскольку он не будет следовать обычному рабочему процессу компиляции, ожидаемому в IntelliJ. Вы также можете рассмотреть возможность сделать  это .

пристань

jetty использует встроенную Jetty для развертывания любого количества веб-приложений. Он включает в себя  JettyServer класс, который получает через командную строку имена проектов для развертывания. Например,  JettyServer helloworldбудет искать  helloworld папку в родительском каталоге, развернуть свою  src/main/webapp папку.

Сервер может быть запущен:

  • Создание средства запуска  в вашей IDE (Eclipse или IntelliJ), которое выполняет метод main с  helloworld аргументом. Проект уже включает в себя такой лаунчер для Eclipse в  src/main/launchers папке.
  • Запустите приложение с помощью командной строкиgradle jetty запустит сервер и откроет сокет отладки в порту 5005, так что вы все равно можете подключиться из IDE для отладки. В IntelliJ создайте сеанс удаленной отладки и примите параметры по умолчанию.

Продолжайте читать

Есть много причин, чтобы сделать это таким образом, не только для получения максимально быстрой среды программирования, но и для  дополнительной гибкости : настройка пути к классам (общие файлы jar, белые списки), сертификаты SSL, конфигурации, зависящие от среды, остановка или перезапуск программно. ..

Это решение, которое мы установили на нескольких клиентах, но оно далеко не уникально:

  • Пользователи Spring найдут в  Spring boot  интересную автономную Jetty, встроенную в ваше веб-приложение.
  • Jetty Bootstrap  — это еще один проект для преобразования вашего веб-приложения в автономное приложение с минимальными усилиями.
  • Jetty Gradle Hello World  — пример интеграционного тестирования с использованием Gradle и плагина Jetty.

Любой из них также может быть использован в вашей среде Java SE.

Действуй! Не забудьте  проверить код  и оставить нам любой отзыв на Github или  Twitter .