[JS] 모던 Javascript Deep Dive 2장 - 자바스크립트란?
업데이트:
2장 - 자바스크립트란?
2.1 자바스크립트의 탄생
1995년, 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어로 자바스크립트가 처음 도입되었다.
현재는 모든 브라우저의 표준 프로그래밍 언어로 자리 잡았다.
⇒ 하지만, 자바스크립트의 파생 버전인 JScript가 출시되어 위기를 맞음.
2.2 자바스크립트의 표준화
두 회사가 자사의 브라우저 시장 점유율을 높이기 위해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가하면서 JScript와 자바스크립트가 표준화되지 못하고 적당히 호환되는 문제가 발생했다.
결국, 크로스 브라우징 이슈가 발생하기 시작했고, 모든 브라우저에서 정상적으로 동작하는 웹페이지를 개발하는 것이 어려워졌다.
1997년, 이러한 자바스크립트의 파편화를 방지하기 위해 ECMA 인터내셔널에서 표준화한 자바스크립트인 ECMAScript 를 완성했다.
2009년, ECMAScript 5(ES5)는 HTML5와 함께 표준 사양으로 자리잡았다.
2015년에는 ECMAScript6(ES6)의 등장으로 인해 큰 변화가 있었다. ES6부터는 let/const 키워드, 화살표 함수, 클래스, 모듈 등 범용 프로그래밍 언어로서 갖춰야 할 기능들을 대거 도입했다.
그 이후 버전업은 비교적 작은 기능을 추가하는 수준으로 매년 공개되었다.
[JavaScript] ECMAScript란? ES5와 ES6의 차이
2.3 자바스크립트 성장과 역사
초창기 자바스크립트는 주로 웹 서버에서 실행되었고, 브라우저는 서버로부터 전달받은 HTML과 CSS를 단순히 렌더링하는 수준이었다.
2.3.1 Ajax
1999년, 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능인 Ajax가 XMLHttpRequest라는 이름으로 등장했다.
Ajax는 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 렌더링하는 방식으로 빠른 성능과 부드러운 화면 전환이 가능해졌다.
2005년, 웹 브라우저에서 자바스크립트와 Ajax를 기반으로 동작하는 구글 맵스로 웹 애플리케이션 프로그래밍 언어로서 가능성을 확인하는 계기가 되었다.
2.3.2 jQuery
2006년, DOM을 더욱 쉽게 제어할 수 있는 jQuery가 등장했다. 다소 까다로운 자바스크립트보다 배우기 쉽고 직관적인 jQuery를 선호하는 개발자가 생기기도 하였다.
2.3.3 V8 자바스크립트 엔진
2008년, 더욱 빠르게 동작하는 V8 자바스크립트 엔진이 등장하였다.
이와 함께 자바스크립트는 UX(사용자 경험)을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 정착하게 되었다.
과거 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동했고 프런트엔드 영역이 주목받는 계기가 되었다.
2.3.4 Node.js
2009년, 구글 V8 자바스크립트 엔진으로 빌드된 자바스크림트 런타임 환경인 Node.js가 발표되었다.
기존의 자바스크립트 엔진에서만 동작하던 것을 자바스크립트 브라우저 이외의 환경에서도 동작할 수 있도록 독립시켰다.
비동기 I/O를 지원하며 단일 스레드 이벤트 루프 기반으로 동작함으로써 요청 처리 성능도 좋다.
2.3.5 SPA 프레임워크
많은 패턴과 라이브러리가 출현하여 개발하는데 많은 도움이 되었다.
하지만, 변경에 유연하면서 확장하기 쉬운 애플리케이션 구축이 어려워지면서 프레임워크가 등장하게 된다.
현재는 CBE(Component based development) 방법론을 기반으로 하는 SPA(Single Page Application)이 대중화되면서 Angular, React, Vue.js, Svelte 등이 생겨났다.
2.4 자바스크립트와 ECMAScript
ECMAScript는 자바스크립트의 표준 사양이고 프로그래밍 언어의 값, 타입, 객체/프로퍼티, 함수, 표준 빌트인 객체 등 핵심 문법을 규정한다.
자바스크립트는 일반적으로 ECMAScript를 아우르는 개념이다.
API의 자세한 내용은 MDN web docs: Web API를 참고하기
2.5 자바스크립트의 특징
- 웹 브라우저에서 동작하는 유일한 프로그래밍 언어이다.
- 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어이다.
컴파일이란 무엇이며, 자바스크립트는 인터프리터 언어인가?
- 자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다.
- 클래스 기반 객체지향 언어보다 효율적이면서 강력한 프로토타입 기반의 객체지향 언어이다.
댓글남기기