A Brief History of JavaScript
JavaScript was created by Brendan Eich at Netscape and first announced in a press release in 1995.
Around a decade ago, Jeff Atwood, the co-founder of Stack Overflow, predicted that JavaScript would become the future of programming with his “Atwood Law”: Any application that can be written in JavaScript will eventually be written in JavaScript. Fast forward to today, and this statement rings truer than ever, with JavaScript continuing to gain significant adoption across various domains.
The Birth of JavaScript
JavaScript was created by Brendan Eich at Netscape and first announced in a press release in 1995. Its naming history is quite unusual: initially named Mocha, it was later renamed LiveScript before finally becoming JavaScript. This name change in 1996 aimed to capitalize on the popularity of Java, despite JavaScript having no direct relation to the Java programming language. Netscape 2.0 was the first version to officially support JavaScript.
Standardization: ES1, ES2, and ES3
In 1996, Netscape submitted JavaScript to ECMA International for standardization. The first edition of the ECMAScript standard was released in 1997. Following this, further updates led to the release of ECMAScript 2 in 1998 and ECMAScript 3 in 1999, with the latter introducing significant enhancements.
A Decade of Silence and ES4
After ECMAScript 3 in 1999, a long silence ensued, lasting about a decade with no updates to the standard. During this time, discussions around ECMAScript 4 included ambitious features such as classes, modules, and static typing. However, due to political disagreements regarding language complexity, ES4 was ultimately abandoned. Meanwhile, browser vendors introduced their own extensions, causing developers to deal with compatibility issues through polyfills.
From Silence to ES5
In the wake of the ES4 debacle, Google, Microsoft, Yahoo, and other stakeholders joined forces to develop a more modest update known as ES3.1. The disagreements continued over what to include from ES4. Ultimately, ECMAScript 5 (ES5) was released in 2009, focusing on compatibility and security improvements. However, it took time for vendors to adopt the new standards, and many developers continued to use ES3.
The Release of ES6 (ECMAScript 2015)
A few years after ES5, TC39 (the committee responsible for ECMAScript standardization) began working on the next version, initially named ES Harmony. Released in June 2015 as ECMAScript 2015 (ES6), this version introduced significant features and syntactic enhancements for building complex applications, including:
- Classes and modules
- Arrow functions
- Enhanced object literals
- Template strings
- Destructuring
- Default and rest parameters
- Spread operator
let
andconst
declarations- Iterators and generators
- Promises
- New APIs for Math, Number, String, Array, and Object
Despite limited browser support, developers could use transpilers to convert ES6 code into ES5 for broader compatibility. Following this, TC39 adopted an annual release cycle to introduce new features as they were approved, ensuring that the language continued to evolve.
The Release of ES7 (ECMAScript 2016)
In June 2016, ECMAScript 2016 (ES7) was released, but it offered only two new features:
- Exponentiation operator (**)
Array.prototype.includes
The Release of ES8 (ECMAScript 2017)
June 2017 saw the launch of ECMAScript 2017 (ES8), which introduced key features such as:
Object.values()
andObject.entries()
- String padding methods (
padEnd()
andpadStart()
) Object.getOwnPropertyDescriptors
- Trailing commas in function parameter lists and calls
- Async functions
What is ESNext?
ESNext is a dynamic term referring to the latest version of ECMAScript at any given time. For example, at the time of writing, ES2017 (or ES8) is the current version referred to as ESNext.
Looking Ahead
Since the release of ES6, TC39 has streamlined its proposal process. The committee operates through a GitHub organization, encouraging community participation in submitting proposals for new features or syntax. Each proposal undergoes four stages of maturity before being included in the official specification.
And that wraps up this brief history of JavaScript! Feel free to leave your feedback or questions in the comments. You can also explore the original language specifications for ES6, ES7, and ES8 for more detailed information.