В чем разница между Tomcat, JBoss и Glassfish?

Я начинаю изучать Enterprise Java, и в книге, за которой я следую, упоминается, что он будет использовать JBoss. Netbeans поставляется с Glassfish. Раньше я использовал Tomcat.

В чем разница между этими тремя программами?


person samoz    schedule 29.09.2010    source источник
comment
1. stackoverflow.com/questions/173504/ 2. stackoverflow.com/questions/327793/   -  person pramodc84    schedule 29.09.2010
comment
эти вопросы - «проклятие» открытого исходного кода. Иногда бывает слишком много вариантов, которые делают почти одно и то же. Для новичков это может привести к параличу при анализе. Eclipse является доминирующей IDE, но почти все книги, которые стоит купить, используют netbeans для разработки и обучения. Он использует Glassfish, хотя я видел, как большинство компаний используют Jboss в реальной жизни. Использование каждого контейнера требует обучения, и это может быть очень неприятно для новичков.   -  person user798719    schedule 10.04.2013
comment
Теперь JBoss известен как [WildFly] (en.wikipedia.org/wiki/WildFly) и JBoss был разработан компанией WildFly.   -  person Chaminda Bandara    schedule 05.05.2017
comment
Аналогичный вопрос: Веб-профиль Java EE против полной платформы Java EE   -  person Basil Bourque    schedule 31.03.2018


Ответы (8)


Tomcat - это просто контейнер сервлетов, т.е. он реализует только сервлеты и спецификацию JSP. Glassfish и JBoss - это полные серверы Java EE (включая такие вещи, как EJB, JMS, ...), причем Glassfish является эталонной реализацией последнего стека Java EE 6, но JBoss в 2010 году еще не полностью поддерживал его.

person Petar Minchev    schedule 29.09.2010
comment
Примечание для читателей: JBoss теперь сертифицирован для полного профиля Java EE 6, как GlassFish. Кроме того, Tomcat теперь Java EE 6 Web Profile сертифицирован через TomEE и поддерживает EJB, CDI. , JSF, JPA и другие. - person David Blevins; 24.07.2012
comment
@DavidBlevins так в чем же теперь отличия? - person aldo.roman.nurena; 24.08.2013
comment
@ aldo.roman.nurena Очень мало отличий. GlassFish и JBoss поддерживают полный профиль Java EE, поэтому они поддерживают устаревшие технологии, такие как JAX-RPC и CORBA. Мы не включали их в версию Tomcat для Java EE, но все современные технологии есть, такие как JAX-RS, JAX-WS, JMS, CDI, JPA, JSF, EJB, JTA и т. Д. - person David Blevins; 27.08.2013
comment
@DavidBlevins Если мы хотим выбирать между JBoss и Glassfish, что лучше для производственной среды? Есть ли справочная информация, чтобы понять это? - person Sudhakar Chavali; 10.10.2014
comment
@DavidBlevins Вероятно, стоит добавить свою информацию в качестве нового ответа, если Питер не хочет обновлять свою. ? - person ruffin; 02.07.2015
comment
Редактирование в stackoverflow - это правильный способ исправить ответы, которые слишком сильно отклоняются от реальности. - person Warren P; 28.01.2016
comment
Тогда нет никакой реальной разницы при использовании maven? - person Ced; 20.06.2016

Tomcat - это просто HTTP-сервер и контейнер Java-сервлетов. JBoss и GlassFish - это полноценные серверы приложений Java EE, включая контейнер EJB и все другие функции этого стека. С другой стороны, Tomcat занимает меньше памяти (~ 60-70 МБ), в то время как эти серверы Java EE весят сотни мегабайт. Tomcat очень популярен для простых веб-приложений или приложений, использующих такие фреймворки, как Spring, которые не требуют полного сервера Java EE. Администрирование сервера Tomcat, возможно, проще, поскольку в нем меньше движущихся частей.

Однако для приложений, которым требуется полный стек Java EE (или, по крайней мере, больше частей, которые можно легко подключить к Tomcat) ... JBoss и GlassFish - два самых популярных предложения с открытым исходным кодом (третье - Apache Geronimo , на котором построена бесплатная версия IBM WebSphere). JBoss имеет более широкое и глубокое сообщество пользователей и более зрелую кодовую базу. Однако JBoss значительно отстает от GlassFish в реализации текущих спецификаций Java EE. Кроме того, для тех, кто предпочитает систему администрирования на основе графического интерфейса пользователя ... Консоль администратора GlassFish чрезвычайно удобна, тогда как большая часть администрирования в JBoss выполняется с помощью командной строки и текстового редактора. GlassFish поставляется напрямую от Sun / Oracle со всеми возможными преимуществами. JBoss НЕ находится под контролем Sun / Oracle со всеми преимуществами, которые ЭТО может предложить.

person Steve Perkins    schedule 29.09.2010
comment
Я не проверял, но некоторые утверждают, что для обычного проекта контейнер EE 6 может использовать на 25% меньше памяти, чем Spring + его зависимости. - person Arjan; 23.08.2012
comment
+1, отличный ответ, хотя я подписываюсь на комментарий @Arjan: на самом деле память, используемая самими этими серверами, не так важна по сравнению с тем, сколько памяти потребуется развернутому приложению (и ЭТО сильно зависит от используемых технологий. Spring в некоторой степени свиньи памяти) - person Shivan Dragon; 02.10.2012
comment
Хех ... обсуждение контейнеров сервлетов и серверов JEE всегда, кажется, превращается в обсуждение Spring и EJB / JSF. Я использую JEE в течение многих лет и всегда рад делать это, когда мне платят клиенты. Однако мои мысли таковы: [1] большинство тестов с обеих сторон взяты из предвзятых источников, я никогда не замечал большой разницы в ресурсах между двумя стеками, [2] Spring НАМНОГО более портативен, чем стандарты JEE, с которыми он всегда кажется болезненным переключение серверов, и последнее, но не менее важное ... - person Steve Perkins; 03.10.2012
comment
... [3] сообщества пользователей Spring и Hibernate полностью затмевают сообщества чистых спецификаций JEE. Если у вас возникнут проблемы со Spring и вы опубликуете вопрос на StackOverflow, его прочитают сотни людей, и вы получите твердый ответ за считанные минуты. Задайте вопрос о материалах JEE, и его прочитают десятки человек ... и в половине случаев вы получите единственный ответ: «У меня это сработало!». Стандарты JEE всегда выглядят так, как будто они опаздывают на день и не хватает доллара, и мне очень одиноко, когда я сталкиваюсь с ними в реальном приложении. - person Steve Perkins; 03.10.2012
comment
Умммм ... По состоянию на прошлый год Tomcat был всего 13 МБ, GlassFish - 53 МБ, а JBoss - 127 МБ. Я бы не стал считать эти серверы JavaEE (GlassFish и JBoss) сотнями мегабайт. Если вы говорите о WebLogic или WebSphere, то мы говорим о ГБ. Информация находится на zeroturnaround.com/rebellabs/ - person j will; 06.06.2014
comment
Объем памяти во время работы ... а не размер загрузки их установщиков. - person Steve Perkins; 07.06.2014
comment
FWIW, похоже, этот ответ был украден (да, скопировать и вставить без каких-либо ссылок) на Quora от какого-то парня. У меня нет аккаунта на quora, поэтому я не могу там комментировать. - person kebs; 14.02.2016
comment
@kebs: Спасибо, но почти ВСЕ StackOverflow заимствованы на сотнях разных дрянных сайтов со скребками. Люди ужасны, но мне все равно не платят гонорары ни за один из моих ответов на StackOverflow. Просто воображаемые баллы. :) - person Steve Perkins; 15.02.2016
comment
Учитывая сильное преобладание Tomcat над полноценным сервером J2EE, мы можем понять, что эта среда не так уж и ограничивала, или что большинству предприятий нужны только простые приложения :-) - person Orden; 14.04.2019

Вам следует использовать GlassFish для корпоративных приложений Java EE. Некоторые моменты, которые следует учитывать:

Веб-сервер означает: обработку HTTP-запросов (обычно от браузеров).

Контейнер сервлетов (например, Tomcat) означает: Он может обрабатывать сервлеты и JSP.

Сервер приложений (например, GlassFish) означает: * Он может управлять приложениями Java EE (обычно как сервлетами / JSP, так и EJB).


Tomcat - управляется сообществом Apache - с открытым исходным кодом и имеет две разновидности:

  1. Tomcat - веб-профиль - легкий, который представляет собой только контейнер сервлетов и не поддерживает такие функции Java EE, как EJB, JMS и т. д.
  2. Tomcat EE - это сертифицированный контейнер Java EE, поддерживающий все технологии Java EE.

Нет коммерческой поддержки (только поддержка сообщества)

JBoss - запускается RedHat. Это полнофункциональная поддержка JavaEE и сертифицированный контейнер Java EE. Сюда входит Tomcat как внутренний веб-контейнер. У этого также есть два вкуса:

  1. Версия сообщества, называемая Application Server (AS) - она ​​будет поддерживаться только сообществом.
  2. Enterprise Application Server (EAP) - для этого у вас может быть лицензия на основе подписки (она зависит от количества ядер, имеющихся на ваших серверах).

Glassfish - запускается Oracle. Это также сертифицированный контейнер Java EE с полным стеком. У него есть собственный веб-контейнер (не Tomcat). Это исходит от самой Oracle, поэтому все новые спецификации сначала будут протестированы и реализованы с помощью Glassfish. Таким образом, он всегда поддерживает последнюю спецификацию. Мне неизвестны его модели поддержки.

person Jaimin Patel    schedule 13.04.2016
comment
Правильно ли я говорю, что в настоящее время (1 квартал 2018 года) Glassfish на самом деле не играет большой роли? Разве это не стандартный де-факто JBoss? - person Socrates; 08.03.2018

jboss и glassfish включают контейнер сервлета (например, tomcat), однако два сервера приложений (jboss и glassfish) также предоставляют контейнер bean-компонентов (и еще несколько вещей, которые я думаю)

person NimChimpsky    schedule 29.09.2010
comment
Glassfish может делать все, что умеет Tomcat, но это не значит, что он включает Tomcat. У Glassfish есть собственный веб-контейнер. - person Martin; 07.10.2010
comment
Чтобы быть более ясным, подобный tomcat является правильным, но JBoss фактически встраивает Tomcat в качестве своей реализации контейнера сервлетов. - person Chucky; 12.07.2012
comment
@ Чаки больше нет - person NimChimpsky; 31.05.2016

JBoss и Glassfish в основном представляют собой полноценный сервер приложений Java EE, тогда как Tomcat - это только контейнер сервлетов. Основное различие между JBoss, Glassfish, а также WebSphere, WebLogic и т. Д. По отношению к Tomcat, но также и Jetty, заключалось в функциональности, которую предлагает полноценный сервер приложений. Когда у вас есть сервер приложений Java EE с полным стеком, вы можете воспользоваться всеми реализациями поставщика по вашему выбору, и, конечно же, вы можете воспользоваться преимуществами EJB, JTA, CDI (JAVA EE 6+), JPA, JSF, JSP / Servlet. и так далее. С другой стороны, с Tomcat вы можете получить выгоду только от JSP / Servlet. Однако сегодня с помощью расширенной платформы, такой как Spring и Guice, многие из основных преимуществ использования сервера приложений с полным стеком могут быть смягчены, и, предположив, что одна из этих структур, главным образом, с Spring Ecosystem, вы можете извлечь выгоду из многих подсистем. проект, который в моем опыте работы позволил мне отказаться от использования сервера приложений полного стека в пользу легкого сервера приложений, такого как tomcat.

person Valerio Vaudi    schedule 23.03.2016

Когда вы читаете эти ответы, вам кажется, что использование Tomcat немного обескураживает. Однако чаще всего не упоминается то, что вы можете получить идентичные или почти идентичные варианты использования с tomcat, но для этого вам потребуется добавить необходимые библиотеки (через Maven или любую другую включающую систему, которую вы используете).

Я запускал tomcat с JPA, EJB с очень небольшими усилиями по настройке.

person user2130951    schedule 02.08.2017
comment
@MarcoOttina По моему опыту, да. Это легко настраиваемый веб-сервер. Я предполагаю, что многие люди, создающие современные веб-приложения, используют его вместе с Spring / Spring Boot. За все годы работы с Java меня до сих пор смущает экосистема (особенно все, что связано с JEE), поскольку у меня никогда не было никаких требований к ней. Таким образом, я попал сюда сегодня :) - person jocull; 15.08.2019

И JBoss, и Tomcat являются серверами приложений Java-сервлетов, но JBoss - это намного больше. Существенная разница между ними заключается в том, что JBoss предоставляет полный стек Java Enterprise Edition (Java EE), включая Enterprise JavaBeans и многие другие технологии, которые полезны для разработчиков, работающих над корпоративными приложениями Java.

Tomcat гораздо более ограничен. Один из способов представить это - JBoss - это стек Java EE, который включает контейнер сервлетов и веб-сервер, тогда как Tomcat, по большей части, представляет собой контейнер сервлетов и веб-сервер.

person Spartan    schedule 21.07.2015

Apache tomcat - это единственный контейнер серверлетов, который не поддерживает приложение Enterprise Java (JEE). JBoss и Glassfish поддерживают приложение JEE, но Glassfish намного тяжелее сервера JBOSS: Справочный слайд

person BATMAN_    schedule 07.06.2017