Pull to refresh

Изучая Vaadin

Reading time 3 min
Views 44K
Я хочу рассказать про Vaadin — фреймворк для разработки веб-приложений на Java. Да, на Java этих фреймворков — пруд пруди, но Vaadin заметно выделяется среди них.

Чем Vaadin отличается от других Java web фреймворков?


Если вкратце, Vaadin позволяет писать веб-приложение в стиле Swing:
import com.vaadin.ui.*;

public class HelloWorld extends com.vaadin.Application {

    public void init() { 
        Window main = new Window("Hello window"); 
        setMainWindow(main);
        main.addComponent(new Label("Hello World!")); 
    }
}

Считается преимуществом, при использовании Vaadin приходится программировать только на одном языке — Java, то есть не надо заморачиваться с XML, JavaScript, Html и т.д. и можно вовсю использовать весь мощный инструментарий Java: рефакторинг, юнит-тесты, заглушки (моки) и т.д. Ты пишешь new Label("Hello World!"), а Vaadin сам уже ломает голову, как это превратить в Html и JavaScript.


С чем можно сравнить Vaadin?


Похожая концепция используется в GWT, Wicket и Tapestry. Лично мне Wicket кажется менее удобной, потому что там приходится поддерживать два файла: Java класс и соответствующий ему HTML файл, причём они должны быть синхронизированы друг с другом. В Vaadin этой проблемы синхронизации нет.

Концепция GWT почти такая же, как у Vaadin: вы пишите код только на Java. Только GWT транслирует ваш Java-код в JavaScript. Сложности начинаются тогда, когда надо обработать событие, приходящее из браузера (например, обработка нажатий кнопки или сабмита формы). Чтобы из сгенерированного JavaScript-кода вызвать код на серверной стороне, надо сделать несколько магических пассов: создать абстрактный класс-фабрику, его реализацию и т.п.

Vaadin избавляет вас от этих проблем. Кстати, Vaadin на самом деле использует GWT, так что его можно даже считать надстройкой над GWT, которая решает проблемы общения с сервером. Вы просто пишете Listener:

   Button thebutton = new Button ("Do not push this button");

   thebutton.addListener(new Button.ClickListener() {
      public void buttonClick(ClickEvent event) {
          thebutton.setCaption ("Do not push this button again");
      }
   });

А Vaadin уже сам разруливает, какие запросы послать с сервера на клиент и обратно, чтобы этот код вызвался, когда пользователь нажмёт кнопку.

Как видите, Vaadin действительно отличается от большинства популярных веб-фреймвокров, таких как Spring, Struts, Play! и т.д.

Документация


Когда кто-то хочет изучить новый фреймворк, обычно он читает какую-то документацию. В этом отношении у Vaadin всё в полном порядке, документации много. Такое количество и качество документации редко когда можно встретить среди OpenSource проектов:



Вот


Вот такой чудесный фреймворк от финских парней. Осталось добавить, что Vaadin можно использовать в связке с Maven, Google App Engine и др. Также для Vaadin можно писать свои компоненты (Add-ons), чем пользователи активно и занимаются. Здесь есть полный перечень компонентов, где их можно посмотреть, потрогать и скачать.

А если вы хотите посмотреть примеры сайтов, построеных на Vaadin, то вот они:
Более полный перечень есть на сайте.

Ну и напоследок стоит добавить, что их эмблема и слоган просто влюбляют в себя:


Thinking of U and I. Очаровательно.

Удачи!

Tags:
Hubs:
+35
Comments 51
Comments Comments 51

Articles