Ответ 1
Сказать, что любой инструмент или структура просто "лучше", смешно. Это всегда зависит от ситуации, архитектуры и т.д. Вы не обязательно хотите использовать молоток для приведения винта.
Я написал JBoss в действии, поэтому мне, очевидно, нравится технология JBoss, но я буду первым, кто скажет, что JBoss может быть чрезмерным во многих ситуациях. Например, для последних двух сайтов, которые я разработал, было больше смысла строить с Grails и развертывать на автономном экземпляре Tomcat.
Немного несправедливо сказать, что все, что вы получаете при использовании JBoss, это EJB и JMS. JBoss предлагает множество услуг и функций, в том числе:
- Контейнер сервлета /JSP
- JNDI
- EJB
- JTA
- кластеризация
- кэширование
- JMS
- Управление источниками данных/ресурсами
- Интеграция JMX
- Поддержка OSGi
- веб-службы
- порталы
- Веб Beans (Шов)
- Некоторые административные консоли
- контейнер IoC
- и др.
То, что привлекает многих архитекторов к JBoss, - это его гибкость. Он использует архитектуру плагина, которая позволяет добавлять и удалять службы. Как говорили другие, в использовании Tomcat в качестве контейнера Servlet, так что вы можете буквально уничтожить JBoss до того места, где он практически является только сервером Tomcat. Какая польза от этого? Будущая проверка, если вы думаете, что собираетесь использовать другие функции JBoss.
Эти службы в JBoss поставляются с предварительной интеграцией и стремятся обеспечить согласованную модель развертывания, которая сводит к минимуму ваши усилия при написании логики или конфигурации приложения для их интеграции. При этом другие фреймворки, такие как Spring, также отлично справляются с поддержкой единообразных способов интеграции многих популярных библиотек и фреймворков. Но поскольку они сосредоточены на интеграции сторонних библиотек, взаимодействие между службами зависит от вас. Поскольку JBoss создает службы и платформу интеграции, они тратят время на разработку (и поддержку) для взаимодействия.
Некоторые вопросы, которые следует задать при выборе:
- Собираетесь ли вы использовать стандартные архитектурные компоненты JavaEE, такие как EJB?
- BTW, EJB можно запускать в автономном Tomcat с помощью встроенного контейнера JBoss, поэтому, если EJB - это все, что вы используете, вам все равно не нужно использовать JBoss
- Вы собираетесь использовать веб-службы, порталы, JMS?
- Вы смотрите на создание с помощью Web Beans или Seam?
- Какие платформы развертывания (Tomcat, JBoss и т.д.) используют ваши ИТ-специалисты, специалисты по поддержке и развитию в настоящее время? Если вы собираетесь использовать что-то новое, вы понесете дополнительные расходы, чтобы изучить новую платформу.
- Если вы продаете продукт, который будут развертывать клиенты, какое влияние это окажет на ИТ-организацию клиентов.
- Вам нужна платная поддержка?
- Вы можете найти поддержку для Tomcat через многие компании (включая Red Hat, я считаю).
- Вам нужно сравнить затраты, потому что я не думаю, что поддержка JBoss дешева, хотя в последнее время я не смотрел цены.
- Вам понадобится сделать сложную кластеризацию?
- JBoss обладает некоторыми замечательными возможностями кластеризации, и вы, вероятно, получите хорошую поддержку кластеризации через Red Hat. Хотя для полного раскрытия я никогда не делал сложной кластеризации с любыми другими структурами, которые можно было бы сравнить.
- Вам понадобится расширенное управление транзакциями (распределенные транзакции, двухфазные фиксации и т.д.).
Не звучать как бесстыдный плагин, но первая глава JBoss в действии доступна бесплатно на веб-сайте Manning. Хотя мы не проводим сравнение direct между JBoss и другими серверами приложений и средами развертывания в этой главе, мы немного рассказываем об архитектурных различиях, что имеет отношение к вашему вопросу.