AJAX
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.
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.
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ş.
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.
çı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.
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.
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ı.
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.
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.
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.html
Kabuki 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.html
Demo: 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.html
WEB: 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.page
Demo: http://openrico.org/rico/demos.page
Prototype:
Ç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
- http://www.sergiopereira.com/articles/prototype.js.html
- http://wiki.script.aculo.us/scriptaculous/show/Prototype
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.jsp
Demo: http://www.barebyte.com:2000/BZByteEZAjax/TestManager.jsp
YUI:
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.html
WEB: 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/examples
OpenXava: XML ve Java kullanılarak uygulama geliştirme imkanı sunuyor.
WEB: http://www.gestion400.com/openxava/portal/default-page.psml
HSE: 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]
Ocak 12th, 2007 at 11:57 am
Tek kelimeyle Tebrikler!
Ülkemizde kaç yazılımcı fikirlerini ve öngörülerini bu kadar açıkça, üstelik internet gibi herkesin erişebildiği bir platformda ortaya koymaya cesaret edebilir? Bu bir bilgi ve özgüven meselesidir..
Yeni teknolojide daha mükemmeli arayan yazılımcılar, yol ayırımında olan COI’lar CTO’lar; alın size cüretkar bir teknolojik yol haritası. Üstelik avuç dolusu döviz ödemeden.
G.Öcal
Mayıs 28th, 2007 at 2:13 am
projemizde yardımcı olmanız mümkün mü? lütfen benimle irtibata geçer misiniz? cunal@tureng.com
Temmuz 1st, 2007 at 11:41 am
Çok güzel bir yazı olmuş. Tebrik ve teşekkür ederim. İzin verirseniz Ajax-TR’den bu yazıya link vermek istiyorum.
Temmuz 1st, 2007 at 12:01 pm
Merhaba eburhan,
Blogçular okunduğu sürece yazarlar öyle değil mi? İstediğiniz yerde link verebilirsiniz