Что выбрать из java-фреймворков для вывода коллекции: Spring MVC, Struts, Mojarra(JSF)?

Доброго дня, уважаемые Java-гуру. Подскажите, пожалуйста, какой фреймворк лучше выбрать для быстрой реализации простого учебного примера. Предварительно отобрал следующие:
Spring MVC, Struts, Mojarra(JSF).

Причина выбора этих- пишу в Netbeans и там эту фреймворки уже интегрированы в IDE. К сожалению у меня нет нескольких десятков лет на изучение всех возможных фреймворках и нужно написать небольшое приложение. Быстродействие самого приложения не критично.

Хочу реализовать задачу вывода на сайт коллекции с возможностью редактирования элементов.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Tapestry5. Плагины есть под Eclipse. Но учитывая его подход — можно вполне и без них.
Хотя изучать все равно придется, но он много проще известных.
Плюс поддерживает «php style» разработку, не нужно редеплоить измененные классы.

Напиши сервер на Нетти с поддержкой разных протоколов

Шото я погорячился

Это не быстрая реализация, если не знать ни того, ни другого. Я бы попробовал Spring MVC + JSP.

я так понимаю, что любой из вариантов для ТС будет новинкой. Jersey + Backbone будет легковесным решением.

Backbone — час-два на почитать . Jersey ± столько же.

А еще лучше AngularJS

Angular это не совсем легковесное решение

JSF в любом виде если он вам зачем то специально не нужен ( не дай бог ) лучше не трогать руками

Недостаточная производительность + сложности с версткой

Приложение может быть и для интранета там JSF вполне хорошо справляется в ряде задач, особенно в паре с PrimeFaces, ну а в случае ТС производительность вроде не является ключевым моментом

Согласен, но его достаточно долго изучать, как для тестового задания

PrimeFaces это ужас если с ними столкнутся со стороны JS
Написано безграмотными упырями

С этим трудно не согласится :)
Но его легко использовать тем, кто с JS не в ладах, а какой-никакой Rich UI построить надо. При условии конечно что никаких кастомных виджетов рисовать ненадо.

я как раз несколько сделал- впечатления очень негативные

реализации простого учебного примера.
А чему вы хотите научится? :)
«Spring MVC, Struts, Mojarra(JSF)» — это 3 принципиально разных подхода. Выбирайте тот подход который хотите изучить.
Если мы говорим про время вхождения, то Spring MVC, наверное, быстрее всего разобраться будет. Struts (даже 2) скорее мертв чем жив.
Причина выбора этих- пишу в Netbeans и там эту фреймворка уже интегрированы в IDE.
То есть Jersey (JAX-RS RI) не «интегрирован» с Netbeans?
Чесслово лучше потратьте пару часов и разберитесь с maven (я серьезно).

Maven технологически устарел, хотя и все еще популярная система. Если смотреть в будущее, то есть Gradle и sbt.

Если смотреть в будущее, то есть Gradle и sbt.
sbt — очень сомнительно
Gradle — а можете привести реальные перимущества над maven для пользователя (про XML не актуально, читайте в следуещем джава дайджесте :) ).
.
Основной плюс maven — это то что он «легко гуглится», то есть новичку будет проще найти инфу.

Вопрос не ко мне, но попробую ответить.

На мой взгляд у Gradle основной плюс это то что он в отличии от Maven не заточен ни под какой язык/платформу заранее и как следствие очень гибок. Тоесть пока мы не скажем apply plugin: 'java' у нас вообще нет никакого lifecycle’a процесса сборки. Но даже когда мы укажем что хотим собирать java, мы можем как угодно изменять этот lifecycle. Можно вклинится (кастомным таском) практически на любом этапе сборки указав что зависим от одной какой-то фазы (любой) и что от нас зависят такие-то следующие либо полностью перекроить весь процесс под себя выбросив фазы которые нам не нравятся и добавив только нужные.

Второй плюс это способ добавления своей логики в процесс сборки. Когда мы работаем с Maven все что мы можем описать в pom.xml уже заранее жестко определено. В Gradle у нас не конфиг сборочного процесса, у нас код (по-факту DSL но в нем можно добавить любой код). Тоесть мы прямо в build.gradle можем написать нечто вида
task hello { println 'Hello world!' }
и этот код уже может быть выполнен.
В Maven для этого придется писать плагин и это очень муторное дело.

Однако если таким способом писать какую-то сложную логику то этот код быстро засорит build.gradle, к тому же его будет невозможно переиспользовать в другом проекте. Все это точно также можно вынести в свой плагин который с точки зрения Gradle DSL будет лишь еще одним таском. Но что представляет из себя плагин? По-сути это Groovy/Java класс наследник от любого другого таска из lifecycle наиболее близкого по смыслу к тому чего мы хотим добиться. Лежать этот класс (по конвенции) должен в директории buildsrc прямо рядом с build.gradle и в нем самом должен быть аннотированный метод содержащий всю ту сложную кастомную логику. Вот и все. При сборке проекта Gradle соберет также и эти таски и встроит их в DSL так что мы сможем удобно к ним обращаться.

Как часто у Вас возникает необходимость хоть в чем-то из списка?

Трудно сказать, может в 1 из 20 проектов, но мы ведь выбираем инструменты под задачи верно?

Gradle используется для сборки Spring и Hibernate, а это что-то да значит. Maven становится бутылочным горлышком, когда приходится делать что-то нестандартное, а это в каждом проекте да случается

maven становится бутылочным горлышком

Сейчас уже почти под любое «хочу» есть плагин.

Gradle же это по сути перерожденный ant. И его проблема такая же как и у анта. Это полный ад в билд конфигах, где в проекте больше 2-х человек.

Фишка же мавена в том — что он жестко стандартизирован и какой бы говнокодер не писал его, он не сможет все сильно испоганить.

Ага и когда в грейдл завезут функционал — ручное обновление либ? А то я заипался уже таски писать.

без maven ты не джава. К сожалению.

А что Maven существует с 2002 года ?

нет, а вы капитаном очевидность подвязались?

это, наверное, наиболее используемый сборщик. статистику не знаю, но чувство такое, что используется на 90% проектах

Обычно в командной разработке каждый использует то с чем удобно работать ему одному, для кого-то это Eclipse, для кого-то NetBeans, а кто-то не представляет жизни без Intellij. Maven (Gradle) дает возможность использовать то что нравится и собирать проект даже не запускаю никакую IDE.

Кроме того, если думать о будущем развитии проекта, наверняка понадобятся тесты, а с ними и CI, как вы думаете как Jenkins (или аналог) будет собирать проект для тестов?

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

А как насчет пересобрать проект и передеплоить его одной командой?
А произвести перед/после сборкой какие-то свои действия (минифицировать js/css и склеить все в один файл)?
А собрать все дополнительные либы в один могучий, самодостаточный jar и сделать его «исполняемым»?
А если у вас проект разделен на много «субмодулей» зависящих друг от друга и отвещающих за разные задачи и надо собрать каждый по очереди?

Я думаю вы уловили суть, таких юскейсов может быть очень много.

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

Подписаться на комментарии