×Закрыть

Збільш свій прибуток з GWT


«like as Google» ©

Десь трохи більше року тому довелось мені познайомитись з такою технологією як GWT (GoogleWebToolkit). До GWT я мав невеликий досвід роботи зі стратсом і стратс-подібним фреймворком. Мабуть для багатьох знайоме написання інтерфейсу за допомогою JSP і величезної кількості JavaScript. Багато хто мабуть писав аплікації, які працювали тільки під експлорером, можливо дехто навіть займався адаптацією готових аплікацій від IE до FireFox, тож може оцінити наскільки це паскудна штука. Починали ми писати проект на версії 1.4, яка щойно з’явилась, тоді був відчутний брак п’ятої джави, проте вже з релізнутої версії 1.5 цього недоліку всі позбулись. Та й набір компонент розроблених сторонніми розробниками відчутно зріс. Мабуть тому GWT на мене справив надзвичайно позитивне враження. Ніяких (ну майже ніяких) проблем з кросбраузерністю, і взагалі ніякого джаваскрипта вручну (скажімо на 99%). Легка комунікація клієнтської і серверної частини.

Загалом фреймворк розвивається дуже динамічно, з’являється безліч нових, і що важливо корисних, бібліотек. Мені та й багатьом іншим, хто розробляє ПЗ на GWT, інструментарій видається вельми зручним. GWT доволі легко інтегрується з іншими фреймворками і не тільки. Ви можете використовувати GWT разом з Grails, PHP, JSF, Seam, etc і навіть. NET, що, очевидно, значно розширює область застосування. Також, що доволі важливо, можна писати юніт-тести використовуючи JUnit. Важливим аспектом є легке та зручне відлагодження аплікації, адже весь код написаний на джаві та вільно дебагається, як локально так і на серверах, стандартними засобами. Думаю, той хто шукав алертами у скриптах помилки, або намагався сапортити писану на xml/xslt клієнтську частину, мене зрозуміє.

Звичайно є свої проблеми. Мабуть головними з них по перше є часто-густо великий розмір клієнтської частини, хоча при швидкому інтернеті це не так і важливо і друге — це спільна проблема для Flex/Flash/Silverlight/GWT рішень — погана індексація пошуковими енжінами, знову ж таки при потребі обидві ці проблеми можна вирішити, а у корпоративних рішеннях, що працюють у внутрішній мережі ці проблеми ніколи і не виникнуть.

Проте найбільший інтерес GWT мав би викликати у кастомерів. Для замовників і працедавців GWT доволі вигідне рішення з багатьох причин. Насамперед аплікації, написані на GWT попадають під такі модні скорочення як AJAX, RIA чи WEB 2.0, що добре у маркетингу. Плюсом можна вважати і те, що це розробка від Google, гарно маніпулюючи тим, що продукти Google розроблені на GWT чи схожою технологією.

Надзвичайно легкий для навчання фреймворк дозволяє залучати в проект не тільки кваліфікованих девелоперів, але й новачків, у надзвичайно короткі терміни, що знижує вартість проекту. Швидкість розробки аплікації, як на мою суб’єктивну думку, доволі висока, що важливо в часи коли швидкість реалізації ідеї дає конкурентну перевагу.

Зовнішній вигляд аплікацій вражає, адже розроблено ряд бібліотек з набором красивих компонент таких як GWT-EXT (обгорнута в компоненти популярна бібліотека EXTJS), GXT (EXT-GWT), SmartGWT, GQuery (обгорнута біблотека JQuery).

Не раз чув відгуки про те, що аплікація дуже красива, були і побажання, щоб було «like as Google» (що ми доволі успішно і реалізовували). Фанкі бізнес в дії — зустрічають по обгортці, а як пощастить проводжати не будуть:)

Ще одним важливим аспектом може стати швидка, проста і як наслідок дешева підтримка розроблених рішень. Очевидно, що використання GWT на проекті може дати відчутний економічний ефект (такий важливий в умовах фінансової кризи;)).

GWT дає можливість швидко і дешево розробляти сучасні, з чудовим дизайном, високоясні рішення, які завжди цінуються на ринку. Як наслідок попит на GWT аплікації швидко зростає достатньо тільки поглянути на джоб-тренд:

джоб-тренд

Ну і не будемо забувати про задоволеність розробників, це теж дуже важлива річ (яка зменшує плинність кадрів;)), а розробляти проект на GWT — це таки задоволення.

У наступних статтях я спробую поділитись свої досвідом здобутим на двох проектах писаних на GWT, можливо комусь це буде цікаво.

Невеликий перелік речей, які написані на/з GWT:

Update:
textprocessordemo

Для розробки використано GWT+GXT

P.S. Велике дякую Андрію за допомогу у написанні статті.
P.P. S.

Ще одне велике дякую Мирославі за натхнення.

Diyko diykorey@gmail.com


47 комментариев

Присылать ответы Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

мабуть обговорення цієї теми вичерпало себеЯ планував написати статтю з порівняльними характеристиками найпопулярніших бібліотек для GWT проте часу мало і нові версії випереджають написання моєї статті:) 31 числа на циклумі буде проводитись айтіжем і я буду там виступати на тему Evolution of GWT кому цікаво може прийти послухатиБільше тутhttp://jug-lviv.blogspot.com/2...

Очень жаль что тема GWT не интересна и что данная ветка умерла. Не так не много русско- или украинско- язычных ресурсов есть по данной теме.Меня рассмешила одна новость от Google. Как говориться «если гора не идет к Мухамеду — тогда он идет к горе». Я о том что Google’ у надоел не «расторопный» браузер IE6 — IE8 и они сделали плагин который встраивается в IE и работает как Chrome (Google Chrome Frame). Данная новость меня сначала обрадовала (так как я последнее время пишу на GWT), потому что IE упорно тормозит с JS не говоря уж о CSS3 и HTML5. И хоя процедура простая — вставить в мета тегодну строчку (например:) в загружаемую страницу, но заставить пользователя загрузить данный плагин (учитывая что он не понимает для чего это надо, раз он до сих пор использует например IE6) будет проблематично и не решает проблему в целом.

Тестируя GWT приложение в различных браузерах последних версий, а именно Google Chrome2, Safari4, Opera10, Firefox3.5 за исключением IE 7−8 заметил явную тенденцию ускорения загрузки и отображения даже тяжелого одностраничного приложения на GWT. Очень хороший прогресс, я бы сказал — достаточный чтобы новый пользователь у которого даже нет кеша в браузере не нервничал, ограничение остается на очень слабых машинах и на слабом канале связи — тогда тормоза очень большие. Тестируемое приложение было перекомпилировано на GWT 1.7. Хотелось бы отметить что и различий в отображении контента почти нет, за исключением в IE. Частичная поддержка CSS3 и HTML5 в перечисленных браузерах тоже радует. Google обратил внимание на развитие беспроводных сетей для доступа к Интернет, имеется ввиду 3G, заявление о выходе собственной OS на базе Linux (не путать с gOS), выпуск netbook, противостояние браузеров Google и «компания» — Microsoft, Android и Windows Mobile. Тенденция на лицо — ближайшее будушее это — очень быстро загружаемая операционная система возможно с флешки в любом терминале, которые будут стоять везде например в магазинах кинотеатрах просто на улице, и быстрый доступ до своего профиля посредством мощного канала связи через браузер, сервисы Google растут ка на дрожжах. Как Вам картина а? И GWT здесь играет не последнюю роль — пример Google Wave.

Java-аплеты придумали так давно что их уже почти забыли, а по сути они решали те задачи которые стоят сегодня, а там что угодно и rich интерфейс и вся мощь java, вот только где они сейчас?, т.е. кто их использует при создания веб-приложений? Проблема в том что они требуют локальную среду выполнения то есть java машину на клиенте — это ли не одно и то же когда вы загружаете очередной плагин в виде плеера? Кроме того подгрузка java занимает не мало времени для небольшого аплета -, а что было бы если весь сайт это большой аплет. Конечно — это нелепо, а почему? А вот почему и есть ответ применения разных плагинных технологий в разработке. Ничего плохого об этих технологиях сказать не хочу, более того многие из них заслуживают уважения. Нельзя всех пересадить или заставить использовать тот же Flex какой он хорош бы не был, существует инерция (пример цифровой стандарт существует много лет -, а воплощать его не хотят — все многомиллиардное оборудование махом не заменишь) аналогия и здесь, вот поэтому и возникают решения такие как GWT, сейчас эта технология на стадии развития, что то придет на смену это точно, но на данный момент это лучшее решение. Мой первый и основной язык был java и изучение javacript для меня было непосильная задача, благодаря GWT я решил эту проблему и мои знания не куда не делись при создании навороченных тонких клиентов, вот в чем сила GWT

Просто если мы играем на поле с плагинами тут мне кажется уже будет интересна просто Java, SWT, FX и прочая прочая...То есть это — другая жизнь. Нужен богатый текстовый функционал прямо из флакона — AJAX и GWT. А иначе — все вопросы связанные с развертыванием приложений, упаковкой объектов для обмена с сервером, безопасность внутри навороченого клиента — все заново...

AJAX и GWT в частности были неизбежным шагом в развитии тонкого клиента. Интенсивный ввод данных через браузер невозможно осуществить на основе других технологий (плагины не берем, Silverlite, Java WebStart не берем). Разубедите меня.

Скільки десктоп аплікації ви бачили з таким функціоналом http://www.scrapblog.com/? ну окрім іграшок Вам би сподобалось якби ворд був нашпигований анімацією? Доречі в GWT є ще отаке ліба від гуглаhttp://code.google.com/apis/vi...

Тупик в том что поскольку GWT рисует с помощью операций над DOM HTML, это означает что его возможности ограничены стандартом DOM + HTML. Преимущенство такого подхода — он основан на стандарте который поддерживается всеми браузерами. В то же время имеем существенный недостаток -поскольку HTML относится к семейству markup languages и предназначен для отображение текста, в нем отсутсвуют даже элементарные операции вращения геометрических обьектов и навряд ли когда нибудь появятся. Поэтому даже такие простые эффекты которые можно видеть здесьhttp://www.scrapblog.com/ невозможно реализовать на javascript + DOM + HTML. Для форм GWT рулит, но если надо написать например музыкальный или графический редактор — тут уже GWT не поможет. Мой прогноз — расстояние между десктоп и веб аппликейшенами будет уменьшаться, все больше аппликейшенов будет запускаться через браузер. Поэтому требования к GUI будут все время возрастать, и GWT не сможет конкурировать с Flex. Стандарт HTML обновляется раз в несколько лет, а Adobe Flex может выпускать новую версию своего движка каждые полгода. Поэтому я считаю что использование GWT будет уменшаться, а Flex наоборот увеличит свою долю в сегменте rich web applications.

В чому проявляється тупик?)) Вікет наскільки я знаю погано масштабуєтьсяЗ тапестрі не працював, але судячи по всьому там інша ідея і порівнювати з GWT важкоПитання насправді не у візуалізації просто технологія намагається дати інструмент який дозволить будувати мережеві проекти схожі на десктопПитання в зручності кінцевого продуктуДля GWT динамічне оперування даними на сторінці — природнєДинамічні дерева, таблиці які легко налаштовуються, дані які оновлюються по частинах, драг енд дроп, таби, лайаути зручні — все це написати на GWT елементарноА хто писав таке на чомусь іншому той знає що це штука нетривіальна, яка містить повно непередбачуваних проблем, важко дебагається і т.д.Фактично зараз проблем з GWT дуже мало1) Кінцевий розмір скрипта (у версії 1.6 це питання зніметься) 2) Погана індексація пошуковиками (можна вирішити доклавши трохи зусиль, є надія що гугл з часом буде індексувати GWT проекти) 3) Теоретично повільна робота на старих компютерах (ця проблема стає щоразу менш актуальна, починаючи від CPU1000 — 1500MHz)

Если нужно чтобы веб сайт нормально индексировался поисковиком, тогда вместо GWT можно использовать Apache Wicket или Tapestry. Я считаю что идея посторения rich GUI клиента на javascript фреймворках не правильная. Манипулировать DOM’ ом веб страницы чтобы добиться каких-то визуальных еффектов — это тупиковый путь, можно сказать хак. Лучше использовать Adobe Flex, потому что эта технология специально разрабатывалась для эффективного GUI.

Та що тут сказатиПо перше — GWT все таки краще для корпоративних рішень, яким СЕО по барабануПо друге — всетаки можна придумати як реалізувати сайт так щоб пошуковики його бачили, хоч і з певними зусиллямиПо третє — думаю не за горами коли гугл буде бачити як мінімум сайти писані на GWTЗагалом аналогічна проблема є у багатьох технологій

Хочу подкинуть и обсудить проблему. Предположим Веб приложение на GWT мы написали, все красиво, почти все работает и почти как мы хотели, отдали заказчику и он почти заплатил деньги и тут..., а как насчет SEO?. И тут начинаються как кто то сказал «танцы с бубном». Как могло получиться так что сделав такой прекрасный фрейворк и не заложить поддержку оптимизации хотя бы для собственного бота? Где то прочитал что делали тесты на выполнение javascript Googlebot и подтвердили что он умеет это делать, но официально представители Google или просто отмалчиваються или рекомендуют общие принцыпы для Web.2. Но GWT не просто Ajax это сплошной Ajax и javascript. Я не один день потратил на поиски какого нибудь удачного решения, вопрос остался открытым.Что скажите а?

2ChikНу почнемо з того що мета аплікації робити роботу, а не заганяти броузерАналогічно спробуйте зробити те що ви запропонували на чомусь іншому і подивитесь як воно буде працюватиВелике значення має архітектура і люди які пишуть аплікаціюЗадачі створення модальних вікон, ресайзання і сування вікон не є пріорітетними, виконуються рідко, а якщо аплікація розрахована на малопотужні компютери то такий функціонал можна заборонитиЯ теж пишу проекти на GWT і чомусь в нас вони не гроблятьсяМоже вашій компанії варто взяти консультантами людей з досвідом;) Доречі маю хорошу пропозицію для Оракліста:) Цікавить — пишіть в приват, лишайте контакти

По поводу “GUI для корпоративних рішень” и “Не виключаю правда, що на слабих машинах можуть бути проблеми, але це малоймовірно”...Попробуйте сделать модальное окошко с табличкой колонок на 15−20 и ещё несколько элементов кинуть на него и подвигайте его, а ещё лучше ресайз браузера.Вот если это все выполнить на компьютере обычном, “офисном”, то эта операция займет немалое время... Тоже самое на формах на которых около 50 различных элементов управления. Видел такое на чистом GWT и на GWT-Ext.У корпоративных приложений есть ещё и требования по отклику, в которые никак не укладывается GWT, при более-менее сложных формах.Google классный потому что там 10 элементов управления и все, вот только бизнесу это трудно доказать — что больше не надо...P.S. А вообще я Oracle-ист. Просто вижу как мы “гробим” второй проект этой модной технологией...

Переведите на русский статью, пожалуйста. Буду сильно благодарен.

що означає задвоювання інтерфейсів? яка виникає помилка? якщо опис великий присилайте в приват

Вроде задышало. А не подскажете еще — как побороться с задваиванием файлов интерфейсов удаленных сервисов в GWT проекте и проете для RPC? Ссылки CLASSPATH одного проекта на другой выключают ошибку в Eclipse, но она появляется во время исполнения.

Эх хорошо бы это все в какой-то wiki вываливать. Для окончательного решения вопросов

я не до кінця розумію вашу проблему, алещоб запустити аплікацію задеплоєну на томкаті в хостмоді для дебагу потрібно: 1) задеплоїти аплікацію на томкат і запустити томкат (спробуйте доступитись до аплікації через броузер, якщо доступились крок 2) 2) в ланч файлі потрібно поправити таку стрічку (додати параметри виділені жирним) < stringAttribute key= «org.eclipse.jdt.launching.PROGRAM_ARGUMENTS» value="-noserver -out www http://localhost: 7001/YOUR_APPLICATION/"/> 3) запустити в дебаг моді якщо у вас не екліпс — потрібно пошукати де вказані оці параметри -out www і додати вищенаведені параметри

Хочу. Мешает запуск сервера Tomcat с местом для приложения в виде workspace.metadata.pluginsorg.eclipse.wst.server.coretmp0wtpwebapps< br> Криво это как-то... В общем плавно с GWT проблемы переезжаем в Eclipse. Хотя за ссылочку где конфигурируется этот параметр в Eclipse был бы признателен...Нашел — в Run configuration диалоге. В параметрах VMНе знаю насколько легально...

і ви теж не хочете використовувати noserver mode?

У меня проблема с тем что называется Single Origin Policy — localhost: 8888 который источинк «GWT статики» и localhost: 8080 на котором RPC считаются РАЗНЫМИ сайтами. И невзирая на -whitelist в параметрах GWTShell он выдает ошибку сетевого доступа.Вот и здесь о том жеhttp://groups.google.com/group...

не бачу ніяких проблем, працюю з мультимодульним проектом Правда для відладки всього коду в хост-моді потрібно щоразу компіювати весь код інакше не бачить зміни в модулях, а тільки в клієнтіА ідея сама підтягує все наскільки я знаю

Ну если забить на Eclipse и отладку в хост-режиме в общем-то можно и так.Я хотел остаться в рамках 2х эклипсовских проектов — GWT со своим отладчиком и хост-модом и занятым портом 8888 — Dynamic Web Project для RPC части и портом 8080 на живом томкэтеА в продуктив уже хоть ant хоть maven

ну розділення там чітке і практично примусовевесь код що стосується інтерфейсу мусить знаходитись в пакеті client (по замовчуванню, за бажання можна вказати іншу назву), весь код що стосується сервер сайду знаходиться в пакеті serverяк організувати структури проекту це вже справа технікитут є мультимодульний проектhttp://gwt-maven.googlecode.co.../а тут описано як скручувати жвт проект за допомогою ант чи мейвенhttp://www.developers.org.ua/a.../

А как по-хорошему в разработке отделить проект с RPC сервисами от проекта GWT как такового? А то с SOPовскими ограничениями все в куче — GWT, SRING, Hibernate...

Два моменти: — Абсолютний відсоток вакансій менше 0.02%- Згідно із класичним «дзвоном» , стрибок популярності GWT пояснюєтьсяранніми адептами.А чи перейде він «прогалину» — це питання.

Хочу поделиться собственным опытом. В проекте на GWT пробовал различные обвертки типа GWT-EXT и так далее все казалось супер, но собственный код на чистом GWT был шустрее, необходимый дизайн лучше делать с помощью css и только, без крайней необходимости (типа panel.setHeight (...); в коде что позволяет думать только о логике и, а дизайн оставить дизайнерам (дизайн любой сложности!), связь с серверной частью лучше использовать родной XML-RPC если серверная часть java, а там что угодно (Hibernate, Spring) — чисто классика и не надо готовых решений — хотя они есть и не плохие (GWT Widget Library). Согласен GWT это уже даже 3G для Java developera — динамика развития только подтверждает это. Думаю кто попробует и если есть выбор:) тот подсядет на GWT и не пожалеет как и я тоже.

2DiykoТе що вас вразив видно із статті: -)

На UA Web 2008 була доповідь про GWT (Применение GWT для построения Web 2.0 (Валентин Шибанов).

Трішки мав справу з GWT. Не вразив то мяко сказано.

2slavaДавно я так над комментарием не смеялся.

Ты определись сначала со стилем написания, — тебе трудно ангийские понятия писать по англ.? Что это за кирилизация??? Что за Фанкі бізнес, енжінами??? или ты забыв как они пишуься??? Сначала научись писать нормально!!!

тема зарабатывания денег не раскрыта: * фриланс на ГВТ никакой* кодить на зарплату — это не от ГВТ зависит* для продуктовых коипаний — они и сами знают что почем и ГВТ как один из ЗАВИСИМЫХ фреймворков здесь ничего не решает.да и график достаточно тенденциозный — любая относительно новая технология даст максимальный ОТНОСИТЕЛЬНЫЙ прирост в самом начале. А абсолютные цифры скромно умалчиваются.

Якщо слово «Java» викликає огиду (без холіворів будь-ласка), то має сенс дивитися в бік — http://www.sproutcore.com/Досить прикольно реалізований MVC каркас запозичивши декілька кльових моментів у Obj C.

после близкой работы с GWT-Ext могу сказать что работа с подобными враперами очень не удобна и приложения подобные со скриншотом очень тормознутые и неповоротливые.

Я б сказал, что выход Google Chrome изменил эту ситуацию.

GXT отказался, т.к. он навязывает собственный MVC, замену всех стандартных виджетов. API чрезвычайно странный.

Да, но в то же время GTX, как по мне, на данный момент лучшая библиотека UI элементов расширяющая возможности GWT. Так у них есть довольно неплохая реализация таблиц с подгрузкой данных.http://extjs.com/explorer/ — вот их демка.

Страница со статьей была открыта в Фаерфоксе два дня. Под конец 2-го дня ради интереса почитал. Очень впечатлило:) Впечатлили примеры использования. Понравился стиль изложения. Слышал про GWT уже давно. Все никак не мог найти время попробовать хотя бы хеллоу-ворлд сделать. После статьи попробую:) Знакомый-фрилансер давно подсел на нее и слазить не собирается.Автору большой респект и уважение. Будем ждать продолжения уже с конкретными примерами. Пишите еще! Спасибо за статью:)

> Лінкедін чи фейсбук на пхп+смарті не напишеш

Фейсбук написан на php:)

после близкой работы с GWT-Ext могу сказать что работа с подобными враперами очень не удобна и приложения подобные со скриншотом очень тормознутые и неповоротливые.имхо мне понравился чистый GWT и его неплохо применять в обычных веб-приложениях.

GWT необходим для создания веб-приложений, имеющих схожую функциональность с десктопными, а не для того чтоб писать сайты.Сайты пишутся на php + smarty.

GWT дає можливість швидко і дешево розробляти сучасні, з чудовим дизайном
GWT даеёт возможность разрабатывать визуально убогие решения, заставляет web дизайнеров заглядывать в код, что бы вытащить id компонентов для CSS, заставляет программистов делать из сайта некую модальную форму в смысле GUIшаг влево, шаг вправо и вы обречены биться головой об стену.

Цікава стаття, мені сподобалась, тож чекаю на продовження. Сподіваюсь побачити у наступних публікаціях дещо із реальної практики, а не теорію.

Беда JAVA коммьюнити для вэба, в том что оно наплодило такое гиганское количество фрэймворков, что в них не разобраться, вместо того что бы сфокусироваться на нескольких основных. Только я пробовал десяток. Посмотрите на ASP.NET — при всех своих недостатках, более документированого, рапидного фрэймворка и удобной среды разработки вы вряд ли найдете. Я приверженец стандартов, то есть JSF, тем более что 2 версия не за горами. А будет очень много интересных нововведений, например теже WebBeans от Seam.

А причем Spring к GWT? GWT это набор компонентов, который компилится в HTML и JS. На стороне серва обыкновенный сервлет с домешками GWT.Проблем с интеграцией никаких не возникает (по крайней мере на нашем проекте их нет).

Если IOC — то тогда уже Guice:). Милая вещь.Из опыта работы с GWT.1. От GXT отказался, т.к. он навязывает собственный MVC, замену всех стандартных виджетов. API чрезвычайно странный.2. GWT-EXT — это, как правильно замечено, лишь обертка. Т.е. ломается дебаггинг средствами IDE.3. Несколько специфичный RPC (*Async), нужно дублировать методы. Но раз въехать — и пользоваться можно, благо, все очень просто. Подобная нелогичность наблюдается и в некоторых местах Android. Почему-то решили не прикрывать.4. Wicket — это несколько другая целевая аудитория. GWT идеален для написания различных корпоративных приложений, для которых сейчас используется, скажем, Apache Beehive + Bea Weblogic и подобный unmaintainable crap. Там не нужна индексация пауками, не нужны навороты интерфейса. Функционал и поддерживаемость — это все. Wicket же более подходит для классических web-приложений для Internet: html+js+ логика на джаве всем этим рулит. Кстати, отдельные модули GWT можно вставлять и в существующий сайт.Как по мне — GWT — это web2, 5 для разработчика, когда javascript приобретает статус ассемблера для java developer. Все знают, что он есть, но работают на более высоком уровне абстракции.В общем, отличный продукт, рекомендую для получения результата в короткие сроки.

Меня впечатлила легкость написанного на украинском текста. Автору — зачет, не всем дано так хорошо обращаться с держ.мовою."Вільно дебагається" — вообще шедевр! :)

В интернете кто-то неправ

Изложите вкратце суть проблемы:

Ctrl+Enter

Подписаться на комментарии

Ctrl+Enter