AJAX
AJAX nedir?
Web dünyasıyla biraz ilgili olanların adını sıkça duymaya başladıkları AJAX'ın açılımı "Asynchronous JavaScript and XML" dir, kendisi bir yöntemin adıdır, bir WEB sayfası oluşturma tekniğidir.
Klasik web sayfalarında, sayfanın herhangi bir bölümünde değişiklik olabilmesi için sayfanın tamamının server tarafında yeniden oluşturulup tarayıcıya gönderilmesi gerekir. Oysa AJAX ile sayfanın sadece istenen bölümünün değiştirilmesi sağlanabilir.
AJAX'ın tarihçesi
Buna javascript konusunu biraz açarak başlamak gerekecek. Javascript her ne kadar içinde Java geçiyor olsa da pek java ile alakası bulunmayan istemci tarafında çalışan bir script dildir. Javascript bir tarayıcı yeteneğidir. Bu nedenle her javascript kodu her tarayıcıda aynı şekilde çalışmayabilir. Ama IE,FireFox,Opera gibi populer tarayıcılar büyük oranda ortak bir noktada buluşmuşlardır.
Javascript, web dünyasında 'ufacık tefecik işler için de sunucuya mı gideceğiz' serzenişine bir kurtarıcı olmuş ancak varlığı ve gelişimi ile ilgili herhangi bir garanti bulunmaması, geliştiricileri 'geri dönüşü zor' işlere girişmekten de uzak tutmuştur. Ancak zamanla web içeriğine dinamizm kazandırması ile popularitesi artmış, bizleri DHTML kavramı ile tanıştırmıştır. WEB sayfalarını tamamen javascript ile oluşturma noktasına kadar ulaşmış, hızını alamayarak animasyon ve görsel efektler konusunda da şaşırtıcı örnekler sunmuştur. Bu başdöndürücü gelişim üzerine dört bir yandan libraryler, toolkitler, frameworkler oluşturulmaya başlanmıştır. İçeriği javascript ile dinamik olarak değiştirebilme bilgi birikiminin üzerine, gerekli içeriği de bir http bağlantı ile sunucudan alma işleyişi eklenerek çok sayıda AJAX tool'u oluşturulmaya başlanmıştır. Özgür yazılımcılar ile birlikte IBM, Oracle, Google, Yahoo, Microsoft da bu konuyu yatırım yapmaya başlayınca belli oldu ki önümüzdeki yılların moda gündemi AJAX olacak, AJAX oturulup AJAX kalkılacak.
Bu önemli yoğurt yeme değişikliğini yeterince spekülatif bulmayanlar, daha dikkat çekici bir kavramı ortaya atarak herşeyi Javascript ve AJAX'a dayandıran bu yönteme, daha şimdiden WEB 2.0 adı koymuşlardır.
Gerçekten ihtiyaç mı yoksa bir moda mı?
Klasik web sayfaları çok fazla data akışı gerektirir. Hepimiz gayet iyi biliriz ki bir web sitesinde ne kadar çok animasyon,resim, yazı aynı anda bir sayfada yer alırsa o sayfa o kadar yavaş yüklenir. Bir de böyle bir sayfa, her küçük değişiklik için yeniden yüklenmesi gerekirse kullanıcı için hiç konforlu olmayan bir durum ortaya çıkar. Kullanıcı dışında da aynı sayfayı defalarca üretmek zorunda kalan sunucular da performansını yitirmeye başlayacaktır. Zaten bu sıkıntılar nedeni ile AJAX ortaya çıkmış, ve bu sıkıntıları ortadan kaldırabilmiş.
Trafiği çok yoğun olmayan ve genelde statik olan bir web sitesinde AJAX kullanmak çok anlamlı olmayabilir ama tersi bir durum için büyük önem taşır.
Eğer web sitenizde herhangi bir düğmeye, linke tıklandığında içeriğin herhangi bir bölümünü sayfayı refresh etmeden, sunucudan aldığınız bilgi ile doldurabiliyorsanız AJAX kullananlar arasına hoş geldiniz. AJAX uygulamak bu kadar basitken geliştirlen toolkit ve library'lerin büyüklüğü de neyin nesi denebilir.
Önceleri sadece Javascript library olarak ortaya çıkan birçok girişim, günün populer akımında yer bulabilmek için AJAX özellikleri ekleyerek, AJAX Framework ismini almışlardır.
AJAX, ön yüze yönelik bir durum olduğu için önyüz görsellerini zenginleştiren ek özellikler bulunduran toolkitler daha çok ilgi görmüştür. Mesela hazır TAB menü, Treeview menü ve window içeren AJAX Toolkitler geliştiriciler üzerinde büyük ilgi uyandırmıştır. Bunlar önceden de var olan yapılardı ancak AJAX ile daha kullanışlı olmuşlardır. WEB geliştirici istiyor ki hem bir AJAX toolkit kullanayım hem de AJAX'ı verimli kullanabileceğim hazır görselleri de içeren bir toolkit kullanayım. Geliştiriciler, yıllardır uygulama geliştirme anlamında yetersiz bulunan WEB ortamı yüzünden artık bu tip Javascript librarylerin desteği ile geçen fukara yılların acısını çıkarmaya çalışmaktadır.
Sonuç olarak AJAX;
çıkış amacı her ne kadar işlevsellik olsa da şu an görsellik + işlevsellik durumuna getirilmiştir. Görsel etkinlikler tamamen görecelidir bu anlamda yapılan çalışmalar ve didinmeler tamamen günümüz taleplerini tatmin etmeye yöneliktir diye düşünüyorum bu yönüyle AJAX'ı modaya benzetiyorum. İşlevsellik anlamında ise gerçekten bir ihtiyaç, hatta WEB uygulamalarının büyük bir açığını kapama olarak nitelendiriyorum.
Kullanan var mı?
Microsoft, Yahoo ve Google gibi devler kullanıyorlar ama burada Google'ı ayrı tutmak gerekir. Çünkü Google işe AJAX ile başlarken diğerleri sonradan geçiş yaptılar. Google görsel zenginlik konusuna da pek takılmamıştır, sadece AJAX'ın işlevsel yönüyle ilgilenmekte ve bence karizmatik tavrını devam ettirmektedir. Bu devler için AJAX çok önemli bir teknik, çünkü gerçekten yoğun trafiği olan ve oldukça dinamik web hizmetleri sunmaktadırlar.
Desteği var mı?
Bir çok firma ve açık kayanak kod geliştirici gruplar tarafından desteklenmektedir, bu desteğin kullanıcılara yansıması için alternatiflerden iyi olanların olgunlaşması gerekiyor. Biraz daha zamana ihtiyaç var hala geliştiriciler, html editörü denebilecek ortamlarda javascript kodlar yazmaya çalışıyor, javascript ile ciddi uygulama geliştirme ortamları daha yeni yeni duyulmaya başladı.
Geleceği var mı?
Her 5-10 yılda bir yeni bir akımın ortaya çıktığı yazılım dünyasında, AJAX veya WEB2.0 kavramı önümüzdeki 5-10 yılın yeni akımı olacak gibi görünüyor. Internet hızının artması, web üzerinden sağlanan hizmetlerin sayısında büyük artış sağlamıştır, yakın gelecekte birçok yazılım ihtiyacının internet üzerinden sağlanacağını tahmin etmek çok zor olmasa gerek. Bu servislerin geliştirilmesinde AJAX bir prototip olacaktır çünkü klasik web üzerinde uygulama geliştirme yöntemleri yetersiz kalmaktadır.
AJAX Programlama Şekilleri:
Mevcut tool ve geliştirme ortamları kullanılarak tercih edilebilecek 3 farklı programlama yöntemi ortaya çıkıyor. Bunlar Java, Javascript ve XML programlama olarak belirtilebilir.
Javascript Programlama: Burada en büyük sıkıntı diğer populer dillerde olduğu gibi gelişmiş editor, compiler ve debuggerların bulunmaması. Bazı çalışmalar var, benim en çok dikkatimi çekenler, bir open source proje olan Aptana ile IBM'in alpha work çalışması olan ATF. Her ikisi de Eclipse üzerinde geliştirilmiş. Ayrıca EchoStudio gibi projeye özel ücretli uygulama geliştirme ortamlarına da rastlamak mümkün.
Aptana: http://www.aptana.com/ATF: http://www.eclipse.org/atf/EchoStudio: http://www.nextapp.com/platform/echo2/echostudio/
XML Programlama: Burada editor, compiler ve debugger sıkıntısı daha büyük olmakla birlikte daha az efor sarfedip daha az programlama bilgisi ile daha kolay web uygulamaları oluşturma hedeflenmiş.
Java Programlama: Bana en mantıklı gelen bu yöntem ile mevcut java uygulama geliştirme ortamları kullanılabilmekte, javascript ve XML ile yapılan geliştirmedeki handikapları ortadan kaldırmaktadır. Ayrıca javascript dünyasında meydana gelebilecek değişikliklerin entegrasyonunda bir interface oluşmasını sağlamıştır.
Bu yöntemin iki farklı uygulamasını görmek mümkün:
- Bir tanesi Google'ın yaptığı gibi java ile geliştirilen AJAX uygulamasını kendi compiler'ı ile javascript ve HTML'e dönüştürülmesi. Bu yöntemin avantajı, uygulamanın server bağımsız olmasını sağlamasıdır, java ile geliştirdiğiniz uygulamayı çalıştırmak için bir java web server'ına ihtiyaç duymazsanız.
- Diğeri ise java ile geliştirilen uygulama bir java web server üzerinde çalıştırılması esasına dayanır. Server'e istekler geldikçe server tarafında javascript ve HTML sayfalar üretilir ve client'a gönderilir.
Linkler:
AJAX programlama için geliştirilmiş birçok tool ve framework bulunuyor, bugüne kadar incelemek için vakit ayırabildiklerimi aşağıda listeledim.
Bindows:
Zengin layout ve form widget'lara sahip.
Ön yüzü browser üzerinde XML ile oluşturuluyor, server bağımsız.
Referansları çok güçlü
Lisans: Farklı lisanslama tiplerine sahip ancak ücretsiz kişisel kullanıma izin veriliyor.
IDE: Yok, belki bir xml editor kullanılabilir.
WEB:
http://www.bindows.net/Demo:
http://www.bindows.net/bindows/samples/applauncher/Qooxdoo:
Ön yüz javascript ile oluşturuluyor, server bağımsız.
Lisans: LGPL.
IDE: Aptana ve ATF kullanılabilir.
WEB:
http://qooxdoo.org/Demo:
http://demo.qooxdoo.org/html/at-a-glance/index.html
dojo:
Ön yüz javascript ile oluşturuluyor, server bağımsız. Oldukça geniş bir library'e sahip. Layout ve form widgetlarının yanısıra animasyon yetenekleri ile de öne çıkan oldukça popular bir javascript toolkit.
Lisans: LGPL.
IDE: ATF içinde ön tanımlı olarak yer alıyor. Aptana ile de kullanılabilir.
WEB:
http://qooxdoo.org/Demo:
http://demo.qooxdoo.org/html/at-a-glance/index.htmlKabuki ajaxtk:
Ön yüz javascript ile oluşturuluyor. Zimbra Collaboration Suite bu toolkit ile oluşturulmuş başarılı bir uygulama.
Lisans: MPL ve Apache
IDE: ATF içinde ön tanımlı olarak yer alıyor. Aptana ile de kullanılabilir.
WEB:
http://www.zimbra.com/community/kabuki_ajax_toolkit_download.htmlDemo:
http://www.zimbra.com/products/hosted_demo.php
ZK:
Ön yüz server tarafında XML ile oluşturuluyor, bir java web server'ına ve MySQL database'ine ihtiyaç duyuyor. En ilginç özelliği ön yüz için oluşturduğunuz XML içerisinde hem javascript hem de serverda çalışacak java kodları yazabiliyor olmanız. Mesela bir düğme tıklandığında validation'ı javascript ile yaparken tıklama sonrasında serverda yapılacak işleri java ile aynı XML'in içinde yazabiliyorsunuz. Dökümantasyon konusunda da çok zengin.
Lisans: GPL
IDE: Sıkıntısı burada, yine de Eclipse ile birlikte Zero Kode adında bir designerı var:
http://zk1.sourceforge.net/smalltalks/zerokode1/zerokode1.htmlWEB:
http://www.potix.com/Demo:
http://www.potix.com/zkdemo/userguide/OpenRico:
Ön yüz javascript ile oluşturuluyor. Layout widgetları ve bol bol animasyon özelliklerine sahip.
Lisans: Apache2.0
IDE: ATF içinde ön tanımlı olarak yer alıyor. Aptana ile de kullanılabilir.
WEB:
http://openrico.org/rico/home.pageDemo:
http://openrico.org/rico/demos.pagePrototype:
Çok geniş bir javascript framework, hazır widgetlara sahip değil ama çok geniş bir library'e sahip. OpenRico oluşturulurken Prototype kullanılmıştır.
Lisans: Sam Stephenson tarafından ücretsiz kullanıma izin verilmiş.
IDE: Aptana ile kullanılabilir.
WEB:
http://prototype.conio.net/Demo: Demo sayfası yok ama aşağıdaki linklerden bilgi alınabilir
BZbyte:
Bir AJAX Framework, ön yüz dahil tüm program server tarafında java ile yazılıyor, bu nedenle javascriptte olduğu gibi bir IDE ve compiler problemi yaşanmıyor.
Lisans: GPL
IDE: Eclipse gibi herhangi bir java editorü kullanılabilir.
WEB:
http://www.bzbyte.com/a/shop/EZAjaxDescription.jspDemo:
http://www.barebyte.com:2000/BZByteEZAjax/TestManager.jspYUI:
Yahoo! UI Library. Yahoo'nun javascript library'si. Özel form widgetları yok ama geniş bir animosyan ve AJAX özellikleri sunan bir library sunuyor.
Lisans: BSD
WEB:
http://developer.yahoo.com/yui/Demo:
http://developer.yahoo.com/yui/GWT:
Google WEB tookit. Ön yüz tamamen Google'ın sunduğu java API'ler kullanılarak java ile yazılabiliyor böylece test ve debug işlemlerinde herhangi bir sıkıntı yaşanmıyor, geliştirme tamamlandıktan sonra GWT Compiler ile yazılan tüm programlar javascript ve HTML'e dönüştürülüyor.
Lisans:
http://code.google.com/webtoolkit/terms.htmlWEB:
http://code.google.com/webtoolkit/Demo:
http://code.google.com/webtoolkit/documentation/examples/DWR: Client'ta yazılan javascript ile server tarafnda yazılan java methodları çağırılarak server entegrasyonu sağlanıyor. Güçlü referansları olan bir tool.
Lisans: Apache License, Version 2.0
WEB:
http://getahead.ltd.uk/dwr/Demo:
http://getahead.ltd.uk/dwr/examplesOpenXava: XML ve Java kullanılarak uygulama geliştirme imkanı sunuyor.
WEB:
http://www.gestion400.com/openxava/portal/default-page.psmlHSE: Hibernate, Spring ve Echo2'yi bir araya getirerek 3-tier bir yapı oluşturulmuş.
WEB:
http://hse.sourceforge.net/Echo2: Herhangi bir şekilde javascript, HTML bilgisi gerektirmeden sadece java ile web uygulamaları geliştirmeyi hedefleyen bir framework. Geniş ve şık bir widget desteği sunuyor.
Lisans: Mozilla Public License veya GNU LGPL License
WEB:
http://www.nextapp.com/platform/echo2/echo/Demo:
http://www.nextapp.com/platform/echo2/echo/demo/
Backbase: Ücretli bir çözüm, jsf, struts desteği olan veya sadece client tarafını içeren üç farklı alternatif sunuyor.
WEB:
http://www.backbase.com/#home/home.xml[9]Demo:
http://www.backbase.com/#home/products/ajax_demos.xml[4]Etiketler: ajax