
Adobe firması “Flex” adını verdiği, hepimizin “Flash”diye bildiği teknoloji üzerine görsel açıdan zengin uygulamalar yani RIA (Rich Internet Applications – Zengin İnternet Uygulamaları) geliştirmek için bir çözüm üretti. Flash’ın reklam, oyun gibi ‘hafif’ konulardaki başarısına karşın Flex internette ve kurumsal platformda ciddi veri uygulamalarında kullanılabilir olma iddiasını taşıyor.Yaşasın Zengin Olduk!
Bilindiği gibi daha önce masaüstü tabanlı olan uygulamlar giderek internet ve intranet ortamında gerçekleştirilir hale gelmiştir. Ancak web tekneolojilerinin HTML tabanlı basit yapıları, her işlem için istemcinin sunucudan yeni bir istekte bulunması gibi özellikler, web tabanlı uygulamaları masaüstündekilere göre daha ‘basit’ hale getirmiştir. Bu basitliği aşmak için Java’nın Applet teknolojisi, Flash, Dinamik HTML, Active X gibi teknolojiler kullanılımıştır. Ancak bunlar, uygulanma zorluğu gibi sorunlar nedeniyle geniş bir kullanım alanı bulamamışlardır. Web sayfalarının her işlem için sunucuya gitmesini engellemek için AJAX teknolojisi geliştirilmiştir. Ancak AJAX’da sonuç olarak HTML,CSS, XML ve JavaScript teknolojilerine dayanılarak yapılmaktadır. Bu teknolojilerin görsel becerileri sınırıldır. Animasyon, zengin grafiklerin sayılan teknolojilerle geliştirilmesi ya olanaksız ya da çok zor olabilmektedir. Flash gib zengin görsel becerileri olan bir teknoloji bulunmakta birlikte bunun veritabanları, dağatık sistemler, web servisleri gibi çok ileri kurumsal teknolojilerin kullanıldığı ortamlarda kullanılması mümkün olamamaktadır. Flash belli bir zaman çizgisi üzerinde yapılacakların belirtilebildiği, yani temel alınan öğenin ‘veri’ değil de zaman olduğu bir teknolojidir. Standart porgramlamanın araçlarından çok farklı bir geliştirme ortamına sahiptir, programcılardan çok grafiker ve animasyon uzmanlarına seslenmektedir.
Flex ise, Flash teknolojisinin zengin arayüz özelliklerini web programcılarının kullanımına sunmaktadır. Flex sayesinde programcılar bir veritabanından veriyi alıp son derece zengin bir arayüzle kullanıcıya göstermekte ve kullanıcının veriyi düzenlerken düğme, bağlantı ve metin kutusu gibi basit bileşenler yerine grafik açıdan zengin (ve güzel) bileşenleri kullanmasın olanak tanımaktadır. Flex üreticilerinin
Ben Animasyon Biliyom, Programlama Bilmiyom!
Flash teknolojisi tabanlı olmasına rağmen Flex, bir animasyon değil programalama ortamı. Flash’ta animasyon yapanların Flex teknolojisi için programlamayı öğrenmeleri gerekiyor. Programcılığı bilenler için Flex kolay anlaşılabilir bir teknoloji. Arayüz bileşenlere bildirimli (declarative) olarak XML türevi olan MXML dosyalarında bildirilebiliyor. Örneğin aşağıdaki XML belgesi bir Flex uygulamasını gösteriyor.
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” horizontalAlign=”center” verticalAlign=”center”>
<mx:Button id=”myButton” label=”I’m a button!” />
</mx:Application>
Burada yapılan bir uygulama yapmak ve içine bir tane düğme koymaktan ibaret. Flex, son yılların eğilimine uyarak görsel bileşenlerin bildirimli olarak yani kod yazmadan tanımlanmasına olanak sağlıyor.
Uygulamaların ve bileşenlerin kullanıcıyla etkileşimi olay sürümlü programlama (event-driven programming) esasına dayalı olaral olaylarla yapılıyor. Olayları dinlemek veya herhangi bir işleme ait kod yazmak için ActionScript – 3.0 dili kullanılıyor. Son haliyle Action Script, JavaScript’in Java’ya (veya C#’a) bezetilmiş bir versiyonu gibi. JavaScript gibi kullanılıyor ancak Java’daki tüm nesneye yönelik programlama özellikleri, JavaScript sözdizimine uydurularak gerçekleştirilmiş. Bu yönüyle bakıldığında Action script nesneye yönelik (object-oriented) bir dil. Örnekte bir düğmeyi bildirimli olarak eklemek yerine kod yazarak eklemek istenirse
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application
xmlns:mx=”http://www.adobe.com/2006/mxml”
viewSourceURL=”src/GettingStartedActionScript/index.html”
creationComplete=”creationCompleteHandler();”
width=”300″ height=”80″>
<mx:Script>
<![CDATA[
import mx.controls.Button;
import mx.events.FlexEvent;
private var myButton:Button;
private function creationCompleteHandler():void
{
myButton = new Button();
myButton.label="I'm a button!";
myButton.addEventListener(
FlexEvent.CREATION_COMPLETE,buttonHandler);
addChild (myButton);
}
private function buttonHandler ( evt:FlexEvent ):void
{
myButton.x = parent.width/2 - myButton.width/2;
myButton.y = parent.height/2 - myButton.height/2;
}
]]>
</mx:Script>
</mx:Application>
Flex’de kod parçaları mx:Script etiketi içine konuyor. En başta belirtilen
creationComplete=”creationCompleteHandler();”
ifadesi, uygulama yüklendiği zaman çalışıtırılacak işlevi söylüyor. Bu işlevde de düğme oluşturma işlemi gerçekleştiriliyor.ActionScript kodu istenirse ayrı bir ‘.as‘ uzantılı dosyaya da konabiliyor. Hatta bu dosyalarda nesneler yapmak, bir nesnenin diğerini kullanmasını veya genişletmesini sağlamak, arayüz (interface) yapmak gibi standart nesneye yönelik programalamnanın bütün özellikleri bulunmaktadır. Örneğin Flex’in standart ‘Panel’ sınıfını genişletere dör yönde yastık (padding) ekleyen bir bileşen yapmak istenirse
package components
{
import mx.containers.Panel;
public class PaddedPanel extends Panel
{
public function PaddedPanel()
{
super();
setStyle(“paddingLeft”, 10);
setStyle(“paddingRight”, 10);
setStyle(“paddingTop”, 10);
setStyle(“paddingBottom”, 10);
}
}
}
şeklinde bir kod paçası yazılabiliyor. Bu bileşeni kullanan bir MXML dosyası da
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application
xmlns:mx=”http://www.adobe.com/2006/mxml”
xmlns:custom=”components.*”
width=”300″ height=”130″
>
<custom:PaddedPanel title=”Custom component styles”>
<mx:Text text=”This is a padded panel component.”/>
</custom:PaddedPanel>
</mx:Application>
şeklinde belirtiliyor. Üretilen sınıf ille de bir arayüz sınıfı olmak zorunda da değil. Önreğin müşteri sınıfı için Customer.as biçiminde bir dosyaya
public class Customer {
private var _id:int;
private var _firstName:String;
private var _lastName:String;
private var _mobilePhone:String;
private var _officePhone:String;
…
public function get id ():int {
return _id;
}
…
}
bir kod yazılabilir.
Flex Araçları
Flex geliştirmek için Flex Builder adında bir geliştirme aracı kullanımaktadır. Java’da en yaygın kullanılan ortamlardan Eclipse tabanlı olan bu araç geliştiricileri MXML ve ActionScipt geliştirmelerine olanak tanıyor. Flex kütüphanleri içeren geliştirmekte kullanılan Flex Framework, MXML ve ActionScript derleryicisi içeren Flex SDK araçları bulunmaktadır. Flex geliştirmek için Framework ve SDK yeterlidir, Eclipse tabanlı FlexBuilder dışında Framework ve SDK içeren herhangi bir geliştirme aracıyla da çalıştırılabilir. Flex için geliştirilmiş programcılara çok çeşitli konularda faydalı olabilecek kütüphaneler bulunmaktadır. Örneğin Flex Charting (Grafik) verinin şekilli ve grafikli gösterilmesi için çeşitli araçlar sunar. Flex Data Services (Veri Hizmetleri) Java Enterprise uygulamalırya Flex’in veri alışverişinde bulunmasını sağlar.
Ajax mı Flex mi?
Flex, zengin internet uygulamaları alanında Ajax’a bir alternatif olarak ortaya çıkmaktadır. Ancak Ajax veya JavaScript’e dayanlı herhangi bir teknoloji Flash’la olduğu gibi Flex’le de birlikte çalışabiliyor. Yani rakip oldukları kadar tamamlayıcı olarak da işlev görebilirler. Flash teknolojisi “Flash Player External API“ adı verilen kütüphane iler JavaScirpt’ten kullanabiliyor. Aynı şekilde Flex’in JavaScript, dolayısıyla AJAX’la kulanımı için Flex-Ajax Bridge kütüphanesi bulunmaktadır.
Silverlight ve JavaFX
Flash teknolojisinin Flex ile programlama alanına yönelmesine karşılık, programlama ortamları .NET ve Java da zengin görüntü ve canlandırma alanına hızla girmekteler. Microsoft, adını Silverlight olarak koyduğu bir ürünle çokluortam alanında da var olduğunu göstermeye çalışıyor. Sun da, JavaFX adlı teknolojiyle, çokluortamda geliştirme yapmak için Java benzeri bir dili ve ortamı olan yeni bir teknolojiyle katılmakta.
Bugün ve Gelecek
Bilgisayarların donanım olarak giderek daha fazla ilerlemesi, daha fazla çokluortam özelliklerini desteklemesiyle, görsellik ve canlandırmanın da geliştiriciler için bir çalışma alanı olacağını gösteriyor. Bu alanda JavaScript’e benzer dillerin ve XML teknolojiyle gerçekleştirilmiş lehçelerin kullanıolacağı anlaşılıyor. Yakın bir gelecekte programcılar sıkıcı veritabanı uygulamaları dışında eğlenceli çokluortamda da çalışma olanağına erişecekler.
İlgili Bağlantılar
Flex Ürün Bilgileri
http://www.adobe.com/products/flex/
Flex Geliştiricileri Sayfası
http://www.adobe.com/devnet/flex/