Türkiye Online Medya Araştırması
Profili Göster

BlazeDS: Java'nın Sesi Uzaktan Daha Hızlı Gelir

Selcuk.Bozdag Tarih: 7/05/2008 Yorum: 2 adet

Okunma : 2216 Tutanlar: Bu yazıyı 3 kişi tuttu.

BlazeDS, sunucu tarafındaki Java nesnelerini "uzaktan çağırma (Remoting)" yöntemiyle taşıyabilen ve böylece yönetmek istediğiniz veritabanlarını, iş akışlarını ve diğer iş katmanlarını Flex teknolojisiyle entegre ettiğimiz alev alev teknolojinin adı. Harf çorbası onlarca Java Web çatısıyla kabuslar görüyorsanız ya da halihazırdaki uygulamalarınızı tartışmasız en iyi zengin internet uygulama (RIA) çatısıyla bütünleştirmek istiyosanız BlazeDS tam size gore.

1. Neden BlazeDS?

İlk beşini Adobe'un kendi sitesinden aldığım aşağıdaki liste, neden BlazeDS sorusuna bir yanıt olabilir:

  • Flex ve AIR uygulamalarınızı varolan Java sunucu katmanıyla birleştirebilmek,
  • Yanıt süresi daha kısa yüksek performanslı uygulamalar yapabilmek,
  • Standart HTTP üzerinden gerçek zamanlı veri iletimek (PUSH),
  • Varolan mesajlaşma altyapınızı Flex ile kullanabilmek,
  • Bedava ve Açık Kaynak olması,
  • Ölçeklenebilir olması,
  • Java geliştiricileri sadece iş mantığını geliştirmeye yöneltmesi,
  • İki ayrı geliştirici ekibi sayesinde çok hızlı yazılım geliştirmek,
  • Java'nın olgunlaşmış ve geniş yazılım altyapısını RIA'ya dönüştürmek,
  • Patronun ağzını bi-karış açık bırakmak

Gibi nedenlerden ötürü BlazeDS kullanılabilir. Adobe'nin resmi sitesinde ayrıntıları bulabilirsiniz: http://opensource.adobe.com/wiki/display/blazeds/Features

Bölüm 2. BlazeDS ile uygulama nasıl geliştirilir?

Bir J2EE uygulama sunucusu içerisinde BlazeDS için gerekli bütün altyapının bulunması gerekiyor. Bunun için iki seçenek sunuluyor. "BlazeDS Turnkey"(BDTK) adı verilen anahtar teslim bir Apache Tomcat sunucusunu indirebilir ve BlazeDS'i hemen kullanmaya başlayabilirsiniz. Tomcat dışında bir uygulama sunucusu kullanıyorsanız (Glassfish, JBoss, IBM WebSphere gibi) size sunulan BlazeDS.war dosyasını sunucu içerisinde uygun yere kopyalamak ve çeşitli ayarlar yapmanız gerekecek. Her sunucu için bu farklılaşacaktır. Burada sadece BDTK ile geliştirme adımlarını sunmaya çalışacağım. Ve anlatacaklarımın hepsi varsayılan(BDTK ile gelen) ayarlar üzerine olacak.

2.1. Yol Haritası MMİstanbul Şekil 1 - Flex ve Java Entegrasyonu

  • Fx: Flex ile geliştirdiğiniz uygulamalar.
  • Java: Oluşturduğunuz Java class dosyaları (Genellikle blazeds\WEB-INF\classes altına konuluyorlar).
  • BlazeDS: Haberleşmeyi sağlayan J2EE uygulamasının adı.
  • AMF3: BlazeDS ve Flex arasındaki haberleşme protokolü.

Yol haritasında nerden başlayacağınız duruma gore değişebilir. En baştan bir uygulama yapan ve tek başına çalışmak zorunda kalan yalnız bir "cowboy" iseniz, tavsiyem once Flex tarafından başlamak. Neden? Çünkü iki seçeneğiniz var: Yukarıdan-Aşağı ya da Aşağıdan-Yukarı bir tasarım. Yukarıdan başlamak yani Flex tarafından başlamak demek, gerektiği kadar ve gerektiğinde Java kodu yazmak demektir. Flex'de uygulamanızı geliştirirken bir iş mantığına ihtiyacınız olduğunda Eclipse Java perspektifine geçip(benim tercihim herşeyi Eclipse'te çözmek, Netbeans ya da IDEA gibi diğer popüler araçları kullanmak da mümkün), gerekli iş mantığını kodlamak ve bu döngüyü uygulamanız bitene kadar tekrarlamanız gerekecek.

Eğer bir takım içerisinde iseniz, bir grubu kullanıcı arayüzüne yoğunlaştırıp diğer grubu da Java arka ofisini oluşturmaya yoğunlaşırsa çok hızlı ve en az hatalı bir geliştirme sürecine girmiş olursunuz.

2.2. Örnek: "Günaydın İstanbul!"

Adım 1: Kurulum

Vitrini sunduktan sonra(nihayet!), biraz elimizi hamura bulaştıralım. İlk işimiz BlazeDS kurulumu ve Flex Builder 3 (FB3) ile entegrasyonunu gerçekleştirmek. http://opensource.adobe.com/wiki/display/blazeds/Release+Builds adresinden BDTK'yı indiriyoruz (Bu yazıyı yazdığım sırada en son sürümü 3.0 idi).

İndirdiğimiz sıkıştırılmış dosyayı favori zip açacağımız ile bir dizine (örneğin Windows için C:\BDTK gibi) açıyoruz.

Adım 2: Flex Projesini Oluşturuyoruz

Projeyi oluşturmadan önce BlazeDS sunucusunu çalıştırıyoruz: C:\BDTK\tomcat\bin>catalina start

Ardından yeni bir Flex projesi oluşturuyoruz. Proje adı olarak GünaydinIstanbul'u seçiyoruz. Uygulama türü olarak "Web Application" işaretli olmalıdır. "Server technology" alanında "Application server type" olarak J2EE seçeğini seçiyoruz. Önemli olan nokta, servisi nasıl kullanacağımızı seçtiğimiz "Use remote object access service" seçeneği seçilirken "Create combined Java/Flex project using WTP" seçili olmamalıdır.

Aşağıda örnek bir proje oluşturma penceresini veriyorum. MMİstanbul Şekil 2 - Flex Projesi Oluşturma Ekranı

NOT: Bu aşamada BDTK sunucusunun çalışır olduğundan emin olun.

"Next" ile ilerleyip bir sonraki ekranda sunucu ayarlarını yapıyoruz. Sunucu ayarlarında aşağıda görüldüğü üzere bir numaralı alana blazeds uygulamasını, ikinci alana uygulamalarımızın çalışacağı URL'i ki bu değer blazeds'in yer aldığı yere parallel olarak belirtildi ve port numarasını "8400" olarak verdik. BDTK ayarlarında sunucu portu HTTP için 8400, HTTPS için 9400 olarak sunuluyor. Üçüncü değer "context root" olarak anılan ve uygulamanın başlangıç noktasını gösteren değer. BlazeDS uygulaması uygulama sunucusunda bu değerle sunulacak diyoruz. Son olarak da "Validate Configuration" diyerek yaptığımız işin doğru olup olmadığını onaylatıyoruz.

MMİstanbul Şekil 3 - Sunucu Konfigürasyonu

"Finish" butonuna tıklayıp Flex kodumuzu geliştirmeye başlıyoruz.

Adım 3 : Flex Tarafında neler yapılıyor?

Uygulamamızda çok basit bir şekilde bir butona tıklandığında ekrana Günaydın İstanbul yazdırıcağız. Aşağıdaki Flex koduna bir göz atalım.


<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:RemoteObject id="merhabaRO" destination="sehirlerServisi">
    <mx:method   name="merhabaAnkara" 
                    result="merhabaSonucGozcusu(event)" 
                    fault="merhabaHataGozcusu(event)"/>
    </mx:RemoteObject>    

    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;

            private function merhabaSonucGozcusu(event:ResultEvent):void
            {
                merhabaText.text = String( event.result );
            }

            private function merhabaHataGozcusu(event:FaultEvent):void
            {
                Alert.show(event.fault.message, event.messageId );
            }
        ]]>
    </mx:Script>  

    <mx:Text id="merhabaText"/>
    <mx:Button label="Merhaba Ankara" click="merhabaRO.merhabaAnkara()"/>

</mx:Application>

RemoteObject etiketi ile kullanacağımız servisi tanımlıyoruz. "destination" içerisinde daha sonradan "remote-config.xml" dosyasında tanımlayacağımız Java servisinin adını yazıyoruz.

"method" etiketi içerisinde ise, dönecek olan sonuçların nasıl ele alınacağını yazıyoruz. "merhabaAnkara" adlı metod çağrıldığında "merhabaSonucGozcusu" adlı metodun işletileceğini ve eğer bir hata ile karşılaşılırsa bu metodu çağırırken "merhabaHataGozcusu" metodu çağrılacak diye belirtiyoruz.

Butona tıklandığında ise daha sonra Java servisimizde belirteceğimiz metodu çağırıyoruz. Otomatik kod tamamlama ile bu metodları görmek mümkün değil, bunu hatırlatmak isterim.

Adım 4: Java tarafında neler yapılıyor?

Bu Flex kodunu bu haliyle çalıştırmamız mümkün değil. Çünkü halihazırda bir Java servisimiz yok. Bunun için bir Java projesi oluşturuyor ve buna MerhabaBlazeDS diyoruz. Ancak önemli olan ürettiğimiz sınıflar. Bu sınıfları yani "class" dosyalarını üretmemiz ve aşağıdaki adımları gerçekleştirmemiz gerekir.

Öncelikle aşağıdaki Java koduna bakalım:


package com.bozdagstudio;

public class MerhabaIstanbulServisi {

    public String merhabaAnkara() {

        return "Merhaba Istanbul!";
    }
}

Son derece basit bir Java sinifi ve merhabaAnkara adli metod.

  • Sınıf dosyalarını Java projesinden, BlazeDS uygulamasının altına kopyalıyoruz. com.bozdagstudio.MerhabaIstanbulServisi adlı sınıfı bulunduğu dizinle birlikte(com\bozdagstudio\MerhabaIstanbulServisi.class) C:\BDTK\tomcat\webapps\blazeds\WEB-INF\classes altına kopyaladık. Böylece BlazeDS'in "classpath" inde bizim yazdığımız Java sınıfları artık var.
  • remoting-config.xml dosyasına kaydımızı yaptırıyoruz.
    
        <destination id="sehirlerServisi">
            <properties>
                <source>com.bozdagstudio.MerhabaIstanbulServisi</source>
            </properties>
        </destination>
    
  • Sunucuyu yeniden başlatıyoruz. C:\BDTK\tomcat\bin>catalina stop C:\BDTK\tomcat\bin>catalina start

Adım 5: Test 1, 2, 3...

MMİstanbul

Şekil 4 - Çalışma sonucu

3. Sonuçlar

BlazeDS ikili haberleşme formatı sayesinde, text tabanlı XML ve SOAP protokollerden yaklaşık 10 kat daha hızlı bir haberleşme ortamını(AMF3) sunuyor. Bundan daha ötesi, Java uygulama geliştiricilerinin işini son derece kolaylaştırıyor ve bunalımlı Web çatılarıyla zaman kaybetmekten önlüyor. BlazeDS sayesinde sadece yaptığınız işe konsantre olduğunuz ve tesisat koduyla (plumbing code) uğraşmadığınız projeler sizi bekliyor.

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

Profili Göster
Veli Süngütay 9/05/2008

Selcuk cok tesekkurler makale icin.

Profili Göster
Ahmet Erkan ÇELİK 26/05/2008

Adobe LiveCycle yada eski adıyla data services 'in yaptığı iş aynı değil miydi? Yoksa adobe biri açık kaynak kodlu iki proje mi yapıyor. Birde amf3 biçimiyle php-.net-java ile swf haberleşebiliyor. weborb ismindeki yazılım kolay yönetilebilir bir hizmet sunuyor. Bir karşılaştırma yapsak nasıl olur?

yeni üyelik | şifremi unuttum

aç-kapa Toplantı Özgür Yazılım ve Linux Günleri '10

Özgür Yazılım ve Linux Günleri '10

İstanbul Bilgi Üniversitesi Bilgisayar Bilimleri Bölümü ve Linux Kullanıcıları Derneği'nin 9 yıldır düzenlemekte oldukları etkinlikler bu yıl `Özgür Y...
Kategori: Toplantı

aç-kapa Yarışma 3. Uluslararası Ekslibris Yarışması: İstanbul 2010

3. Uluslararası Ekslibris Yarışması: İstanbul 2010

İstanbul Ekslibris Dernegi, Feyziye Mektepleri Vakfı ve Işık Üniversitesi, kitaplar için mülkiyet işareti olarak kabul edilen ve üzerinde estetik dege...
Kategori: Yarışma

aç-kapa Konferans Yeni Medya ve Etkileşim Konferansı 2010 - Marmara Üniversitesi

Yeni Medya ve Etkileşim Konferansı 2010 - Marmara Üniversitesi

Generally speaking, the term "New" brought about debates. We try to open up and elucidate the term "New" along with "Interact...
Kategori: Konferans

aç-kapa Konferans 3. Uluslararası Gelecek İçin Öğrenme Alanında Yenilikler Konferansı 2010: e-Öğrenme

3. Uluslararası Gelecek İçin Öğrenme Alanında Yenilikler Konferansı 2010: e-Öğrenme

Konferans ile ilgili ayrıntılı bilgiye aşağıdaki bağlantıdan ulaşabilirsiniz: http://www.futurelearning.org.tr/katilim_cagrisitr.pdf ...
Kategori: Konferans

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 57 (50 kayıtlı, 7 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

...

Blog Bölümü Blogevi.com'a Taşınıyor

Selam arkadaşlar MMIstanbul'da , tasarımcı ve programcıların blog yazılarını "feedleyerek" MMIstanbul okurlarını MMIstanbul dışın ...

7.500'üncü üyemiz Cem Koç!

Neler Yapılabilir?

500 Hatası Hakkında!

Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)

coldfusion mysql ubuntu
 
sponsor adobe istanbul