Выбор Java Web Framework теперь? [закрытый]

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

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

Любое понимание при использовании "Кенгуру Spring" или "Игры" будет очень полезно.

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

РЕДАКТИРОВАНИЕ 1: Спасибо за большие ответы! Этот сайт поворачивается, чтобы быть лучшим единственным источником для получения информации о программисте в канавках Однако, я ожидал больше информации об использовании портала-cms дуэта. Товары взглядов Jahia. Что-либо подобное?

149
задан Community 23 May 2017 в 12:18
поделиться

14 ответов

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

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

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

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

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

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

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

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

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

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

146
ответ дан 23 November 2019 в 22:26
поделиться

Я бы вторым весной рекомендации. Я не огромный фанат GWT, я не думаю, что Java -> JavaScript BrossCompiler еще там еще там. Я работаю над приложением Ajax, которое использует весну на сервере и jQuery на клиенте. Несмотря на то, что для jQuery есть технически не «вне коробки», внедряя Spring-MVC AjaxView, простая и заняла около 25 строк кода.

2
ответ дан 23 November 2019 в 22:26
поделиться

JSF является хорошим кадром, но JSF 1.2 не хватало видения в течение многих лет. JSF 2.0 выглядит многообещающим и имеет много новых вещей, добавленных FRO M JSF 1.2, как поддержка AJAX, Facelets, поддержка аннотации и конвенции по умолчанию (менее XML), легкое создание компонентов, чем 1,2.

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

3
ответ дан 23 November 2019 в 22:26
поделиться

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

6
ответ дан 23 November 2019 в 22:26
поделиться

Насколько мне известно, довольно часто (санкционированно?) промывка потока эквивалентна экономии.

То есть, когда вы говорите:

file.flush();

Все ожидающее написания пишется. Обратите внимание, что std:: endl; также вызывает flush . Так что, оставьте его открытым и просто смыть после свалки информации.

-121--3171182-

Я нашел Искусство модульного тестирования Роя Ошерова очень полезным в понимании основ модульного тестирования, интегрального тестирования, TDD и так далее. Он немного адаптирован для языков .Net, но также предоставляет очень хорошую информацию о идеях автоматического тестирования.

-121--3702287-

Воспроизведение близко похоже на ROR, версию ROR на java

11
ответ дан 23 November 2019 в 22:26
поделиться

Ext GWT + пружина

1
ответ дан 23 November 2019 в 22:26
поделиться

Я думаю, то, что ты ищешь, это что-то близкое Джахии. Он поддерживает GWT, Mashups, Media Content и т.д.

http://www.jahia.org/cms/lang/en/home/Jahiapedia/Jahia_Templates http://www.jahia.net/downloads/jahia/jahia6.0.0/readme/index.html

1
ответ дан 23 November 2019 в 22:26
поделиться

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

They:

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

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

Также имеется хорошая викита сравнения <--> JSF в условиях производительности

17
ответ дан 23 November 2019 в 22:26
поделиться

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

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

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

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

5
ответ дан 23 November 2019 в 22:26
поделиться

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

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

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

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

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

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

Stripes - небольшой и хорошо спроектированный MVC фреймворк, но слишком мало документации, слишком мало коммитов/коммиттеров, слишком мало релизов, слишком мало поддержки индустрии, слишком мало активности в списках рассылки.

Мне также интересно, не пропустил ли я какой-нибудь крупный фреймворк (я намеренно не упомянул Tapestry), который мог бы стать вариантом для вас (а также для меня).

10
ответ дан 23 November 2019 в 22:26
поделиться

ПОРТАЛ ПОРТАЛА BACKBASE

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

1
ответ дан 23 November 2019 в 22:26
поделиться

Некоторое время я использовал Spring 3 и Jquery, но услышал о Play и попробовал. Мне это очень нравится, Play отлично сочетается между чем-то вроде PHP и мощными фреймворками Java, такими как Spring.

Что мне больше всего нравится в игре:

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

Что мне не нравится в Play

  • Документация еще не завершена, многие недокументированные функции все еще существуют.
  • Фреймворк - это сервер, поэтому вы должны выделить порт для каждого приложения. Я думаю, что кто-то работает над плагином виртуального хоста, но я еще не видел его в действии.
  • Он молод, проект потрясающий, и технологии великолепны, но ему действительно нужно больше разработчиков. Я бы с удовольствием посвятил этому немного времени, посмотрим.
41
ответ дан 23 November 2019 в 22:26
поделиться

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

ajax,

В смысле «AJAX как модного слова» Flex обычно использует AMF (бинарный протокол, который более эффективен , чем протоколы, используемые приложениями AJAX), хотя вы также можете выполнять строго AJAX вещи с Flex. Итак, Flex поддерживает AJAX, но также поддерживает «лучше, чем AJAX».

мультимедийный контент, гибридные приложения,

Поскольку Flex работает на платформе «виртуальной машины» Flash, я думаю, что здесь мало что нужно добавить.

макет на основе шаблонов,

Точно не знаю, к чему это приводит, но звучит как Flex mxml.

проверка,

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

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

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

0
ответ дан 23 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: