Сказать, что какой-либо инструмент или фреймворк просто «лучше», нелепо. Это всегда зависит от ситуации, архитектуры и т. д. Вам не обязательно использовать молоток, чтобы забить винт.
Я написал JBoss в действии, поэтому мне явно нравится технология JBoss, но я буду первым, кто скажет, что JBoss может быть излишним во многих ситуациях. Например, для последних двух сайтов, которые я разработал, имело смысл создавать с помощью Grails и развертывать на автономном экземпляре Tomcat.
Немного несправедливо говорить, что все, что вы получаете при использовании JBoss, это EJB и JMS. JBoss предлагает множество услуг и функций, в том числе:
- Контейнер сервлет/JSP
- JNDI
- EJB
- JTA
- кластеризация
- кэширование
- JMS
- Источник данных/управление ресурсами
- JMX-интеграция
- поддержка OSGi
- веб-сервисы
- порталы
- Веб-бины (шов)
- Некоторые административные консоли
- контейнер IoC
- и т.п.
Что привлекает многих архитекторов в JBoss, так это его гибкость. Он использует архитектуру плагинов, которая позволяет добавлять и удалять сервисы. Как уже говорили другие, in использует Tomcat в качестве своего контейнера сервлетов, поэтому вы можете буквально сократить JBoss до того уровня, где он является практически просто сервером Tomcat. Какая польза от этого? Задел на будущее, если вы думаете, что собираетесь использовать другие функции JBoss.
Эти сервисы в JBoss поставляются предварительно интегрированными и стремятся обеспечить согласованную модель развертывания, которая сводит к минимуму ваши усилия по написанию логики приложения или конфигурации для их самостоятельной интеграции. При этом другие фреймворки, такие как Spring, также отлично справляются с поддержкой унифицированных способов интеграции многих популярных библиотек и фреймворков. Но поскольку они сосредоточены на интеграции сторонних библиотек, взаимодействие между службами зависит от вас. Поскольку JBoss занимается созданием сервисов и интеграционной платформы, они тратят время на разработку (и обеспечение поддержки) взаимодействия.
Некоторые вопросы, которые следует задать при выборе:
- Are you going to use standard JavaEE architectural components like EJB?
- BTW, EJB can be run in standalone Tomcat using the JBoss embedded container, so if EJB is all you're using, then you still don't have to use JBoss
- Собираетесь ли вы использовать веб-сервисы, порталы, JMS?
- Вы рассматриваете возможности создания с помощью Web Beans или Seam?
- Какие платформы развертывания (Tomcat, JBoss и т. д.) в настоящее время использует ваш персонал по ИТ, поддержке и разработке? Если вы собираетесь использовать что-то новое, вы понесете дополнительные расходы на изучение новой платформы.
- Если вы продаете продукт, который будут развертывать клиенты, какое влияние он окажет на ИТ-организацию клиентов.
- Are you going to need paid support?
- You can find support for Tomcat through many companies (including Red Hat I believe).
- Вам нужно будет сравнить затраты, потому что я не думаю, что поддержка JBoss стоит дешево, хотя в последнее время я не смотрел цены.
- Will you need to do any sophisticated clustering?
- JBoss has some wonderful clustering capabilities, and you'll probably get good clustering support through Red Hat. Though, for full disclosure, I've never done any complex clustering with any other frameworks to be able to compare.
- Вам понадобится расширенное управление транзакциями (распределенные транзакции, двухфазные коммиты и т. д.)
Не хочу, чтобы это звучало как бесстыдная затея, но первая глава JBoss в действии доступна для бесплатно на веб-сайте Manning. Хотя мы не проводим прямого сравнения между JBoss и другими серверами приложений и средами развертывания в этой главе, мы немного говорим об архитектурных различиях, что имеет отношение к вашему вопросу.
09.09.2010