24
2011
Ne kullansam; Tomcat ? JBoss ? Glassfish ? Diğerleri ?
Java dünyasındaki sunucu çözümleriyle yaklaşık olarak 12 senedir beraberim. Sunucu çözümleri açısından bakılırsa Java ile Microsoft dünyası arasındaki fark kesin olarak görülür, örneğin ISS gibi tek bir sunucunun baskınlığı Java dünyasında kabul göremez. Bu bir yanıyla iyi fakat diğer yanıyla kötüdür. İyidir çünkü rekabet vardır ve kullanıcıların seçme şansı vardır. Kötüdür çünkü fazla seçenek olduğu için insanların kafası karışır ve panik başlayabilir.
Java dünyasını bilmeyenler için Apache vakfından ve ürünlerinden kısaca bahsetmek isterim. Apache vakfının meşhur açık kaynak kodlu ürünleri arasında: Örneğin Apache Tomcat, Apache Commons, Apache Wicket …..gibi.
Apache bir vakıfdır, projelere alt yapı sağlayan, yol gösteren eski ve köklü bir vakıf. Apache vakfı şemsiyesi altındaki projelerin büyük çoğunluğu çok popülerdir. Bünyesine aldığı projeleri belli bir olgunluğa erişmesi için kuluçka evresinde bekletir. Sonuç olarak uzun soluklu ve sağlam projeler ortaya çıkarır.
Öncelikle piyasa da kullanılan, etkin ürünleri ve bu ürünlerin hangi dertlere derman olduklarını ortaya koyalım.
- Apache HTTP sunucusu: Tek başına çok fazla birşey ifade etmez. Tek başına ancak statik içerikleri sunar. Yani html, resim, zip dosyaları gibi. Apache WebServer ‘ın eklentleri sayesinde efsanevi bir hale dönüşebilir. Örneğin PHP eklentisini eklediğinizde meşhur LAMP - Linux – Apache – Mysql - PHP + 4′lüsünün 2 modülünü başarmış olursunuz.

Ve fakat günümüzde insanlar düşük donanımlı Virtual sunucular üzerinde sitelerini barındırmaktadırlar. Bunun doğal sonucu olarak çok az kaynak tüketen http sunucularına ihtiyaç duyuluyor. Bu yüzden Apache HTTP sunucusunun pabucu (bu tür ortamlarda) dama atılıyor diyebilirim. Artık yeni kahraman lighthttpd; bu ürünü kullananların sayısı gün geçtikçe artıyor.
- Apache Tomcat : Basittir. Etkilidir. Jsp/Servlet bazlı bir uygulamanız varsa bu uygulamanızı performanslı bir şekilde çalıştırır. İşi özü Apache Tomcat; jsp / servlet belirtimlerine (Specification) göre işleyen bir üründür. Apache HTTP Sunucu ile ortak da çalışabilir – amaç performası daha da arttırmaktır. Örneğin statik içeriği ( html, resim dosyaları gibi…) Apache HTTP Sunucu sunarken, geriye kalan Jsp/ Servlet çalıştırma işlerini Tomcat yapabilir. Fakat piyasada bu bağlama olayını sık görmedim. Genelde Apache Tomcat tüm statik ve dinamik (Jsp/ Servlet leride kendi çalıştırır) içeriği sunar.
- Jetty : Çok daha basittir. Jsp / Servlet belirtimlerine (Specification) göre inşaa edilmiş bir üründür. Tomcat’ın rakibidir. Özellikle Maven icat olduğundan beri uygulamaları hızlıca ayağa kaldırıp test etmeye yarayan epeyce hızlı ve etkili bir üründür. Benim tercihim bu aralar Tomcat yerine jetty kullanmak.
Yukarıda bahsettiğim ürünler ile küçük, orta ve büyük ölçekli uygulamalar geliştirebilirsiniz. Geriye ne kaldı ? JEE (Java Enterprise Edition) dünyasının derinliklerinde yatan teknolojiler ve teknolojileri kullanmak için zorunlu olarak JEE uygulama sunucuları (application servers) kullanmak.
Bir kişi/takım JEE uygulama sunucularını kullanmadan önce aşağıdaki soruları sormalı :
- EJB kullanacak mıyım ? Neden ?
- JMS (Java Messaging Service) veya sunucu tarafından yönetilen bir transaction makanizmasına ihtiyacım olacak mı ?
- JEE uygulama sunucusu kullanmazsam neyi yapamam ?
- Tomcat veya jetty neyime yetmiyor ?
Açıkcası EJB kullanan çok az projeye şahit oldum. İhtiyaç değilse kesinlikle kullanmamak gerekir. Bu noktada YAGNI (You ain’t gonna need it) felsefesini lütfen uygulayın. Gördüğün birçok proje aslında sadece basit bir jsp / servlet ile halledilebilecek bir durumdayken, çok fantastik teknolojiler seçildiğine ve haliyle projelerin zora girdiğine şahit olmuşumdur. Basitlik iyidir.
Bu arada JEE uygulama sunucuları JSP/ Servlet ile yazılmış uygulamalarınızı da çalıştırabilmektedir. İşte bu noktada laf olsun (ya da daha sağlam olsun) diye JEE uygulama sunucusu kurup çalıştırmak yersiz ve anlamsızıdr. Dediğim gibi basitlik iyidir.
Eğer jEE uygulama sunucu kullanacaksınız kesinlikle açık kaynak kodlu bir ürün kullanmanızı tavsiye ederim. İşte JEE uygulama sunucusu pazarındaki önde gelen oyuncular.
- Glassfish – Açık kaynak kodlu ve ücretsiz. Ücretli sürümü de mevcut
- Jboss – Açık kaynak kodlu ve ücretsiz. Ücretli sürümü de mevcut
- Websphere – IBM ‘in ve ücretli
- Weblogic – Oracle’ın ve ücretli
Yukarıdaki ürünler JEE belirtimlerine göre inşaa edilmişlerdir. Peki neden açık kaynak kodlu JEE uygulama sunucusunu tercih etmenizi önerdim ? Bedava olduğu için mi ? Hayır; öncelik destek alabilmektedir. Açık kaynak kodlu ve topluluğu olan ürünleri kullanırsanız, başınız belaya girse bile (-ki kesin girer) topluluktan cevap alma ihtimaliniz diğer ticari ürünlere göre her zaman daha fazladır.
Glassfish açık kaynaklı JEE uygulama sunucusu pazarında çok aktif bir rol oynamaktadır. Yeni bir belirtim çıktığında Glassfish ekibi bu belirtime uygun olan Glassfish sürümümü çok çabuk piyasaya sürüyorlar. JBoss için aynı şeyi söylemek biraz güç. JBoss ‘ın oturmuş ve çok geniş bir topluluğu mevcuttur. Bunun anlamı başınız belaya girdiğinde sizi oradan çıkartacak birilerini bulma şansınız yüksektir.
Glassfish ‘ın dikkat çeken en büyük özelliği yönetici ekranlarının çok kolay olmasıdır. JBoss da bu kolaylığı ben bulamadım. Yönetici ekranı olarak karşılaştırmak gerekirse, Tomcat ‘ın bile yönetici ekranları doğru dürüst istenen kolaylıkta değil. Glassfish bu bakımdan çok önde diyebilirim. Ayrıca Oracle firmasının son açıkladığı stratejiye göre Glassfish açık kaynak kalmaya devam edecek ve desteklenecek. Diğer IBM’in Wepshere ve Oracle’ın Weblogic ürünü bu karşılaştırmanın dışındadır.
Ticari JEE uygulama sunucularının vurgu yaptıkları diğer bir konu da ağır yükleri kaldırabilmek için kümüleme (clustering) ve bulut (cloud) teknolojilerini esaslıca kullandıkları yönündedir. Açık konuşmak gerekirse söyledikleri doğrudur ve fakat artık Hazelcast (açık kaynak kodlu) veya Terracotta gibi ürünlerle uygulamalarınızı çok kolay bir şekilde kümeleyebilir ve bulut teknolojisinden faydalanabilirsiniz. Kısaca uygulama sunucularının çözümleri tek yol değildir Örneğin Tomcat + Hazelcast ile uygulamalarınız kolayca kümeleme ve bulut teknolojisine geçmiş olur. Ya da açık kaynak kodlu Glassfish (gerçekten ihtiyacınız varsa) + Hazelcast. Kombinasyonları siz seçin.
Benzer Yazılar
Kariyer
- Yazılım Geliştirme Uzmanları
MobilMutfak - Java Yazılım Uzmanı
Yapı Kredi Emeklilik - Java Yazılım Uzmanı
Universal Bilgi Teknolojileri - Yazılım Geliştirmeci ve Proje Mühendisi
Yapı ve Kredi Bankası - Java Yazılım Uzmanı
Abaküs Finansal Yaz. A.Ş













Altuğ hocam bu sayfaları neden buzz da paylaşamıyoruz
teşekkürler üstat, bir solukta okudum
ilginc bilgiler icin tesekkurler
2 farklı projemde Glassfish kullandım. gerçekten de kolay yönetilebilir olması büyük bir artı aynı zamanda performans konusunda çok da başımı ağrıtmayan bir uygulama sunucusu.
Ucretli ucretsiz diye mi boy le bir ayrin yaptin bilmiyorum ama weblogic, websphere, jboss enterprise gibi yuksek olcekli transaction gerektiren uygulamalarda daha cok kullanilan ve daha complex olan bu sunuculardan bahsetmek daha iyi olabilirdi. Ya da speclerine gore destekledigi- desteklemedigi j2ee teknolojileri, web teknolojileri(servlet, web service etc.) gibi asil onemli olan noktalara parmak bassan daha faydali olabilirdi. Yukaridaki sunucular yaygin olarak kullanilan developerlarin hali hazirda genel olarak az cok kullandigi uygulama sunuculari.
Onemli olan oncelikle uygulamanizi ayaga kaldirabilecek bir uygulama sunucusudur. X veya Y sunucusu her teknolojiyi desteklemez buna dikkat etmeniz gerekmektedir.
Gene de eline saglik birilerinin paylasmasi guzel birsey.
çok faydalı bir yazı olmuş.teşekkürler
Bu tur yazilari olusturan her kezin desteklenmesi kanaatindeyim. Bu tur bilgilerin yayginlasmasi ve derinlesmesi icin guzel bir calisma olmus. Umarim ornek teskil eder ve daha oncede bahsedildigi gibi buyuk olcekli sunucular hakkinda detayli bilgiye sahip olan arkadaslar benzer yazilari JBoss, WebSphere ve WebLogic’in en yeni surumleri uzerine yazarlar. Tesekkurler.