Bakalım JavaScript nedir, ne yapılır ve hangi teknolojilerle birlikte çalıÅır.
JavaScript Nedir?
JavaScript, ilk baÅta âweb belgelerine canlılıkâ getirmek için oluÅturulmuÅtur.
Bu dilde yazılan kod kümelerine betik denir. DoÄrudan HTML kodu içerisine yazılıp sayfa yüklendiÄinde doÄrudan çalıÅabilir.
Komutlar herhangi bir derleme ve hazırlıÄa gereksinim duymadan doÄrudan çalıÅırlar.
Bu yönden bakınca JavaScript diÄer dillere kıyasla oldukça farklıdır. Bkz: Java.
JavaScript ilk yazıldıÄında, baÅka bir adı vardı: âLiveScriptâ. Ancak Java dili o dönemlerde çok ünlü olduÄundan dolayı yeni bir dil ve âküçük kardeÅâ gibi görünmesi açısından JavaScript olarak deÄiÅtirildi.
Ancak JavaScript geliÅerek kendince yönergeleri ECMAScript olan baÄımsız bir dil haline geldi. Åu anda Java ile hiçbir ilgisi bulunmamaktadır.
Günümüzde JavaScript yalnızca aÄ tarayıcıda deÄil, sunucuda veya JavaScript motoru olan her yerde çalıÅmaktadır.
Tarayıcılar bu JavaScript motoru gömülü bir biçimde gelirler. Bu ayrıca âJavaScript sanal makinesiâ olarak da adlandırılır.
Bu JavaScript motorlarından bazıları Åunlardır;
- V8 â Chrome ve Opera.
- SpiderMonkey â Firefox.
- Internet Explorerâın âTridentâ, âChakraâ takma adlı motorlarının yanında Microsoft Edge için âChakraCoreâ adında ayrı bir motoru bulunmaktadır. Safari ise âNitroâ, âSquirrelFishâ ve âSquirrelFish Extremeâ gibi takma adlarla adlandırılan JavaScript motorunu kullanmaktadır.
Yukarıdaki terimleri aklınızda tutarsanız iyi olur, çünkü ileride Åu tür tümcelerle karÅılaÅabilirsiniz: âV8âde A özelliÄinin altyapısıâ, âBu özelliÄin altyapısının Chrome ve Operaâda bulunduÄunu anlamanız gerekir.â
Motorlar çok karmaÅık yapılardır. Ancak kolay ögelere dayanırlar.
- EÄer bu motor tarayıcıya gömülmüŠise yazılan JavaScript kodlarını ayrıÅtırır.
- Sonra bu kodları makine diline çevirir.
- Makine bu kodları çok hızlı bir biçimde çalıÅtırır.
Motor bu sürecin her bir adımında iyileÅtirme yapar. Hatta derlenmiÅ ve çalıÅır durumda bulunan kodlardaki veri yapılarını inceler ve bunları iyileÅtirerek daha hızlı duruma getirir. Sonuç olarak yazılan bu kodlar çok hızlı bir biçimde çalıÅır.
Tarayıcı içerisindeki JavaScript neler yapabilir?
Günümüz JavaScriptâi âgüvenliâ bir programlama dilidir. DüÅük düzeydeki diller gibi bellek veya iÅlemciye doÄrudan eriÅim saÄlamaz. Tarayıcı için olduÄundan dolayı böyle bir Åeye gereksinim duymaz.
JavaScriptâin yapabilecekleri büyük bir oranda ortama dayanır. ÃrneÄin Node.JS, JavaScript iÅlevleri ile dosyaları okuma, yazma veya aÄ Ã¼zerinden isteme iÅlemlerini yapabilir.
Tarayıcı içerisindeki JavaScript ise web sayfasında görsel deÄiÅikliklere ve kullanıcı ile sunucu arasındaki etkileÅimle ilgili her Åeyi yapabilir.
ÃrneÄin tarayıcı içerisindeki JavaScript Åunları yapabilir:
- Sayfaya yeni HTML kodları ekleme veya öncekileri deÄiÅtirme, stilleri deÄiÅtirme veya ekleme.
- Kullanıcının eylemlerine karÅılık verme. Tıklama veya fare imlecinin hareketine göre iÅlem yaptırabilme.
- AÄ Ã¼zerinden talep gönderebilme. Dosya yükleme veya indirebilme ( buna AJAX ve COMET teknolojileri denir )
- Tarayıcıdaki çerezleri silme, ekleme veya düzeltme iÅlemlerinin yapılması. İleti gösterilmesi.
- Kullanıcı tarafında verilerin saklanması (âlocal storageâ)
Tarayıcı içerisinde bulunan JavaScript ne yapamaz?
Tarayıcı içerisinde bulunan JavaScript kullanıcı güvenliÄi amacıyla sınırlandırılmıÅtır. Amaç zararlı web sitelerinin özel bilgilere eriÅip kullanıcıya zarar vermesini engellemektir.
Bu engellemeleri Åu biçimde sıralayabiliriz :
-
Web sayfasında çalıÅan JavaScript dosyalara eriÅim saÄlayamaz, saklama alanınızda bulunan programları kopyalayamaz veya çalıÅtıramaz. İÅletim sisteminizin fonksiyonlarına doÄrudan eriÅimi yoktur.
Günümüz tarayıcıları dosyalarla çalıÅmanıza izin verebilir. Ancak bu izin oldukça sınırlıdır. ÃrneÄin, yalnızca dosyayı tarayıcıya taÅıyıp bırakabilirsiniz veya
<input>kullanarak dosyayı seçebilirsiniz.Her zaman kullanıcıyla kamera veya mikrofon vasıtasıyla veya diÄer aygıtlar aracılıÄıyla etkileÅime geçebilirsiniz. Ancak kullanıcının kesin iznini almanız gerekir. Dolayısıyla bir web sayfası JavaScript ile gizliden sizin web kameranızı izleyemez veya çevrenizde bulunanlar hakkında bilgi alamaz. NSA
-
Farklı sekmeler birbiri ile iletiÅime geçemez ve bilgi alıÅveriÅi yapamazlar. Bazı sitelerde aynı sekmeler iletiÅimde bulunabilir, örneÄin bir sekmeden JavaScript ile diÄer sekmeyi açabilirsiniz. Bu durumda bile, bir sayfa diÄerinden farklı alan adı, kural veya kapılarda ise eriÅemez.
Bu olaya âSame Origin Policyâ (Aynı kaynak kuralı) denir. Bunu çözmek için her iki sayfa özel bir JavaScript kodu ile birbirlerini onaylamalıdır. Bu engellemeler yine kullanıcının güvenliÄi içindir. Kullanıcının açtıÄı
http://example.comsitesi diÄer sekmede bulunanhttp://example.orgsitesinden bilgi çalamamalıdır. -
JavaScript kolayca bulunduÄu sayfadan veri alabilir. Ancak baÅka site veya alan adlarından veri alması sorunludur. Olanaklı olmasına karÅın her iki yanın onayı gereklidir. Yine, bunun nedeni güvenlik sınırlarıdır diyebiliriz.
Bu sınırlar, tarayıcı dıÅında kullanıldıÄında ortadan kalkar. ÃrneÄin, sunucular daha geniÅ yetkilere sahiptir.
JavaScriptâi eÅsiz yapan nedir ?
JavaScriptâi eÅsiz yapan en az 3 neden vardır:
- HTML/CSS ile tamamen bütünleÅik çalıÅması.
- Basit Åeyler basitçe yapılır.
- Tüm önemli tarayıcılarda çalıÅır ve ön tanımlı olarak etkindir.
JavaScriptâten baÅka bu üç özelliÄi taÅıyan hiçbir tarayıcı teknolojisi yoktur.
JavaScriptâin eÅsiz olma nedeni budur ve bu yüzden web sayfaları geliÅtirmekte kullanılan en yaygın araçtır.
Yeni bir teknolojiyi öÄrenmeye baÅlarken, sunacaÄı avantajlar için öngörü önemlidir. Bu sebeptendir ki, yeni diller ve tarayıcı yetkinlikleri içeren bu yönelimlere ayak uydurmalıyız.
JavaScriptâe üstün diller
JavaScriptâin söz dizimi ve yazımı herkese uymayabilir. Her yiÄidin yoÄurt yiyiÅi farklıdır.
Bu olaÄan bir durum, çünkü tasarımlar ve gereksinimler kiÅiden kiÅiye göre deÄiÅir.
Bundan dolayı yakın zamanda bir sürü yeni transpiled yani çevirilmiÅ diller türemiÅtir. Bu diller, çalıÅtırılmadan önce JavaScriptâe çevriliyor. Günümüz araçları bu çeviri iÅini çok hızlı bir biçimde yapmaktadır. Gerçekte, doÄrudan âsiz yazarken bileâ çevirme iÅini yapıp bu yeni dosyayı kullanılabilir duruma getirirler.
Bu dillere örnek vermek gerekirse:
-
CofeeScript JavaScript için âÅeker yazımâ denebilecek bir dildir. Yazılımı daha kısadır ve daha temiz kod yazmaya yardımcı olur. Genellikle Ruby geliÅtiriciler bunu sever.
-
Typescript duraÄan veri yapıları ile JavaScript yazılmasını saÄlar. KarmaÅık programlar geliÅtirmeyi kolaylaÅtırır. Microsoft tarafından geliÅtirilmiÅtir.
-
Dart kendi baÅına ayrı bir dildir. Tarayıcı üzerinde veya telefon uygulamalarında kendi motoru üzerinden çalıÅtırılır. Googleâın tarayıcılarda JavaScript yerine Dartâı önermiÅ olmasına karÅın, bugünlerde JavaScriptâe çeviri yapılarak kullanılmaktadır.
Bunlara daha fazla örnek eklenebilir. Yukarıdakileri bilseniz bile ne yaptıÄınızı tam olarak anlamak için JavaScript bilmelisiniz.
Ãzet
- JavaScript baÅlangıçta yalnızca aÄ tarayıcılarında kullanılmak üzere geliÅtirilmiÅ bir dildi. Ancak günümüzde, birçok çevrede çalıÅabilir durumda.
- JavaScript Åu anda HTML/CSS ile bütünleÅik olmasından ve geniÅ uyumluluÄundan dolayı benzersizdir.
- Birçok JavaScriptâe çevirici dil bulunmaktadır. JavaScriptâi iyi bir biçimde öÄrendikten sonra bu dillere de bir bakmanızı öneririz.
Yorumlar
<code>kullanınız, birkaç satır eklemek için ise<pre>kullanın. EÄer 10 satırdan fazla kod ekleyecekseniz plnkr kullanabilirsiniz)