Previous
Next

JAVA - Enterprise Java Beans (EJB)

by Cem Kefeli 30. Eylül 2009 06:10

JavaJava yıllar önce ortaya çıktığında "Bir kere yaz, her yerde çalıştır!" gibi çok hoş bir sloganla çıktı uygulama geliştiricilerin karşısına. Bu slogan kısa sürede çok geniş bir yankı buldu. Çünkü duyurulan şey uygulama geliştiricilerin şimdiye kadar çok da fazla duydukları ve dile getirilmiş birşey değildi. Bu, programınızı bir kere yazıp derleyip istediğiniz platformda derlenilen yazılımın tekrar çalıştırılabilmesini mümkün kılıyordu ki, harika birşey olduğu çok açık. İşletim sistemlerinden ve donanımdan bağımsız bir programcık yazabilmek ne kadar güzel birşeydir sizler de hakkını verirsiniz diye düşünüyorum. Herhangi bir masaüstü bilgisayardan tutun da avuç içine sığan ufacık cep telefonlarında bile aynı yazımı kullanabilmek güzel birşey. Bu yazıda Java'nın gelişim süreci içerisinde çok önemli bir konuma sahip Enterprise Java Beans(EJB)'ten kısaca bahsetmeye çalışacağım.

Client - Server - DatabaseJava'nın duyurulmasının ardından yıllar geçti ve bu yıllar içerisinde Java oldukça fazla da gelişme kaydetti. Önceleri sunucu(server)-istemci(client) taraflı, yani iki katmanlı, programlama tekniğini oldukça fazla sevdik. Sunucuda çalışan bir uygulama, ki bu genelde sunucuda host edilen bir veritabanı olacaktır, ve istemcilerde çalışan ve sunuculardan veri toparlayıp işleyen farklı bir uygulama. Bu ikisi bir araya geldiğinde ise uzaktan veritabanı işlemlerini kolaylıkla gerçekleştirebileceğiniz güzel bir uygulama ortaya çıkıyor. Fakat ortada şöyle bir problem var. Asıl işlemleri her zaman istemciler yapıyor ve iş yükünün çok büyük bir bölümü istemcilerin üzerine kalıyor. Acaba bu yük başka platformlar tarafından da paylaşılarak azaltılabilir mi? Evet azaltılabilir, zaten de tüm yapılan mimari değişiklikleri bunu sağlamaya yönelik artık son yıllarda. Bir başka problem ise uygulamanın kullanıcılara sunulmasında ortaya çıkan sorunlar. Bunun nedeni ise masaüstü uygulaması şeklinde dağıtılan ve kullanıcılar tarafından kullanılan yazılımların güncellenebilirliğinin sıkıntılı olması. Siz yaptığınız her bir güncelleme için bir üst versiyonu kullanıcılara dağıtmalı ve herbiri için tekrar kurulum gerçekleştirmelisiniz ki bu problemi aşabilesiniz. Bir diğer problem de uygulamayı kullanan kullanıcı sayısının artması durumunda sunucu makinenin yetersiz kalması. Tek çare ise uygulama sunucusunu daha güçlü bir makine ile değiştirmek. Ya da sisteme başka makineler ekleyerek ana makinenin işlem yükünü paylaştırabilmek. Ne dersiniz böyle birşey sizce mümkün olabilr mi? Bir makine iş yapsın diğerleri de ona gerektiğinde yardım etsin diye birşey olabilir mi? Evet, bu da mümkün. Yani makinelerin kendi iş birliği...

İki katmanlı mimarinin yukarıda saydığımız gibi sorunlarından dolayı çok katmanlı mimari fikri ortaya atılmıştır. Bu mimari ile birlikte uygulamalar daha fazla katmana bölünerek daha fazla performans elde edilmesi amaçlanmıştır. Örneğin masaüstünde çalışan bir yazılımınız veri tabanı sunucusu ile doğrudan bağlantı kurabilecek yeteneklere sahip olabilir. Fakat bu sunucunuza bir el bilgisayarınızdan ulaşmaya kalkarsanız neler olacaktır? Bu cihaz hem gerekli yeteneğe, hem de gerekli alt yapıya sahip olmayabilir. İşte böyle bir derde merhem olmak çok katmanlı mimarinin bir işidir. Eğer veri işleme ve veri paylaşımı katmanlarını ayırırsanız ve veri paylaşımı katmanını daha basit seviyelere indirgeyebilirseniz bu sorunun üstesinden gelebildiniz demektir. Tıpkı web servislerinde karşımıza çıkan durum gibi. Yalnızca XML sorguları ile birçok özelleşmiş arabirimden kurtularak istemciler üzerinde veritabanı client'larını kurmamıza gerek kalmadan veritabanı işlemlerimizi kullanmamız mümkündür.

Enterprise Java Beans(EJB) Block DiagramBize bu güzelliklerin sunulmaya başlaması ise J2EE ile birlikte olmaya başlamıştır. J2EE, çok katmanlı mimari ve çok katmanlı mimari ile birlikte gelen tasarım mimarileri üzerine kurulan teknolojiye verilen genel bir isimdir. J2EE'yi, genel olarak EJB ve diğer çok katmanlı teknolojilere alt yapı sunun uygulama geliştirme arayüzleri olarak düşünebilirsiniz. EJB ise J2EE içerisinde yer alan ve yine çok katmanlı mimari üzerine kurulmuş bir kavramdır. J2EE'nin asıl fokus noktasıdır da diyebiliriz. EJB için sol tarafta verdiğim yapı sıklıkla karşınıza çıkacaktır.

Hep bahsettiğimiz n-tier(n-katmanlı) yapı bu diagramda oldukça güzel bir şekilde belirginleştirilmiştir. Presentation, Business ve Data katmanları görülebilmektedir. Veritabanı, sunum ve veri işleme kavramları artık birbirinden tamamen ayrı durumdadır. Asıl işi yapan parçacık olarak business tier'ı düşünebilirsiniz. Business component'ler özel birer iş yapmaktadırlar. Her bir iş parcacığı bu komponentler yardımı ile yapılır, ve sonuçları ilgili yerlere gönderilir. Örneğin bir online alışveriş sitesinde müşteri işlemleri bu komponentler üzerinde işlenirler. Müşterinin sisteme girişinden itabaren attıkları her adımda bu komponentlerin sorumluluğu vardır. Her biri özenle, itinayla alır, işler, çıktılarını raporlarlar. Bu işlerin tümünü gerçekleştiren Business katmanı üç farklı alt gruptan oluşmaktadır. Bunlardan ilki Session Beans, bir istemci için bir işi yerine getirme isteğine cevap vermektedir ve istemciye özgüdür. Yani her istemci için bir bean oluşturulur, işlemler boyunca hayatını sürdürür ve işleri yaptırır, kullanıcı sistemi tek ettiğinde ise ortadan yok olur. İstemciler bir iş yaptırabilmek için session bean üzerindeki yordamları çağırmaktadırlar. Entity bean'ler ise uygulamanın veritabanı arayüzüne bakan kısmıdır. Bir entity bean'i vertabanındaki bir tabloya karşılık gelecek şekilde düşünebilirsiniz. Aynı şekilde entity bean instance'lar da veritabanı tablosundaki birer tablo satırını temsil etmektedir. ORM(Object Relational Mapping) konusu Entity bean'lerin tam da göbeğinde yer alır diyebiliriz. Session bean'ler istemciler ile birlikte yaşayıp ölmektedir fakat entity bean'ler kalıcıdır ve kendi aralarında ilişkiler de kurabilmektedirler. Son olarak ise message driven bean(MDB)'lerin J2EE uygulamalarına gelen mesajları asenkron olarak işlemeye olanak sağlayan yapılar olduğunu söyleyebiliriz. Bir dinleyici gibi çalışır(Java Messaging Service-JMS), mesajları dinler ve onların işlenmesi için gerekli işleri yaparlar. Session ve entity bean senkron haberleşmesine karşın, MDB'ler asenkron olarak iletişim kurmaktadır.

Yorum ekle

biuquote
  • Yorum
  • Canlı önizleme
Loading

Hakkımda...

Cem KEFELİ

Electronics and
Telecommunication Eng.
devamı...


Son yapılan yorumlar...

Comment RSS

Yasal bir uyarı...

Disclaimer"Bu web sitesinde görmüş olduğunuz bilgilerin, dokümanların ve diğer materyallerin kullanılmasından doğabilecek hiç bir sorumluluktan site sahibi sorumlu tutulamaz. Web sitesi içerisinde yer alan yazılar, yorumlar, resimler ve diğer tüm içerikler yalnızca sahibinin görüşünü yansıtmakta olup içeriğin sahibi kişilerin çalıştığı kurumları bağlayıcı hiç bir nitelik taşımamaktadır. Yapılan tüm alıntılar mutlaka kaynak gösterilerek verilmeye çalışılmaktadır. Web sitesi içerisinde bulunan ilgili materyaller, ilgili yasal kurumlar tarafından uygun görülmemesi durumda kaldırılacaktır."
General