Kısaca JS
JavaScript’in Tarihçesi
Tarayıcılar Dönemi (Json, Ajax, JQuery vb), ES Dönemi (ES5, ES6,ES7, ES8, ES9)
Başlangıç
Bence JS Tarihçesini 2 kısma ayırmak lazım.
- Birincisi JavaScript’in Tarayıcılar içerisinde var olmaya çalıştığı Tarayıcılar Dönemi.
- İkincisi de Node.JS ile birlikte JavaScript sunucularla başlayan yolculuğuna artık her yerde çalışır hale geldiği ES5,ES6,ES7,ES8,ES9 Dönemi.
Tarayıcılar Dönemi
Brenden Eich: JavaScript dilini ilk geliştiren kişi. 1995 yılında Netscape şimdiki adı ile Mozilla’da çalışırken bu dili oluşturdu. İsmi zaman içerisinde Mocha → LiveScript → JavaScript olarak güncellendi.
Doug Crockford: 2002 yılında JSON(JavaScript Object Notation) geliştirildi. XML özel bir formatı olan bu format hem javascript direk dil içerisinde desteklemesi hemde sunucu ile iletişimde temel oluşturmaktadır.
Jesse James Garrett: 2005 yılında yayınladığı bir makalede Ajax tanımladı. Bu sunucu ile olan async iletişim yöntemi web uygulamasının temelindeki iletişimi oluşturmaktaydı.
John Resig: 2006 yılında JQuery kütüphanesini geliştirdi. Bu Prototype, Dojo, Mootools gibi kütüphanelerin popüler olduğu tüm tarayıcı farklılıklarını ortadan kaldıracak bir soyutlama ile geliştiricilere sunan kütüphanelerdi.
HTML5: Flashın sonu Steve Jobs ve Mark Zuckerberg gibi teknoloji geliştiricilerinin Flash cihazlarındaki tarayıcılarda desteklemeyeceklerini ve geleceğin HTML5, CSS3 ve JavaScript de olduğunu söylemeleri ile JavaScript için bir kırılım daha yaşanmış oldu. Bunun ile birlikte başlayan akımla tarayıcılarda çalışan tüm pluginler yok oldu. Java’nın Applet ve JavaFX, Adobe Flash, Microsoft Silverlight
ES Dönemi (ES5, ES6,ES7, ES8, ES9)
Ryan Dahl 2009 yılında NodeJS geliştirdi. V8 Engine yani Chrome’un JavaScript derleyicisi forklayarak oluşturulan bu altyapı JS bir sunucu olarak çalıştırılmasını yani tarayıcı dışarısında çalışmasına imkan verdi. Ve bu andan itibaren JS heryerde çalıştırılmaya başlandı. Artık kendisini var eden tarayıcıya sığmayarak her yerde var olmaya başladı ve komiteyle hiç durmadan büyümeye başladı. İhtiyaçlarda farklı olmaya başladı. Bu farklılaşma ile birlikte dilde bir evrim ile baştan tasarlanmaya başladı.
EcmaScript (ES): JavaScript’in temelini oluşturan standarttır. Ve ilk olarak Tarayıcılar üzerinde çalışan bir dil olarak ortaya çıktığı için ilk çıkışında bu standart içerisinde Flash’ın ActionScript, Microsoft’un JScript barındırmaktaydı. Fakat sonrasında diğer dillerin iyi özellikler JavaScript eklenerek kendileri ortadan kalktı.
TC39: ES Geliştirmekten sorumlu olan komite içerisinde Tarayıcı geliştiricileri ve Web ile ilgili önemli şirketlerden birçok üyesi bulunmaktadır.
Versiyon: Her sene genelde Haziran ayında ES yeni bir versiyonu çıkıyor ve her sene bir sonraki numarayı alarak isimlendiriliyor Örneğin 2015 yılında duyurulan dil özellikleri ES6 , 2016 çıkarılan dil özellikleri ES7 yani bu yıl 2019 çıkan dil özellikleri ES10 olarak isimlendirilmektedir.
Aşağıda EcmaScript versiyonlarına göre JS dilinde yer alan gelişmeleri listeledim;
ES6 (ES2015)
- let and const
- Arrow Functions
- Classes
- Default Parameters
- Template Literals
- Destructing Assignments
- Enhanced Object Literals
- For-of Loop
- Promises (Non-block I/O , Callback, Async, EventEmiter , EventLoop, Promise)
- Modules (ES6 Modules, NPM)
- New String/Object methods
- Spread operator
- Set/Map
- Generators
ES7 (ES2016)
ES8 (ES2017)
- String padding
- Object (values,entries,getOwnPropertyDescriptors)
- Trailing commas
- Async Functions
- Shared Memory And Atomics
ES9 (ES2018)
- Rest/Spread
- Async Iteration
- Promise (finally)
- Regular Expression Improvements
ES10 (ES2019)
- Array (flat, flatMap)
- Object (fromEntries)
- Optional catch binding
- String (trimStart,trimEnd)
- Symbol (description)
- stable Array (sort)
- revised Function (toString)
- Well-formed JSON (stringify)
ES11 (ES2020)
- BigInt
- Dynamic import
- Nullish Coalescing
- Optional Chaining
- Promise.allSettled
- String#matchAll
- globalThis
- Module Namespace Exports
- Well defined for-in order
- import.meta
ES11 ile ilgili yeniliklerin neler olduğunu bu blog yazısından detaylı bir şekilde okuyabilirsiniz.
ES12 (ES2021)
- Numeric Separators
- String.prototype.replaceAll
- Promise.any() and AggregateError
- Logical Assignment Operators
- Private Class Methods and Accessors
ES13 (ES2022)
- Await operator at the top-level
- Class field declarations
- Private methods and fields
- Static class fields and private static methods
- Regexp Match Indices
- Ergonomic brand checks for private fields
- .at() function for Indexing
- Temporal function
EKSTRA NOT:
Bu yazıyı 2019 yılında yazmışım ve JavaScript’in 2014 ve 2015 den sonra ciddi bir ivme ile büyümeye devam ediyor. Bu büyüme sadece dilin içerisine eklenen özellikler ile değil ekosistem de olan değişim ve gelişim ile birlikte anlatmak gerekiyor. Bu konu hakkında State Of JS sitesi oldukça başarılı bir web sayfası, anketler üzerinden sektörün nasıl ve ne yönde geliştiği hakkında istatistikler paylaşıyor.
Ben bu istatistikler üzerinden bir takım analizler yaparak yazmış olduğum yazıları aşağıda paylaşıyorum.
2022 Analizlerim
2021 Analizlerim
- 2021'de Frontend Alanında Öne Çıkan Kavramlar
- 2021'de Anlamakta Zorlandığım Kavramlar
- 2021 Geleceğin Programlama Dili JS Mi ?
- 2021 GitHub’da En Yüksek 50 JS Reposu
2020 ve Öncesi Analizlerim
- 2020 JS Kütüphaneler Periyodik Cetveli
- 2019 Frontend Araçları, Kütüphaneleri
- 2018 Javascript Durumu ve Geleceği
Faydalanılan Kaynaklar
- W3.org
- Flavio Copes JavaScript ES5 to ES Next
- 10 New JavaScript Features in ES2020
- Top 5 JavaScript ES12 Features
- New JavaScript Features in ES2022
- State Of JS
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.