Яка різниця між 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.