Аккумуляторы включены
Инструменты Java
Это просто потрясающе
- IDE: даже если некоторые IDE поддерживают JavaScript, уровень поддержки просто не сравнивается. Попробуйте рефакторировать код JavaScript на больших кодовых базах (скажем, 40K + LOC) и плакать.
- Модульное тестирование: хотя оно и выросло за последние несколько лет, оно также более зрелое в мире Java.
- Непрерывная интеграция и постоянный контроль
- Генерация документации: Конечно, у вас есть JSDoc и несколько других
Static-типирование
Это ловит ошибки рано. (Google Closure адрес, который немного, сохраняя разработчика в мире JavaScript, если вы предпочитаете).
Оптимизированный JavaScript
GWT пишет быстрее и более компактный JavaScript, чем вы (для больших приложений), и позволяет вам определить, что отправляется клиенту, вероятно, легче, чем с эквивалентными полными решениями JS.
Архитектура
Это обеспечивает хорошее разделение проблем для больших приложений, с приличными архитектурами MVC или MVP, уже предварительно выпеченными у вас под рукой.
Достойная библиотека
GWT предоставляет интересные библиотеки и позволяет легко (ну, проще) создавать приложения с поддержкой I18N с динамической загрузкой пакетов.
Unit-тестирование
Использование JUnit из Eclipse IDE и из командной строки. Это относится к моему первому пункту. Вы также можете использовать некоторые инструменты качества кода Java в проекте GWT (для проверок исходного кода, а не проверок байт-кода, поскольку их нет).
Это все о вас!!
GWT не для всех. Это делает некоторых людей более продуктивными и дает хороший инструмент для разработчиков, не являющихся JS, для создания профессиональных веб-приложений с динамическими интерфейсами, не затрагивая (слишком много) JavaScript. Но если это не работает для вас, просто используйте что-то еще.
Если вам нужно большинство из вышеперечисленного, но вы просто не хотите Java, возможно, посмотрите на Google Closure или Dojo Toolkit .
Была хорошая идея в то время: история имеет значение !!
Мир JavaScript (и веб-интерфейсные технологии в целом) в наши дни чрезвычайно активен, так что ситуация улучшается. Но всего несколько лет назад все было не так ярко. LESS / SASS не были так популярны, jQuery еще не был де-фабричной JS-библиотекой, JavaScript-библиотеки не появлялись раз в две недели, и инструменты в целом не были такими уж хорошими.
Но уже был растущий спрос на профессиональные и большие веб-приложения с динамическими интерфейсами, поэтому необходимо было заполнить пробел, чтобы сделать разработчиков более продуктивными. В JavaScript очень много подводных камней и странностей, о которых вам нужно знать, и, возможно, лучше даже не заботиться о них. Отсюда ниша для таких инструментов, как GWT.
С тех пор появились другие (CoffeeScript приходит на ум, Dart уже в пути, но также и большие JavaScript-фреймворки, революция на стороне сервера JS с Node.JS и др., И сильный возврат к JavaScript как к «достаточно хорошему») -рациональный язык, который будет использоваться не только на стороне клиента, но и в других частях вашего бизнес-стека.
Дополнительные замечания
Относительно вашего оригинального (сейчас отредактированного) вопроса об использовании Firebug
Конечно, вы можете отлаживать код GWT с помощью Firebug, но в идеале вы должны отлаживать его непосредственно из отладчика Eclipse IDE, который теперь обеспечивает поддержку отладки живого кода.
Тем не менее, Firebug по-прежнему пригоден для использования, хотя следует помнить, что GWT генерирует оптимизированный и сжатый JavaScript, который может быть нелегко отладить, как есть.
Относительно вашего оригинального (сейчас отредактированного) вопроса о CSS
Да, конечно, вам все еще нужно написать CSS-код. Вы соединяете свой проект GWT с другими инструментами (например, SASS), более или менее легко.
Это просто инструмент!
Не путайте GWT с тем, что это не так: вы не пишете код Java, который будет запускаться непосредственно на стороне клиента, как байт-код Java. Вы пишете код на языке Java, который затем транслируется в JavaScript для повышения эффективности и позволяет использовать язык высокого уровня (или, по крайней мере, это то , как это означало быть видно).
Можно утверждать , что Java и JavaScript можно рассматривать как сопоставимые с точки зрения уровней абстракции. Тем не менее, Java имеет некоторые преимущества (подробно описано выше), следовательно, преимущество в том, чтобы пожинать преимущества существующих инструментов без необходимости переписывать их. У разработчиков Google просто была умная идея сделать возможным повторное использование существующих Java-ориентированных инструментов, но в действительности разрабатывать приложения JavaScript.
Кроме того, они решают еще одну проблему, которая часто затрудняла управление веб-приложениями на двух языках, где JavaScript и код Java обрабатывались отдельно. Использование GWT обеспечивает определенный уровень конвергенции для обеих сторон процесса разработки.
Дальнейшее чтение:
После многих лет разработки веб-приложения в GWT, я считаю, что у GWT есть настолько серьезные недостатки, что я никогда не буду использовать его снова, если меня не заставят.
Дерево DOM
Хотя производительность JavaScript может быть лучше, отображаемое дерево DOM часто неоправданно сложно. Например, реализация Tree использует более 13 элементов DOM, включая <table> для каждого отдельного элемента. Использование больших деревьев (около 10000 элементов) просто останавливает браузер. Чистое дерево JavaScript / HTML / CSS могло легко обрабатывать одинаковое количество элементов.
развитие
Цикл модификаций чистого исходного кода JavaScript / HTML / CSS нельзя превзойти. Вы просто сохраняете исходный файл и обновляете страницу в браузере. Это ключевой фактор производительности, и GWT просто не может конкурировать, даже используя кодовый сервер.
Отладка JavaScript абсолютно проста и приятна с отладчиком Chrome или Firebug.
Hammer Experts
Идея использовать Java для всего есть для разработчиков, которые являются "экспертами молотка". Они мастера своего молота, поэтому все гвозди. Я думаю, что этот подход очень неправильный. Использование GWT также требует знания CSS и HTML. Без этого разработчики GWT часто сталкиваются с проблемами, которые они почти невозможно решить, в то время как кто-то с опытом работы с HTML / CSS может найти решение. Если разработчики нуждаются в этой компетенции, они могут упростить разработку HTML.
Мое мнение таково, что большинство преимуществ, предоставляемых GWT, по крайней мере сомнительны, в то время как недостатки гораздо серьезнее по сравнению с разработкой на чистом JavaScript / HTML / CSS.
источник
Это не заметно лучше.
Для повседневного использования рассмотрите jQuery , AmpleSDK или некоторые html5 polyfill .
У GWT много накладных расходов: актуальных и концептуальных.
Может быть полезно, если у вас есть java-приложение или какой-нибудь java-код на стороне сервера для переноса на веб-интерфейс.
источник
Несколько преимуществ использования GWT, о которых я думаю (подробнее читайте в моем блоге http://www.pandurangpatil.com/2012/09/benefits-of-using-gwt.html )
Поскольку клиентское приложение GWT написано на Java, можно получить возможность улавливать синтаксические ошибки во время компиляции из-за того же (хотя оно не поддерживает все классы JRE, поскольку эти функции не поддерживаются самими браузерами). Давайте возьмем пример, чтобы понять, что я говорю. Если вы неправильно написали имя переменной JavaScript, используя чистую библиотеку JavaScript. Единственный способ уловить такую ошибку - запустить приложение и протестировать результаты. Функции Java, такие как Generics и Annotations, используются полностью и могут использоваться в вашем приложении.
Можно легко использовать существующие доступные библиотеки или написать одну для создания кода в соответствии с требованиями с легкостью, поскольку код, который должен быть сгенерирован, должен быть в Java. Компилятор GWT позаботится о его компиляции и преобразовании в JavaScript.
Управление кодом становится проще.
Можно просто написать некоторую общую бизнес-логику таким образом, чтобы ее можно было использовать в коде на стороне клиента GWT, а также в коде на стороне сервера, как в Java, например, для проверки данных или некоторых общих служебных функций.
С помощью плагина GWT eclipse вы можете легко отлаживать клиентский код на Java для вашей бизнес-логики.
Как компилятор GWT компилирует ваш клиентский Java-код и генерирует из него JavaScript. Какой вам нужно развернуть его на вашем сервере, и он будет обслужен и выполнен в браузере пользователя по запросу. При создании этого JavaScript он будет делать некоторые оптимизации.
Он не учитывает мертвый код при генерации JavaScript, когда я говорю «мертвый код», я имею в виду «код, который существует, но не вызывается из основного потока». В свою очередь уменьшает эффективный размер вашего окончательного кода JavaScript.
Он заботится о запутывании сгенерированного кода JavaScript.
Это делает минификацию сгенерированного кода JavaScript.
И что более важно, он будет генерировать оптимизированный для конкретного браузера код отдельно. Когда я говорю отдельно, он генерирует отдельный JavaScript-код для конкретного браузера, который будет обслуживаться при получении соответствующего запроса от данного браузера. Что, в свою очередь, уменьшает размер кода JavaScript, который загружается для конкретного браузера, поскольку он не содержит всю специфичную для браузера обработку в одном коде.
Если вы пишете свое заявление на разных языках, например на английском, хинди, маратхи и т. Д., Используя функцию интернационализации GWT. При создании кода JavaScript он создает копию для каждого языка и комбинации браузера. Что делает сгенерированный код JavaScript для данной комбинации языка и браузера наиболее оптимальным и небольшим.
Если вам нужно использовать прямой JavaScript, который можно вызвать из кода Java GWT, это можно сделать с помощью JSNI (собственный интерфейс JavaScript). Можно даже вызвать GWT Java Code из JavaSctipt.
Если вы хотите сделать закладку способными страницами, то вы можете использовать функцию истории GWT.
Если вы хотите использовать JSON в качестве формата данных для связи и манипулирования, у него есть очень хорошая функция, которая называется JavaScript Overlay Types.
Функция отложенного связывания в GWT - это хорошая функция, которую, я полагаю, можно обеспечить благодаря Java.
Вы можете создать свой пользовательский интерфейс, используя доступные виджеты GWT в стиле Java Swing. Вы даже можете легко создавать свои собственные виджеты.
Если вы хотите создать свой пользовательский интерфейс (веб-страницы) в чистом HTML-стиле, вы можете использовать функцию декларативного пользовательского интерфейса GWT. Что я чувствую одной из главных особенностей GWT. Что облегчает разработчику создание страниц в чистом стиле HTML. Что, я полагаю, более приемлемо, чем кодирование в стиле Swing. И самое главное, вы все еще можете иметь свою логику в Java и только часть представления в чистом HTML. (Примечание: какой метод вы используете (декларативный пользовательский интерфейс или стиль Swing), в конечном итоге это будет только HTML, но разница в том, как вы кодируете и поддерживаете его).
Функция Client Bundle в GWT позволяет очень легко управлять другими веб-ресурсами, такими как CSS, изображения и другое текстовое содержимое.
Cell Widgets: для представления разбитого на страницы сбора данных GWT имеет Cell Widgets. Есть виджеты, такие как CellTable, CellList, CellTree и CellBrowser.
Связь с сервером из кода клиента GWT. Он поддерживает несколько способов реализации взаимодействия клиент-сервер.
Если вас не интересует протокол, используемый для передачи данных, то это механизм GWT RPC. Очень легко интегрировать ваш клиентский код для передачи данных с сервера. Вы можете определить пользовательские DTO (объект передачи данных) в коде клиента, который может даже использоваться в коде на стороне сервера. Реализация на стороне сервера принимает тот же DTO как параметр или возвращаемое значение. Все остальное заботится о каркасной работе GWT RPC. Он даже распространяет исключения, возникающие из кода на стороне сервера, в вызывающую сторону в коде на стороне клиента (при условии, что вам необходимо определить эти классы исключений в пакете кода на стороне клиента. GWT RPC внутренне использует вызовы AJAX с собственным протоколом для передачи данных.
Если вы не хотите использовать GWT RPC, вы можете выполнять серверные AJAX-вызовы для получения данных с сервера с помощью Request Builder. Что также гораздо проще реализовать. Также есть интересная функция Request Factory. С помощью этой функции вы можете сделать свой уровень DAO или Service доступным для вызова из клиентского кода. Для этого вам нужно определить несколько наборов интерфейсов для вашего сервиса и пользовательских типов данных. И используя эти интерфейсы, вы можете получить доступ к этим сервисам из клиентского кода. Я написал Maven плагин для создания этих интерфейсов. Если вы аннотируете свой слой DAO некоторыми необходимыми аннотациями, обратитесь ( https://github.com/pandurangpatil/gwt-mvn-helper) обратитесь к модулю mvn-helper-test внутри него для использования. Фабрика запросов более нацелена на интеграцию со слоем ORM, таким как JDO или JPA на сервере. Он имеет поддержку для вызова постоянства на данном объекте из клиентского кода. И самое главное, когда вы вызываете метод persist, он вычисляет и отправляет только изменения (дельта) на сервер для сохранения.
Если вы хотите сделать междоменный вызов JSONP, вы можете сделать то же самое.
источник