Сегодня я расскажу об ещё одном прекрасном framework`е под название Vaadin. Это open source фреймворк, который предоставляет возможности сходные с GWT(Google Web Toolkit) — построение Web 2.0 интерфейсов (RIA), только он более приятен и интуитивно понятен обычному java-разработчику. Как и в GWT вы пишите чистый java-код, который интерпретируется в Java(bytecode) + Java Script код. Это очень удобно. Демо (уже ставшее традицией для таких фремворков) можно лицезреть вот тут.
Отличия этого фреймворка от GWT очень значительные. И клиентская часть и серверная пишутся на java, только отсутствуют ограничения по использованию JRE (в GWT можно было использовать лишь малую часть всех возможностей java). И при этом у нас абсолютно не существует никаких ограничений на стороне сервера, вы можете использовать всю мощь java (EJB,JSP/servlet, JAAS и тонны других полезных технологий). Ну хватит слов, пора уже к делу переходить.
Сегодня, как водится, я расскажу как все настроить для работы с Vaadin, и напишем hello world приложение.
Итак начнем.
Я буду настраивать как водится среду Eclipse (Galileo) которую можно и нужно скачать вот тут.
А дальше все делается исключительно внутри самого Eclipse. (конечно если очень хочется то можно на официальном сайте скачать архив Vaadin — там кстати есть очень полезная книга (pdf) по использованию данного фреймворка).
1) Добавляем в эклипс репозиторий Vaadin (адрес vaadin.com/eclipse)
2) Устанавливаем появившиеся пакеты.
Следующий шаг — нам потребуется контейнер сервлетов — вы можете использовать ваш любимый, а я свой — tomcat. Сначала его скачаем тут. После этого. В eclipse настраиваем новый сервер (File — New — Other — Server)
далее указываем путь до сервера (CATALINA_HOME — папка bin от tomcat).
Все теперь остается создать новый проект.
Выбираем — New — Project — Other — Vaadin.
Делаем имя для проекта, в качестве Runtime указываем только что созданный Apache Tomcat.
Кликаем по кнопке Download.
Выбираем последнюю доступную версию. После этого eclipse загрузит файл
vaadin-6.1.5.jar
После установки, можно начинать «творить».
package com.example.testvaadin;
import com.vaadin.Application;
import com.vaadin.ui.*;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
public class TestvaadinApplication extends Application {
@Override
public void init() {
final Label hello = new Label("Hello, %username%");
hello.setVisible(false);
Window mainWindow = new Window("My new web 2.0 application with vaadin");
Panel rootPanel = new Panel("<h1 align='center'>My First Vaadin Application</h1>");
rootPanel.setSizeFull();
Button clickMe = new Button("Say, Hello world!");
clickMe.addListener(new ClickListener()
{
public void buttonClick(ClickEvent event)
{
hello.setVisible(!hello.isVisible());
}
});
rootPanel.setSizeFull();
rootPanel.setContent(new VerticalLayout());
rootPanel.addComponent(hello);
rootPanel.addComponent(clickMe);
mainWindow.addComponent(rootPanel);
setMainWindow(mainWindow);
}
}
нажимаем run on server и видим следующую картинку:
Вот так. Сами поэкспериментируйте с виджетами, но учтите, что нужно постоянно чистить кеши tomcat`a, иначе будут сложности (сделать это можно в свойствах сервера «Clean Tomcat Work Directory»).
Интересно, в какой момент у подобных фреймворков наступает преимущество над традиционными способами веб-программирования?
Меня интересует именно сам процесс программирования на практике, т.к. ресурсов у сервера в любом случае будет сожрано в разы больше. Изолированность кода от конкретной реализации пользовательского интерфейса — это конечно хорошо, но в конкретных проектах зачастую не столь важно.
ну все фреймворки изначально расчитаны на продакшен — т.е. их задача не только сделать конкретный проект, но и сделать базу для последующих проектов. А в такого масштаба приложениях эта разница в потреблении ресурсов не важна, т.к. время всегда дороже, чем лишние ресурсы.
Поэтому эти фреймворки не призваны решать задачи такие как личный сайт — визитка или блог или ещё что-то подобное и их использование в данной сфере действительно не рентабельно.
«время всегда дороже, чем лишние ресурсы»
Это уже стало парадигмой современного программирования.
Очень весело смотреть на клиетов, которые приходят с ерундовой задачей, для решения которой хватило бы и старенького офисного ПК, а им говорят: мы сейчас вам быстренько все сляпаем на самых современных технологиях (JEE и т.п.), но штука это серьезная и требует много ресурсов, поэтому приготовьтесь покупать несколько хороших серверов под кластер и оплачивать развертывание системы помимо самой разработки. Да, на разработку времени будет потрачено меньше, но ресурсы тоже стоят денег.
я имею ввиду серьезные проекты, где старенького офисного компа не хватит.
А в целом согласен, что нынче и сайт-визитку хотят сделать с помощью клауд-вычислений, глупости, но что поделаешь :)
Если человеку нужен сайт визитка — php ему в помощь!:)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Меня интересует именно сам процесс программирования на практике, т.к. ресурсов у сервера в любом случае будет сожрано в разы больше. Изолированность кода от конкретной реализации пользовательского интерфейса — это конечно хорошо, но в конкретных проектах зачастую не столь важно.
Поэтому эти фреймворки не призваны решать задачи такие как личный сайт — визитка или блог или ещё что-то подобное и их использование в данной сфере действительно не рентабельно.
Это уже стало парадигмой современного программирования.
Очень весело смотреть на клиетов, которые приходят с ерундовой задачей, для решения которой хватило бы и старенького офисного ПК, а им говорят: мы сейчас вам быстренько все сляпаем на самых современных технологиях (JEE и т.п.), но штука это серьезная и требует много ресурсов, поэтому приготовьтесь покупать несколько хороших серверов под кластер и оплачивать развертывание системы помимо самой разработки. Да, на разработку времени будет потрачено меньше, но ресурсы тоже стоят денег.
А в целом согласен, что нынче и сайт-визитку хотят сделать с помощью клауд-вычислений, глупости, но что поделаешь :)
Если человеку нужен сайт визитка — php ему в помощь!:)