Выбор веб-фреймворка Java сейчас? [закрытый]
мы находимся в стадии планирования миграции большого веб-сайта, который построен на специально разработанной платформе mvc, в веб-платформу на основе java, которая обеспечивает встроенную поддержку ajax, мультимедийного контента, mashup, макета на основе шаблонов, проверки, максимального разделения кода html/java. Грааль выглядел как хороший выбор, однако, мы не хотим использовать язык сценариев. Мы хотим продолжать использовать java. Макет на основе шаблона является основной проблемой, поскольку мы намерены использовать это веб-приложение с несколькими веб-сайтами с аналогичной функциональностью, но радикально отличается внешний вид.
является ли решение на основе портала подходящим для этой проблемы?
любые идеи по использованию " Spring Roo "или" Play " будут очень полезны.
Я нашел похожие сообщения, как этой, но ему больше года. За это время многое изменилось!
EDIT 1: Спасибо за отличные ответы! Этот сайт переходя к быть самый лучший одиночный источник для данных по программника в -- окопов. Тем не менее, я ожидал больше информации об использовании Portal-CMS duo. Jahia выглядит товарами. Что-нибудь похожее?
17 ответов
является ли решение на основе портала подходящим для этой проблемы?
лично я бы держался подальше от решений big fat Portal (они часто являются убийцами производительности). Я слышал хорошие вещи о Gatein но у меня нет никакого реального опыта работы с ним.
любые идеи по использованию " Spring Roo "или" Play " будут очень полезны.
о Spring Roo, я читал предыдущие ответы, такие как Весна ру Vs (Калитка и весна) и другие вещи через Интернет, но я все еще не убежден (может быть, я не понимаю), я не уверен в его зрелости, и, что более важно, мне действительно интересно, что SpringSource делает с Grails и Roo (нет,Grails vs Roo-почему SpringSource продвигает две очень похожие технологии? не убедить меня, что они оба выживут).
Я не могу сказать много об игре. Я видел демо, как и все, но я хотел бы прочитать реальную жизнь обратная связь. А пока я подожду.
Я нашел похожие сообщения (...). За это время многое изменилось!
да и нет:) но давайте войдем в рамки презентации ад: нет единого ответа на ваш вопрос (как и год назад), есть десяток фреймворков вокруг и нет явного победителя. Просто процитируем несколько:
- JSF: много скептиков об этом компонентном фреймворке, включая меня, поэтому я не лучший один, чтобы поговорить об этом, но...
- JSF 2 (+ CDI / Weld): скептики JSF поощряются (Гэвина Кинга), чтобы "взглянуть". Действительно,я думаю, что JSF 2-это большое улучшение, особенно с CDI, но... это все еще довольно новое (поймите, ему не хватает feeback). Если вы хотите принять Java EE 6, проверьте это.
- калитка: еще один компонент на основе структуры, которая получает больше больше внимания. Я слышу в основном хорошие вещи об этом: проще, чем JSF, славная конструкция, высокая testability, конструктор HTML содружественный, etc. Тебе может понравиться.
- гобелен: просто не (см. почему вы перестали использовать гобелен?)
- распорки 2, Spring MVC, Stripes: рамки на основе действий. все приличные и покроют ваши потребности (лично мне нравятся полосы и его соглашение по конфигурационному подходу, см. полосы против Struts2 чтобы получить представление о нем).
- GWT, Flex, Grails: это не может быть не то, что ты ищешь. Я не могу говорить о (последних версиях) Flex и GWT, но я знаю, что Grails делает есть некоторые болельщики.
на самом деле, я предлагаю взглянуть на презентации, он действительно проделал большую работу по сравнению фреймворков, показывая их сильные и слабые стороны, собирают факты и цифры, показывающие тенденции... Рекомендую:
- сравнение JSF, Spring MVC, полосы, стойки 2, гобелен и калитка (все еще не устарел)
- веб-фреймворки будущего: Flex, GWT, Rails и Grails (просто чтобы попробовать альтернативы)
- Сравнение Веб-Фреймворков (это самый последний)
действительно, посмотрите на эти презентации, они помогут вам найти подходящую структуру (нет уникального ответа, но вы можете ограничить выбор путем исключения) и может изменить вашу точку зрения.
Я использую Spring 3 и Jquery некоторое время, но слышал о Play и дал ему шанс. Мне это очень нравится, игра отлично подходит между чем-то вроде PHP и сверхмощными Java-фреймворками, такими как Spring.
больше всего мне нравится в игре:
- очень легко получить приложение play с земли, вам нужно зайти довольно далеко с кодированием и конфигурацией, чтобы получить простое приложение crud на экране с помощью Spring (хотя Spring 3 сделал это много облегчающий.)
- Spring Security является удивительным, но это происходит за счет сложности. Модуль безопасности Play очень прост и охватывает потребности, вероятно, 90% приложений.
- вы можете сделать изменение кода и нажмите Обновить в браузере, чтобы увидеть изменения, как с PHP, вместо того, чтобы делать ВСЮ вещь повторного развертывания с помощью фреймворков на основе сервлетов.
- сообщения об ошибках отображаются красиво и не так загадочно большую часть времени. Играть все еще нужно работать об их обработке ошибок
- есть механизм плагинов для игры, который довольно прост.
- сохраняемость объектов выполняется очень хорошо в том, что база данных в памяти и JPA поставляется с платформой, поэтому нет конфигурации инструментов сохранения внешних объектов. Переход от базы данных в памяти к фактической СУБД - это изменение одной строки в файле конфигурации.
- настройка MVC выполнена очень хорошо. Класс модели, который вы расширяете для создания объектов домена, интегрируется с менеджер сущностей JPA. Они не только у ПОЖО.--6-->
- отображение URL-адресов контроллерам является простым и гибким и все в одном файле "маршруты".
- всякий раз, когда вы создаете проект, игра обрабатывает все зависимости jar, и у игры есть утилита для eclipse-ify (или любая другая IDE, которая вам нравится) проект, чтобы он импортировался непосредственно в вашу любимую IDE.
вещи, которые мне не нравятся в игре
- документация еще не полностью там, много недокументированные функции все еще существуют.
- платформа является сервером, поэтому вы должны выделить порт для каждого приложения. Я думаю, что кто-то работает над плагином виртуального хоста, но я еще не видел его в действии.
- это молодой, проект является удивительным и технология является удивительным, но он действительно нуждается в некоторых больше разработчиков. Я хотел бы посвятить этому некоторое время, посмотрим.
лучший выбор для меня-это калитка. Четкое разделение разметки и кода java. Очень легко писать и использовать компоненты. Простой в использовании Ajax, тестируемость. Вы можете отлаживать прямо на свои страницы / компоненты и не получать зашифрованные сообщения об ошибках из вашей реализации JSF;)
есть также хорошая калитка сравнения JSF в условия работы
три лучших варианта для меня являются (в алфавитном порядке):
Они:
- имейте хорошую поддержку ajax
- позволяют создавать фактические веб-сайты, а не приложения (например, GWT)
- стабилизированный, хорошо документированный, широко используемый
- MVC
- чистой Java
- легкая интеграция с весной как middleware
в отличие от других ответов, я хотел бы подчеркнуть недостатки (IMHO) популярных веб-фреймворков:
JSF2 - вышел и уже в возрасте. Все еще только несколько новостей / статей / сообщений в блоге/опыта. Я настроен скептически. Все еще ждем следующего крупного релиза Richfaces / Icefaces, который полностью поддерживает jsf 2 - в настоящее время можно загрузить только альфа-сборки.
стойки 2 - вроде бы только хорошо, если вы все еще полагаетесь на распорки и хотите рефакторинг всего кода. В противном случае: не надо.
GWT - мне не нравится одностраничный и java->javascript подход. Я не уверен, что один сеанс - несколько представлений/окон могут быть легко достигнуты. Для меня эта структура должна использоваться для массовых пользователей однооконных интернет-приложений.
калитка - хороший подход, но немного многословный и слишком меньше документации (кроме хорошей калитки в действии книга, но это охватывает только 1.3). Кроме того, для меня ему не хватает больших проектов, которые построены на нем сверху. И в настоящее время я не вижу, где проходит дорога калитки или уже загнана в тупик.
Весна MVC - еще не пробовал, но вы должны включить много банок (spring mess) в свой путь к классам, чтобы работать с этой структурой должным образом. И он опирается на JSP (в большинстве проектов), который я считаю уже мертвым. И вы получаете только чистую структуру MVC - все остальное (ajax и другие) должно быть реализовано / интегрировано.
полосы - небольшой и приятный дизайн MVC framework, но слишком меньше документации, слишком меньше коммитов/коммиттеров, слишком мало релизов, слишком меньше поддержки отрасли, слишком меньше активности списка рассылки.
Мне также любопытно, пропустил ли я основную структуру (я намеренно оставил гобелен), которая может быть вариантом для вас (а также для меня тоже).
У меня был большой успех с JAX-RS. Это единственная веб-платформа Java, которая имеет некоторую спецификацию JSR и несколько реализаций, отличных от спецификации сервлета и портлета (хотя это может быть плохо).
одна вещь, которая плоха и хороша в Java, - это то, что вы можете выбирать и сопоставлять фреймворки (python также имеет эту функцию/проблему). Это хорошо, потому что вам не нужно класть все яйца в одну корзину.
вот общее веб-приложение Java Рецепт Стека:
Javascript / Flash + обработка запросов/ответов + инъекция зависимостей + сохранение
Javascript: JQuery, Прототип, Dojo
Запрос/Ответ: Весна MVC, полосы и мой любимый JAX-RS (Джерси, Apache CXF)
Инъекции Зависимостей: Весна, Guice
настойчивость: JPA (спящий режим, хранилище приложений Google), Hibernate, JDO и больше.
У меня также был большой успех в использовании AspectJ, чтобы сделать Java "сосать меньше". Используя Spring's @Configurable и Aspectj's ITD mixins, вы можете получить рельсы, такие как объекты домена (это влияет на то, что делает Roo, но вам не нужно Roo для этого).
посмотреть RESThub, которые следуют тем же принципам, что играть! но реализовано путем повторного использования некоторых фреймворков/инструментов корпоративного уровня, таких как Maven 3/Spring 3/Jersey/jQuery.
RESThub очень разрушителен по сравнению с другими фреймворками, так как это полный набор инструментов стека, но без каких-либо серверных MVC или сервлетов на основе framworks. Вместо этого он использует графический интерфейс на основе jQuery UI, который использует веб-сервисы JAX-RS (REST) и систему шаблонов Javascript на основе embeddedJs.
серверы не имеют состояния, и мы используем HTML5 sessionStorage для сохранения сеанса на стороне клиента. Этот подход предназначен для RIA и масштабируемости.
некоторые демонстрационные приложения предоставляются (даже в стадии разработки).
JSF-хороший framewrok, но JSF 1.2 не хватало видения в течение многих лет с момента его выпуска. JSF 2.0 выглядит многообещающе и имеет много новых вещей, добавленных для M JSF 1.2, таких как поддержка ajax,facelets, поддержка аннотаций и соглашения по умолчанию (меньше XML), простое создание компонентов, чем 1.2.
Он хорошо интегрируется с весной также, если вы обеспокоены поддержкой DI.
Я бы поддержал весеннюю рекомендацию. Я не большой поклонник GWT,я не думаю, что Java -> Javascript crosscompiler еще там. Я работаю над приложением AJAX, которое использует spring на сервере и jQuery на клиенте. Хотя технически нет поддержки jQuery "из коробки", реализация spring-MVC AjaxView очень проста и занимает около 25 строк кода.
может быть, немного поздно на шоу, но я есть отметить фреймворк Vaadin. Программирование выполняется исключительно на Java, с использованием компонентного подхода. Связь клиент-сервер-это больше взаимодействие с пользователем, чем транспорт данных, вся бизнес-логика находится на сервере.
Я думаю, что вы ищете что-то близко к Jahia. Он поддерживает GWT, Mashups, Медиа-контент и т. д.
http://www.jahia.org/cms/lang/en/home/Jahiapedia/Jahia_Templates http://www.jahia.net/downloads/jahia/jahia6.0.0/readme/index.html
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ BACKBASE PORTAL
пару лет назад использовали программное обеспечение портала"Backbase " это тогда еще не очень созрело. Но было хорошо и легко для развития.
посмотреть ItsNat
ItsNat-это в основном браузер Java W3C на сервере, удивительно простой (DHTML на сервере), способствующий AJAX intensive Одностраничный Интерфейс приложения
то, что заслуживает большего, чем просто пуля, - это рамки RIA на основе игроков. Бывший. Adobe Flex + Java (конечно, это может зависеть от того, действительно ли ваш "сайт" является "сайтом" или больше похож на "приложение", вы не будете делать сайт блога в Flex.)
ajax,
В смысле AJAX-as-a-buzzword Flex обычно использует AMF (двоичный протокол, который более эффективным!--8--> чем протоколы, используемые приложениями AJAX), хотя вы также можете сделать строго AJAX материал с Flex тоже. Таким образом, Flex поддерживает AJAX, но также поддерживает "лучше, чем AJAX".
богатый медиа-контент, mashup,
поскольку Flex работает на платформе Flash "виртуальная машина", я думаю, мало что нужно добавить.
"шаблоны" на основе макет,
Не уверен, что это точно, но это звучит как Flex mxml.
проверки
поддерживается, конечно, хотя вы можете решить, чтобы сделать некоторые пользовательские вещи, если вы хотите получить фантазии. (Не то, чтобы вы должны. Хорошо то, что вы можете стать настолько утонченными, насколько захотите-или нет.
максимальное разделение кода html/java
вы не можете получить более разделены с помощью подхода к разработке "виртуальной машины", как Flex/Silverlight/JavaFX. Это не просто позволяет сохранить код презентации отделена от вашей серверной логики и уровня доступа к данным-это обеспечивает что они расстались. "Виртуализация" вашей среды разработки позволяет вам обеспечить кросс-браузерную совместимость, согласованную целевую платформу, не беспокоиться о новых браузерах или новых выпусках браузеров, нарушающих ваше приложение, возможности отладки, подобные java, и более профессиональный/впечатляющий конечный продукт.