Tomcat, JBoss ve Glassfish arasındaki fark nedir?


445

Enterprise Java'ya bakmaya başladım ve takip ettiğim kitap JBoss kullanacağından bahsediyor. Netbeans Glassfish ile gemi. Tomcat'i geçmişte kullandım.

Bu üç program arasındaki farklar nelerdir?



70
bu sorular açık kaynağın 'laneti'dir. Bazen neredeyse aynı şeyi yapan çok fazla seçenek vardır. Yeni başlayanlar için analizle felce yol açabilir. Eclipse baskın IDE'dir, ancak satın almaya değer neredeyse tüm kitaplar geliştirmek ve öğretmek için netbeans kullanıyor. Çoğu işletmenin gerçek hayatta Jboss kullandığını gördüğümde Glassfish kullanıyor. Her bir kabı kullanmanın öğrenme eğrileri vardır ve yeni başlayanlar için çok sinir bozucu olabilir.
user798719

Şimdi JBoss [WildFly] ( en.wikipedia.org/wiki/WildFly ) olarak bilinir ve JBoss WildFly'i geliştiren şirketti.
Chaminda Bandara

Yanıtlar:


516

Tomcat sadece bir sunucu uygulaması konteyneridir, yani yalnızca sunucu uygulamalarını ve JSP özelliklerini uygular. Glassfish ve JBoss tam Java EE sunucularıdır (EJB, JMS, ... gibi şeyler dahil), Glassfish en son Java EE 6 yığınının referans uygulamasıdır, ancak 2010'daki JBoss henüz tam olarak desteklemiyordu.


77
Okuyucular için JBoss artık GlassFish gibi Java EE 6 Tam Profil sertifikasına sahiptir . Tomcat artık TomEE sertifikalı Java EE 6 Web Profili'dir ve EJB, CDI, JSF, JPA ve daha fazlasını desteklemektedir.
David Blevins

10
@DavidBlevins şimdi farklılıklar nelerdir?
aldo.roman.nurena

23
@ aldo.roman.nurena Çok az fark var. GlassFish ve JBoss'un her ikisi de Java EE Tam Profilini destekler, bu nedenle JAX-RPC ve CORBA gibi eski teknolojileri destekliyorlar. Bunları Tomcat'in Java EE sürümüne dahil etmedik, ancak mevcut tüm teknoloji JAX-RS, JAX-WS, JMS, CDI, JPA, JSF, EJB, JTA, vb.Gibi
David Blevins

@DavidBlevins JBoss ve Glassfish arasında seçim yapmak istiyorsak, bu üretim ortamı için daha iyidir? Bunu anlamak için herhangi bir referans bilgisi var mı?
Sudhakar Chavali

1
Stackoverflow üzerinde düzenleme, gerçeklikten çok uzaklaşan cevapları düzeltmenin doğru yoludur.
Warren P

358

Tomcat yalnızca bir HTTP sunucusu ve Java sunucu uygulaması kapsayıcısıdır. JBoss ve GlassFish, bir EJB kapsayıcısı ve bu yığının diğer tüm özellikleri de dahil olmak üzere tam gelişmiş Java EE uygulama sunucularıdır. Öte yandan, Tomcat'in daha hafif bir bellek alanı (~ 60-70 MB) varken, bu Java EE sunucuları yüzlerce megabayt ağırlığındadır. Tomcat, basit web uygulamaları veya Spring gibi tam bir Java EE sunucusu gerektirmeyen çerçeveler kullanan uygulamalar için çok popülerdir. Bir Tomcat sunucusunun yönetimi, daha az hareketli parça bulunduğundan tartışmasız daha kolaydır.

Bununla birlikte, tam bir Java EE yığını gerektiren uygulamalar (veya Tomcat'e kolayca vidalanabilen en az daha fazla parça) ... JBoss ve GlassFish en popüler açık kaynak tekliflerinden ikisi (üçüncüsü Apache Geronimo IBM WebSphere'in ücretsiz sürümünün oluşturulduğu). JBoss, daha geniş ve daha derin bir kullanıcı topluluğuna ve daha olgun bir kod tabanına sahiptir. Bununla birlikte, JBoss, mevcut Java EE özelliklerinin uygulanmasında GlassFish'in gerisinde kalmaktadır. Ayrıca, GUI tabanlı bir yönetici sistemini tercih edenler için ... GlassFish'in yönetici konsolu son derece kaygan, JBoss'taki çoğu yönetim bir komut satırı ve metin editörü ile yapılır. GlassFish, sunabileceği tüm avantajlarla birlikte doğrudan Sun / Oracle'dan gelir. JBoss, sunabileceği tüm avantajlarla birlikte Sun / Oracle'ın kontrolü altında DEĞİLDİR.


3
Doğrulamadım, ancak bazıları düzenli bir proje için bir EE 6 konteynerinin Spring + bağımlılıklarından % 25 daha az bellek kullanabileceğini iddia ediyor .
Arjan

2
+1, mükemmel cevap, @ Arjan'ın yorumuna abone olmama rağmen: gerçekten bu sunucuların kendileri tarafından kullanılan bellek, konuşlandırılan bir uygulamanın ne kadar belleğe ihtiyaç duyduğu kadar önemli değildir (ve bu da kullanılan teknolojilere bağlıdır. Bahar biraz bir bellek domuz)
Shivan Dragon

10
Heh ... "sunucu uygulaması kapsayıcıları" ve "JEE sunucuları" tartışması her zaman "Bahar" ve "EJB / JSF" tartışmalarına dönüşüyor gibi görünüyor. JEE'yi yıllardır kullanıyorum ve bir müşteri bana ödeme yaptığında bunu yapmaktan her zaman mutluyum. Ancak, düşüncelerim: [1] her iki taraftaki çoğu kriter önyargılı kaynaklardan geliyor, iki yığın arasında büyük bir kaynak farkı fark etmedim, [2] Bahar JEE "standartlarından" çok daha taşınabilir sunucuları değiştirmek her zaman acı verici görünüyor ve son fakat en az değil ...
Steve Perkins

7
... [3] Spring ve Hibernate kullanıcı toplulukları kesinlikle saf JEE özelliklerine sahip olanları cüce ederler. Spring ile sorun yaşarsanız ve StackOverflow'a bir soru gönderirseniz, yüzlerce kişi tarafından okunacak ve dakikalar içinde sağlam bir cevap alacaksınız. JEE şeyler hakkında bir soru sorun ve bir düzine kişi tarafından okunacak ... ve yarım zaman, aldığınız tek yanıt "Benim için çalıştı!". JEE standartları her zaman bir gün geç ve bir dolar kısa gibi görünüyor ve kendimi gerçek bir uygulamada sorun yaşadığımda kendimi çok yalnız hissediyorum.
Steve Perkins

1
Ummmm ... Geçen yıl itibariyle Tomcat sadece 13 MB, GlassFish 53MB ve JBoss 127 MB idi. Bu JavaEE sunucularını (GlassFish ve JBoss) yüzlerce megavat dikkate almam. WebLogic veya WebSphere'den bahsediyorsanız, bir GB'den bahsediyoruz. Bilgi bulunan zeroturnaround.com/rebellabs/…
j

81

Java EE kurumsal uygulamaları için GlassFish kullanmalısınız . Dikkate alınması gereken bazı noktalar:

Bir web sunucusu aracı: (genellikle tarayıcılarından) Taşıma HTTP isteği.

Bir Servlet Kabı (örn. Tomcat ) şu anlama gelir: Sunucu uygulamaları ve JSP'yi işleyebilir.

Bir Uygulama Sunucusu (örn GlassFish ) araçları: Bu Java EE uygulamaları (genellikle servlet / JSP ve EJB'ler ikisi) yönetebilir *.


Tomcat - Apache topluluğu tarafından yönetilir - Açık kaynak kodlu ve iki çeşidi vardır:

  1. Tomcat - Web profili - yalnızca sunucu uygulaması kapsayıcısı olan ve EJB, JMS vb.Gibi Java EE özelliklerini desteklemeyen hafiftir.
  2. Tomcat EE - Bu sertifikalı bir Java EE kapsayıcısıdır, tüm Java EE teknolojilerini destekler.

Ticari destek yok (yalnızca topluluk desteği)

JBoss - Run by RedHat JavaEE için tam yığın desteğidir ve sertifikalı bir Java EE kapsayıcısıdır. Buna dahili olarak web kapsayıcısı olarak Tomcat dahildir. Bunun da iki çeşidi vardır:

  1. Uygulama Sunucusu (AS) adı verilen topluluk sürümü - bunun yalnızca topluluk desteği olacaktır.
  2. Kurumsal Uygulama Sunucusu (EAP) - Bunun için abonelik tabanlı bir lisansa sahip olabilirsiniz (Sunucularınızdaki Çekirdeklerin sayısına bağlıdır.)

Glassfish - Oracle tarafından çalıştırın Bu aynı zamanda tam bir yığın sertifikalı Java EE Kapsayıcısıdır. Bunun kendi web kapsayıcısı vardır (Tomcat değil). Bu Oracle'ın kendisinden geliyor, bu yüzden tüm yeni özellikler önce Glassfish ile test edilecek ve uygulanacak. Yani, her zaman en son özellikleri destekleyecektir. Destek modellerinin farkında değilim.


2
Bugünlerde (2018'in 1. çeyreği) Glassfish'in gerçekte gerçekten büyük bir rol oynamadığını söylemek doğru muyum? De facto standart JBoss değil mi?
Socrates

14

jboss ve glassfish bir sunucu kabı (tomcat gibi) içerir, ancak iki uygulama sunucusu (jboss ve glassfish) ayrıca bir fasulye kabı sağlar (ve hayal ettiğim birkaç şey daha)


2
Glassfish, Tomcat'in yapabileceği her şeyi yapabilir, ancak bu Tomcat'in "içerdiği" anlamına gelmez. Glassfish'in kendi web konteyneri vardır.
Martin

5
Daha açık olmak gerekirse, "tomcat gibi" doğrudur, ancak JBoss aslında Tomcat'i sunucu uygulaması konteyner uygulaması olarak gömer.
Chucky

@Chucky artık
NimChimpsky

8

JBoss ve Glassfish temel olarak Java EE Uygulama Sunucusudur, Tomcat ise sadece bir Servlet konteynırdır. JBoss, Glassfish ve aynı zamanda WebSphere, WebLogic ve Tomcat ile aynı zamanda Jetty arasındaki temel fark, tam bir uygulama sunucusunun sunduğu işlevsellikte oldu. Tam bir yığın Java EE uygulama sunucunuz olduğunda, seçtiğiniz satıcının tüm uygulamasından yararlanabilirsiniz ve elbette EJB, JTA, CDI (JAVA EE 6+), JPA, JSF, JSP / Servlet'ten yararlanabilirsiniz. ve bunun gibi. Diğer yandan Tomcat ile yalnızca JSP / Servlet'ten yararlanabilirsiniz. Ancak, Spring ve Guice gibi gelişmiş Framework ile, tam bir yığın uygulama sunucusu kullanmanın ana avantajının birçoğu hafifletilebilir ve bu çerçeveden birinin Spring Ecosystem ile erkeksi olduğu varsayıldığında,


8

Bu cevapları okurken Tomcat'i kullanmak biraz cesaret kırıcı görünüyor. Bununla birlikte, en çok bahsedilemeyen şey, tomcat ile aynı veya neredeyse aynı kullanım durumlarına ulaşabilmenizdir, ancak bu gerekli kütüphaneleri eklemenizi gerektirir (Maven veya kullandığınız herhangi bir sistemi içerir).

JPA ile tomcat, çok küçük yapılandırma çabalarıyla EJB'lerle çalışıyorum.


1
@MarcoOttina Deneyimlerime göre, evet. Son derece yapılandırılabilir bir web sunucusudur. Modern web uygulamaları inşa eden birçok insanın Spring / Spring Boot ile birlikte kullandığını tahmin ediyorum. Java ile geçirdiğim tüm yıllar boyunca, ekosistem (özellikle tüm JEE şeyleri) için kafam karıştı, çünkü bunun için hiç bir gereksinimim yoktu. Bugün burada sona eriyor :)
jocull

4

Hem JBoss hem de Tomcat, Java sunucu uygulaması uygulama sunucularıdır, ancak JBoss çok daha fazlasıdır. İkisi arasındaki önemli fark, JBoss'un Enterprise JavaBeans ve kurumsal Java uygulamalarında çalışan geliştiriciler için yararlı olan diğer birçok teknoloji de dahil olmak üzere tam bir Java Enterprise Edition (Java EE) yığını sağlamasıdır.

Tomcat çok daha sınırlıdır. Bunu düşünmenin bir yolu JBoss'un sunucu uygulaması kapsayıcısı ve web sunucusu içeren bir Java EE yığını olması, Tomcat ise çoğunlukla sunucu uygulaması kapsayıcısı ve web sunucusu olmasıdır.


3

Apache tomcat, Enterprise Java uygulaması (JEE) için desteklemediği tek bir sunucu uygulamasıdır. JBoss ve Glassfish, JEE uygulamasını destekliyor, ancak Glassfish JBOSS sunucusundan çok ağır: Reference Slide

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.