본 내용은 모던 자바스크립트 Deep Dive. 이웅모 저. 에 출처하며 자바스크립트에 숨참고 deep dive 합니다.
1995년, 웹 브라우저 시장을 지배하던 넷스케이프 커뮤니케이션즈는 브라우저에서 동작하는 경량 프로그래밍 언어를 도입한다. 그래서 탄생한 것이 브랜던 아이크가 개발한 자바스크립트다.
하지만 자바스크립트가 탄생한 뒤 얼마 지나지 않아 자바스크립트의 파생버전인 JScript가 출시되어 자바스크립트는 위기를 맞는다.
1996년, 마이크로소프트는 자바스크립트의 파생 버전인 “JScript”를 인터넷 익스플로러 3.0에 탑재했다.
문제는 JScript와 Javascript가 표준화되지 못하고 적당히 호환됐다.
그러자 각 회사는 시장 점유율을 높이기 위해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가
이로 인해 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했고, 결과적으로 모든 브라우저에서 정상적으로 동작하는 웹페이지를 개발하기 무척 어려워졌다.
표준화를 위해 넷스케이프 커뮤니케이션즈는 ECMA에 자바스크립트의 표준화를 요청한다.
1997년, ECMA-262라 불리는 표준화된 자바스크립트 초판이 완성되었고, 상표권 문제로 자바스크립트는 ECMAScript로 명명되었다.
2015년 공개된 ECMAScript 6에서 범용 프로그래밍 언어로서 갖춰야 할 기능들을 대거 도입했다.
1999년, 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능인 Ajax가 XMLHttpRequest라는 이름으로 등장했다.
이전의 웹페이지는 완전한 HTML 코드를 서버로부터 전송받아 웹페이지 전체를 렌더링하는 방식으로 동작했다.
Ajax의 등장으로, 웹페이지에서 변경할 필요가 없는 부분은 다시 렌더링하지 않고, 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 렌더링하는 것이 가능해졌다. → 부드러운 화면전환
ex) 2005년 발표된 구글 맵스 (자바스크립트의 가능성을 확인하는 계기)
자바스크립트의 시장이 넓어지면서 더욱 빠르게 동작하는 자바스크립트 엔진의 필요성이 대두되었다.
2008년 등장한 구글의 V8 자바스크립트 엔진은 이러한 요구에 부합하는 빠른 성능을 보여주었다.
2009년 라이언 달이 발표한 Node.js는 구글의 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다.
Node.js는 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경이다.
Node.js는 비동기 I/O를 지원하며 단일 스레드 이벤트 루프 기반으로 동작함으로써 요청 처리 성능이 좋다.
자바스크립트는 크로스 플랫폼을 위한 가장 중요한 언어로 주목받고 있다.
모던 웹 애플리케이션은 데스크톱 애플리케이션과 비교해도 손색없는 성능과 사용자 경험을 제공 하는 것이 필수가 되었고, 더불어 개발 규모와 복잡도도 상승했다.
이전의 개발 방식으로는 복잡해진 개발 과정을 수행하기 어려워졌고, 이에 따라 많은 패턴과 라이브러리가 출현했다. 또한 필연적으로 프레임워크가 등장하게 되었다.
이러한 요구에 발맞춰 CBD 방법론을 기반으로 하는 SPA가 대중화되면서 Angular, React, Vue.js, Svelte 등 다양한 SPA 프레임워크/라이브러리 또한 많은 사용층을 확보하고 있다.
ECMAScript는 자바스크립트의 표준 사양인 ECMA-262를 말하며, 프로그래밍 언어의 값, 타입, 객체와 프로퍼티, 함수, 표준 빌트인 객체 등 핵심 문법을 규정한다.
자바스크립트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript 와 브라우저가 별도 지원하는 클라이언트 사이드 Web API (DOM, BOm, Canvas..)를 아우르는 개념이다.
자바스크립트는 HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어다.
자바스크립트는 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어다.
인터프리터와 컴파일러의 차이