Я хочу рассказать про Vaadin — фреймворк для разработки веб-приложений на Java. Да, на Java этих фреймворков — пруд пруди, но Vaadin заметно выделяется среди них.
Если вкратце, Vaadin позволяет писать веб-приложение в стиле Swing:
Считается преимуществом, при использовании Vaadin приходится программировать только на одном языке — Java, то есть не надо заморачиваться с XML, JavaScript, Html и т.д. и можно вовсю использовать весь мощный инструментарий Java: рефакторинг, юнит-тесты, заглушки (моки) и т.д. Ты пишешь
Похожая концепция используется в GWT, Wicket и Tapestry. Лично мне Wicket кажется менее удобной, потому что там приходится поддерживать два файла: Java класс и соответствующий ему HTML файл, причём они должны быть синхронизированы друг с другом. В Vaadin этой проблемы синхронизации нет.
Концепция GWT почти такая же, как у Vaadin: вы пишите код только на Java. Только GWT транслирует ваш Java-код в JavaScript. Сложности начинаются тогда, когда надо обработать событие, приходящее из браузера (например, обработка нажатий кнопки или сабмита формы). Чтобы из сгенерированного JavaScript-кода вызвать код на серверной стороне, надо сделать несколько магических пассов: создать абстрактный класс-фабрику, его реализацию и т.п.
Vaadin избавляет вас от этих проблем. Кстати, Vaadin на самом деле использует GWT, так что его можно даже считать надстройкой над GWT, которая решает проблемы общения с сервером. Вы просто пишете Listener:
А Vaadin уже сам разруливает, какие запросы послать с сервера на клиент и обратно, чтобы этот код вызвался, когда пользователь нажмёт кнопку.
Как видите, Vaadin действительно отличается от большинства популярных веб-фреймвокров, таких как Spring, Struts, Play! и т.д.
Когда кто-то хочет изучить новый фреймворк, обычно он читает какую-то документацию. В этом отношении у Vaadin всё в полном порядке, документации много. Такое количество и качество документации редко когда можно встретить среди OpenSource проектов:
Вот такой чудесный фреймворк от финских парней. Осталось добавить, что Vaadin можно использовать в связке с Maven, Google App Engine и др. Также для Vaadin можно писать свои компоненты (Add-ons), чем пользователи активно и занимаются. Здесь есть полный перечень компонентов, где их можно посмотреть, потрогать и скачать.
А если вы хотите посмотреть примеры сайтов, построеных на Vaadin, то вот они:
Более полный перечень есть на сайте.
Ну и напоследок стоит добавить, что их эмблема и слоган просто влюбляют в себя:

Thinking of U and I. Очаровательно.
Удачи!
Чем 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.
- 5-минутный туториал
- Часовой туториал
- Знаменитая Книга Vaadin, которая также доступная в виде PDF, который можно скачать и распечатать.
- Vaadin API
- Памятка (RefCardz)
- Также здесь есть скринкаст и демо-приложение.
Вот
Вот такой чудесный фреймворк от финских парней. Осталось добавить, что Vaadin можно использовать в связке с Maven, Google App Engine и др. Также для Vaadin можно писать свои компоненты (Add-ons), чем пользователи активно и занимаются. Здесь есть полный перечень компонентов, где их можно посмотреть, потрогать и скачать.
А если вы хотите посмотреть примеры сайтов, построеных на Vaadin, то вот они:
Более полный перечень есть на сайте.
Ну и напоследок стоит добавить, что их эмблема и слоган просто влюбляют в себя:

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