JavaScript Temelleri

Bölüm 1

Başlangıç Bilgileri

Bölüm 1 Sayfa 1

1.1 - Tarihsel Gelişim

1.1.1 - CERN

İsviçrede kurulu, Centre Européen de Recherches Nucléaires , kısa adı ile CERN, Partikül Fiziğinde araştırmaları yanında, Internetin gelişmesine önemli katkıda bulunmuş bir kuruluştur. 1983 de STELLA uydu iletişim projesi sırasında, dünyada ilk olarak Internet Protokolu adı kullanıldı. 1984 de CERN de ABD Savunma bakanlığının kulandığı standart TCP/IP iletişim protokolu , yerleştirildi , 1986 de Andres Berglund, SGML de ile geliştirdiği bir yöntemle, ilk SGML ISO standardını rekor bir zamanda basmayı başardı. Internetin bugünkü haliyle gelişiminin ilk yolunu açan, o vakit CERN bilgisayar merkezinin bir çalışanı olan Ingiliz Fizikçi Tim Bernes-Lee 1998 CERN de, o güne kadar soyut fakat sağlam kurama dayanan ve kapsamlı SGML belge yapılandırma dilinin uygulanabilir bir alt kümesini geliştirmek için bir proje sundu. Bu proje kabul edildi ve çalışmalar sonunda, 1991 de CERN de WWW (World Wide Web) yani dağıtık bir uzak ağda karşılıklı iletişim yöntemleri açıklandı. Bu, sözcüğün tam anlamı ile bir iletişim devrimi olarak kabul edilebilir. 1990 da CERN Avrupanın en büyük Internet Sunucusu haline geldi ve Internet iletişimin yaygınlaşmasında diğer ülkeler için bir öncü görevini yaptı.

1.1.2 - ARPANET

Internet erişiminin gerçekleştiği fiziksel ağın kurulması düşüncesi aslında, 1957 yılında, Sovyetler Birliğinin SPUTNIK uydusunu uzayda bir yörüngeye yerleştirmesi ile ABD de yaşanan şoktan sonra başlatılan ARPA (Advances Research Projects Agency) ( İleri Araştırma Projeleri Ajansı) çalışmalarındaki projelerden biridir. Bu çalışmalardan birinin sonuçlarından birisi olan ve 1962 de ARPANET adı ile çalışmaya başlayan bu ağ uydu haberleşmesini de içermekteydi. ARPANET, aslında askeri amaçlarla yapılmış olmasına karşın, 1969 da UCLA da ilk bağlantı noktasının açılmasından sonra, geniş ölçüde bilimsel araştırmalarda da kullanılmıştır. ARPANET 1973 de University College London bağı ile uluslararası bir özellik kazanmış, ülkeler yavaş yavaş bu ağa bağlanmaya başlamışlardır. Sivil trafiğin artması ile, 1986 da ağın önce bir kısmı NSFNET olarak sivilere devredilmiş, sonra 1990 yılında tamamen NSFNET2'e devredilerek ağın tamamı sivil kullanıma bırakılmıştır. 1995 de ağ tamamen özel kuruluşların yönetimine geçmiştir. Yani, Internet erişiminin kuramsal yapısının geliştirildiği yıllarda iletişimin gerçekleşeceği fiziksel ağ hazır ve kullanılır durumdaydı. Esas sorun, kullanıcıların yayınlanan belgeleri okumasını sağlayan, aslında göreli olarak basit bir teknik olan, belge çözümleyicilerden kaynaklanacaktı ve başlangıçta bunu kimse tahmin edemedi.

1.1.3 - Mosaic

1980 lerde, bilgisayar kullanımında, kişisel bilgisayarlar yer almaya başladı. Bu bir devrimdi. Kişisel bilgisayarlarının sağladığı kullanım kolaylığı, ve bilgisayarlara erişilebilirliğin artması ile bilgisayar kullananların sayısı hızla yükselmeye başladı. Kişisel bilgisayarlar, Apple ve IBM uyumlu olarak sadece iki sistemde üretiliyordu ve IBM uyumlular çok daha yaygındı. !995 lerde Microsoft Windows işletim sistemini geliştirince, IBM uyumlu bilgisayarlar daha da yaygınlık kazandı ve artık Windows temelli bilgisayarlar olarak adlandırılmaya başlandı. 1991 de Tim Bernes-Lee CERN de WWW iletişim siatemini açıkladığında dünyada bilgisayar kullanımı büyük bir yoğunlukla kişisel bilgisayarlara kaymıştı ve bunlar arasında, Windows temelli olanlar en yaygın olanları idi. O günlerde Windows işletim sistemi henüz gelişme halinde olmasına karşın, kullanıcılara mültimedya destekli renkli, seslendirilebilinen belgeler ile çalışabilme olanağını sağlayabiliyordu. Masa üstü yayıncılık, bilgisayar destekli resim işleme (rendering) Bilgisayar destekli tasarım (CAD) giderek yaygınlaşan, eski teknikleri devreden çıkartacak kadar yoğunlaşan bilgisayar teknikleri idi. Bunun yaynında, Internet´ten indirilen dosyalar, sadece metinleri destekleyebilen basit metin yazım programları gibi hiçbir çekiciliği olmayan belge çözümleyicilerdi. Bu aşamada, bilim insanları Internet erişimini büyük çoşku ile karşıladılar fakat genel kullanıcılar, içeriğin sunumunu çekici bulmadığı için fazla ilgilenmedi. Microsoft da bu aşamada fazla kullanım desteği bulmayan bu alanla pek ilgilenmedi. Bu durum hızla ve hiç kimsenin öngörmediği şekilde değişecekti. 1992 de, Illinois Universitesi Urbana kampüsünde bulunan ve kısa adı NCSA olan National Center for Supercomputing Applications da çalışan Marc Andreasen ve arkadaşları, hipermetin belgeleerinde yer alan resimleri de metinlerle birlikte aynı sayfada gösterebilen Mosaic olarak adlandırdıkları bir belge çözümleyicisi üzerinde çalışmaya başladılar. 1993 de Mosaic´in ilk sürümü indirlebilir hale geldi. Mosaic belge çözümleyicisi, günümüzde kullanılan tüm belge çözümleyicilerinin temellerini oluşturmuştur.

1.1.4 - Netscape Belge Çözümleyicinin İlk Sürümü

Marc Andreasen ve arkadaşları, 1993 de NCSA dan ayrılarak kendi şirketlerini kurdular ve Mosaic temeline dayanan Mozilla kod adlı ilk ticari belge çözümlyiciyi geliştirmeye başladılar. Bu belge çözümleyicinin ilk sürümü, 1994 de NETSCAPE NAVIGATOR 1.1 sürümü olarak kullanıma açıldı. Netscape, Windows işletim sistemine standart bir uygulama penceresi olarak entegre olabiliyor, metin ve resimleri aynı sayfada gösterebiliyordu. Netscape in ilk sürümü ile birlikte, Internet bir görsel şölen haline dönüştü. Bu andan sonra Internet belgelerine kullanıcı ilgisi olağanüstü artmaya başladı. Ticari kuruluşlar da bu alanın önemini kısa sürede anladılar. Önce tanıtım amaçlı belgeler yayınlanmaya başladı bunu mesajlaşma, elektronik ticaret, Internet bankacılığı gibi alanlar izledi.

Netscape Navigator'un ilk sürümünün çıkması ile çözümlenmesi gereken sorunlar belirlenmeye başladı. Sorunlardan ilki, Netscape'in belgelerin çözümlenmesinde desteklediği etiketlerin bazılarının kendine özgü olması idi. Bunun sorun yaratcağı derhal farkedildi. Gerçekten herkes kendi eklentilerini desteklerse, ortak kullanım diye birşey kalmayabilirdi. Bu sorunun tek çözümü, herkesin uyması gereken standartların oluşturulması idi. İkinci büyük sorun, aslında bir belge yapılandırma ve erişim sistemi olarak tasarlanmış olan web belgelerinin, görüntü sağlayacak özel elementlerle doldulmakta olmaları idi. Bu sorunun çözümü için, belgenin yapılanması ile görüntülenmesini sağlayacak araçların birbirinden farklı olmasının gerektiği ortaya konuldu. Son sorun, belgelerin yayınlandıkları sunucularda statik olarak beklemeleri, kullanıcıların etkisine yanıt verememeleri olarak saptandı. Bu sorunun çözümü için de yeni bir program dilinin oluşturulması gerektiği belirlendi. Tüm bu sorunların çözümü ve koordinasyonu için, o güne kadar düzenleyici görevini yapmakta olan IETF kuruluşunun yeniden yapılandırılması ve güçlendirilmesi gerektiği ortaya konuldu.

1.1.5 - W3C

İlk olarak web standartlarını oluşturacak ve çalışmaları koordine edecek bir organizasyon olmak üzere, o güne kadar çalışmaları yürütmüş olan IETF kuruluşunun adı W3C organizasyonu olarak değiştirildi ve başkanlığına Tim Berners-Lee getirildi. Tim Berners-Lee halen başkanlığa devam etmektedir. 1995 de IETF tarafından spesifikasyonu yayınlanmış olan ve ilk HTML spesifikasyonu olan HTML 2.0, W3C tarafından yeniden ele alınarak düzenlendi ve 24 Aralık 1999 da HTML 4.01 spesifikasyonu, HTML'in en son ve kapanış sürümü olarak açıklandı. W3C nin tüm spesifikasyonları gibi bu spesifikasyon son derece açık, sistematik ve öğreticidir. Yine de HTML DTD sinde benim hata olarak görerek doğrunu belirttiğim, fakat kendilerinin kabul etmeyip yine de bir sonrakii XHTML 1.1 spesifikasyonunda düzelttikleri bir tanım bulunduğunu belirtelim. Bu spesifikasyon aslında HTML'nin belge yapılandırma dili olarak, son kullanım tarihini belirlemekte olduğu kabul edilebilir. Çünkü, bu tarihten sonra, belge yapılanması için yeni geliştirilen XHTML belge yapılandırma dilinin kullanılması süreci başlamıştır. Daha sıkı bir belge yapılanmasını öngören XHTML belge yapılandırma dilinin ilk 1.1 sürümünün spesifikasyonu 26 ocak 2000 yılında yayınlanmıştır. XHTML, HTML belge yapılandırma dilinin, XML olarak yeniden formüle edilmesi olarak tanımlanmaktadır. Bundan sonra, 31 Mayıs 2001 de Modül Temelli XHTML olarak adlandırılan, XHTML 1.1 spesifikasyonu yayınlanmıştır. En son olarak, 26 Ocak 2006 da XHTML modülarizasyonun son aşaması olan XHTML 2.0 spesifikasyonu yayınlanmıştır. Bu spesifikasyon, henüz uygulananamadan yerine daha kapsamlı bir spesifikasyon olan HTML5 spesifikasyonu ortaya konuldu. Halen HTML5 bu konuda en son geliştirilmiş olan spesifikasyondur ve geliştirilmesi ile uygulamada desteklenmesinin 2022 ye kadar sürebileceği belirtilmektedir. Günümüzde, ortak olarak en fazla desteklenen ve uygulanan sürüm, XHTML 1.1 dir.

1.1.6 - CSS

Belgenin yapaılandırılmasını sağlayan işaretleme sistemi ile belgenin görüntülenmesini sağlayan işaretleme sisteminin birbirinden farklı olmasının sağlanması için, W3C den Håkon Wium Lie ( Sonraları Avrupa kökenli ilk belge çözümleyicisi Opera'nın yaratıcısı olmuş ve halen de başındadır) nin önerisi üzerine adına CSS (Cascade Style Sheets) (Katlı Stil Sayfaları) adı verilen yeni bir işaretleme dili geliştirildi. Birçok kullanıcının bu karmaşık işlevin ancak yeni bir programlama dili ile gerçekleştirilebileceğini belirtmesine karşın, W3C çalışma grubu, işlevin bir işaretleme dili ile çözümlenmesi yönünde hareket etti. CSS herhangibir eski dile dayanmayan, tümü ile yeni ve benzersiz bir görüntü oluşturma dilidir. Bu dile birbiri üzerine kat kat akan şelaler anlamına gelen Cascade adının verilmesi, görüntü isteğinin yazardan başlayarak, belgenin görüntüleneceği noktaya kadar aşama aşama geliştirilerek gelmesi ve görüntüde kullanıcının isteklerinin ve görüntünün sağlandığı ortamın kapasitesinin de gözönüne alınabilmesi nedeniyledir. Bu çalışmalar sonucunda, 1996 Aralık ayında W3C ilk CSS spesifikasyonu olan CSS sürüm 1´i açıklamıştır. Bundan sonra 6 Kasım 2006 da CSS Düzey 2 Revizyon 1 , CSS 2.1 spesifiasyonu olarak açıklanmıştır. Halen belge çözümleyiciler tarafından en çok bu spesifikasyon desteklenebilmektedir. Yeni geliştirilmeye çalışılan CSS 3 spesifikasyonu, modüler yapıda ve çok geniş kapsamlıdır. Çalışmaları çok ilerlemiştir. Belge çözümleyiciler, henüz bu spesifikasyonu karşılayabilmekten uzaktır. Özetle, CSS görüntü oluşturma dili, W3C nin en başarılı çalışmalarından biridir. CSS sayesinde web belgelerinin yapılandırılması amacı ile kullanılan işaretleme sisteminin, görüntü oluşturulması amacı ile yapılan işaretleme sisteminden tamamen farklı ve ayrı olması sağlanabilmiştir.

1.1.7 - JavaScript

Netscape 1995 de Brendan Eich adlı bir çalışanına, web sayfalarına etkileşim sağlayacak bir programlama dili oluşturulması için çalışma görevini verdi. Bu sıralarda Java programlama dili yaklaşık beş yıldan beri kullanımdaydı ve 1994 artık web üzerinde de kullanımı için yöntemler geliştirilmeye başlamıştı, Eich, herşeyden önce, yola Java ile devam edilmesi veya salt web'e özgü yeni bir programlama dili geliştirilmesi konusunda karar vermek zorundaydı. Bu konuda, Eich yepyeni bir programlama dili hazırlamaya karar verdi ve önce Mocha sonra Livescript olarak adlandırdığı, sadece belge çözümleyici üzerinde çalışabilen ve script dili olarak nitelendirilen bir programlama dil oluşturdu. 1995 eylül ayında bu programlama dili Livescript adı altında, Netcape Navigator 2 sürümü ile birlikte kullanıma sunuldu. O tarihlerde, büyük başarısı görülmekte olan Java programlama dilinin popülaritesinden yararlanmak için Netscape, iki dilin doğrudan bir ilişkisi olmamasına karşın , salt bir pazarlama taktiği olarak Livescript adını JavaScript olarak değiştirdi ve 4 Aralık 1995 de çıkan Netscape Navigator 2.0 B3 sürümü JavaScript desteği ile birlikte yayınlandı.

LiveScript adının JavaScript olarak değiştirilmesi, sadece bir pazarlama taktiği idi fakat sonuçları kötü oldu. Java programlama dili, derlenen ve sınıf temeline dayanan bir nesne yönelimli bir program dili idi. JavaScript programlama dili ise yorumlanan, yorumlayıcısı bir belge çözümleyicisi içinde yuvalanmış prototip temeline dayalı nesne yönelimli olabilmesine karşın daha çok prosedüral olarak kullanılmaya elverişli bir programlama dili idi. Programlarının görüntüsel benzerliğinden başka aralarında bir ilişki yoktu. Kullanıcı ise, güçlü JavaScript programlama dilini, Java programlama dilinin yeteneksiz bir alt türevi olarak algıladı. Bu yanlış anlamanın etkileri günümüzde bile devam etmektedir.

JavaScript Netscape şirketinin patentli bir ürünüdür. Standart ve geliştirmesini Netscape şirketi (günümüzde Mozilla Org.) yapmakta ve Mozilla türevlerinden başka hiçbir belge çözümleyicisi tarafından desteklenmemektedir.

JavaScript ilk 1.1 sürümünden sonra sürekli geliştirilmiş ve yeni sürümleri çıkartılmıştır. Aşağıdaki tablo bu gelişimi belirtmektedir.

JavaScript Sürümleri
JavaScript Sürümü Navigator Sürümü Tarih
JavaScript 1.1 Navigator 2.0 15 Aralık 1994
JavaScript 1.1 Navigator 3.0 19 Ağustos 1996
JavaScript 1.2 Navigator 4.0-4.05 Haziran 1997
JavaScript 1.3 Navigator 4.06-4.7x 17 Ağustos 1998
JavaScript 1.4 belli değil belli değil
JavaScript 1.5 Navigator 6.0
Mozilla 0.6x-0.9x
(açık kaynak)
Kasım 2000
JavaScript 1.6 Mozilla Firefox 1.5 Kasım 2005
JavaScript 1.7 Mozilla Firefox 2 Ekim 2006

Bu sürümler arasında, özellikle Netscape Navigator 3.0 sürümünde desteklenen JavaScript 1.1 dikkat çekicidir. Bu sürümün içerdiği, belge elementlerine erişim için kullanılan Belge Nesne Modeli (DOM) , W3C-DOM Düzey 1 standardından önce oluşturulduğundan, DOM Düzey 0 olarak tanımlanır ve günümüzde de hem IE hem de FireFox tarafından desteklenir.

Microsoft, 1996 da Netscape Navigator 3.0 dan yaklaşık 3 ay sonra çıkardığı Microsoft Internet Explorer (MSIE) de patent çekincelerinden dolayı, birçok bakımdan JavaScript'in tıpa tıp benzeri JScript programlama dilini çıkarmıştır. Bu karar, ileride ağırlaşacak belge çözümleyiciler arası uyumsuzlukların ilk işaretlerinden biridir.

Aynı yıl, Netscape, Yazılım standartlaşması konusunda deneyimli, İsviçrede bulunana Avrupa Bilgisayar Üreticileri Birliğine başvurarak JavaScript programlama dilinin standartlaşmasını istedi. Bu istek kabul edildi ve 1997 de ECMA-267 adı ile ilk JavaScript standardı oluşturuldu. Bu standart, küçük bazı nokatalar dışında, JavaScript'in tümünü kapsamaktadır. Yine de ECMA-262, JavaScript programlama dilinin bir alt kümesi olarak tanımlanmaktadır. Bu standart, 1999 da ECMA-262 üçüncü sürüm ile önemli bir ilerleme kaydetmiştir. O günden beri geçerliğini korumaktadır. Bu spesifikasyon, aynı zamanda ISO/IEC 16262 olarak ISO standardı olarak tescil edilmiştir. Bu standarda, 2005 yılı aralık ayında, XML eklentilerini içeren ECMA-367 (ikinci sürüm) ISO/IEC 22537 standardı eklenmiştir. Bundan başka XML için JavaScript bileşen standardı ve bir JavaScript kompakt alt kümesi standartları da vardır. Esas olan ECMA-262 sürüm 3 dür ve gerek MSIE, gerekse FireFox bu standartları gayet iyi desteklemektedirler. İyi destekleyenlerden birisi de, LINUX işletim sisteminin Konqueror belge çözümleyicisidir. Bu çalışma kapsamında da, yazılan programların ortak olarak desteklenmesi amacı ile, ECMA-262 sürüm 3 standardına bağlı kalınacaktır. Şu anda, ECMA-262 (4 üncü sürüm) hazırlanmaktadır. Brendan Eich'ın üzerinde çalıştığı, JavaScript 2.0 bu standardın kapsamında olacaktır.

JavaScript programlama dili , üç kısımdan oluşmaktadır. Bunlar,

kısımlarıdır. ECMA-262 sadece CORE kısmını kapsamaktadır. BOM henüz hiç standartlaşmamıştır, DOM ise W3C tarafından standartlaştırılmıştır. Bugün W3C-DOM düzey 3 standartları olmasına karşın ancak DOM-Düzey 1 büyük bir kısmı ile ortak olarak desteklenebilmektedir.

1.1.8 - Belge Çözümleyicisi Savaşları

1998 yıllarında Netscape pazarın tek hakimi idi. Microsft bu alanın önemini geç anladı. Gerçekten, belge çözümleyicisinin bir adım sonrası işletim sistemi idi. Microsft´un tahtı kesin tehlikede idi. Bu yüzden bu alana tüm gücünü vererek girdi. İşletim sistemine bağlı olarak verdiği belge çözümleyicisi, Microsoft Internet Explorer ile sırası ile hem Java ve Javascript´i engelledi. Yerine koydukları VBScript ise hiçbir zaman yaygınlık kazanmadı. Bu arada web yazarları son derece zor günler yaşadılar. Tüm belge çözümleyiciler tarafından desteklenen web sitesi yazımı Kara Büyü gibi gizemli bir hale geldi. Sonuçta, bu süreç Ocak 1998 de açık kaynak Mozilla projesini başlatarak Netscape´in yarışı terketmesi ile sonuçlandı. Netscape 24 Kasım 1998 de AOL tarafından satın alınarak ticareti terketti. Mozilla projesi ise yoluna devam etti ve bugün Windows kullanıcılarının yaklaşık yüzde onunun kullandığı FireFox belge çözümleyicilerini üretmeye devam etmektedir. Belge çözümleyicisi savaşları artık geride kalmıştır. Her iki taraf da standartlara uymaya çalışmaktadır. Microsoft´un uyumsuz davranışları, ne yazık ki, Java ve JavaScript program dillerine çok fazla zarar vermiştir.

1.1.9 - Zaman Çizelgesi

Aşağıda bazı belge çözümleyicilerin sürümlerinin açıklanma tarilerini belirten bir zaman çizelgesi verilmektedir (kaynak: Wikipaedia)

Belge Çözümleyicileri Zaman Çizelgesi
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
1994 1.1* 1.1*
1995 1.1* 2.0
1996 3.0 3.0 2.0 2.0*
1997 3.0
Ocak
Şubat
Mart
Nisan
Mayıs
Haz 4.0
Temm
Ağustos
Eylûl
Ekim 4.0
Kasım
Aralık 3.0
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
1998 4.0
Ocak
Şubat
Mart
Nisan
Mayıs
Haz
Temm
Ağustos
Eylûl
Ekim 4.5
Kasım 3.5
Aralık
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
1999 4.5
Ocak
Şubat
Mart 5.0
Nisan
Mayıs
Haz
Temm
Ağustos
Eylûl
Ekim
Kasım
Aralık
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
2000
Ocak
Şubat
Mart 5.0**
Nisan
Mayıs
Haz 4.0
Temm 5.5
Ağustos
Eylûl
Ekim
Kasım 6.0
Aralık 5.0
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
2001
Ocak
Şubat
Mart
Nisan
Mayıs
Haz
Temm
Ağustos
Eylûl
Ekim 6.0
Kasım 6.0
Aralık
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
2002
Ocak
Şubat
Mart
Nisan
Mayıs
Haz
Temm
Ağustos 7.0
Eylûl 6.0 SP1 0.1*
Ekim 0.4
Kasım
Aralık 0.5
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
2003
Ocak 7.0
Şubat
Mart
Nisan
Mayıs 0.6
Haz 1.1*
Temm
Ağustos
Eylûl
Ekim 0.7
Kasım
Aralık
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
2004
Ocak
Şubat 0.8
Mart
Nisan
Mayıs
Haz 0.9
Temm
Ağustos 6.0 SP2
Eylûl 0.10 (1.1 PR)
Ekim
Kasım 1.1
Aralık
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
2005
Ocak
Şubat
Mart
Nisan 8.0 2.0
Mayıs 8.0
Haz
Temm
Ağustos
Eylûl 8.5
Ekim
Kasım 1.5
Aralık
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
2006
Ocak
Şubat
Mart
Nisan
Mayıs
Haz 9.0
Temm
Ağustos
Eylûl
Ekim 7.0 2.0
Kasım
Aralık 9.1
Yıl/Ay WinIE Netscape /Mozilla Opera Firefox MacIE Safari
Ocak

* İlk Sürüm

** Başka sürümlerin çıkartılması düşünülmüyor.

Valid XHTML 1.1