Блог разработчиков

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

Diyko
Опубликовано 4.11.2008 в Разработка, Статьи

“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

Теги: , , , , , ,

1 звезда2 звезды3 звезды4 звезды5 звезд (11 голосов, средний: 3.82 из 5)
Загрузка ... Загрузка ...
Распределение голосов

Понравилась статья? Подпишись на обновления по RSS/E-mail

Подписаться, не оставляя комментарий

Все комментарии (50) к “Збільш свій прибуток з GWT” RSS

  1. Denix говорит:

    Интеграция со Spring оставляет желать лучшего.
    Можно добавить для сравнения Wicket.

  2. Diyko говорит:

    Якого роду інтеграція зі спрінгом вас цікавить?
    Тобто яка мета застосування спрінга на проекті

  3. Denix говорит:

    Diyko, использовать IOC контейнер и утилитные классы Spring.

  4. Андрей Церкус говорит:

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

    “Вільно дебагається” - вообще шедевр!

    :)

  5. Diyko говорит:

    2Denix
    підключення IOC взагалі не має нічого нового
    ось тут є стандартний приклад http://www.javabeat.net/tips/94-setter-injection-in-spring-ioc.html
    А ось тут є як доступатись до віддаленої спрінг аплікації із GWT
    http://www.shinetech.com/pages/viewpage.action?pageId=1396
    і теж нічого незвичайного

  6. Denix говорит:

    Diyko, что такое “віддаленої спрінг аплікації із GWT”?
    Ладно, у меня просто времени это обсуждать нету.
    Если бы вы пробовали создать приложение на основе GWT и Spring, то, наверное, написали бы об этом в статье.

  7. kenny говорит:

    Если 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. Все знают, что он есть, но работают на более высоком уровне абстракции.

    В общем, отличный продукт, рекомендую для получения результата в короткие сроки.

  8. Андрей говорит:

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

  9. Yaroslav Nosa говорит:

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

  10. Diyko говорит:

    2Yaroslav Nosa
    Це і біда і перевага
    Насправді попри різномаїття технологій є ряд найбільш популярних
    так всі знають про стратс спрінг хібернейт єджібі і джсф
    Ці технології закривають 90% ринку
    GWT може претендувати на найкраще рішення при розробці GUI для корпоративних рішень

  11. Сергей Волошин говорит:

    Ще є tatami - GWT + Dojo

  12. Roma говорит:

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

  13. Denix говорит:

    Yaroslav Nosa, зачем всему комьюнити фокусироватся на фреймворках.
    Фокусироватся нужно на тех фреймворках, с которыми работаешь в данный момент времени.
    А про .NET - они ж плагиатом стырили у java большинство фреймворков и идей разработки.
    Посмотрите на Gmail.com, Ebay.com, LinkedIn - все работает на java и на разных фреймворках.

  14. Diyko говорит:

    2Roma
    буде продовження
    А що саме вам буде найцікавіше?

  15. Igor Katkov говорит:

    GWT дає можливість швидко і дешево розробляти сучасні, з чудовим дизайном

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

  16. Diyko говорит:

    Ось тут скріншот аплікації писаної на GWT+GXT
    http://sharebee.com/44ce770d
    можете подивитись і сказати скільки часу займе зробити такий інтерфейс стандартними засобами і накскільки він “убогий”)))
    Щодо CSS тодля конкретної компоненти setStyleName присвоює потрібний CSS, а якщо хочете переписати всі стилі для всіх компонентів то навіть в цьому випадку це не так багато компонент та й не виникає такої потреби перевизначати всі поголовно стилі

  17. Андрей говорит:

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

  18. Diyko говорит:

    2Андрей
    На GWT можна написати, що завгодно, ніякої привязки до десктопа немає, я просто навів такий зразок міг щось зовсім інше зробити.
    Наразі використання GWT у вебі обмежується великим розміром вихідного скрипта, що змушує або писати маленькі аплікації або використовувати в ентерпрайзі для внутрішніх мереж, проте вже у версії 1.6 проблема монолітного вихідного срипта буде вирішена
    Лінкедін чи фейсбук на пхп+смарті не напишеш

  19. Имя говорит:

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

  20. Diyko говорит:

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

  21. kebriam говорит:

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

  22. Diyko говорит:

    2kebriam
    Визнаю приклад був невдалий )))

  23. dark_start говорит:

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

  24. Imp говорит:

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

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

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

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

    http://extjs.com/explorer/ - вот их демка.

  25. Diyko говорит:

    2Imp
    Погоджуюсь з вами
    та й загалом ще раз скажу GWT-Ext в реальних аплікаціях працює швидко
    Я запускав на Athlon1600 - працює чудово

  26. Алекс говорит:

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

  27. KIHOMEXAHIK говорит:

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

    да и график достаточно тенденциозный - любая относительно новая технология даст максимальный ОТНОСИТЕЛЬНЫЙ прирост в самом начале. А абсолютные цифры скромно умалчиваются.

  28. slava говорит:

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

  29. Франковский Богдан говорит:

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

  30. HighJustice говорит:

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

  31. Diyko говорит:

    2slava
    я тільки на рахунок фанкі бізнесу відпишу
    є така хороша книжка “Бізнес у стилі фанк” Йонаса Ріддерстрале й Кьєлла Нордстрема
    рекомендую почитати всім
    Доречі пан білорус? ;)

  32. Diyko говорит:

    2KIHOMEXAHIK
    Мета була розказати про GWT та популяризувати
    1)фріланс на джава ентерпрайз сам по собі не дуже а для веброзробок GWT буде придатний з версії 1.6
    2)кодити на зарплату взагалі ні від чого не залежить
    3)пункт третій не зрозумілий, ті компанії які працюють з жвт на продакшин продуктом задоволені

  33. Diyko говорит:

    2HighJustice
    а я працю вже півтора року і мене вразив ;)

    Я от думаю чи були б бажаючі відвідати якусь конференцію по GWT або щоб скромніше сказати - семінар
    Якщо б були я постарався зібрати людей які мають досвід у розробці комерційній на GWT і вони поділились би досвідом
    Показали б приклади

  34. Сергей Волошин говорит:

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

  35. HighJustice говорит:

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

  36. Luxor говорит:

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

  37. Diyko говорит:

    2Luxor погоджуюсь повністю
    обгортки рятують у ситуації коли нема дизайнерів і взагалі ресурси і час на розробку обмежений

  38. Максим Шостак говорит:

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

    А чи перейде він “прогалину” - це питання.

  39. Diyko говорит:

    ну будемо бачити :)
    тут ще є ряд трендів http://stuff.ongwt.com/gwttrends122007
    доречі наразі окрім всяких бібліотек з компонентами зявилась бібліотека AOP для GWT http://code.google.com/p/gwt-ent/wiki/AOP

  40. Billy Bones говорит:

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

  41. Diyko говорит:

    ну розділення там чітке і практично примусове
    весь код що стосується інтерфейсу мусить знаходитись в пакеті client(по замовчуванню, за бажання можна вказати іншу назву), весь код що стосується сервер сайду знаходиться в пакеті server
    як організувати структури проекту це вже справа техніки
    тут є мультимодульний проект
    http://gwt-maven.googlecode.com/svn/trunk/maven-googlewebtoolkit2-sample/
    а тут описано як скручувати жвт проект за допомогою ант чи мейвен
    http://www.developers.org.ua/archives/diyko/2008/11/17/gwt-and-build-systems/

  42. Billy Bones говорит:

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

    А в продуктив уже хоть ant хоть maven

  43. Diyko говорит:

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

  44. Billy Bones говорит:

    У меня проблема с тем что называется Single Origin Policy - localhost:8888 который источинк “GWT статики” и localhost:8080 на котором RPC считаются РАЗНЫМИ сайтами. И невзирая на -whitelist в параметрах GWTShell он выдает ошибку сетевого доступа.

    Вот и здесь о том же
    http://groups.google.com/group/Google-Web-Toolkit/msg/ece678197d6c4994

  45. Diyko говорит:

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

  46. Billy Bones говорит:

    Хочу. Мешает запуск сервера Tomcat с местом для приложения в виде workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\

    Криво это как-то… В общем плавно с GWT проблемы переезжаем в Eclipse. Хотя за ссылочку где конфигурируется этот параметр в Eclipse был бы признателен…

    Нашел - в Run configuration диалоге. В параметрах VM

    Не знаю насколько легально…

  47. Diyko говорит:

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

    якщо у вас не екліпс - потрібно пошукати де вказані оці параметри -out www і додати вищенаведені параметри

  48. Billy Bones говорит:

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

  49. Billy Bones говорит:

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

  50. Diyko говорит:

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

Оставить комментарий

Указать свой сайт могут только зарегистрированные пользователи. Регистрация или вход.

Архив

Комментарии

Последние комментарии