Какая инфраструктура Java лучше всего работает с Google Web Toolkit? - PullRequest
5 голосов
/ 03 апреля 2009

GWT - главная причина, по которой я перехожу на Java для веб-разработки. Какая инфраструктура java будет работать лучше с ней, а также максимально использовать код для таких рутинных задач, как проверка формы, доступ к базе данных, разбиение на страницы и т. Д.?

Спасибо.

Ответы [ 8 ]

8 голосов
/ 03 апреля 2009

Весна - очевидный способ, которым вы должны пользоваться. GWT имеет собственную платформу контроллера RPC, поэтому я не могу понять, для чего вам понадобится платформа веб-приложений (например, JSF).

JPA - разумный выбор по нескольким направлениям, но у него тоже есть проблемы.

Во-первых, это потенциальная проблема при отправке объектов JPA клиенту. GWT (по крайней мере, до 1,5) обеспечивает довольно строгую структуру каталогов, поэтому вам придется помещать свои сущности в исходное дерево GWT. Помимо этого, сериализация (обычно JSON) объектов JPA для клиента и от него потенциально проблематична.

Сущности JPA - это довольно жесткие объекты, которые почти один в один отображают ваши таблицы. Однако это не то, как вы используете данные на уровне представления. Прямой SQL позволит вам выбирать, какие данные вы делаете и не хотите, специально для этой страницы. Таким образом, сущности JPA обычно имеют много полей, которые вам не интересны и не должны сериализоваться (в частности, коллекции отношений «один ко многим»).

Теперь этот аспект SQL - адаптация его к странице - часто упоминается как преимущество сущностей: ваш код не заканчивается заваленными объектами одноразового значения. Дело в том, что вы все равно получаете то же самое в gWT + JPA, но вместо того, чтобы находиться на постоянном уровне или бизнес-уровне, вы в конечном итоге получаете их на уровне представления. Теперь вы можете назвать это преимуществом. Я называю это шесть из одного, полдюжины из другого.

Я на самом деле думаю, что Ibatis гораздо лучше подходит для модели приложения GWT, чем JPA, потому что вы используете прямой SQL, объекты, адаптированные для ваших целей, и эти объекты можно использовать на всем пути от базы данных до клиента. Теперь эта концепция может привести к ужасу многослойных фанатиков, которые довольно распространены на земле Java, но помните, что наслоение - это средство для достижения цели, а не самоцель. Используйте это, если это поможет вам. Нет, если это не так.

Но в этом стеке абсолютно необходимо Spring.

Я также отсылаю вас к Почему Google Web Toolkit не более популярен? и Использование ORM или простого SQL? .

5 голосов
/ 24 июля 2009

Если вы разрабатываете больше приложений, таких как сайты, а не сайты на основе страниц, я бы порекомендовал взглянуть на платформу с открытым исходным кодом Vaadin . Это управляемая сервером среда, которая использует GWT на стороне клиента для рендеринга внешнего интерфейса, но также автоматически обрабатывает и хранит чувствительную бизнес-логику на стороне сервера. Это добавляет некоторую безопасность, и вам не нужно беспокоиться о трафике клиентского <-> сервера (если вы этого не хотите), но вы можете сосредоточиться на реализации логики на стороне сервера любым удобным для вас способом. Самый большой плюс в том, что вы действительно не должны кодировать что-либо еще, кроме Java. Также довольно легко внедрить собственные новые компоненты GWT в платформу.

Отказ от ответственности: Да, я работаю на IT Mill, разрабатывая Vaadin, но взгляд еще никому не повредил, не так ли?

3 голосов
/ 24 июля 2009

Теперь я использую GWT + Struts + Spring + Hibernate
Лучше использовать обмен данными json, чем веб-сервис GWT.
Для этого мы можем отделить логику и представление.

2 голосов
/ 24 июля 2009

О, эти ответы причиняют мне боль. JSF если ты мазохист или весна если ты клинически ненормальный;)

Если вы используете встроенный GWT RPC, вам не нужен веб-фреймворк, вы просто используете механизм RPC для связи с вашим сервером. Для внутренней базы данных и бизнес-логики вы просто используете стандартные сессионные компоненты JPA и POJO. Это чрезвычайно легкий, простой в использовании и поддерживаемый стек без головной боли. Если вы собираетесь делать формы за пределами GWT, убедитесь, что вы делаете себе одолжение и проверяете Stripes.

В ASCII Graphix:

База данных


JPA Session Beans и POJOs


Веб-уровень для обработки маршрутизации между GWT и уровнем EJB


GWT работает в браузере как javascript, используя все POJO, которые вы определили в слое EJB

2 голосов
/ 03 апреля 2009

Я предполагаю, что вы не имеете в виду веб-фреймворк, поскольку GWT сам по себе является фреймворком. Я бы использовал JSF для обработки приложений / бизнес-логики. Это позволяет легко хранить и обрабатывать компоненты, а также обращаться к БД. Для чтения БД, любой вкус JPA вам нравится. У меня был хороший опыт работы с Eclipselink, но теперь все они реализуют одинаковые интерфейсы. Также вы можете захотеть взглянуть на EJB, чтобы собрать все вместе и ввести JPA, который вам нужен.

1 голос
/ 24 июля 2009

Я использую GWT в основном для внутренних систем, но нахожу все, что мне нужно, это хорошо организованная кодовая база, шаблон PAC и Hibernate. Делает то, что мне нужно, очень красиво.

Я начал пытаться использовать такие инструменты, как dozer, для сериализации bean-компонентов через клиент-сервер, но быстро нашел это ненужным. Если вам нужна коллекция баров на foo, то выпадающий список aka getBars (foo). Вам нужно сохранить foo - RPC для сохранения (). Будьте проще, опустите то, что вам нужно, опубликуйте то, что вам нужно, не более. Поддерживайте состояние на клиенте, и все это прекрасно сочетается.

Для меня было важным осознать тот факт, что GWT не имеет отношения к созданию веб-приложения. Речь идет о создании приложения в Интернете. Совсем другая вещь.

GurffT

РЕДАКТИРОВАТЬ: Забыл сказать, у меня есть логический слой, взаимодействующий с серверной стороной объектов DAO - но они довольно просты и просто созданы с новым!

0 голосов
/ 03 июля 2012

На мой взгляд, лучшим стеком будет GWT / GIN / Guice во внешнем интерфейсе, а затем Guice для внедрения в бэкэнд с JPA + некоторый поставщик для базы данных.

Весна тяжелая и делает намного больше, чем нужно. Guice очень легкий и специально создан для внедрения зависимостей. Джин в основном очень похож на Guice только в контексте GWT / Javascript.

Я также думаю, что есть большая ценность, особенно когда вы находитесь на ранних этапах использования новой технологии, иметь легкий стек с концептуальной точки зрения. Весна принесет 90% банок, сделанных с начала времен, что концептуально затрудняет понимание того, что и что делает. вышеприведенный стек принесет фрагменты Gin / Guice / GWT, JPA и любого другого провайдера (Hibernate, Toplink и т. д.), основной веб-материал java (время выполнения сервера для библиотек api сервлета) проще понять что у тебя и почему. Я думаю, что весна принесет более 15 банок, и для меня это всегда делает сложнее, чтобы понять, что происходит и почему. Вообще-то я не ненавижу весну, весенний mvc был моим любимым, весна просто очень большая, и если вы только начинаете, новых вещей будет достаточно, чтобы освоиться. На мой взгляд, вам не нужно добавлять сложность большей, чем требуется, структуры, чтобы запутать воду, что только увеличит кривую обучения.

0 голосов
/ 24 мая 2011

Если вы хотите повеселиться, то почему бы не использовать playframework.org с GWT? Это очень быстро ускоряет работу и предоставляет все необходимое на стороне сервера (например, jpa через hibernate):)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...