Статьи

Vaadin и NetBeans: включение бизнес-приложений в Интернете

Алехандро Дуарте — разработчик программного обеспечения и автор Vaadin 7 UI Design by Example . В настоящее время он живет в Лондоне, где работает консультантом в британской ИТ-компании. Он поддерживает два продукта с открытым исходным кодом, которые используются несколькими небольшими компаниями по всему миру. Первым является Enterprise App для Vaadin , надстройка Vaadin для разработки приложений на основе CRUD, а вторым — InfoDoc Pro , упрощенное программное обеспечение рабочего процесса на основе Enterprise App для Vaadin. Алехандро пишет в Твиттере на @alejandro_du, а его сайт alejandrodu.com . Помимо Ваадина , одним из его любимых инструментов является среда IDE NetBeans . После


В интервью Бруно Фрейтасу по комбинации Vaadin / NetBeans я взял интервью у Алехандро, чтобы выяснить, почему он выбрал каждый и что он думает об интеграции между ними.

Вы занимаетесь веб-разработкой и используете Vaadin. Как это случилось, как вы приняли это решение?

Я столкнулся с веб-разработкой, когда веб был в значительной степени статичным HTML. Как разработчик Java, и после того, как я позже взглянул на старый CGI и популярный PHP, я начал использовать инфраструктуру Struts в своей первой профессиональной работе.


Через некоторое время использования Struts я начал скучать по тем хорошим ощущениям, которые возникают у вас при кодировании уровня представления с использованием Java. Я понял, что для того, чтобы разработчик мог создавать веб-приложения, вам приходилось каждый день запачкать свои пальцы HTML, JavaScript и, возможно, XML. Я действительно упустил возможность использовать инструменты рефакторинга IDE для изменения уровня представления. Более того, мир информационных технологий очень динамичен, разработчики часто присоединяются к командам и покидают их, что означает, что возможность сглаживать кривую обучения, когда младший разработчик присоединяется к проекту, является победой. Необходимость изучения не только базовой веб-инфраструктуры, но также HTML и JavaScript требует дополнительных усилий.


Итак, поиск начался. После оценки интересных альтернатив, таких как Apache Isis, Eclipse RCP, Wicket, Ext JS, Groovy и Grails, и даже JSF, Flex и WaveMaker, я обнаружил, что простота и гибкость Vaadin — лучший выбор. Вы можете начать работать с приложением Vaadin, даже если вы вообще не знаете Vaadin.

Не могли бы вы вкратце описать, как работает Ваадин, что в этом уникального, для тех, кто об этом не знает?


Представьте, что вы впервые используете Vaadin. Это так же просто, как сбросить некоторые JAR-файлы в директорию «lib» и начать создавать свой пользовательский интерфейс с помощью кодирования классов Java. Конечно, вы также можете использовать архетип Maven или IDE для создания своего проекта.


По сути, отправной точкой приложения Vaadin является метод init для класса UI.
Вам необходимо переопределить этот метод путем расширения пользовательского интерфейса. Позвольте мне показать вам пример:

public class MyVaadinUI extends UI {
    @Override
    protected void init(VaadinRequest request) {
        VerticalLayout layout = new VerticalLayout();
        layout.addComponent(new Label("Hello Vaadin!"));
        setContent(layout);
    }
}


Если вы ранее использовали Swing, AWT или любой другой десктопный API, могу поспорить, вы легко поймете этот код. Даже если вы ранее не использовали какой-либо API для настольных ПК, есть вероятность, что вы сможете понять код. Мы просто создаем макет, добавляем к нему метку и позволяем макету быть содержимым страницы. Вот скриншот этого простого приложения:


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


Ваадин основан на GWT.
С GWT вы можете определить свой уровень пользовательского интерфейса, используя Java. Компилятор GWT сгенерирует эквивалентные JavaScript, HTML и CSS, готовые для отображения в любом браузере. Однако в GWT вам нужно будет кодировать логику для связи между клиентом и сервером. Ваадин добавляет эту часть, так что вам не нужно об этом беспокоиться. С Vaadin все состояния пользовательского интерфейса находятся на сервере, что приводит к упрощению архитектур для ваших приложений. Посмотрите на этот кусок кода:

Button button = new Button("Click me");
button.addClickListener(new ClickListener() {
    @Override
    public void buttonClick(Button.ClickEvent event) {
        Notification.show("Thanks for clicking.");
    }
});


Метод buttonClick будет запущен на сервере, поэтому связь между клиентом и сервером настолько проста.
И может быть проще, если вы используете лямбды Java 8.

Что вы считаете основными функциями Vaadin?

Я люблю Ваадина в основном по трем причинам:

  • Вы можете реализовать свой уровень пользовательского интерфейса в Java, что означает, что вы можете использовать все знания объектно-ориентированного программирования при кодировании пользовательского интерфейса, в то же время по-настоящему многократно используя компоненты пользовательского интерфейса, что сложно при использовании других веб-сред.
  • Vaadin включает в себя несколько готовых к использованию, профессионально выглядящих тем.
  • Документация и сообщество потрясающие.

Для каких приложений Vaadin лучше всего подходит?

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


Обычно при решении вопроса о том, стоит ли использовать Vaadin, первоочередной задачей является масштабируемость и гибкость. Существует исследование, показывающее, что Ваадин действительно масштабируется до важного уровня. Итак, я бы сказал, что для большинства проектов масштабируемость не должна быть ограничением при оценке Vaadin. Это правда, что Vaadin — это в основном фреймворк на стороне сервера. Это означает, что на сервере выполняется дополнительная работа для каждого запроса. Однако большинство запросов — это запросы AJAX, которые включают изменение некоторой части клиентского HTML вместо всей страницы. Более того, вы всегда можете использовать клиентский API Vaadin для перемещения логики пользовательского интерфейса на клиентскую сторону, когда это необходимо. Этот последний аргумент может также использоваться в пользу Ваадина при оценке гибкости. Vaadin — зрелая структура, которая предлагает высокую степень гибкости.


На мой взгляд, ключевым моментом при оценке Ваадина является понимание двух важных понятий:

  • Ваадин сохраняет состояние пользовательского интерфейса в сеансе HTTP.
  • Клиентский движок JavaScript, содержащий логику, необходимую для связи с сервером и получения изменений, подается клиенту. Это похоже на загрузку приложения в браузере, а затем взаимодействие с сервером через этот клиентский движок. Конечно, вам не нужно беспокоиться об этом при разработке приложений Vaadin.

Так что, если у вас нет веских причин не использовать HTTP-сеанс (или вы держите его очень очень маленьким по размеру), и если вы можете принять загрузку не очень маленького (хотя и не очень большого) JavaScript в первом запросе, Vaadin действительно хороший кандидат для вашего уровня презентации.

И вы использовали NetBeans вместе с Vaadin — это хорошая комбинация?


Определенно. Я думаю, что NetBeans был медленным до 5.5, но теперь это быстрая IDE с, вероятно, лучшей поддержкой для Maven среди IDE. Я предпочитаю использовать Maven для приложений Vaadin, и NetBeans кажется лучшим выбором для этого.

И я бы добавил еще один ингредиент в рецепт: Java 8. Ссылки на Ламды и Методы делают написание Vaadin слушателей восхищением. NetBeans покажет подсказки для преобразования старых слушателей в новую лямбда-нотацию. Кроме того, вы можете использовать мастер для преобразования всех пред лямбда-выражений в лямбды для всего проекта. Поддержка NetBeans для Java 8 потрясающая, поэтому NetBeans + Vaadin + Java 8 просто потрясающая!

Какие три ваши любимые функции NetBeans для разработчиков Vaadin?


Во-первых, интеграция с каталогом Vaadin, который включает браузер для поиска надстроек Vaadin внутри NetBeans и возможность использовать автозавершение кода для обновления зависимостей для надстроек Vaadin по мере ввода.
Например, если вы начнете вводить ConfirmDialog и нажмете Ctrl + Пробел, код завершения покажет надстройку и, если вы выберете ее, обновит ваш pom.xml, чтобы включить зависимость.
Во-вторых, мастера проектов, которые позволяют создавать не только веб-приложения Vaadin, но и надстройки и проекты TouchKit, все из которых основаны на Maven.

И в-третьих, подсказки и исправления, которые показывает редактор при кодировании пользовательских компонентов Vaadin.
Например, NetBeans покажет подсказку для создания класса State, когда Connector не переопределяет метод getState (). Очень удобно.

Вы хотите поделиться чем-нибудь еще?

Я бы сказал, что NetBeans — это действительно хороший вариант, если вы планируете разрабатывать приложения Vaadin с использованием Maven. Более того, это относится и к другим технологиям. Мне действительно нравится поддержка NetBeans для Java 8, JPA и JavaFX по сравнению с другими IDE!

Спасибо, что взяли это интервью, Алехандро!