Подтвердить что ты не робот

Какая веб-платформа Java лучше всего подходит для Google Guice?

Я планирую начать с нового проекта, и я смотрю на современные современные веб-фреймворки Java. Я решил создать свое приложение вокруг Guice и, скорее всего, использую очень легкий ORM, такой как Squill/JEQUEL/JaQu или аналогичный, но я не могу принять решение о веб-фреймворке. Какой из них лучше всего подходит в такой легкой среде? И какой из них лучше всего интегрируется с Guice?

4b9b3361

Ответ 1

Я собрал некоторый опыт по этой теме, так как я начал программировать новый проект в ноябре. Проект находится на поздней стадии.

Для меня важны следующие рекомендации по дизайну:

  • Использовать современный стек технологий, который будет полезен и будет использоваться в будущем.
  • Уменьшить количество артефактов проекта - использовать аннотации/код Java, где это имеет смысл, опустить XML.
  • Использовать фреймворки с открытым исходным кодом
  • Активное сообщество
  • Не альфа-этап
  • Легкие
  • Избегайте дублирования понятий
  • Я могу объяснить концепции в нем моим двум разработчикам, которые, несмотря на то, что были хорошими программистами, никогда не использовали инъекцию зависимостей (DI ) или веб-фреймворки.
  • Может служить технологической основой для будущих проектов.

Google Guice как контейнер DI был очевидным выбором - очевидно, самым продуманным DI contianer, с блестящими разработчиками и хорошим сообществом, Он выполняет все упомянутые выше пункты пули.

Итак, я создал свой базовый стек технологий. Начал с Guice, добавил Hibernate для сохранения (наряду с warp -perist и warp-servlet). Затем я написал несколько базовых DAO, которые выбирают что-то.

Затем я попытался сделать следующее: добавила другую веб-структуру поверх этого.

Я создал простую страницу с таблицей, заполненной DAO, заголовками и текстовым полем со всеми четырьмя фреймами.

Это были мои результаты при сравнении четырех фреймворков.

XSLT и XStream - это своего рода хардкорный подход. Это не действительно основа, а жизнеспособная полностью безгосударственная технология для высокопроизводительных приложений. Это был самый быстрый способ обслуживания тестовой страницы. В режиме отладки 3 мс на localhost против примерно 30-50 мкс с другими фреймами.

Интеграция Guice была относительно гладкой и хорошей с использованием warp-сервлета, которая позволяла мне вводить в сервлеты и вводить httprequest, httpresponse, сеанс в других объектах, не передавая их. Недостатки: нет сообщества вообще, так как я единственный человек, который рассмотрит этот стек. - нет готовых к использованию компонентов.

Затем я взглянул на JSF и Guice: конечно, можно поставить инжектор в контексте сервлета и использовать guice в качестве локатора сервисов. При прямом подходе невозможно внедрить поддержку beans где-то еще. Использование настраиваемой переменной resolver разрешает это частично, но затем вы теряете интеграцию IDE в своих файлах JSF, и вам придется использовать уродливые FQN для вашей поддержки beans, или создайте сопоставление ключей в виде строки → . Оба уродливые:

  • Преимущества: хорошее сообщество, многие разработчики на рынке труда (для меня нет критериев). Вы не будете уволены за использование JSF, если что-то пойдет не так.
  • Недостатки: приносит свой собственный механизм Inversion of control (IoC), который концептуально конфликтует с guice.

warp-widgets: я создал свой простой пример, используя это для удовольствия; это ранняя альфа-сцена. Приятно было использовать и его компоненты легко реализовать и повторно использовать самостоятельно. Он нацелен на предоставление типичного HTML с идеальной интеграцией Guice. Поскольку похоже, что у него был только один активный разработчик, который теперь может работать над Guice 2.0, я бы сказал, что сообщество почти не существует. Он работал как шарм, был достаточно быстрым, но я был бы альфа-тестером. Это было слишком рискованно для меня, чтобы рассмотреть его для коммерческого проекта.

Apache Wicket: этот проект сначала удивил меня с помощью wicket-ioc и wicket-guice, объединившихся в загрузку ядра. Встраивание конструктора в веб-страницы невозможно, только поле setter+. Инъекция на веб-страницах Wicket проста, просто добавьте @Inject в поля, которые вы хотите заполнить, но вы не должны понимать как это работает в фоновом режиме. Трудные вещи случаются. Теоретически возможна инъекция веб-страниц, но я не использовал ее один раз, поскольку это делает невозможным использование установленных URL-адресов, плюс она будет конфликтовать с сохраненным/сериализованным состоянием. Введенные члены классов прозрачно обрабатываются с помощью сериализации веб-страниц, что необходимо для поддержки поддержки браузера. Wicket использует нулевые внешние артефакты - всего лишь небольшую конфигурацию URL-адресов в классе приложения. Таким образом, вся конфигурация выполняется на Java, что хорошо подходит для модели Guice. Четкое разделение HTML и Java. Это с открытым исходным кодом, как и большинство компонентов, которые многочисленны и хорошего качества. Это с 2005 года (?) И является проектом Apache на высшем уровне. Несмотря на то что это многофункциональная инфраструктура, ее API является разумным компактным (все основные классы соответствуют одному JPEG на моем экране). В отличие от других, он не приносит собственного механизма IoC, а скорее рассматривает IoC как услугу, которая может быть предоставлена ​​Spring Framework, Guice и т.д., И эта философия делает это превосходным Интеграция гиков. Я упоминал действительно умную и легкую поддержку Ajax?

Рамки, которые не были глубоко оценены: tapestry5 - приносит свой IoC. Seam: не является собственной картой, а мета-рамкой, которая обычно включает Spring, JSF. Hibernate. (Хотя Spring теоретически может быть заменен Гисом.)

Сводка: из оцененных фреймов, Apache Wicket был явным победителем - в отношении интеграции Guice + всех других упомянутых критериев.

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

Ответ 5

Хороший легкий веб-контейнер Simple. Он чрезвычайно эффективен и может использоваться с такими фреймами, как Restlet и Jersey.

Ответ 6

Mojave MVC Web Framework - очень простая и легкая структура, в которую входит Guice.