Daha World Wide Web fikri ortaya çıkmadan, “Netscape” yazılım ekibinden “Brendan Eich”, Eylül 1995’te yaklaşık 10 günlük bir sürede ileriki zamanlarda “LiveScript”, günümüzde “Javascript” olarak tanıdığımız script dilini geliştirmiştir. O zamanlar bu script diline Netscape yazılımının navigatör özelliği için ihtiyaç duyulmuş, Netscape’in kendi web tarayıcısındaki Java desteğinden dolayı Livescript’in adı sonralardan Javascript olarak güncellenmiştir.
Brendan Eich
Belirttiğim gibi Javascript, Netscape’in kendi web tarayıcısındaki Java desteğinden dolayı bu isme sahiptir fakat başka bir açıdan da bakmak gerekiyor. Livescript’in ortaya çıktığı yıllarda Java programlama dili popüler olduğundan dolayı Livescript’in imajını bir üst seviyeye çıkarmak için biz buna artık Javascript diyelim denmiştir. Tabii ki uzun bir zaman sonra Javascript Java’dan bile daha popüler bir programlama dili haline gelmiş ama adında bir değişiklik yapılmamıştır.
Javascript günümüzde birçok framework bir başka ifade ile hazır olarak kullanılabilecek kütüphaneye sahip olduğu için eskiye göre kullanımı daha da kolaylaşmış, ayrıca web sayfa geliştiricilerinin iş üretim hızını bir üst noktaya taşımış, bunlarla da kalmayarak web sayfaların daha güvenli bir hale gelmesine katkılar sağlamıştır. İşte bu frameworklerden arındırılmış bir şekilde Javascript yazmaya başladığınızda yazdıklarınız Vanilla Javascript olarak adlandırılır.
Birkaç örnek vermek gerekirse…
İlk olarak class değeri “my-pg” olan bir p yani paragraf oluşturduk. Ve ekrana “Hello World!” yazdırmak istedik. Web tarayıcınızda bu kodları çalıştırdığınızda Hello World yazıldığını görmeyi umabilirsiniz fakat yazdığımız küçük “Vanilla Javascript” sayesinde paragrafın içeriğini “This is going to be printed!” yaparak ekrana yazılacak değeri değiştirmiş olduk.
Ta da…
Peki bunu bir framework kullanarak nasıl yapardınız?
Gelin beraber “jQuery” kütüphanesini kullanarak aynı sonucu elde edelim.
Hadi başlayalım! Öncelikle jQuery kütüphanemizi HTML dosyamıza dahil etmemiz gerekiyor (head etiketi içerisinde bu işi hallettik). Sonra jQuery’de bir seçici ($) kullanarak paragraf etiketinin sahip olduğu sınıf adı ile birtikte ilgili HTML elemanına erişiyoruz. Bundan sonrası p objesine bağlı text fonksiyonunu çağırarak paragrafın içeriğini değiştiriyoruz. Bütün aşamaları uyguladığınızda Vanilla Javascript ile aldığımız sonucun aynısını göreceksiniz.
Kısaca bir web sayfasını açtığınızda neler olduğundan bahsedeyim. Bir web tasarım açtığınızda HTML, CSS, Javascript, ilgili imajlar ve birçok farklı dosya çalıştırılmak ya da görüntülenmek üzere yüklenir. Bütün bu işlemler “execution environment” yani web tarayıcınızın bir tabinde gerçekleşir. Bu işlemler bir kek yapmak için sıfırdan malzemeleri hazırlamak ve sonunda ortaya bir ürün çıkarmaya benzer.
Her web sayfasının kendine özel bir “execution environment”ı vardır. Bu durum web sayfaların birbirinden bağımsız bir şekilde çalışmasına olanak sağlar. Böylelikle çeşitli güvenlik sorunlarının önüne geçilmiş olur. Tabii ki bahsettiğimiz durum web sayfaların birbirleriyle iletişim kuramadıkları anlamına gelmez fakat bu makalede bu konuyla ilgilenmeyeceğiz.
Javascript, hafif yapıdaki bir programlama dilidir. Modern Javascript derleyiciler, “just-in-time compiling” adını verdikleri bir metod ile hali hazırda çalışan scriptleri “binary” yani makinelerin daha hızlı çalıştırabildiği bir formata dönüştürerek web sayfaların Javascript’ten dolayı yavaşlamasını engeller. Bu derleme sürecinin aksine Javascript günümüzde halen bir yorumlanan (interpreted) dil olarak kabul edilir. Bunun sebebi derlemenin kodlar çalıştırmadan önce değil, kod çalışıyor olduğu zamanda (run time) yapıldığı içindir.
Interpreted programlama dilleri, bir compiled programlama dilinin üzerine inşa edilmiştirler ve daha basit yapıdadırlar. Fakat derlenen dillerden daha az performasa sahiptirler. Yorumlanan diller, makine dili formatına dönüştürülmeden çalıştırılırlar.
Compiled programlama dilleri ise derleme işlemine tabi tutularak makinelerin anlayabileceği talimatlara bir başka ifade ile daha önceden tanımlanmış kod bloklarına dönüştürülürler.
Yorumlanan bir dil kullanarak yazılmış programlar, her çalıştırılmak istendiğinde tekrar tekrar yorumlanır fakat derlenen bir programlama dili ile yazılanlar ise bir kez derlenir ve bir daha başka bir işleme ihtiyaç duymazlar. Böylelikle daha hızlı bir şekilde çalıştırılırlar.
Javascript’in yapısı ve her yazılım geliştiricinin farklı tercihlerinden dolayı JS bazen tercih edilmiyor olabiliyor. Bu ve bunun gibi ihtiyaçlardan yola çıkarak Javascript mimarisi üzerine yeni yeni diller geliştirilmiştir ve kullanıma sunulmuştur. Bu dillerden bazıları: CoffeeScript, TypeScript, Flow, Dart… Bu dillerin temeldeki çalışma prensibine bakacak olursak, kendi dil kuralları çerçevesinde yazılanları daha çalıştırmadan Javascript’e dönüştürdüklerini görürüz. Böylelikle Javascript yazmıyor olsak bile o teknolojiden faydalanmış oluyoruz.
Ve bunlar gibi birçok alanda da karşımıza çıkar.