2.1 자바스크립트의 탄생
웹 브라우저 시장을 지배하고 있던 넷스케이프에서 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기로 결정했다. 그래서 탄생한 것이 브랜던 아이크가 개발한 자바스크립트다.
2.2 자바스크립트의 표준화
이에 마이크로소프트는 자바스크립트의 파생 버전인 JScript를 인터넷 익스플로러에 탑재했다
문제는 JScript와 자바스크립트가 표준화되지 못하고 적당히 호환되었다는 것이었다. 이로 인해 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했다.
이에 자바스크립트의 파편화를 방지하고 모든 브라우저에서 정상적으로 동작하는 표준화된 자바스크립트의 필요성이 대두되기 시작하였으며, 넷스케이프는 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터내셔널에 자바스크립트 표준화를 요청한다.
결국 ECMA-262라는 표준화된 자바스크립트 초판 사양이 완성되었고, 상표권 문제로 자바스크립트는 ECMAScript로 명명되었다.
2.3 자바스크립트 성장의 역사
초창기 자바스크립트는 웹페이지의 보조적 기능 수행을 위한 한정적인 용도로 사용되었다. 로직은 주로 웹 서버에서 실행되었고, 브라우저는 서버로부터 전달받은 HTML, CSS를 렌더링하는 수준이었다.
1. Ajax
자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능인 Ajax가 등장했다
이전 웹페이지는 완전한 HTML 코드를 서버로부터 전송받아 웹페이지 전체를 렌더링하는 방식으로 동작했다.
따라서 변경할 필요가 없는 부분까지 포함된 HTML 코드를 서버로부터 전송받기 때문에 불필요한 데이터 통신이 발생했고, 전체를 다시 렌더링해야 하기 때문에 성능 면에서 좋지 않았다.
Ajax의 등장으로 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 렌더링하는 방식이 가능해진 것이다.
2. jQuery
jQuery의 등장으로 다소 번거롭고 논란이 있던 DOM을 더욱 쉽게 제어할 수 있게 되었고 크로스 브라우징 이슈도 어느 정도 해결되었다.
3. V8 자바스크립트 엔진
시간이 지날수록 더욱 바르게 동작하는 자바스크립트 엔진의 필요성이 대두되었다.
08년에 등장한 구글의 V8 자바스크립트 엔진은 이러한 요구에 부합하는 빠른 성능을 보여주었고, 데스크톱 애플리케이션과 유사한 사용자 경험을 제공하였다.
V8 자바스크립트 엔진으로 과거 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동했다.
4. Node.js
Node.js는 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다
기존 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록
자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경이다.
다양한 플랫폼에 적용이 가능하고 이에 필요한 모듈, 파일 시스템 등 빌트인 API를 제공한다.
Node.js는 비동기I/O를 지원하며 단일 스레드 이벤트 루프 기반으로 동작함으로써 요청 처리 성능이 좋다.
데이터를 실시간으로 처리하기 위해 I/O가 빈번하게 발생하는 SPA에 적합하며 CPU 사용률이 높은 애플리케이션에는 권장하지 않는다.
5. SPA 프레임워크
자바스크립트가 발전해가며 개발 규모와 복잡도도 상승했다.
이로인해 많은 패턴 및 라이브러리가 출현했지만, 변경에 유연하면서 확장하기 쉬운 애플리케이션 아키텍처의 구축을 어렵게 했고
필연적으로 프레임워크가 등장하게 되었다.
현재는 CBD(Component based development) 방법론을 기반으로 하는 SPA(Single page application)가 대중화 되었다
2.4 자바스크립트와 ECMAScript
자바스크립트는 ECMAScript(자바스크립트 표준 사양)와 브러우저가 별도 지원하는 클라이언트 사이드 Web API (DOM, fetch, XMLHttpRequest..) 등을 아우르는 개념이다
2.5 자바스크립트의 특징
자바스크립트는 웹브라우저에서 동작하는 유일한 프로그래밍 언어다.
개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어인데, 대부분의 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점을 해결했다.
또한 자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이기도 하다.
2.6 ES6 브라우저 지원 현황
브라우저에서 아직 지원하지 않는 최신 기능 사용을 고려해야 하는 상황이라면 바벨과 같은 트랜스파일러를 사용해 ES6 이상의 사양으로 구현한 소스코드를 ES5 이하의 사양으로 다운그레이드할 필요가 있다.
'Etc.' 카테고리의 다른 글
혼자하는 <모던 자바스크립트 딥 다이브> 스터디 #03장 자바스크립트 개발 환경과 실행 방법 (0) | 2023.04.24 |
---|---|
혼자하는 <모던 자바스크립트 딥 다이브> 스터디 #프롤로그 (0) | 2023.04.15 |
개발자의 글쓰기 7장 - 기술 블로그 쉽게 쓰고 운영하기 (0) | 2023.01.15 |
개발자의 글쓰기 4장 - 사용자와 소통하는 에러 메시지 쓰기 (2) | 2023.01.15 |
개발자의 글쓰기 3장 - 사용자와 소통하는 에러 메시지 쓰기 (0) | 2023.01.15 |