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

CRUD: К Roo или не к Roo?

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

Я рассматриваю возможность использования Spring ROO или JBoss Seam. Как они сравниваются? Каковы их основные сильные и слабые стороны?

4b9b3361

Ответ 1

Обратите внимание, что Spring Roo и JBoss Seam не сопоставимы напрямую, так как JBoss Seam сам по себе не обеспечивает генерацию приложения CRUD, упомянутого в вопросе. Однако JBoss Seam поставляется с инструментом seam-gen, который обеспечивает эту функциональность. Поэтому, вероятно, было бы лучше видеть JBoss Seam как сопоставимый с каркасом Spring и сравнить инструмент seam-gen с Spring Roo. Я знаю, что это тоже не полное сравнение, но я не думаю, что это не так. Что нужно сказать, так это то, что в следующем ответе, когда я обращаюсь к JBoss Seam, я на самом деле имею в виду JBoss Seam в сочетании с инструментом seam-gen.

Оба Spring Roo и JBoss Seam (с seam-gen) делают создание CRUD-приложений очень легким, так как, кстати, другие решения Java full stack/scaffolding, такие как Play Рамки и RIFE. Если вы сравните два (Spring ROO и JBoss Seam с seam-gen), как быстро вы запускаете и запускаете новое базовое приложение CRUD на основе существующей базы данных или добавляете сущности и определяете поля и отношения, я думаю это не так уж и важно. По моему опыту вы можете сделать это в Spring Roo чуть быстрее (бит) быстрее, но с обоими у вас есть приложение менее чем за час (в случае существующей базы данных) или менее чем (половина) в день (если вам нужно вручную добавить все сущности и отношения).

Прежде чем продолжить, читатель должен отметить, что все это сравнение было основано на моем скромном опыте с обоими решениями и поэтому основано на Spring Roo версии 1.1.0 и JBoss Seam 1.2 и 2.x. Читатель должен также отметить, что в настоящее время уже существует превосходная версия Seam 3 (на самом деле CDI (Weld) с дополнениями модулей Seam), основанная на спецификации Java EE 6, но эта новая версия JBoss Seam больше не имеет шов- и поэтому еще не имеет возможности создавать полное приложение CRUD только с помощью нескольких команд, таких как Spring Roo и JBoss Seam 2.x и ниже. В настоящее время люди из JBoss работают над чем-то подобным, но назвали JBoss Forge, который выглядит очень многообещающим, но который на сегодняшний день еще не имел никакого фактического выпуска и является поэтому я еще не вариант.

Оба Spring ROO и JBoss Seam (с seam-gen) создают приятное базовое приложение CRUD, хотя дизайн пользовательского интерфейса по умолчанию для созданного приложения Spring Roo выглядит немного лучше по моему скромному мнению, но, как вы, вероятно, Подумайте о том, как это сделать, но это не слишком аргументированно. Созданные веб-приложения также немного отличаются в предлагаемых функциональных возможностях, но поскольку по сравнению с базовыми функциями CRUD и другими основными функциями, такими как аутентификация и интернационализация, они находятся на одном уровне с eachother.

Я думаю, что основные различия и, следовательно, причины для принятия решения, для которых вы хотите пойти, не в то время, когда требуется создать базовое приложение CRUD или в базовых CRUD-приложениях, но гораздо важнее такие вещи, как архитектура/дизайнерские решения, использование, поддержка, документация, гибкость, ремонтопригодность, точки расширения и т.д. Что касается меня, то как Spring Roo и JBoss Seam - отличные варианты для вашего веб-приложения (как вопрос факт, что моя команда создала производственное приложение с обоими), но прежде чем принимать решение, вы должны посмотреть на эти важные различия и решить, что лучше всего подходит для вас. Конечно, лучший способ решить, - это сделать для вас концепцию доказательства с обоими параметрами, но если у вас нет времени и/или ресурсов, вот что я могу придумать (сверху моей головы), которые являются различиями между ними, и это может помочь вам в любом случае решить:

  • Базовая система построения, используемая в Spring Roo, - это Maven, где JBoss Seam использует Ant. Шейм может, насколько мне известно, также использоваться с maven, но seam-gen по умолчанию использует Apache Ant. Обратите внимание, что JBoss Forge (замена seam-gen и на самом деле больше похожа на Spring Roo) использует Maven, хотя.
  • Spring Roo основан на структуре Spring, а JBoss Seam основан на целом стеке Java EE 5 (Seam 3 будет использовать стек Java EE 6). Обратите внимание, что JBoss Seam и инструмент seam-gen по умолчанию используют EJB 3.0, но это необязательно, и вы также можете выбрать не-EJB-решение с JBoss Seam и инструментом seam-gen.
  • JBoss Seam (с seam-gen) использует основное наследование OO для добавления базовой функциональности к сгенерированным классам, расширяя определенные классы JBoss Seam. Это добавляет зависимость времени выполнения от классов JBoss Seam (и seam-gen). Spring Roo выбирает совершенно другой подход, генерируя как простые исходные файлы Java (без расширения Spring связанных классов), так и аннотирование этих классов. Наряду с сгенерированными исходными файлами Java, Spring Roo также генерирует от одного до нескольких так называемых файлов декларации типа (ITD), которые являются конкретными файлами AspectJ, содержащими исходный код и аннотации. Эти ITD файлы будут полностью прозрачно сотканы в сгенерированные файлы классов во время компиляции и, следовательно, не будут налагать зависимость от времени выполнения.
  • Файлы, созданные с помощью Seam, могут (и будут) обновляться вами, но если вам необходимо восстановить файлы с помощью seam-gen, они перезапишут ваши ручные изменения, потому что вы будете делать изменения в Seam-gen generated файлы. Из-за подхода Spring Roo с ITD вы вносите изменения в исходный файл Java, который переопределяет генерируемый исходный код в файлах ITD. Это позволяет Spring Roo регенерировать ITD, поскольку он оставляет ручные изменения, которые находятся в исходном файле Java, а затем не изменяется.
  • Использование seam-gen более склонно к одноразовому поколению/использованию для первоначальной настройки проекта и запуска запуска, тогда как Spring Roo используется на протяжении всего жизненного цикла проекта.
  • Spring Roo можно удалить из проекта, оставив полностью рабочий проект, который больше не имеет зависимостей от Spring Roo и может, конечно, по-прежнему строиться и расширяться по своему усмотрению. Утилита seam-gen не предлагает такой функциональности, хотя в случае шва-гена вы, конечно, никогда не зависите от самого seam-gen, а скорее от конкретного пакета JBoss Seam (называемого framework).
  • JBoss Seam (с seam-gen) предназначен главным образом для использования JSF в качестве веб-фреймворка, тогда как Spring Roo сосредоточен на Spring MVC и/или GWT в качестве веб-фреймворка. Сам JBoss Seam также хорошо поддерживает Wickete, но не с помощью инструмента seam-gen. Spring У Roo также есть аддон Flex, и в сообществе создаются дополнительные аддоны для других веб-фреймворков, но они все еще не так хороши, как те, что для Spring MVC и GWT.
  • Документация предназначена как для JBoss Seam, так и для Spring отлично, но для Spring Roo и инструмента seam-gen им не хватает более подробной документации. Spring Roo кстати также предлагает полезные полезные подсказки в командной строке оболочки.
  • Поддержка IDE для подхода JBoss Seam лучше, чем для подхода Spring Roo. Оба решения имеют определенную среду IDE и плагины на основе Eclipse (SpringSource Tool Suite для Spring Roo и JBoss IDE для JBoss Seam), а все другие большие IDE (Netbeans en IntelliJ) имеют большую поддержку базовых фреймворков, но не-Eclipse IDE (не совсем уверен для IntelliJ IDE, хотя) не имеют хорошей поддержки для Spring Roo сгенерированных ITD. Это не проблема в сборке, но обеспечивает проблемы с функциональными возможностями intellisense и дополнением кода в этих IDE.

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

Основные моменты, по моему скромному мнению, которые могут дать вам легкое и быстрое решение, - это выбор между стеком Spring или стекю Java EE, поддержкой IDE, веб-платформой и "взрослой" для решения. Поэтому, если вы хорошо знакомы с стеком Spring (который, как я полагаю, вы видите, что вы пришли из Grails), перейдите на Spring Roo, так как еще вы можете потерять некоторое время, знакомясь с Java EE стек, в том числе JSF (конечно, это зависит от размера вашего проекта, но при условии, что это не очень большой проект, влияние изучения новых технологий может быть слишком большим для одного проекта). Если вы не можете или не хотите использовать Eclipse и действительно увлечены этим, я думаю, что JBoss Seam может быть лучшим решением. Если вы хотите использовать JSF или Wicket, перейдите в JBoss Seam, а если вы хотите использовать Spring MVC или GWT, используйте Spring Roo (для других веб-фреймворков, вероятно, не имеет значения, что вы выберете, хотя Spring roo может быть лучшим решением). И если "взрослое" - ваше главное решение, я думаю, вам лучше использовать JBoss Seam. В целом решение между ними может быть очень трудным, но, по крайней мере, известно, что оба решения действительно велики и помогут вам в любом случае.

Кстати, обязательно следите за проектом JBoss Forge, поскольку текущее решение seam-gen будет заменено в ближайшем будущем этим многообещающим проектом.

Ответ 2

Just Forge it → http://forge.jboss.org

Если вы новичок, у вас будет веб-приложение с постоянством, испытаниями и безопасностью. И еще.

Если вы знаете Java, у вас будет то же самое, что и выше, а также потрясающий источник знаний о том, как создавать хорошие приложения: исходный код и ресурсы, созданные Forge. Вы можете много узнать о Java EE (CDI, Validation, JSF), maven, JPA, плитки, EJB... И многое другое.

Ответ 3

Просто Роо.

Если вы новичок, у вас будет веб-приложение с постоянством, испытаниями и безопасностью. И еще.

Если вы знаете Java, у вас будет то же самое, что и выше, а также потрясающий источник знаний о том, как создавать хорошие приложения: исходный код и ресурсы, созданные Roo. Вы можете много узнать о Spring (ядро, безопасность, MVC), maven, JPA, плитки, messagign... И многое другое.