1995년 넷스케이프 커뮤니케이션즈에서 정적인 HTML을 동적으로 표현하기 위해 경량의 프로그래밍 언어를 도입하고자 하면서 브랜던 아이크(Brendan Eich)가 개발한 자바스크립트를 도입하게 되었다.
1996년 3월 처음 "Mocha"라는 이름을 통해 Netscape Navigator2 웹 브라우저에 탑재되었고, 9월에 "LiveScript"로 이름이 변경되었고, 12월에는 "JavaScript"로 명명되었다.
자바스크립트의 파편화와 표준화
1996년에는 마이크로소프트에서 자바스크립트이 파생 버전인 "JScript"를 IE(인터넷 익스플로러)3.0에 탑재하였는데 JScript와 자바스크립트가 표준화 되지 못한 상태에서 각 브라우저에서만 동작하는 기능들을 경쟁적으로 추가하면서 브라우저에 따라 웹 페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했다.
이 때문에 모든 웹 브라우저에서 동작하는 웹 페이지를 개발하는게 어려워지면서, 자바스크립트의 표준화에 대한 필요성이 제기되기 시작했다. 1996년 11월, 넷스케이프 커뮤니케이션즈가 ECMA 인터내셔널에 자바스크립트의 표준화를 요청하였고, 1997년 7월에 ECMA-262로 불리우는 ECMAScript 1(ES1)의 명세가 완성되었다.
그리고 상표권 문제로 인하여 자바스크립트는 ECMAScript로 명명되었다. 이후 계속해서 표준안이 업데이트 되었고, 2015년에 ECMAScript 2015(ES6) 버전 부터는 let / const 키워드, 화살표 함수, 클래스, 모듈과 같은 기능이 추가되어 더욱 큰 변화가 생겼다. 이후의 버전업에 대하여는 작은 추가 기능들을 더하며 매년 공개할 것이라고 예고했으며, (이 때문에 ES6 이후의 버전을 통칭하여 ES6+ 라고 하기도 한다) 올해(2022년) 6월에는 ECMAScript 2022가 업데이트 되었다.(참조)
자바스크립트의 발전
초창기의 자바스크립트는 웹 페이지의 보조적인 기능을 수행하는 한정적인 용도로 사용되었다. 이 시기 대부분의 로직은 서버에서 실행되었고, 브라우저는 서버로부터 전달받은 HTML과 CSS를 단순히 렌더링 하는 수준이었다.
웹 페이지는 서버를 통해 완전한 HTML을 전송받아 웹 페이지 전체를 렌더링하는 방식으로 동작했다. 화면이 전환 될때에는 새로운 HTML을 전송받아 웹페이지 전체를 리렌더링하였다.
이로 인해 변경이 없는 부분까지도 서버로부터 재전송받으면서 불필요한 데이터 통신이 일어나고, 퍼포먼스 측면에서도 불리한 조건으로 동작한 것이다. 이 때문에 화면전환이 일어나면서 깜빡이는 현상이 웹 페이지 동작의 한계로 받아들여졌다.
1999년, 자바스크립트를 이용하여 서버와 브라우저가 비동기적(Asynchronous)인 통신이 가능한 Ajax(Asynchronous JavaScript and XML)라는 기술이 XMLHttpRequest라는 이름으로 등장했다.
이 기술의 등장으로 웹 페이지에서 변경이 필요하지 않은 부분을 렌더링 하지 않고, 필요한 부분의 데이터만을 전송받아 한정적으로 렌더링 하는것이 가능해졌다. 덕분에, 웹에서도 데스크탑의 프로그램과 같은 빠른 퍼포먼스와 부드러운 화면 전환이 가능해졌다.
이로 인해 웹에서도 빠르고 많은 동작이 가능하도록 엔진의 발전또한 요구되었고, 2008년 등장한 구글의 V8 엔진으로 자바스크립트가 데스크탑 프로그램과 유사한 사용자 경험을 제공할 수 있는 프로그래밍 언어로 자리잡게 되었다.
2009년에는 브라우저 이외에 환경에서 자바스크립트를 동작시킬 수 있는 Node.js의 등장으로 자바스크립트를 서버 사이드 어플리케이션 개발에도 사용이 가능하게 되어 프론트엔드와 백엔드 영역 모두에서 사랑받는 프로그래밍 언어가 되었다.
이렇게 자바스크립트가 발전하면서 많은 기능이 가능하게 됨에 따라, 웹에서도 많은 기능들을 요구하기 시작하였고 수많은 패턴과 라이브러리가 출현하였다. 이로 인해 아키텍처의 구축이 어려워졌고 프레임워크가 등장하기에 이르렀다. 또한 SPA(Single Page Application)이라고 하는 것이 대중화가 되면서 Angular, React, Vue.js 등의 다양한 프레임워크와 라이브러리가 등장하게 되었다.
자바스크립트와 ECMAScript에 대해
ECMAScript는 자바스크립트의 표준 명세인 ECMA-262를 말하며 프로그래밍 언어의 타입, 값, 객체와 프로퍼티, 함수, 빌트인 객체 등 핵심 문법(core syntax)을 규정한다. 각 브라우저 제조사는 ECMAScript를 준수하여 브라우저에 내장되는 자바스크립트 엔진을 구현한다.
자바스크립트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이드 Web API 즉 DOM, BOM, Canvas, XMLHttpRequest, Fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web worker 등을 아우르는 개념이다.
클라이언트 사이드 Web API는 ECMAScript와는 별도로 World Wide Web Consortium (W3C)에서 별도의 명세로 관리하고 있다. 클라이언트 사이드 Web API의 자세한 내용은 MDN web docs: Web API를 참고하기 바란다.
자바스크립트의 특징
HTML, CSS와 함께 웹을 구성하는 요소 중 하나로서 웹에서 동작하는 유일한 프로그래밍 언어이다.
기본문법은 C, Java의 영향을 많이 받았고 Self라는 언어에서 프로토타입 기반 상속을, Scheme에서는 일급 함수의 개념에 대해 차용하게 되었다.
개발자가 별도의 컴파일 작업을 수행할 필요가 없는 인터프리터 언어이며, 현대의 많은 자바스크립트 엔진이 처리속도가 느린 인터프리터의 단점을 해결해주었다.
자바스크립트는 명령형(Imperative), 함수형(Functional), 프로토타입 기반(Prototype-Based) 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어로 자리잡게 되었다.
댓글 영역