learn react ui logoLearnReactUI
JavaScript'in Tarihsel Gelişimi

JavaScript’in Tarihsel Gelişimi

1.1. Başlangıç

JS Tarihsel Gelişimini 2 kısma ayırabiliriz.

  • Birincisi: JavaScript’in Tarayıcılar içerisinde var olmaya çalıştığı Tarayıcılar Dönemi.
  • İkincisi: Node.JS ile birlikte JavaScript’in tarayıcıların dışarısına çıkıp sunucular da, masaüstünde çalışabilir hale geldiği ve EcmaScript 5’ten sonraki ES6,ES7,ES8,ES9,ES10,ES11,ES12 dönemleri

1.2 Birinci Dönem: 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 kullanımları yavaş yavaş ortadan kalktı.

1.3. İkinci Dönem: ES Dönemi (ES5, ES6,ES7, ES8, ES9, ES10, ES11, ES12)

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. ES6 yani 2015 yılında çıkarılan JS dili yenilikleri oldukça farklı ve dili ileriye götüren yeniliklerdi.

Aşağıda EcmaScript versiyonlarına göre JS dilinde yer alan gelişmeleri listeledim;

1.3.1 ES6 (2015 yılı)

  • let and const
  • Arrow Functions
  • Classes
  • Default Parameters
  • Template Literals
  • Destructing Assignments
  • Enhanced Object Literals
  • For-of Loop
  • Promises
  • Spread operator
  • Set/Map
  • Generators

1.3.2 ES7 (2016 yılı)

  • Array.prototype.includes
  • Exponentiation operator (**)
  • Array.prototype.find and Array.prototype.findIndex
  • Object.getOwnPropertyDescriptors

1.3.3 ES8 (2017 yılı)

  • String padding
  • Object (values,entries)
  • Async Functions
  • Shared Memory And Atomics

1.3.4 ES9 (2018 yılı)

  • Async Iteration
  • Rest/Spread
  • Promise.prototype.finally
  • Regular Expression Improvements

1.3.5 ES10 (2019 yılı)

  • Array (flat, flatMap)
  • Object (fromEntries)
  • Optional catch binding
  • String (trimStart, trimEnd)
  • Symbol (description)
  • stable Array (sort)
  • Well-formed JSON (stringify)
  • Static Field

1.3.6. ES11 (2020 yılı)

  • BigInt
  • Dynamic import
  • Nullish Coalescing
  • Optional Chaining
  • Promise.allSettled
  • String#matchAll
  • globalThis
  • Module Namespace Exports
  • Well defined for-in order
  • import.meta
  • private fields(#)

ES11 ile ilgili yeniliklerin neler olduğunu bu blog yazısından detaylı bir şekilde okuyabilirsiniz.

1.3.7 ES12 (2021 yılı)

  • Numeric Separators
  • String.prototype.replaceAll
  • Promise.any() and AggregateError
  • Logical Assignment Operators
  • Private Class Methods and Accessors

1.3.7 ES13 (2022 yılı)

  • 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

Not: Devamı yani 2015 yılından itibaren tüm EcmaScript (JavaScript) güncellemelerinin ne olduğunu detaylı örnekler ile öğrenebilmek için LearnReactUI.dev ‘den E-Kitap pdf indirebilirsiniz.