Vaadin - реальное использование
От: hrensgory Россия  
Дата: 11.02.13 13:43
Оценка:
Коллеги, есть ли тут кто, имеющий опыт построения реального приложения
на Vaadin?
Что интересует конкретно — годится ли оно в своём современном состоянии
для достаточного развесистого приложения (скажем так, 50-100 разных
экранов)?
И я пока не очень понял концепцию — с точки зрения браузера это single
page application? Если да, то не будет ли в нём при более-менее
длительной работе "течь" память на клиенте?
Если нет, то как оно разбивается на отдельные "страницы"?

Теорию я сейчас сам почитаю ) , интересует именно практический опыт.

Заранее спасибо.
--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re: Vaadin - реальное использование
От: insighter ОАЭ  
Дата: 11.02.13 14:19
Оценка:
да single page applicaiton,но каждое действие, каждый клик вроде бы обрабатывается на сервере, маленьким ajax запросом, даже если это просто изменение ui. Т.е. другая концепция нежели чем gwt и т.д.
java шараги -> enterprise галеры, банки -> highload microservices + bigdata/ml
Re: Vaadin - реальное использование
От: dotidot Россия  
Дата: 11.02.13 15:04
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>Коллеги, есть ли тут кто, имеющий опыт построения реального приложения

H>на Vaadin?
иа. на 6ой версии.

H>Что интересует конкретно — годится ли оно в своём современном состоянии

H>для достаточного развесистого приложения (скажем так, 50-100 разных
H>экранов)?
вполне. только УИ придется программировать в аля свинг API + абстрактный датабиндинг всего. После шаблонизаторов на яваскрипте + верстальщик это просто ужос полный. Хотя если нужны табличка + формочка для crud то вполне ок

H>И я пока не очень понял концепцию — с точки зрения браузера это single

H>page application? Если да, то не будет ли в нём при более-менее
H>длительной работе "течь" память на клиенте?
не замечал. выделенная память прямо пропорциональна отображаемому на экране УИ. Значительных утечек не видел. Огромные таблицы на полуавтоматической пагинации кушают совсем мало на клиенте. +халявный сортинг и другие плюшки при правильно написаном датабиндинге. адаптерами к гибернейту и другим вещам не пользовался не знаю.

H>Если нет, то как оно разбивается на отдельные "страницы"?

в целом — руками. в 7ой версии обещают весь стейт отвязать от странички и поддерживать многовкладачность. На практике теперь корень называется UI, а не Application. больше особо разницы что то не видать.

H>Теорию я сейчас сам почитаю ) , интересует именно практический опыт.

отличная штука для админок в интранете к ява апликейшнам. для всего остального практически не пригодна либо из за больших трудозатрат на рисование UI либо из-за технических ограничений хранения всего стейта на сервере
В портальные решения вполне встраивается, на фоне остальных тормозов не особо даже и заметно.
Тяжко кастомизировать, фактически для любого нестандартного контрола придется не просто на gwt/html/javascript писать, но и еще с фреймворком интегрироваться. Судя по адовым срокам неоднократно сорванным по выходу 7ой версии это очень нетривиальная задача.
А еще верстальщики сильно матерятся на встроенный подход к именованию и вложению цсс классов. Почему — не знаю. Феншуй не тот.
Re[2]: Vaadin - реальное использование
От: hrensgory Россия  
Дата: 11.02.13 15:51
Оценка:
Спасибо за обстоятельный ответ !

On 11.02.2013 19:04, dotidot wrote:

> После шаблонизаторов на яваскрипте + верстальщик это

> просто ужос полный. Хотя если нужны табличка + формочка для crud то
> вполне ок
Да, примерно оно и есть. CRUD в основном.

> H>И я пока не очень понял концепцию — с точки зрения браузера это single

> H>page application? Если да, то не будет ли в нём при более-менее
> H>длительной работе "течь" память на клиенте?
> не замечал. выделенная память прямо пропорциональна отображаемому на
> экране УИ. Значительных утечек не видел. Огромные таблицы на
> полуавтоматической пагинации кушают совсем мало на клиенте. +халявный
> сортинг и другие плюшки при правильно написаном датабиндинге.
А как его писать правильно? Биндиться напрямую к объектам,
конструируемым из БД (JPA/Hibernate) не хочется, думаем более
легковесные DTO сделать.

> H>Теорию я сейчас сам почитаю ) , интересует именно практический опыт.

> отличная штука для админок в интранете к ява апликейшнам. для всего
> остального практически не пригодна либо из за больших трудозатрат на
> рисование UI либо из-за технических ограничений хранения всего стейта на
> сервере
Так и планируем использовать, для админки.

> А еще верстальщики сильно матерятся на встроенный подход к именованию и

> вложению цсс классов. Почему — не знаю. Феншуй не тот.
Хочется как раз попробовать обойтись в админке без верстальщика. По
крайней мере в первой версии )

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Vaadin - реальное использование
От: hrensgory Россия  
Дата: 11.02.13 15:54
Оценка:
On 11.02.2013 18:19, insighter wrote:

> да single page applicaiton,но каждое действие, каждый клик вроде бы

> обрабатывается на сервере, маленьким ajax запросом, даже если это просто
> изменение ui. Т.е. другая концепция нежели чем gwt и т.д.

JSF прям. Спасибо за информацию !

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Vaadin - реальное использование
От: dotidot Россия  
Дата: 11.02.13 17:15
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>А как его писать правильно? Биндиться напрямую к объектам,

H>конструируемым из БД (JPA/Hibernate) не хочется, думаем более
H>легковесные DTO сделать.
долго и мучительно
шучу, на самом деле основная фишка ваадина как раз в том что дто не нужны. объекты на клиент не передаются только содержимое формочек.
сбиндите хибернейтовские объекты там утилиты для этого есть. даже в формочках будет валидация по аннотациям.
Re[3]: Vaadin - реальное использование
От: GiDRAvlic Латвия  
Дата: 12.02.13 07:27
Оценка:
>> да single page applicaiton,но каждое действие, каждый клик вроде бы
>> обрабатывается на сервере, маленьким ajax запросом, даже если это просто
>> изменение ui. Т.е. другая концепция нежели чем gwt и т.д.

H>JSF прям. Спасибо за информацию !


На JSF не похоже, больше похоже на ExtGwt, но и это не так По умолчанию, пишется серверная сторона, может только в этом схоже с JSF. Опять же можно писать и клиентскую сторону как в ExtGwt, но довольно сложнова-то.
Но при всём при этом, я выбрал этот продукт в качестве фронтэнда для корпоративного портала. Порталу уже 2 года, полёт нормальный
Re[4]: Vaadin - реальное использование
От: hrensgory Россия  
Дата: 12.02.13 07:29
Оценка:
On 11.02.2013 21:15, dotidot wrote:

> H>А как его писать правильно? Биндиться напрямую к объектам,

> H>конструируемым из БД (JPA/Hibernate) не хочется, думаем более
> H>легковесные DTO сделать.
> долго и мучительно
> шучу, на самом деле основная фишка ваадина как раз в том что дто не
> нужны. объекты на клиент не передаются только содержимое формочек.
> сбиндите хибернейтовские объекты там утилиты для этого есть. даже в
> формочках будет валидация по аннотациям.

Спасибо за ответы, будем пробовать )

Ещё вопрос — в первом письме вы писали, что на ваадине хороши
интРАнетовские админки. Имеется в виду, что трафик между клиентом и
сервером довольно интенсивный? У нас просто не вполне интранет-решение
планируется, хотя пользователей у админки будет немного и каналы до
сервера у них будут хорошие.

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Vaadin - реальное использование
От: dotidot Россия  
Дата: 12.02.13 07:52
Оценка:
Здравствуйте, hrensgory, Вы писали:


H>сервером довольно интенсивный? У нас просто не вполне интранет-решение

H>планируется, хотя пользователей у админки будет немного и каналы до
H>сервера у них будут хорошие.

да кто щас ширину считает. лаги сильно заметные будут если пинг до сервера не минимальный. там ж буквально на каждое изменение кроме трививальных (а в старых версиях даже перемещение окошка по экрану через сервер шло) идет запрос на сервер, а оттуда ответ что перерисовать.
и пока не придет справа вверху желтый спиннер крутится периодически превращаясь в красный. на мобильном интернете лаги просто ужасные, хотя трафик десятки килобайт всего за минуты работы.
cделайте демо и оцените на месте, это буквально пара строк. главное смотреть со стороны клиентов на лаги, а не на локалхосте.
Re[2]: Vaadin - реальное использование
От: GiDRAvlic Латвия  
Дата: 12.02.13 09:32
Оценка:
Здравствуйте, dotidot, Вы писали:

H>>Если нет, то как оно разбивается на отдельные "страницы"?

D>в целом — руками. в 7ой версии обещают весь стейт отвязать от странички и поддерживать многовкладачность. На практике теперь корень называется UI, а не Application. больше особо разницы что то не видать.

7ку уже зарелизили, судя по описанию добавили кучу всего
Re: Vaadin - реальное использование
От: bykka Украина  
Дата: 12.02.13 12:27
Оценка:
Информация к размышлению:

У нас в компании выбрали SmartGWT так как набор компонентов намного больше.
Re[2]: Vaadin - реальное использование
От: Blazkowicz Россия  
Дата: 12.02.13 12:43
Оценка:
Здравствуйте, bykka, Вы писали:

B>У нас в компании выбрали SmartGWT так как набор компонентов намного больше.

И как? Много сделали? Меня глюки в гридах напрягают. В демках всё стабильно и красиво. Как сделал у себя с JSON с минимальными наворотами, так началась трудноотлавливаемая мистика.
Re[3]: Vaadin - реальное использование
От: bykka Украина  
Дата: 12.02.13 13:06
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>>У нас в компании выбрали SmartGWT так как набор компонентов намного больше.

B>И как? Много сделали? Меня глюки в гридах напрягают. В демках всё стабильно и красиво. Как сделал у себя с JSON с минимальными наворотами, так началась трудноотлавливаемая мистика.

Ну вот как раз с гридами пока проблем нету. Есть проблема з диалоговим окном логин формы — в мозиле постоянно почему-то появляется вертикальний скролин, плюс все формы нормально работают, а в одной форме, когда делаешь disable для полей, ну что-то никак нормально стили не может применить и показать, что она задизейбленна.

Кстати, раз пошел такой разговор, что думаете еще о zkoss? Набор компонентов вроде тоже большой.

(Primefaces я не считаю — набор комнонентов хоть и достаточно большой, но вот только нужно попотеть перед тем как заставить их виглядеть "гармонично" друг с другом)
Re[2]: Vaadin - реальное использование
От: hrensgory Россия  
Дата: 12.02.13 13:10
Оценка:
On 12.02.2013 16:27, bykka wrote:
> Информация к размышлению:
>
> У нас в компании выбрали SmartGWT так как набор компонентов намного больше.

Спасибо, гляну. Это который бывший SmartClient что ли?

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Vaadin - реальное использование
От: hrensgory Россия  
Дата: 12.02.13 13:13
Оценка:
On 12.02.2013 17:06, bykka wrote:
> From: *bykka* </Users/80701.aspx>

> Кстати, раз пошел такой разговор, что думаете еще о zkoss? Набор

> компонентов вроде тоже большой.

Выглядит красиво, но когда пробовали на практике — не работал. Правда
это было давно.

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Vaadin - реальное использование
От: bykka Украина  
Дата: 12.02.13 13:13
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>Спасибо, гляну. Это который бывший SmartClient что ли?


SmartClient — javascript библиотека
SmartGWT — gwt обертка для SmartClient
Re[5]: Vaadin - реальное использование
От: jumpow  
Дата: 18.04.13 10:24
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>Выглядит красиво, но когда пробовали на практике — не работал. Правда

H>это было давно.

Я работал с ZKOSS около двух лет.
Работает нормально, программы пишутся быстро и экраны выглядят красиво.
Но проект мы успешно завалили — заказчику не понравилась скорость реакции приложения.
Не для всякого приложения ZKOSS пригоден, однако. :(
Re: Vaadin - реальное использование
От: LaPerouse  
Дата: 18.04.13 13:44
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>Коллеги, есть ли тут кто, имеющий опыт построения реального приложения

H>на Vaadin?

Есть такой опыт.

H>Что интересует конкретно — годится ли оно в своём современном состоянии

H>для достаточного развесистого приложения (скажем так, 50-100 разных
H>экранов)?

Годится. В моем опыте — 99 процентов реальных компонентов (страниц) не требуют написания клиентского кода. Клиентское программирование требует только для
1. Нестандартная графика,
2. Обработка действий пользователя очень с высокой отзывчивостью
3. Минимизация трафика за счет клиентского состояния (для большого и интенсивно обновляемого динамического контента)

Модель программирования Server-side имеет много преимуществ. Сразу забываешь о DTO, пишешь, не задумываясь о передаче данных, словно это десктопное приложение. Можешь использовать любые java-библиотеки (в отличие от GWT или того хуже, javascript). Просто сказка. Производительность труда возрастает в 3-5 раз.

H>И я пока не очень понял концепцию — с точки зрения браузера это single

H>page application? Если да, то не будет ли в нём при более-менее
H>длительной работе "течь" память на клиенте?
H>Если нет, то как оно разбивается на отдельные "страницы"?

Открой класс VaadinServlet, метод service. При самом первом request вызывается метод handleOtherRequest, в котором вызывается BootstrapHandler. BootstrapHandler как следует из названия формирует bootstrap-страницу. Примерный фрагмент этой страницы:

<html>
 <head>
  <script type="text/javascript" src="./VAADIN/vaadinBootstrap.js"></script>
  <script type="text/javascript">
if (!window.vaadin) alert("Failed to load the bootstrap javascript: ./VAADIN/vaadinBootstrap.js");
vaadin.initApplication("cassandra-1073564104")</script>
 </body>
</html>



Если говорить упрощенно, то выше приведен чуть ли не единственный html, возвращаемый vaadin. Все прочие данные передаются уже в виде json. Как видим, вызвается функция initApplication из файла vaadinBootstrap.js, которая одним аякс-запросом загружает json начального состояния UI (см. метод handleBrowserDetailsRequest CommunicationManager-a). Иными словами, метод handleBrowserDetailsRequest инстанциирует весь пользовательский код, создавая пользовательский объект UI и возвращает состояние этого UI json-ом. В будущем полное состояние страницы уже не передается, а передаются только изменения. В этом заключается киллер-фича vaadin — передаются только изменения, полного обновления не происходит. Метод handleVariables того же communication manager опрашивает контролы на предмет изменений и возвращает json с изменениями, который применяется к существующему состоянию страницы.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[2]: Vaadin - реальное использование
От: hrensgory Россия  
Дата: 18.04.13 14:04
Оценка:
On 18.04.2013 17:44, LaPerouse wrote:

> 2. Обработка действий пользователя очень с высокой отзывчивостью

> 3. Минимизация трафика за счет клиентского состояния (для большого и
> интенсивно обновляемого динамического контента)

Очень интересуют пункты 2 и 3 (особенно 2).

Спасибо за подробный ответ !
--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Vaadin - реальное использование
От: LaPerouse  
Дата: 18.04.13 14:28
Оценка:
Здравствуйте, hrensgory, Вы писали:

H>On 18.04.2013 17:44, LaPerouse wrote:


>> 2. Обработка действий пользователя очень с высокой отзывчивостью


Server-Side модель подразумевает, что весь UI-код исполняется на сервере. На клиент пересылаются json-ом изменения в UI (как это происходит — см. в предыдущем сообщении). Конечно, callback-и (listener-ы) тоже выполняются на сервере. Если требуется высокая степень интерактивности, то постоянные обращения к серверу могут стать проблемой (но не становятся в большинстве случаев). Проблема устраняется просто — написанием своей клиентской компоненты на GWT. Новый Vaadin 7 существенно расширяет поддержку пользовательского клиентского кода, который теперь может произвольно обращаться к серверу при помощи механизма RPC.

>> 3. Минимизация трафика за счет клиентского состояния (для большого и

>> интенсивно обновляемого динамического контента)

Сравним по трафику два подхода.
1. Традиционный GWT: клиентский код пользователя (разработчика) запрашивает данные и на основании полученных данных производит манипуляции над пользовательским интерфейсом
2. Vaadin: пользовательский код на сервере производит манипуляции над пользовательским интерфейсом и vaadin передает результирующие изменения UI на клиент, где клиентский рантайм автоматически применяет эти изменения.

Обычно соотношение трафика 1 и 2 примерно на уровне 1.5-2. Однако в некоторых случаях небольшие изменения в данных могут вызвать большие изменения в пользовательском интерфейсе. Например, изменилось одно свойство объекта и это вызвало добавление новой панели (случай А). Или же отношение данных и изменений интерфейса нормальное (1.5-2), но при этом данные передаются очень часто (случай Б). И тот, и другой случай разруливаются клиентским кодом. В случае А просто напросто строишь UI на клиенте, получая вручную данные. В случае Б просо-напросто поддерживаешь параллельное состояние на клиенте, избегая лишних запросов данных.

В обеих случаях (2 и 3) написание клиентского кода и интеграция его с серверным кодом намного проще чистого GWT. Vaadin представляет полную поддержку этого процесса. И еще, как я говорил, требутся это совсем нечасто.
Социализм — это власть трудящихся и централизованная плановая экономика.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.