Profili Göster

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

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

Okunma : 934 Tutanlar: Bu yazıyı 2 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 Eğitim Bilişim Hukuku Sertifika Programı

Bilişim Hukuku Sertifika Programı

BILISIM HUKUKU SERTIFIKA PROGRAMI 22 – 23 Kasım 2008 – 09.30 – 17.00 – Lares Park Otel – Taksim – 650 YTL+kdv Eg...
Kategori: Eğitim

aç-kapa Yarışma 5.İstanbul Animasyon ve Görsel Efekt Kısa Film Yarışması

5.İstanbul Animasyon ve Görsel Efekt Kısa Film Yarışması

5.İstanbul Uluslararası Animasyon Festivali, 24-30 Kasım 2008 tarihleri arasında gerçekleştirilecektir. Festival dahilinde gerçekleşen 5. İstanbul Ani...
Kategori: Yarışma

aç-kapa Konferans TIME 2008 Interpro Forum Telekom, Internet, Medya, Eğlence Konferansı

TIME 2008 Interpro Forum Telekom, Internet, Medya, Eğlence Konferansı

Program 1 Aralık 2008 Pazartesi 08:00-12:00 Kayıt 10:00-10:30 Ana Oturum Türkiye’de Yeni Nesil Telekom Hizmeti Cengiz Anık – Avea, Ge...
Kategori: Konferans

aç-kapa Çalıştay Dirty99, 9. Pazarlama Zirvesi Etkinliği

Dirty99, 9. Pazarlama Zirvesi Etkinliği

Dirty99, 9. Pazarlama Zirvesi süresince 99 özel pazarlama profesyoneli ile, 99 dakikalık bir workshop çalışması! Özellikle interaktif pazarlama araçla...
Kategori: Çalıştay

aç-kapa Eğitim Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Etkin Katılım Çağrısı Türkiye’de Internet ile ilgili grupları biraraya getirerek İnternet’i tum boyutlarıyla tanıtmak, gelistirmek, tartı...
Kategori: Eğitim

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

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

coldfusion mysql ubuntu
 
sponsor adobe istanbul