Şu anda, yeni bir proje için Java EE sunucusu olarak JBoss veya Glassfish (veya başka bir) kullanıyor musunuz? [kapalı]


136

Bugün yaklaşık bir yıl içinde bitecek yeni bir Java EE projesi başlattıysanız, hangi uygulama sunucusunu seçersiniz ve neden?

Cevabınızın bir kısmı kararınızla ilgili argümanlarınızı içermelidir. Ayrıca seçtiğiniz Java EE sunucusu ve piyasadaki diğer kullanılabilir sunucularla ne kadar deneyime sahip olursunuz. Bunlar ilginçtir, çünkü hepimiz cevabınıza konulan soruşturmayı ve düşünceyi anlıyoruz.

Yanıtlar:


181

Son 10 yıldan fazla bir süredir WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat ve birkaçını kullandım. Eğer yeni bir proje düşünürsem, önce kendime birkaç soru sorardım. Artık sorgulamayacağım bir şey, annem için ağlayana kadar işkence görmedikçe JSP'leri kullanmayı reddedeceğim.

Birisinin görevi nedeniyle belirli bir ürünle uyumlu olmam / dağıtmam gerekiyor mu? Onları görmezden gelmenin veya ikna etmenin bir yolu yok mu? Eğer öyleyse, cevabınız var.

EJB'leri kullanmak zorunda mıyım? Gerçekten mi? Mümkünse bunlardan kaçının - gerçekten sadece çok büyük, kurumsal sınıf sistemler için gereklidir. Unutmayın ki bunlar sadece birer alettir ve büyük olanlardır (herkes "Altın Balyoz" diyebilir mi?). Çok fazla kullanıldılar, bu yüzden gerçekten, gerçekten onlara ihtiyacınız olup olmadığını sorgulayın. Onlara ihtiyacınız varsa, bu benim en sevdiğim İskelesi de dahil olmak üzere birkaç seçeneğinizi kaldırır.

JMS, ESB, vb.Gibi diğer büyük J2EE teknolojilerinden herhangi birini kullanmak zorunda mısınız? Eğer öyleyse ve gerçekten onsuz yapamazsanız, yine tam dolu bir J2EE konteyneriyle kısıtlanırsınız. Örneğin BPM'yi taahhüt etmeden önce dikkatlice düşünün ve araştırın ve AquaLogic BPM'den (neredeyse) tüm maliyetlerden kaçının - aşırı derecede çirkin.

Gerçekten tam gelişmiş bir J2EE kabı kullanmanız gerekiyorsa, önce daha açık, daha iyi desteklenmiş ve daha uygun maliyetli olduğu için önce açık kaynağı düşünün. Daha büyük müşteri tabanlarına ve daha açık destek etkileşimlerine sahiptirler, bu nedenle daha iyi düzeltmeleri daha hızlı elde etme eğilimindedirler. Ancak, Reçine olgunlaşmamış ve bunu GlassFish veya JBoss'a göre önleyecektim - konuşlandırmayı ve desteklemeyi sorunlu buldum. Daha geniş müşteri tabanı, olgunluğu, vb.Nedeniyle JBoss'u tercih ederim. GlassFish'in otomatik bir derleme / dağıtım sürecine dahil edilmesi daha zordur, ancak bazı spesifik özellikleri için daha iyi olabilir (onlara ihtiyacınız varsa).

Apache'ye ihtiyacım için özel bir nedenim var mı? Sonra Tomcat'e yaslanın, belki artı bir şey.

Sadece sunucuları ile yapabilir miyim? O zaman Jetty'yi kullanırım - en hafif, en hızlı, en kolay, en esnek çözüm. İskeleyi kullanabilmeye eğilimliysem, neden olduğumla ilgili tüm varsayımları sorgularım. YAGNI geçerlidir.

En iyisi, Jetty'de StringTemplate / WebStringTemplate kullanmaktır: lisans ücreti, sağlam itibar ve destek vb.İle temiz, sağlam, hızlı, bakımı kolay bir çözüm vb. Bugünlerde başladığım yer burası.

Çoğu uygulama / sistem, gerçekten ihtiyaç duydukları tek şey sunucuları ve bazı iyi mimari / tasarıma sahip JDBC olduğunda birçok fantezi J2EE özelliği seçer. Neden daha fazlasına ihtiyacın olduğunu düşündüğünü sor.

Tam şişelenmiş kaplar arasında, bir MAJOR genel web sitesini desteklemediğiniz sürece WebLogic ve WebSphere'den kaçınırım (mevcut işverenimin web sitesi WebLogic'e dağıtılır ve ayda on bir + milyon isabet alır, diğerleri karşılaştırılabilir olmuştur). WebLogic'in gerçek şöhret iddiası göreceli olarak kolay kümelenmeleridir, ancak (neredeyse) her ne pahasına olursa olsun tescilli satıcı kilitleme özelliklerinden kaçının. WebSphere, kelimenin tam anlamıyla pahasına kaçınacağım bir kabus - geçmişte bir çift yaptıktan sonra WebSphere'i içeren projeleri yapmayı reddediyorum. Tescilli bir özelliğin kullanımını teşvik eden özel bir gereksiniminiz yoksa, her iki ürün de büyük lisans ücretlerine değmez. On yıl içinde Fortune 500 şirketlerinde üst düzey bir mimar / mühendis olarak henüz böyle bir ihtiyaç görmedim. Diğer yandan,

Gerçekten büyük, yüksek trafikli, halka açık web siteleri için bile, tescilli ürünler hala tartışmalıdır. Basit bir ölçeklenebilirlik çözümünü ele almak için bir avuç gerçekten iyi danışmandan yılda birkaç milyon dolarlık lisans ücretini iyi bir donanım ve kaliteli bir zaman harcamayı tercih ederim. Yıllık ekstra milyonlar, o güzel web sitesinde satılmaya değer bir şey üretmek için kullanılabilir ...

EDIT: dikkate alınacak başka bir parça ...

Son zamanlarda Terracotta ile karşılaştım . Her şeyi yeniden düşünüyorum ve yakında önemli bir sisteme yerleştirmeyi düşünüyorum. Özellikle, Terracotta kümelenmeyi her şeyden daha iyi yapar, bu yüzden KÜMÜNDE kümelenmesi için WebLogic'i tavsiye etmem.


7
İleride başvurmak için genellikle Google veya Wikipedia aramasıyla kısaltma tanımlarını bulabilirsiniz. YAGNI = İhtiyacınız Yok = tasarımınızı aşırıya kaçmayın JMS = Java Mesaj Servisi ESB = Kurumsal Hizmet Veri Yolu BPM = İş Süreçleri Yönetimi
Rob Williams

21
Java EE ve EJB'ler hakkındaki yorumlarınız biraz modası geçmiş. J2EE ?! 5 yıl önceydi. Java EE 6'ya bir göz atın ve bakış açınızı modernleştirin!
Brian Leathem

6
@Brian: Brian'a katılıyorum, özellikle EJBLite ile çok daha hafif bir ağırlık haline geldi.
Thang Pham

7
Görevde @Brian, göz - bu oldu üç yıl Yorumunuza önce yazılmış. Ve hala Bahar'ın zayıf bir Java EE'den bile daha hafif olduğunu söyleyebilirim.
duffymo

2
2012 yılında verilen karar nedir? JBoss 7 AS, Java 6 EE bölgesinde Glassfish'i yönetiyor mu? Yoksa tam tersi mi?
Rolando

10

"Uygulama sunucusu" terimi belirsiz. GlassFish v3 ile, geleneksel bir web kapsayıcısı ile küçük bir şekilde başlayabilir ve istediğiniz her şeyi eklemek için (OSGi ve basit "kapsayıcı ekle" işlevini kullanarak) gelişebilirsiniz: JPA, JAX-RS, EJB, JTA, JMS, ESB , vb ... Yine de aynı ürün, aynı yönetici arayüzü vb. Bu uygulama sunucusu olarak size uygun mu? -Alexis (Güneş)


1
Ne yazık ki Glassfish artık resmi bir ürün değil, referans uygulaması "sadece" dir.
Thorbjørn Ravn Andersen

9

Genellikle kendime sorduğum ilk soru "Bunu Tomcat ile yapabilir miyim?" Cevap hayır çünkü ben JMS veya JTA gerekiyorsa o zaman bir uygulama sunucusuna başvurmak.

WebLogic 8'i yaklaşık 3 yıl önce WebLogic'in kullanım kolaylığı ve lisanslama / maliyet modelinden memnun olarak kullandım. Biri bir web servisi diğeri bir portal olmak üzere iki proje için kullandık. Bu projelerin hiçbirinde WebLogic veya WebLogic Portal ile herhangi bir sorunla karşılaşmadık.

Son iki yıldır WebSphere ile çalışıyordum. IBM ile müzakere ettiğimde, her zaman bir WebLogic eşdeğerinden iki kat daha pahalıya mal oldu, ancak WebSphere'in dikte ettiği kurumsal politika kullanılmalıydı. WebSphere üzerindeki öğrenme eğrisinin WebLogic'ten oldukça dik olduğunu gördüm ve geliştirme / oluşturma / test yaşam döngümüz o kadar zaman alıcıydı ki Tomcat'i geliştirme ortamında kullandık. Ancak WebSphere ile ilgili en büyük sorun, bizi bir sonraki yama sürümüne yükseltmeye zorlayan bir hatayla karşılaştığımızda, sadece web.xml ayrıştırmada yeni sorunla karşılaşmaktı. Bunların hepsinde çalışmak 48 saat sürdü.

Şu anda JBoss kullanıyorum. Yaklaşık 3 ay önce Tomcat ve Jetspeed 2 ile yeni projeme başlamak üzereydim, ancak Jetspeed 2'nin şu anda biraz durgun göründüğünü ve JBoss Portal 2.7.0'ın JSR 286 / Portlet 2.0 desteği ile piyasaya sürüldüğünü fark ettim. JBoss'a bir spin verdim ve kurulumu ve yönetimi çok kolay buldum. Derleme / dağıtma / test döngüsü çok hızlıdır ve bir yerde bir Spring XML dosyasını değiştirmedikçe nadiren sunucuyu yeniden başlatmam gerekir.


Güzel cevap! İskele'yi denedin mi? Ve sahip olmanız durumunda bu konuda ne düşünüyorsunuz?

7

3-4 yıldır jBoss kullanıyorum.

JBoss için bağımsız değişkenler:

  1. Açık kaynak.
  2. Ticari destek mevcut.
  3. Büyük, aktif kullanıcı topluluğu.

JBoss'a karşı argümanlar:

  1. Genel erişim yok, desteklenen Java EE 5 kapsayıcı sürümü.
  2. Çok sayıda belge ama ayrıntılı; "x nasıl yapılır?" yanıtını bulmak zor olabilir
  3. Diğer ticari tekliflere kıyasla 4.x yoksul için idari araçlar.

"Genel erişim yok, desteklenen JEE 5 konteyner sürümü." Sanırım artık durum böyle değil, değil mi?
Raedwald

@Raedwald: evet, şimdi JEE 6 bir süredir var ;-)
ymajoros


3

Burada tartışılmayan bir diğer nokta performanstır. Bu, hizmet türü veya kullanıcı sayısı nedeniyle bir endişe kaynağı ise, aşağıdakiler geçerli olacaktır:

  • Tomcat Glassfish'ten daha yavaş görünüyor
  • Glassfish Resin'den daha yavaş görünüyor
  • Reçine G-WAN + Java'dan çok daha yavaş

G-WAN'ın yalnızca JVM'ye dayandığını unutmayın: başka bir kap kullanmaz (açıkça belirtilmedikçe), böylece web uygulamalarınızın performans açısından kritik kısımlarına ayırabilirsiniz.

G-WAN diğer dilleri (C, C ++, C #, D, Objective-C) desteklediğinden, Java'yı diğer görevler için tutarken uygulamaların bazı bölümlerini ham C'de bile işleyebilirsiniz.


2

Tercih ettiğiniz işletim sistemini bir karar kriteri olarak dahil edebilirim. İşletim sistemi ve uygulama sunucusu için aynı satıcıyı kullanıyorsanız desteklemeyi kolaylaştırmalısınız. Zaten bir veya her iki satıcıyla bir ilişkiniz varsa, başa çıkmanın iyi olup olmadığını düşünün.

Teknik açıdan GlassFish'i seçerdim çünkü daha yeni yenilikleri destekliyor. JBoss'un zaten güncel olmadığını sanmıyorum.

Deneyimlerimin çoğu WebLogic'te ancak JBoss ve GlassFish kullandım. Tam bir Sun açık kaynak yığını (OpenSolaris, GlassFish, MySQL) üzerinde yeni bir site yayınladım ve sadece küçük hayal kırıklıkları ile harika bir deneyim oldu.


Çok özel ikili bağımlılıklarınız olmadığı sürece işletim sistemi gerçekten bir sorun değildir (çoğu java projesi için böyle olmamalıdır). Pencereler, 32 ve 64 bitler üzerinde gelişir ve Solaris'te Glassfish'i kullanırız. Çoğu geliştirici gerçekten bilmiyor ve ilgilenmek zorunda değil. Kullanıcılar bunu görmez (gelişmelerin çoğu web uygulamalarıdır).
ymajoros

2

WebLogic'in hala piyasadaki en iyi Java EE uygulama sunucusu olduğunu düşünüyorum. Bu lisans ücretlerini karşılayabiliyorsanız buna değer olduğunu düşünüyorum.

Tomcat, OpenEJB ve ActiveMQ'yu birleştirerek ne kadar ileri gidebileceğinizi görünce şaşırdım. Bu bana düşük maliyetli bir alternatif gibi görünüyor.

Ayrıca Spring dm Sunucusuna da bakardım. Tomcat'e dayanıyor, ancak ekledikleri OSGi parçasının kısa sürede her yerde olabileceğini düşünüyorum. Bahar çerçevesiyle aynı kalitede yapılırsa, gerçekten çok iyi olacaktır.


2
WebLogic ile sorun var satıcı kilidi, gerçekten gerek yok zaman yutmak için kötü bir hap!
Manius

1
Bu, yalnızca WebLogic için değil, bildiğim tüm Java EE satıcıları için geçerlidir. Kilitli olduğunuz satıcıya özgü herhangi bir özellik kullanıyorsanız. Bir ara kod yazmanız gerekir.
duffymo

3
WebLogic yalnızca ticari amaçlıdır - işte bunu yapıyorum - büyük bir çek yazdığınızda, açık kaynak alternatifine göre daha büyük bir oranda "kilitli kalırsınız". Açıkçası platform bağımsızlığını önemsiyorsanız, satıcıya özgü özellikleri kullanmazsınız, bu yüzden bahsettiğim şey bu değildir. Aslında bir kez okudum bir anket dedi devs kaçınma satıcı kilit kilit açık kaynak # 1 avantajı (maliyet değil) olduğuna inanıyoruz.
Manius

Saçma mı? Eğer bir satıcı ile multi-milyon dolarlık sözleşme imzalamadan inanıyor musunuz gelmez kilitlemek? Kanıtın var.
duffymo

@ymajoros Şunu mu demek istediniz: vendor locked in "shouldn't" Açıkçası, yorumunu anlayamıyorum.
Patrick M

1

Bir alternatif: hiçbir uygulama sunucusu kullanmayın.

Çıkış yapmak http://www.atomikos.com/Publications/J2eeWithoutApplicationServer .

Web projeleri için, JSP / JSF veya desteklerin karmaşıklığını önlemek için Wicket gibi bir şeyle birlikte hafif bir web kapsayıcısı bulundurun.

HTH Guy


Araçları kullanmayı öğrenmek istemiyorsanız, herhangi birini kullanmayın. Veya yetenekli bir profesyonel olmaya çalışın ve çevrenize yatırım yapın, ödüllendirileceksiniz. Bazı projeler için yaptığımı itiraf etmeliyim. Aynı projeler, ilkbaharda özel bir istemci-sunucuya saf Java EE ve Glassfish için hiçbir uygulama sunucusu geliştirmedi. Geri dönmek istemezdim, ilk çözüm aslında çok karmaşıktı, bugünkü kadar basitti (ve standart, herhangi bir Java EE uygulama sunucusunda çok fazla değişiklik yapmadan dağıtılacaktı).
ymajoros

iyi cevap, belgeyi almanın kötü yolu
msangel
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.