1995년, 넷스케이프 커뮤니케이션즈(Netscape communications)
웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하다.
자바스크립트의 탄생 뒤 파생 버전인 JScript가 출시되었다.
마이크로소프트에서 이 JScript를 사용하여 '인터넷 익스플로러 3.0'에 탑재한다.
그런데 여기서, JScript 와 자바스크립트가 표준화되지 못하고 적당히 호환되는 문제가 발생한다. 넷스케이프 커뮤니케이션즈와 마이크로소프트가 서로 자사 브라우저의 시장 점유율을 높이기 위해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가하기 시작했던 것이다.
이로 인해 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했고, 모든 브라우저에서 정상적으로 동작하는 웹페이지 개발이 어려워졌다.
이를 위해 1996년, 넷스케이프 커뮤니케이션즈는 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구 'ECMA 인터내셔널'에 자바스크립트의 표준화를 요청한다.
1997년, 'ECMA-262'라 불리는 표준화된 자바스크립트 초판이 완성되었고, 상표권 문제로 자바스크립트는 ECMAScript로 명명되었다. 1999년 ECMASCript3(ES3)이 공개되고, 2009년 출시된 ECMAScript5(ES5)는 HTML5와 함께 출현한 표준사양이다.
그리고 2015년 공개된 ECMAScript 6(ES6)은, 범용 프로그래밍 언어로서 갖춰야 할 기능들을 대거 도입하는 큰 변화가 이뤄졌다.
초창기 자바스크립트는 웹페이지의 보조적인 기능을 수행하기 위해 한정적인 용도로 사용되었다.
이 시기 대부분의 로직은 주로 웹 서버에서 실행되었고, 브라우저는 완전한 HTML 코드를 서버로부터 전송받아 웹페이지 전체를 렌더링하는 방식으로 동작했다.
화면이 전환되면 서버로부터 새로운 HTML을 받아 웹페이지 전체를 처음부터 다시 렌더링해야했기에, 변경할 필요가 없는 부분까지 렌더링해야 하는 점으로 성능면에서 불리했다.
1999년, 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능인 'Ajax'(Asynchronous JavaScript And XML)가 'XMLHttpRequest'라는 이름으로 등장했다.
비동기 : 특정 코드가 끝날 때까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하는 것을 의미한다.
Ajax의 등장으로, 웹페이지에서 변경할 필요가 없는 부분은 다시 렌더링하지 않고,
서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 렌더링하는 것이 가능해졌다. (빠른 성능과 부드러운 화면전환)
JQuery : HTML 속 클라이언트 사이드 스크립트 언어를 단순화하도록 설계된 브라우저 호환성이 있는 JavaScript 라이브러리
2006년 JQuery의 등장으로, 다소 번거롭고 논란이 있던 DOM을 더욱 쉽게 제어할 수 있게 되었고 크로스 브라우징 이슈도 어느 정도 해결되었다.
웹 애플리케이션 프로그래밍 언어로서의 가능성이 확인된 자바스크립트로 웹 애플리케이션을 구축하려는 시도가 늘면서 더욱 빠르게 동작하는 자바스크립트 엔진의 필요성이 대두되었다.
2008년 등장한 구글의 V8 자바스크립트 엔진은 이러한 요구에 부합하는 빠른 성능을 보여주었다.
V8 자바스크립트 엔진은 웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진이다.
이로서 자바스크립트는 데스크톱 애플리케이션과 유사한 사용자경험 (UX)을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 정착하게 되었다.
2009년 라이언 달이 발표한 Node.js는 구글의 'V8 자바스크립트 엔진'으로 빌드된 자바스크립트 실행 환경이다.
Node.js : 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행(런타임) 환경이다.
Node.js의 등장으로 자바스크립트는 범용 프로그래밍 언어가 되었다.
이제 자바스크립트는 크로스 플랫폼을 위한 가장 중요한 언어로 주목받고 있다.
모던 웹 애플리케이션은 데스크톱 애플리케이션과 비교해도 손색없는 성능과 사용자 경험을 제공 하는 것이 필수가 되었고, 더불어 개발 규모와 복잡도도 상승했다.
이전의 개발 방식으로는 복잡해진 개발 과정을 수행하기 어려워지며,
이에 따라 많은 패턴과 라이브러리가 출현했다. 또한 필연적으로 프레임워크가 등장하게 되었다.
이러한 요구에 발맞춰 CBD 방법론을 기반으로 하는 SPA가 대중화되면서 Angular, React, Vue.js, Svelte 등 다양한 SPA 프레임워크/라이브러리 또한 많은 사용층을 확보하고 있다.
ECMAScript는 자바스크립트의 표준 사양인 ECMA-262를 말하며
프로그래밍 언어의 값, 타입, 객체와 프로퍼티, 함수, 표준 빌트인 객체 등 핵심 문법을 규정한다.
각 브라우저 제조사는 ECMAScript 사양을 준수해서 브라우저에 내장되는 자바스크립트 엔진을 구현한다.
자바스크립트는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이드 Web API (DOM, BOm, Canvas..)를 아우르는 개념이다.
자바스크립트 ⊃ ECMAScript
자바스크립트는 HTML, CSS와 함께 웹을 구성하는 요소 중 하나로
웹 브라우저에서 동작하는 유일한 프로그래밍 언어다.
자바스크립트는 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어다.
자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다.
출처 : 이웅모, 『모던 자바스크립트 deep dive』, 위키북스(2020), p6-16.