J2EE İmparatorluğu - Uygulama Sunucuları - 1


Bundan önceki yazımda, J2EE'ye sistem mimarileri açısından yaklaşmaya çalıştım. Yazılım mimarilerinin gelişimini ve J2EE'nin hangi tip bir mimari seçtiğini hep beraber gördük. Bu yazımda, J2EE'nin kabul görmesinde en büyük rolü oynayan uygulama sunucularından bahsedeceğim. Teorik bir bölümden sonra 3 değişik uygulama sunucusunu sizlere kısaca tanıtmaya çalışacağım: kaynak kodu açık (open source) yazılım olan JBoss ve uygulama sunucusu pazarından en büyük payı alan iki ürün: BEA WebLogic ve IBM WebSphere. Aşağıda bilgi verdiğim ürünler ve teknolojiler hakkında Web bağlatılarını, yazının sonundaki kaynaklar bölümünde bulabilirsiniz.

Uygulama Sunucusu Nedir?

J2EE kapsamında ele alınınca, uygulama sunucusu, J2EE teknolojilerini kullanarak geliştirilen uygulamaları, standartlara (J2EE belirtimine) uygun olarak çalıştıran yazılımlardır. Kullanıcı arayüzü ile veri tabanı (veya bu görevi gören sistemler) arasında yer alırlar. Çok katlı bir mimari düşünülürse, uygulama sunucusu, mimarinin orta katlarını içinde bulundurur. İşte bu yüzden, uygulama sunucuları, ortakat yazılımı (middleware) sayılırlar ve ortakat yazılım teknolojilerini kullanırlar. Genellikle, kullanıcı arayüzüyle bilgiişlem servisleri arasında veya veriişlem katıyla veri tabanı arasında ya da dağıtık neslerle ölçeklenirlik servisleri arasında bu teknojilerden yararlanırlar.

Ortakat Yazılımları (Middleware)

Ortakat yazılımları, farklı ortamlarda ve farklı bilgisayarlarda çalışan, değişik dillerde geliştirilmiş ve değişik veri çeşitleri kullanan uygulamaların birbirleriyle anlaşabilmesini sağlar. Buna örnek olarak, son zamanlarda şirketlerin en çok rağbet ettiği uygulama modernleştirmelerini gösterebiliriz. Eski tip uygulamaları tamamen yeniden geliştirmek yerine, varolanın tamamını ya da bir kısmını alt yapı olarak tutup, üzerine Java ve/veya Internet teknolojilerini kullanan bir kat koymak şu anda çok istek gören bir mimarı. Örneğin, böyle bir sistemde, yeni geliştirdiğiniz Java Applet ya da Java Web Start kullanan bölüm, yıllardır kullanılan ve modernleştirilmek istenen COBOL uygulamarıyla iletişim kurup, beraber çalışabilir.

Ortakat yazılımları, genellikle karmaşık ve ileri derecede teknik bilgi gerektiren bir düzenleşim süreci gerektirirler. Bunun en büyük sebebi, iletişim sağlanan uygulamaların farklı ortamlar, farklı yazılım dilleri, farklı veri çeşitleri kullanıyor olmaları ve iletilerin bir çeviri safhasından geçmesi gereksinimidir. Genellikle, ortakat yazılımları satan şirketler bu servisi de sağlarlar. Çoğunlukla, bu tür şirketler, kendi mühendisleri aracılığıyla, kuruluş ve düzenleşimi ücretsiz ya da ekstra bir servis olarak sunarlar. Eğer, böyle bir sisteme yatırım yapmayı düşünüyorsanız, bu bölümü hafife almamanızda yarar var. Bu hizmetleri bir başka şirketin sağlaması halinde bile, şirketinizden bir ya da birkaç kişinin bu konuda eğitim görmesi, uzun vadede çok daha avantajlı olacaktır.

Bu periyot başarıyla tamamlandıktan sonra, yazılımın geliştirilmesi ve farklı sistemlerin iletişimi şeffaf olarak sürdürülür. Genellikle, yazılımcılar, bu farkları göz önüne almadan, standart bir şekilde bilgiişlem mantığını uygulama şansı bulurlar.

En çok kullanılan middleware dağıtık nesne teknolojileri CORBA (Common Object Request Broker Architecture), Java RMI (Remote Method Invocation) ve DCOM (Microsoft Distributed COM). Son zamanlarda SOAP (Simple Object Access Protocol) da adından sıkça bahsettiren XML bazında bir teknoloji. Kullanımının daha da artacağına inanıyorum.

Bu teknolojileri burada tek tek açıklamak çok uzun sürer. J2EE hakkında bilmeniz gereken, "Java RMI over IIOP" üzerine kurulu olduğudur. IIOP (Internet InterORB Protocol) CORBA'nın kullandığı protokoldür. Java RMI'nin IIOP üzerinden uygulanması, dağıtık Java nesnelerinin CORBA nesneleriyle beraber çalışmasına olanak sağlar. Bundan sonraki yazılarımda bu teknojilere de değinmeye çalışacağım.

Ortakat Yazılım Servisleri

Bunlarla sınırlı olmamakla beraber en çok kullanılan ortakat yazılım servisleri şunlardır:

  • İsimlendirme (Naming): Dağıtık sistemlerin en önemli avantajlarından birisi bilgisayar ağını soyutlamalarıdır. A bilgisayarında yaratılmış nesneyi sanki B bilgisayarındaymış gibi kullanma olanağı sağlarlar. Bunun içinde kullanmak istediğiniz nesnenin kimlik numarasını tespit etmeniz gerekir. Bu genel kimlik numarası "43645-3250872874398-9315582379df034jfwer488" şeklinde olabilir. Bu tür numaraları kullanmak dertli ve sorun yaratıcı olduğu için, uygulama sunucuları bu numaraları dilediğiniz isimlerle birebir eşleştirmenize yardımcı olurlar. Böylece karmaşık bir takım numaralar kullanmak yerine, daha sezgisel isimler kullanabilirsiniz.
  • Rehber (Directory): İsimlendirme Servisi ile yakın ilişkide olan Rehber Servisi, dağıtık her türlü kaynağın bir listesini bulundurur.
  • Yaşam Süreci (Life Cycle): Kaynakların yaratılması, başlatılması, durdurulması, aktif/pasif hale getirilmesi ve yokedilmesi gibi yaşam süreçlerini yönetmeye yarayan araçları sunar.
  • Süreklilik (Persistence): Uygulamalada kullanılan veriler her an lazım olmayabilir. Tüm verileri hafızada tutmak hem performansı etkiler hem de hafıza israfına neden olur. İşte bu yüzden, Süreklilik Servisi, verileri, kullanılış sıklıklarına göre, pasif ve aktif hale getirmekle sorumludur. Genel olarak kullanılmayan veriler veri tabanına kaydedilerek pasif hale getirilirler ve bir daha aktif hale gelene kadar değerlerini korurlar.
  • Eş Zamanlı Kullanım (Concurrency): Dağıtık kaynaklar, aynı anda, birden fazla uygulama tarafından kullanılırlar. Bu tür kaynakların, birim işlem içinde durum ve değer bütünlüğünü korumak Uyumluluk Servisinin görevidir.
  • Güvenlik (Security): Yazılımların istenilen güvenlik ortamları içinde çalışmasını sağlar.
  • Zaman (Time): Dağıtık kaynaklar farklı zaman birimleri kullanıyor olabilirler. Zaman Servisi uygulama zamanını ortak bir yere göre belirler ve uyumu sağlar.

Standartlaşma

Burada bir parantez açmakta yarar var. Uygulama sunucuları orta katı oluşturdukları için, ortakat yazılımı kabul edilirler ve diğer ortakat yazılımlarıyla beraber çalışırlar. J2EE geliştikçe, içerdiği teknolojilerin sayısı da artıyor. Piyasadaki yazılım sunucuları, daha da cazip hale gelmek için, standartların ötesinde hizmet sunmaya çabalıyorlar. Bunun sonucunda da kapsamları genişliyor. Bugün, sunuculara ek olarak kabul edilen ürünler ya da teknolojiler, ileride J2EE kapsamına girebilirler.

J2EE Connector mimarisi buna güzel bir örnek. Bugüne kadar, uygulama sunucusu geliştiren şirketler, sunucularının varolan anabilgisayarlarla bağlantılarını kendi geliştirdikleri protokollere göre yapıyorlardı. İlk önce kendi ürünleri arasındaki bağlantıları sağlıyorlar daha sonra da diğer ürünlerle bağlantı sunuyorlardı. Bu bağlantıları standart bir hale getirebilmek için, J2EE Connector mimarisi geliştirildi. Şimdi, J2EE'ye uygun olarak geliştirdiğiniz uygulamalarınız, J2EE Connector mimarisininin standart arayüzünü kullanarak bu bağlantıyı sağlayabilecekler. Bu da, her yeni ürün ve teknoloji için yapılan eğitimden tasarruf sağlayacak. Yazılımlarınız, birden fazla sistemle, herhangi bir değişiklik yapılmadan çalışabilecek.

JDBC (Java Databaşe Connectivity) ile daha önce çalışmış olanlarınız ne demek istediğimi çok daha kolay anlamışlardır. JDBC kullanan bir uygulama, farklı veritabanlarını aynı şekilde kullanır. Örneğin, Oracle ile çalışan uygulamanız sadece JDBC parametlerinin işletim anında değiştirilmesiyle Sybase ile çalışır hale gelir (bundan sonraki yazılarımdan birinde JDBC'yi detaylı olarak ve programlama örnekleriyle inceleyeceğiz). J2EE Connector'un amacı da bu tür bir standartlaşma sağlamak.

Yazılım Geliştirme Araçları

Yazılım sunucusu seçerken bir diğer önemli nokta da, onunla beraber sunulan ya da kullanılabilen bedava ve ücrete tabi yazılım geliştirme araçlarının sayısı ve çeşitleridir. Kaliteli uygulama sunucularının birçoğu bir IDE (Integrated Development Environment) ile direk bağlantılı olarak çalışabiliyor. Örneğin, VisualAge for Java ve WebSphere Studio kullanarak, WebSphere için hızlı yazılım geliştirmek mümkün. Bunun yanında, hemen hemen tüm uygulama sunucuları, yazılım geliştirme sürecini kolaylaştıracak, çok kullanışlı araçlarla beraber sunuluyorlar. Bunlar, çoğu zaman kurulum (deployment), geliştirme ve hata ayıklama alanında çalışıyorlar. Bu araçları göz ardı etmemek lazım çünkü yazılım mühendislerine değerli bir zaman kazandırıyorlar.

Kaynaklar

 

Yağız Erkan

J2EE İmparatorluğu - Sistem Mimarileri, 15/5/2001

Bu yazının iki hafta sonra yayınlanacak ikinci bölümünde popüler uygulama sunucuları incelenecektir. Yazıyla ilgili görüş ve yorumlarınızı  yagiz_erkan@yahoo.com ve yorum@teknoTurk.org adreslerine yollayabilirsiniz.