Яка різниця між Tomcat, JBoss та Glassfish?


445

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

Чим відрізняються ці три програми?



70
ці питання є "прокляттям" відкритих джерел. Іноді занадто багато варіантів, які роблять майже те саме. Для новачків це може призвести до паралічу шляхом аналізу. Eclipse є домінуючим IDE, але майже всі книги, які варто купувати, використовують Netbeans для розробки та навчання. Він використовує Glassfish, коли я бачив, як більшість підприємств використовують Jboss в реальному житті. Існують криві навчання використання кожного контейнера, і це може бути дуже неприємно для новачків.
користувач798719

Тепер JBoss відомий як [WildFly] ( en.wikipedia.org/wiki/WildFly ), а JBoss - компанія, розроблена WildFly.
Chaminda Bandara

Відповіді:


516

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


77
Зауважте, що читачі, JBoss тепер Java EE 6 повний профіль сертифікований як GlassFish. Також Tomcat тепер веб-профіль Java EE 6 сертифікований через TomEE і підтримує EJB, CDI, JSF, JPA тощо.
Девід Блевінс

10
@DavidBlevins так, які зараз відмінності?
aldo.roman.nurena

23
@ aldo.roman.nurena Дуже мало відмінностей. І GlassFish, і JBoss підтримують повний профіль Java EE, тому вони підтримують застарілі технології, такі як JAX-RPC та CORBA. Ми не включали їх у версію Tomcat Java EE, але вся сучасна технологія є, наприклад, JAX-RS, JAX-WS, JMS, CDI, JPA, JSF, EJB, JTA тощо.
Девід Блевінс,

@DavidBlevins Якщо ми хочемо вибрати між JBoss та Glassfish, що краще для виробничого середовища? Чи є доступна довідкова інформація, щоб зрозуміти це?
Sudhakar Chavali

1
Редагування в stackoverflow - це правильний спосіб виправити відповіді, які занадто далеко відходять від реальності.
Warren P

358

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. Крім того, для тих, хто вважає за краще адміністраторну систему на основі GUI ... Консоль адміністрування GlassFish надзвичайно гладка, тоді як більшість адміністрацій у JBoss виконується за допомогою командного рядка та редактора тексту. GlassFish походить прямо від Sun / Oracle, з усіма перевагами, які може запропонувати. JBoss НЕ перебуває під контролем Sun / Oracle, з усіма перевагами, які можуть запропонувати.


3
Я не підтвердив, але деякі заявляють, що для звичайного проекту контейнер EE 6 може використовувати на 25% менше пам'яті, ніж Spring + його залежності.
Ар'ян

2
+1, відмінна відповідь, хоча я підписуюся на коментар @ Аряна: дійсно пам'ять, якою користуються ці сервери самі по собі, не настільки важлива в порівнянні з тим, скільки пам'яті знадобиться розгорнута програма (і це сильно залежить від використовуваних технологій. Весна дещо кабаня пам’яті)
Дракон Шиван

10
Хе ... обговорення "контейнерів сервлетів" проти "серверів JEE" завжди здається перетворюватися на дискусії "Весна" проти "EJB / JSF". Я використовую JEE протягом багатьох років, і завжди радий це робити, коли клієнт платить мені. Однак, мої думки такі: [1] більшість орієнтирів з обох сторін надходять з упереджених джерел, я ніколи не помічав великої різниці в ресурсах між двома стеками, [2] Весна набагато портативніша, ніж "стандарти" JEE, з якими завжди болісно перемикати сервери, і останнє, але не менш важливо ...
Стів Перкінс

7
... [3] спільноти користувачів для Spring and Hibernate абсолютно карликові з чистих специфікацій JEE. Якщо ви зіткнетесь із проблемою Spring та опублікуєте запитання на StackOverflow, її прочитають сотні людей, і ви отримаєте ґрунтовну відповідь за лічені хвилини. Задайте питання про речі JEE, і його прочитають десяток людей ... і половину часу, єдиний відповідь, який ви отримаєте, - "Це працювало для мене!". Стандарти JEE завжди здаються, що вони запізнюються на день і не вистачає долара, і я відчуваю себе дуже самотньо, коли в них виникають проблеми з реальною програмою.
Стів Перкінс

1
Амммм ... Станом на минулий рік у Tomcat було лише 13 Мб, GlassFish - 53 МБ, а JBoss - 127 Мб. Я б не вважав сотні серверів JavaEE (GlassFish та JBoss). Якщо ви говорите про WebLogic або WebSphere, тоді ми говоримо про ГБ. Інформацію знайдено на сайті zeroturnaround.com/rebellabs/…
j

81

Ви повинні використовувати GlassFish для корпоративних програм Java EE . Деякі речі, які слід врахувати:

А веб - сервер означає: Обробка HTTP - запити (зазвичай від браузерів).

Контейнер сервлетов (наприклад , Tomcat ) означає: Він може обробляти сервлети & JSP.

Сервер додатків (наприклад, GlassFish ) означає: * Він може керувати програмами Java EE (як правило, як сервлет / JSP і EJB).


Tomcat - керує спільнотою Apache - Open Source і має два смаки:

  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 - Run by Oracle Це також повноцінний сертифікований контейнер Java EE. У цьому є свій веб-контейнер (не Tomcat). Це походить від самого Oracle, тому спочатку всі нові характеристики будуть протестовані та впроваджені разом із Glassfish. Отже, завжди було б підтримано останню специфікацію. Мені невідомі її моделі підтримки.


2
Чи прав я сказати, що в даний час (1 квартал 2018 р.) Glassfish насправді не грає великої ролі в реальності? Це не фактично стандартний JBoss?
Сократ

14

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


2
Скляна рибка може робити все, що може Tomcat, але це не означає, що це "включає" Tomcat. Риба для скла має власний веб-контейнер.
Мартін

5
Щоб було зрозуміліше, "як tomcat" є правильним, але JBoss фактично вбудовує Tomcat для його реалізації контейнера сервлетів.
Чаккі

@Chucky більше не
NimChimpsky

8

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. Однак на сьогоднішній день із розвиненими Framework, такими як Spring та Guice, багато головних переваг використання сервера повного стека застосувань можуть бути пом’якшені, і якщо вважати, що один із цих фреймворків по-справжньому з Spring Ecosystem,


8

Здається, трохи перешкоджає використовувати Tomcat, коли ви читаєте ці відповіді. Однак найчастіше не згадується те, що ви можете дістатись до однакових або майже однакових випадків використання з tomcat, але для цього потрібно додати необхідні бібліотеки (через Maven або будь-яку іншу систему, яку ви використовуєте).

Я працюю tomcat з JPA, EJB з дуже невеликими зусиллями по налаштуванню.


1
@MarcoOttina На мій досвід, так. Це дуже настроюваний веб-сервер. Я б здогадався, що багато людей, що будують сучасні веб-додатки, використовують його поряд із Spring / Spring Boot. Протягом усіх моїх років роботи з Java я все ще плутаю екосистему (особливо всі речі JEE), оскільки до цього ніколи не мав жодних вимог. Звідси сьогодні закінчується тут :)
Jocull

4

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

Томат набагато обмежений. Один із способів думати про це - JBoss - це стек Java EE, який включає контейнер сервлетів та веб-сервер, тоді як Tomcat, здебільшого, є контейнером сервлетів та веб-сервером.


3

Apache tomcat - лише єдиний контейнер серверних файлів, він не підтримує додаток Enterprise Java (JEE). JBoss і Glassfish підтримують додаток JEE, але Glassfish набагато важчий, ніж сервер JBOSS: Reference Slide

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.