AJAX (programlama)

AJAX (İngilizce: Asynchronous JavaScript and XML, Türkçe: Eşzamansız JavaScript ve XML), İnternet sayfalarında JavaScript ve XMLHttpRequest kullanılarak etkileşimli uygulamalar geliştirmeye yarayan bir tekniktir.

Okunuşu konusunda genel bir uzlaşma olmamakla birlikte, çoğunlukla yazıldığı gibi ajaks şeklinde okunur. Ancak bazı kişiler, aynı isimdeki futbol takımı örneğinden yola çıkarak ayaks şeklinde de telaffuz etmektedir. İngilizcede ise genellikle ey-ceks olarak okunur.

En yaygın kullanım alanı, sayfanın yeniden yüklenmesine gerek kalmadan sayfa içeriğinde görünür değişiklikler yapılabilmesidir. XMLHttpRequest nesnesi kullanılarak birden fazla bağımsız işlem gerçekleştirilebilir. Bazı bilişim uzmanılar, AJAX'ın HTML ve XML'den sonra internet yazılımında en yenilikçi gelişme olduğunu ve Web 2.0.'ı sonlandırıp üçüncü evrenin kapılarını açtığını öne sürmüştür.

Asynchronous JavaScript and XML kelimelerinin kısaltması olan Ajax, etkileşimli (interaktif) web uygulamaları geliştirmek için kullanılan bir web programlama tekniğidir. Temel amacı, arka planda sunucuyla az miktarda veri alışverişi yaparak sayfayı daha hızlı güncelleyebilen web sayfaları oluşturmaktır. Böylece kullanıcı, istediği her anda tüm web sayfasını yeniden yüklemek zorunda kalmaz. Bu da web sayfalarının etkileşimini, hızını ve kullanılabilirliğini artırır.

Ajax tekniği aşağıdaki teknolojileri kullanır:
Bilgiyi biçimlendirmek ve görüntüsünü değiştirmek için XHTML (veya HTML) ve CSS.
Görüntülenecek bilgiyi dinamik olarak göstermek ve onunla etkileşimde bulunmak için, özellikle JavaScript ve JScript gibi ECMAScript tabanlı kullanıcı tarafı betik dili ( ) ile erişilen DOM.
Web sunucusu ile veri alışverişinde kullanılan XMLHttpRequest nesnesi. Bazı Ajax çerçevelerinde ve durumlarda, web sunucusuyla iletişim için XMLHttpRequest yerine iframe veya dinamik olarak eklenen JavaScript etiketleri ( ) de kullanılabilir.
Kullanıcı ile sunucu arasındaki veri alışverişlerinde genellikle XML formatı kullanılır. Ancak önceden hazırlanmış HTML, düz metin ( ), JSON ve hatta EBML gibi herhangi bir format da tercih edilebilir. Bu dosyalar sunucu tarafında herhangi bir script dili (PHP, ASP vb.) ile üretilmiş olabilir.
DHTML, LAMP ve SPA gibi teknolojilerden farklı olarak, Ajax tek başına bir teknoloji değildir; ancak birçok teknolojinin birlikte kullanılmasını ifade eden bir terimdir.

Tarihsel bilgi
Hazırdaki bir web sayfasına, tamamen yeniden yüklemeden asenkron (eşzamansız) içerik ekleme teknikleri, 1996'da Internet Explorer ile gelen iframe ve 1997'de Netscape (Mozilla'nın ilk dönemlerinde geliştirilmesi durdurulmuştur) ile ortaya çıkan layer öğesi kadar eskidir. Her iki öğe de herhangi bir harici URL'yi alarak ana sayfayı değiştirebilen src özniteliğine sahipti. Daha sonra, tarayıcı tarafında çalışan bu teknolojiler DHTML adı altında anılmaya başlandı. Macromedia firmasının Flash uygulaması ise 4. sürümünden itibaren XML ve CSV formatındaki dosyaları, sayfayı yeniden yüklemeye gerek kalmaksızın uzak sunucudan yükleyebilme özelliğine sahipti.

Microsoft'un Remote Scripting (MSRS, 1998'de tanıtıldı) teknolojisi, bu tekniklere daha zarif bir alternatif olarak ortaya çıktı; veriler, istemci tarafında çalışan ve JavaScript ile iletişim kurabilen bir Java applet tarafından çekiliyordu. Bu teknik, Internet Explorer 4 ve Netscape Navigator 4 ve sonrası sürümlerde çalışıyordu. Microsoft daha sonra Internet Explorer 5'te XMLHttpRequest nesnesini oluşturdu ve bu tekniği ilk olarak Microsoft Exchange Server 2000 sürümüyle gelen Outlook Web üzerinde kullandı.

Web geliştirme topluluğu, ilk olarak microsoft.public.scripting.remote haber grubu ve daha sonra bloglar aracılığıyla iş birliği yaparak farklı tarayıcılarda tutarlı sonuçlar elde etmek için uzak betik çalıştırma teknikleri geliştirdi. 2002 yılında kullanıcı topluluğu, Java applet yerine XMLHttpRequest'i kullanmak üzere Microsoft Remote Scripting üzerinde bir değişiklik yaptı.

ARSCIF gibi Uzak Betik Çalıştırma Çerçeveleri 2003 yılında ortaya çıktı ve bu, Microsoft'un ASP.NET içerisinde Callbacks özelliğini sunmasından kısa bir süre öncesine denk gelmektedir.

Ayrıca, Dünya Çapında Ağ Konsorsiyumu (W3C) tarafından sunulan ve sunucu ile kullanıcı ajanı arasında dinamik iletişimi mümkün kılan çeşitli öneriler bulunmaktadır, ancak bunların çoğu yaygın destek görmemektedir. Bunlar arasında şunlar yer alır:
HTML 4'te tanımlanan ve belgeler içine rastgele içerik yerleştirmek için kullanılan object öğesi (XHTML 1.1 altında inline frame'lerin yerini alır)

Avantajları ve dezavantajları
Bant genişliği kullanımı açısından;

HTML, ağ tarayıcısı (browser) üzerinde oluşturulurken, JavaScript işlemleri ve işlenecek veriler kullanıldığında, sunucudan gelen sayfa bilgisi gerektiğinden daha az yer kapladığından AJAX web sayfalarının görece daha hızlı yüklendiği gözlemlenebilir.

İçeriğin “isteğe bağlı olarak yüklenmesi”nin yanı sıra, bazı web uygulamaları önce Olay Yöneticilerini (event handler), ardından ilgili fonksiyonları indirir. Bu teknik, karmaşık yapıya ve işlevselliğe sahip web uygulamalarının ihtiyaç duyduğu yüksek bant genişliği tüketimini önemli ölçüde azaltır.

Erişilebilirlik
Web uygulamalarında Ajax teknolojilerinin kullanılması, bilgisayar erişilebilirliği konusunda araçlar geliştiren tasarımcılar için pek çok sorunu beraberinde getirir. Ayrıca, ABD'de birçok devlet destekli geliştirme projesinde Section 508 gibi Amerikan uyum standartlarına sıkı şekilde uyulması gerekmektedir. Bu standartlara uyulmaması, bazı durumlarda bilgisayar uyumluluğuyla ilgili iş anlaşmalarının iptaline ve hukuki problemlere yol açabilmektedir.

Bu nedenle, Ajax ile hazırlanmış çözümlerin büyük bir kısmı grafik tabanlı tarayıcılara yönelik olduğundan, geliştiriciler diğer platform ve tarayıcı kullanıcılarının ihtiyaçlarını da karşılamak zorundadır.


Web tasarımcıları, web tarayıcısının tüm sayfayı yeniden yüklemesine gerek kalmaksızın veri işlenebildiği durumlarda bazen web sayfasının sadece belirli bölümlerinde Ajax kullanabilir. Ajax kullanamayanlar ise sayfanın tamamını yenilemeye ve yüklemeye devam edebilmelidir. Geliştiriciler, Ajax destekleyen tarayıcılarda daha gelişmiş özellikler sunsalar da, erişilebilirlik başta olmak üzere Ajax içermeyen ortamlardaki kullanıcıların deneyimini kısıtlamamalıdır.

Ajax Nerede Kullanılır
Ajax, web üzerinde hemen hemen birçok alanda kullanılır. Örneğin, Google Maps'te kullanıcı harita üzerinde bir bölgeyi çektiğinde, sayfa tamamen yeniden yüklenmeden bilgi anında güncellenir. Tüm bu işlemler Ajax'ın asenkron (eşzamansız) özelliği sayesinde gerçekleşir. Ajax, aynı zamanda Gmail'de de kullanılmaktadır. Bilgiler yüklenirken sayfanın tamamının yeniden yüklenmesine gerek kalmaz. Yeni bir posta geldiğinde, gelen kutusuna otomatik olarak eklenir. Bu, kullanıcının sürekli yenileme düğmesine basma ihtiyacını ortadan kaldırır. Google Translate de Ajax kullanır; kullanıcı bir metni bir dilden başka bir dile çevirmek için yazmaya başladığında, Ajax o an diğer dildeki çeviriyi aynı sayfada anında gösterir.

Kaynakça
Ayrıca bakınız
Web uygulama iskeleti
COMET (programlama)
HTTP/2
Google Arama
ActionScript
Node.js
HTML5
WebSocket
Web 2.0
XMLHttpRequest

Örnekler
Google Maps
Gmail
Google Pages
Mint
Google Suggest
ZK Demo

Dış bağlantılar
PHP ile Ajax kullanımı
Ajax'ın Temelleri
AJAX kategorisi - Open Directory Project kapsamında.
ASP'de Ajax örnekleri

AJAX kütüphaneleri
MIT.FESA – Hızlı, Kolay ve Akıllı AJAX nesnesi.
PHPLiveX
EceX
jQuery
ajaks
Dojo
civciv-lib
moofx
behaviour
Prototype
Sardalya - (Sar)mal (D)inamik (Al)t(ya)pısı (İngilizce)
script.aculo.us
XScript
Xajax
Microsoft ASP.NET Ajax