Это хороший вопрос. Некоторые неправильно заявили здесь, что это сравнение яблок с апельсинами, то есть Jboss - это контейнер, а Spring - просто фреймворк, такой как Struts. Однако причина, по которой это немного сбивает с толку, заключается в том, что и JBoss, и Spring значительно расширили свое первоначальное простое происхождение и, таким образом, приближаются друг к другу. Одним из простых способов понять JBoss является то, что имя было оригинальным «EJBoss», и оно было задумано как сервер приложений J2EE с открытым исходным кодом, поэтому оно имело преимущество перед tomcat по сравнению с службой EJB-контейнером и, следовательно, могло конкурировать с WebSphere. и другие проприетарные серверы приложений.
А Spring был IoC-фреймворком (теперь называется «Внедрение зависимостей»), по сути, фабрика для объектов, чтобы вы могли следовать более «слабо связанному» дизайну.
Однако с их популярностью оба продукта расширились. Например, у JBoss теперь есть собственный контейнер IoC:
JBoss IoC
JBoss предоставляет собственный облегченный контейнер IoC под названием: JBoss
Microcontainer. JBoss Microcontainer - это легкий, инверсионный
Контроллер впрыска Control / Dependency, похожий по концепции на Spring,
Контейнер Пико и сплетение.
И хотя Spring может работать отлично, сосуществуя (в основном) счастливо с JBoss, ему не нужен полноценный EJB-контейнер, он может легко работать в tomcat. Вся цель разработки Spring была основана на идее облегченного дизайна, использовании POJO и отсутствии требования к тяжелому контейнеру, что очень противоречило EJB и, следовательно, казалось бы, противоречило JBoss.
Род Джонсон указал, что нет никаких причин, по которым вы не можете запускать Spring в JBoss:
Spring предназначен для работы на любом сервере приложений (или вне
сервер приложений); использование Spring не означает игнорирование того, что
Сервер может предложить. Это просто обеспечивает больший выбор во многих
случаи.
Итак, вам нужно решить, какие части двух систем вы хотите использовать, и какие стандарты Java вы хотите придерживаться. Согласно этой статье, на JBoss и Spring , которая описывает, насколько хорошо они соответствуют стандартам, кажется, что в зависимости от выбранной вами технологии вы выбираете сторону, так как это кажется довольно спорным битва.
Что будет дальше, так это не разрядка, как JBoss и Spring Source.
сражаться за все от XML до интеграции с инструментами, чтобы в конечном итоге
виртуализация сама по себе .... это здоровая конкуренция,
[надрез]
Только время покажет, но я думаю, что эта битва только делает вещи
лучше для разработчиков, больше вариантов, чем .Net, и больше
инновации вокруг Java, это будет тяжелым испытанием для JBoss, но один
что они могут справиться, если исполнение безупречно, в противном случае, ищите
Spring Source вбивает клин между ощутимыми и реальными преимуществами
JEE 6 ... раньше, чем позже, переносимость приложений будет
должны быть продемонстрированы, чтобы противостоять запатентованным моделям,
и этого не произошло,
Чтобы получить более свежую информацию о соблюдении различных стандартов Java, ознакомьтесь с запросом о предоставлении отзывов о Spring 5 . Вы можете получить представление об ограничениях, с которыми сталкиваются дизайнеры Spring, при этом подчеркнув тот факт, что для рынка Spring важно убедиться, что Spring поддерживает различные серверы EE:
Мы намерены также мягко обновить базовый уровень EE. Теперь это
немного сложно, так как у нас здесь есть индивидуальные требования -
и мы должны учитывать уровни принятия предприятия на производстве
окружающая среда
Мы определенно повысим до Servlet 3.0+ (с нашего нынешнего Servlet 2.5
совместимость во время выполнения), но не выше, так как мы хотели бы Spring 5
приложения для запуска на базовых серверах EE 6 по-прежнему. См мой предыдущий
кипаОГ пост для обсуждения, почему это неизбежно, учитывая
рыночная ситуация с Java EE 7 и множеством серверов,
по-прежнему на основе Servlet 3.0 API.
[snip] Это просто
Жаль, что мы должны продолжать поддерживать API JMS 1.1 эпохи 2002 года…
нравится повышать до JPA 2.1+ и Bean Validation 1.1+, но наши руки кажутся
быть связанными: TomEE 1.7 и JBoss EAP 6.4 имеют жесткий JPA 2.0 и Bean
В них есть API для валидации 1.0, а в WebLogic 12.1.3 есть JPA 2.1, но нет
API Bean Validation 1.1 (несмотря на их связь).