Выбор Java Web Framework сейчас?

мы находимся на этапе планирования миграции большого веб-сайта, который построен на специально разработанной инфраструктуре mvc, на веб-платформу на основе Java, которая обеспечивает встроенную поддержку ajax, мультимедийного контента, mashup, шаблонов, шаблонов, проверки, максимальное разделение кода html/java. Grails выглядел как хороший выбор, однако мы не хотим использовать язык сценариев. Мы хотим продолжить использование java. Шаблон, основанный на макете, является основной задачей, поскольку мы намерены использовать это веб-приложение с несколькими веб-сайтами с аналогичной функциональностью, но радикально отличающимся внешним видом.

Действительно ли решение на базе портала подходит для этой проблемы?

Любое понимание использования "Spring Roo" или "Play" будет очень полезно.

Я нашел похожие сообщения, такие как , но это больше, чем год. Вещи наверняка изменились в среднем!

EDIT 1: Спасибо за отличные ответы! Этот сайт превращается в самый лучший источник информации для программистов в траншеях. Тем не менее, я ожидал больше информации об использовании дуэта портала-cms. Jahia выглядит товарами. Что-нибудь подобное?

Ответ 1

Действительно ли решение на базе портала подходит для этой проблемы?

Лично я бы держался подальше от больших толстых портальных решений (они часто являются убийцами производительности). Я слышал хорошие вещи о Gatein, хотя у меня нет никакого реального опыта с ним.

Любое понимание использования "Spring Roo" или "Play" будет очень полезно.

О Spring Roo, я прочитал предыдущие ответы, такие как Spring roo Vs (Wicket и Spring) и другие вещи через Интернет, но я Я все еще не убежден (может быть, я этого не понимаю), я не уверен в его зрелости, и, что более важно, мне действительно интересно, что SpringSource делает с Grails и Roo (нет, Grails vs Roo - почему SpringSource подталкивает две очень похожие технологии? не убеждает меня, что они оба выживут.)

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

Я нашел похожие записи (...). Вещи наверняка изменились в среднем!

Да и нет:) Но позвольте войти в рамки презентации: вы не можете ответить на свой вопрос (например, год назад), там есть десяток фреймворков и нет явного победителя. Чтобы привести несколько:

  • JSF: Множество скептиков об этой структуре на основе компонентов, включая меня, поэтому я не лучший, чтобы говорить об этом, но...
  • JSF 2 (+ CDI/Weld): Скептики JSF поощряются (от Gavin King), чтобы "сделать второй взгляд". Действительно, я думаю, что JSF 2 - это большое улучшение, особенно с CDI, но... он все еще довольно новый (понимаете, ему не хватает вознаграждения). Если вы хотите включить Java EE 6, проверьте его.
  • Wicket: Еще одна основа, основанная на компонентах, которая становится все больше внимания. Я слышал в основном хорошие вещи об этом: проще, чем JSF, хороший дизайн, высокая степень проверки, HTML-дизайн и т.д. Вам может понравиться.
  • Гобелен: просто нет (см. Почему вы перестали использовать гобелен?)
  • Struts 2, Spring MVC, Stripes: основанные на действии фреймворки. Все достойно и будет отвечать вашим потребностям (лично мне нравятся Stripes и его подход к настройке конфигурации, см. Stripes vs. Struts2, чтобы получить представление об этом).
  • GWT, Flex, Grails: Возможно, это не то, что вы ищете. Я не могу говорить о последних версиях Flex и GWT, но я знаю, что у Grails есть некоторые фанаты.

На самом деле, я бы посоветовал взглянуть на презентации Мэтта Райди он действительно отлично справился с сопоставлением веб-фреймворков, показав их сильные и слабые стороны, сбор фактов и цифр, показ тенденций... Я рекомендую:

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

Ответ 2

Я использовал Spring 3 и JQuery некоторое время, но слышал о Play и дал ему шанс. Мне очень нравится, Play отлично подходит для чего-то вроде PHP и тяжелых фреймворков Java, таких как Spring.

То, что мне больше всего нравится в игре, это:

  • Очень легко получить приложение для игры с земли, вам нужно далеко ходить с кодированием и настройкой, чтобы получить простое приложение crud на экране с помощью Spring (хотя Spring 3 упростило).
  • Spring Безопасность - это потрясающе, но это связано с ценой сложности. Модуль защиты от прослушивания очень прост и покрывает потребности, вероятно, 90% приложений.
  • Вы можете внести изменения в код и нажать "Обновить" в браузере, чтобы увидеть изменение, подобное PHP, вместо того, чтобы выполнять всю операцию повторного развертывания с помощью фреймворков на основе сервлетов.
  • Сообщения об ошибках отображаются хорошо и не так загадочно. По-прежнему необходимо работать с обработкой ошибок.
  • Там есть плагин для Play, который довольно прост.
  • Настойчивость объекта выполняется очень хорошо, поскольку база данных в базе данных и JPA поставляется с фреймворком, поэтому нет настройки инструментов сохранения внешнего объекта. Переход из базы данных в память в реальную СУБД - это однострочное изменение в файле конфигурации.
  • Настройка MVC выполняется очень хорошо. Класс Model, который вы расширяете для создания объектов домена, интегрируется с менеджером сущностей JPA. Они не просто POJO.
  • Сопоставление URL-адресов с контроллерами является простым и гибким и все в одном файле маршрутов.
  • Всякий раз, когда вы создаете проект, Play обрабатывает все зависимости jar, а в Play есть утилита для eclipse-ify (или любого другого IDE, который вам нравится) проекта, чтобы он импортировал непосредственно в вашу любимую среду IDE.

Вещи, которые мне не нравятся в Play

  • Документация еще не существует, многие недокументированные функции все еще существуют.
  • Структура - это сервер, поэтому вам нужно указать порт для каждого приложения. Я думаю, что кто-то работает над плагином виртуального хоста, но я еще не видел его в действии.
  • Молодой, проект потрясающий, а технология потрясающая, но для этого действительно нужны еще некоторые разработчики. Я хотел бы посвятить ему некоторое время, мы увидим.

Ответ 3

Самый лучший выбор для меня - Wicket. Четкое разделение разметки и кода Java. Очень легко писать и использовать компоненты. Простой в использовании Ajax, проверяемость. Вы можете отлаживать прямо на своих страницах/компонентах и ​​не получать критические сообщения об ошибках из вашей реализации JSF;)

Существует также хорошая калибровочная таблица сравнения ↔ JSF в условиях производительности

Ответ 4

Три лучших варианта для меня (в алфавитном порядке):

Они:

  • имеют хорошую поддержку ajax.
  • позволяет создавать фактические веб-сайты, а не приложения (например, GWT).
  • стабильный, хорошо документированный, широко используемый
  • MVC
  • чистая Java
  • простая интеграция с Spring в качестве промежуточного программного обеспечения

Ответ 5

Игра похожа на ROR, версия ROR в java

Ответ 6

В отличие от других ответов, я хотел бы выделить недостатки (IMHO) популярных веб-фреймворков:

JSF2 - выпущен и уже поставлен. Все еще только несколько новостей/статей/сообщений в блогах/опыта. Я настроен скептически. Все еще ожидая следующего крупного выпуска Richfaces/Icefaces, который полностью поддерживает jsf 2 - в настоящее время могут быть загружены только альфа-сборки.

Struts 2. Кажется, это только хорошая вещь, если вы все еще полагаетесь на стойки и хотите реорганизовать большую часть своего кода. В противном случае: не делайте.

GWT. Мне не нравится одностраничный и java- > javascript подход. Я не уверен, что один сеанс - несколько видов/окон можно легко достичь. Для меня эта структура должна использоваться для широкомасштабных интернет-приложений с одним окном.

Wicket. Хороший подход, но немного подробный и слишком мало доступной документации (кроме хорошей калитки в книге действий, но это охватывает только 1.3). Кроме того, для меня не хватает больших проектов, которые построены на нем сверху. И я в настоящее время не вижу, куда движется дорога калитки, или если она уже была загнана в тупик.

Spring MVC. Еще не пробовал, но вы должны включить в свой класс class несколько jars (spring mess) для правильной работы с этой структурой. И он полагается на JSP (в большинстве проектов), который я считаю уже мертвым. И вы получаете только чистую структуру MVC - все другие вещи (ajax и другие) должны быть внедрены/интегрированы.

Stripes. Небольшая и приятная структура MVC, но слишком меньше документации, слишком меньше коммитов, слишком мало выпусков, слишком меньше поддержки в отрасли, а также меньше активности в списке рассылки.

Мне также любопытно, если я пропустил основную структуру (я ушел из Гобелена намеренно), что может быть для вас вариантом (и также для меня тоже).

Ответ 7

У меня был большой успех с JAX-RS. Это единственная Java Web Framework, которая имеет какую-то спецификацию JSR и несколько реализаций, отличную от спецификации сервлета и портлета (хотя это может быть плохо).

Одна вещь, которая плохо и хорошо о Java, заключается в том, что вы можете выбирать и сопоставлять фреймворки (у python также есть эта функция/проблема). Это приятно, потому что вам не нужно класть все яйца в одну корзину.

Вот общий рецепт стека веб-приложений Java:

Обработка Javascript/Flash + Request/Response + Инъекция зависимостей + Настойчивость

Javascript: JQuery, Prototype, Dojo

Запрос/ответ: Spring MVC, Stripes и мой любимый JAX-RS (Джерси, Apache CXF)

Инъекция зависимостей: Spring, Guice

Стойкость: JPA (Hibernate, хранилище приложений Google), Hibernate, JDO и т.д.

У меня также был большой успех в использовании AspectJ, чтобы заставить Java "сосать меньше". Используя Spring @Configurable и AspectJ ITD mixins, вы можете получить Rails, такие как объекты домена (это то, что делает Roo, но для этого вам не нужен Roo).

Ответ 8

Я нашел stripes, чтобы быть действительно эффективным и удивительно легким.... он стремится быть более легким, чем struts. Я слышал от друзей, которые являются полнофункциональными веб-разработчиками, с которыми JSF не стоит беспокоиться, хотя у меня нет опыта на собственном опыте, и я не могу поддержать это с помощью примеров (!).

Ответ 9

Посмотрите RESThub, которые следуют тем же принципам, что и Play! но реализованы путем повторного использования некоторых рамок/инструментов корпоративного уровня, таких как Maven 3/Spring 3/Jersey/jQuery.

RESThub очень разрушителен по сравнению с другими фреймворками, поскольку он представляет собой полный набор инструментов, но без каких-либо программных фреймов на основе MVC или сервлетов. Вместо этого он использует графический интерфейс, основанный на jQuery UI, который использует веб-службы JAX-RS (REST) ​​и систему шаблонов Javascript на основе встроенных функций.

Серверы не имеют состояния, и мы используем session5orage5 для хранения сеанса на стороне клиента. Этот подход является дизайном для RIA и масштабируемости.

Некоторые демо-приложения предоставляются (даже если они находятся в стадии разработки).

Ответ 10

JSF - хороший фейерверк, но JSF 1.2 не хватало зрелости на долгие годы. JSF 2.0 выглядит многообещающим и имеет много новых вещей, добавленных для JSF 1.2, таких как поддержка ajax, facelets, поддержка аннотаций и соглашения по умолчанию (меньше XML), легкое построение компонентов, чем 1.2.

Он также хорошо интегрируется с Spring, если вы заинтересованы в поддержке DI.

Ответ 11

Я бы предпочел рекомендацию Spring. Я не большой поклонник GWT, я не думаю, что Java- > Javascript-кросс-компилятор еще есть. Я работаю над приложением AJAX, которое использует Spring на сервере и jQuery на клиенте. Несмотря на техническую поддержку "jQuery" без поддержки "ящика", реализация spring -MVC AjaxView просты и занимает около 25 строк кода.

Ответ 12

Может быть, немного поздно к шоу, но я должен упомянуть Vaadin. Программирование выполняется исключительно на Java с использованием компонентного подхода. Коммуникация "клиент-сервер" - это больше о взаимодействии с пользователем, чем передаче данных, и вся бизнес-логика находится на сервере.

Ответ 13

Ext GWT + Spring

Ответ 15

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ BACKBASE PORTAL

Несколько лет назад использовалось программное обеспечение портала " Backbase", тогда это было не очень зрело. Но было хорошо и легко для развития.

Ответ 16

Взгляните на ItsNat

ItsNat - это в основном браузер Java W3C на сервере, удивительно простой (DHTML на сервере), способствующий интенсивному использованию AJAX Приложения с одной страницей

Ответ 17

Что-то, что заслуживает больше, чем просто пуля, основаны на RIA-фреймах. Ex. Adobe Flex + Java (Конечно, это может немного зависеть от того, является ли ваш "сайт" действительно "сайтом" или более похожим на "приложение", вы не сделали бы сайт блога в Flex.)

ajax,

В смысле AJAX-as-a-buzzword Flex обычно использует AMF (бинарный протокол, который более эффективен, чем протоколы, используемые приложениями AJAX), хотя вы также можете делать строго AJAX с помощью Flex. Таким образом, Flex поддерживает AJAX, но также поддерживает "лучше AJAX".

мультимедийный контент, mashup,

Будучи тем, что Flex работает на платформе Flash "виртуальная машина", я думаю, что немного нужно добавить.

шаблон, основанный на шаблонах,

Не уверен, что это получается точно, но это звучит как Flex mxml.

проверки,

Поддерживается, конечно, хотя вы можете сделать некоторые заказные вещи, если хотите получить фантазию. (Не то, что вам нужно.) Самое приятное, что вы можете быть настолько сложными, насколько хотите - или нет.

максимальное разделение кода html/java

Вы не можете больше разделять с помощью подхода к разработке "виртуальной машины", такого как Flex/Silverlight/JavaFX. Это не только позволяет вам изолировать код презентации от уровня вашей логики и доступа к данным на стороне сервера - это гарантирует, что они будут разделены. "Виртуализация" вашей среды разработки обеспечивает вам совместимость с кросс-браузером, постоянную целевую платформу, не заботятся о новых браузерах или новых версиях браузеров, нарушающих ваше приложение, в первую очередь от возможностей отладки в виде строки, а также более профессионального/впечатляющего конечного продукта.