28 Ocak 2017 Cumartesi

RAP-2 ( REMOTE APPLICATION PLATFORM )

RWT (RAP Widget Toolkit) ve SWT (Standard Widget Toolkit)

SWT masaüstü uygulamalar gerçekleştirmek için geliştirilmiş RWT ise web tabanlı uygulamalar için geliştirilmiştir. Ayrıca RWT, SWT'de bulunmayan bazı ek özelliklere sahiptir. Bu özellikler genellikle web istemci özellikleri ve HTML desteği için gerekli API'lerden oluşmaktadır. RWT genellikle derlenebilirse çalıştırılabilir prensibi ile çalışmaktadır. Bu sebeple SWT ile yazılan herhangi bir kod RAP ile çalıştırılabilir fakat bu kodlar içerisinde RWT içerisine alınmamış herhangi bir özellik var ise bu özellikler derleme sonucu gösterilemeyecektir. RWT’de SWT’de bulunan kullanıcı dosyalarına ulaşma ve okuma özelliği bulunmamaktadır. RWT ile bu işlemin yapılabilmesi için ayrı bir dosya yükleme eklentisi kullanılmalıdır.

Bazı Önemli RWT Özellikleri
  • Harici Browser Pencereleri (External Browser Windows)
  • Parçacıkların Biçimlendirilmesi (Markup in Widgets)
  • Sabitlenmiş Kolonlar (Fixed Columns)
  • Ağaç ve Tablo Geliştirmeleri (Tree and Table Enhancements)
  • Açılır Liste Aygıtları (Dropdown Widgets)
  • Temalaştırma (Theming)
  • Browser Geçmiş Desteği (Browser History Support)
  • Çoklu Kullanıcı Ortamı (Multi-User Environment)

Desteklenmeyen Bazı Özellikler
  • Dokunmatik Olaylar (Touch Events)
  • Çizim Eksiklikleri (RWT sadece Canvas Widget için destek veriyor)
  • Diyalog Kısıtlamaları (Dialog, ColorDialog, FontDialog) (Blok olarak çalışmıyor, callback çalışıtırılmalı)
  • Fare ve Klavye Olayları (Bazı fare klavye olayları desteklenmiyor, kısa yollar ve ekstra fare işlevleri)
  • Sürükle Bırak İşlemleri

RAP İstemci (RAP Client)

RAP istemci terimi, RAP sunucu ile haberleşen ve RAP uygulamasının kullanıcı arayüz kısmını oluşturan yazılım için kullanılır. Bu terim istemci tarafında çalışan (browser ya da işletim sistemi) kodları içermez. Web istemci komutları RAP uygulamasının URL’si browser’a girildiğinde sunucu üzerinden indirilir ya da otomatik olarak başlatılabilir. Ön tanımlı RAP istemci kodları Javascript dili ile oluşturulmuştur.

Web İstemci Servisleri
  • İstemci Bilgisi (ClientInfo) : İstemcilerin yerel ve zaman dilimi özelliklerini destekler.
  • Browser Gezinme (Browser Navigation) : Sayfa içerisinde belirli bölgelere dallanma ve browser’da gezinti geçmişinin tutulması özelliklerini destekler.
  • Çıkış Onayı (Exit Confirmation) : Sayfadan ya da uygulamadan çıkış için kullanıcı onayı özelliğini destekler.
  • Javascript Yürütücü (Javascript Executer) : Oluşturulan sayfanın ya da uygulamanın belirli bölgelerinde Javascript kodlarının çalıştırılabilmesine olanak sağlar.
  • Javascript Yükleyici (Javascript Loader) : İstemci kısmında bir Javascript dosyasının yüklenmesine ve çalıştırılmasına izin verir.
  • İstemci Dosya Yükleme (Client File Uploader) : Istemci tarafından bir dosyanın belirlenen bir URL’ye yüklenmesini sağlar. Dosyanın RAP sunucuya gönderilmesi için farklı bir yükleme aygıtı (FileUploadHandler) kullanmak gerekir.

RAP Kullanımı

RAP için gerekli toolkit'leri içeren Ecplise versiyonu kullanılabilir ya da mevcut Eclipse versiyonuna gerekli toolkit'ler eklenebilir. RAP uygulamları bir hedef (target) platform üzerinde çalıştırılmalıdır. Bu nedenle uygulama çalıştırılmadan önce hedef platformun çalıştırılması ve aktif edilmesi gerekmektedir. Hedef platform kullanıcak eklentilerin ve özelliklerin tutulduğu bir bilgilendirme dosyası olarak düşünülebilir.

Her RAP uygulaması bünyesinde öncelikle kullanıcı arayüzünü oluşturacak bir giriş noktası (entry point) sınıfı barındırmak sınıf içerisinde kullanıcı arayüzünü oluşturmak için kullanılan bir method görülmektedir. zorundadır. Aşağıdaki resimde basit bir “Hello World“ uygulaması için geliştirilmiş bir EntryPoint sınıfı ve bu  içerisinde kullanıcı arayüzünü oluşturmak için kullanılan bir method görülmektedir.


Bu sınıfın yanı sıra uygulama konfigürasyonlarının yapıldığı, temaların belirlendiği ve URL haritalarının belirlendiği bir uygulama sınıfı oluşturulması gerekmektedir.

RAP uygulamalarının çalışıtırılması için iki farklı launcher kullanılabilir. Bunlardan ilki basit uygulamaları ve eklentileri çalıştırmak için kullanılan RWT launcher'dır. RWT launcher ile çalıştırılacak programlar için OSGi ya da uygulama konfigürasyonuna gerek duyulmaz. RWT launcher ile çalıştırılan programlar çoklu kullanıcı erişimine izin vermez. RAP launcher ise OSGi tabanlı uygulamarın çalıştırılması için kullanılır. RAP Launcher OSGi baz alarak geliştirilmiştir. Eclipse IDE paketi içerisinde tanımlı browser ya da harici web browser geliştirilen uygulamalar için kullanılabilir. Uygulama tarafından kullanılması istenilen haberleşme portu ayarlanabilir.

RAP Protokolü

RAP istemci ve sunucu arasında JSON tabanlı HTTP protokolünün kullanımını tanımlar. Bu protokol sayesinde okunabilr mesajlar üretilmesi hata ayıklama işlemlerini ve Firebug gibi browser eklentilerinin haberleşmeyi takip edebilmesini kolaylaştırır. Bunun yanı sıra daha bilgilendirici hata mesajları oluşturulmasına izin verir. Ayrıca istemciden bağımsız olarak istemci tarafına script kodları eklenmesine olanak sağlar. Protokol JSOn tabanlı olduğu için herhangi bir JSON ayrıştırıcı(parser) ile ayrıştırılabilir. Request ve Response mesaj yapıları aynıdır her mesaj başlık(header) ve operasyon listesi (operation list) içermek zorundadır.
Header içerisinde bulunan bilgiler kullanıcı arayüz durumunda herhangi bir değişikliğe yol açmazlar. Operasyon listesi içinde geşen bilgiler sırasıyla işletilmesi gereken komutları içermektedir. Bu komutlar ile yeni nesne yaratılabilir ya da mevcut nesnelerde değişiklikler yapılabilir.

RAP : Avantaj ve Dezavantajları

Avantajları
  • RAP ve RCP birbirleri ile uyumlu olduklarından RAP’ta geliştirilen bir uygulama RCP üzerinde çalıştırılabilmektedir. Bunun sonucu olarak hem Web hem de masaüstü uygulamaları geliştirmek için RAP kullanılabilmektedir.
  • AJAX uygulamaları geliştirilirken OSGi bileşen modelinin kullanılmasına olanak sağlar.
  • Kodun yazılması, test edilmesi ve hata ayıklama işlemleri daha kolay yapılabilir.
  • Java SWT’den türetilen RWT toolkit ile zengin içerikli arayüzler ve uygulamalar oluşturulabilir.
Dezavantajları
  • Henüz yaygın olarak kullanılmamaktadır. Bunun en büyük sebebi platform ile ilgili gelişmelerin beklentileri karşılamaması ve istenilen düzeyde olmamasıdır.
  • Yeni başlayanlar için düzenli ve kaliteli içerikli doküman sayısının az olması geliştiriciler tarafından tercih edilmemesinin sebeplerinden biri olarak görülmektedir.
  • Tüm işlemlerin sunucu üzerinde yapılması sistem performasını önemli ölçüde azaltmaktadır.
  • Performansın arttırılması için eski browser sürümleri için gerekli desteklerin paketlerden çıkartılması geçmişe dönük destek verilmesi gereken uygulamalar için dezavantaj oluşturuyor.

Sonuç Olarak...

RAP, RCP’den bir çok özelliği devralmasına rağmen bir istemci-sunucu tabanlı web programlama çerçevesi(framework) kullanmaktadır. Bu sebeple RAP ile bir masaüstü uygulaması geliştirmek içim mimari farklılıkları göz önüne alınarak konfigürasyonlar ona göre yapılmalıdır. Bir masaüstü uygulamada sadece tek bir kullanıcıya hizmet verilmekte ve uygulama kendi JVM (Java Sanal Makinası) üzerinde çalıştırılmaktadır. Ayrıca işletim sistemi tarafından hizmete özel bir depolama alanı oluşturulur. Program kullanıcı girdisi alındığında çalışmaya başlar ve oturum kapatıldığında program sonlandırılır. Fakat RAP uygulamları bir sunucu üzerinde çalışır ve birden çok kullanıcıya aynı anda hizmet verir. Bu sebeple RAP uygulamaları kendi JVM üzerinde çalıştırılmaz çoğunlukla bir JVM; servlet container, diğer uygulamar ve hatta başka RAP uygulamaları tarafından paylaşılmak zorunda kalabilir. Bunun yanı sıra RAP uygulamları çok uzun süre çalışmak zorundadır. Çünkü bir kullanıcı uygulamaya HTTP üzerinden bağlandığında uygulama zaten çalışır vaziyettedir ve oturum kapatıldığında da uygulama çalışmaya devam eder. Bu sebeplerle RAP ile gerçekleştirilmiş bir uygulama performansının RCP ile karşılaştırılmaması gerekmektedir.

Yazımızda belirtilen eksiklikler ve avantajlar göz önüne alındığında RAP ile ilgili olarak geliştirme sürecinin hızlandırılması ve performansın arttırılması gerektiği sonucuna varılabilir. Proje çıkış fikri ve misyonu açısından bugün kullanılan bir çok teknolojiyi geride bırakma potansiyeli olmasına rağmen, özellikle ticari projeler için istenilen düzeyde ve performansta değildir.

Hiç yorum yok:

Yorum Gönder