본문 바로가기

Front-End/JavaScript

[JavaScript] 등장 배경과 의의, 특징

반응형

1. JavaScript의 등장 배경

1995년 웹 브라우저 강자 넷스케이프 커뮤니케이션즈사에서 브라우저용 언어 만들기로 결정

96년 3월, "모카Mocha" 등장 -> 9월 "라이브스크립트LiveScript"로 이름 변경 -> 12월 "자바스크립트JavaScript"로 이름 변경

 

96년 8월 마이크로소프트사에서 Jscript 개발.

 

JScript 와 JavaScript는 애매하게 호환됨 -> 크로스 브라우징 이슈 발생

 

컴퓨터 시스템 표준을 관리하는 비영리 표준화 기구인 ECMA 인터네셔널에 표준화 요청.

97년 표준화된 자바스크립트 초판 ECMAScript 탄생.

99년 ECMAScript3 (ES3) 공개

09년 ECMAScript5 (ES5) 공개

15년 ES6 공개

이후 매년 버전업하기로 발표

1.1. ECMAScript 버전별 특징

다수 생략되었으므로, 자세한 내용은 별도로 찾아볼것.

버전 출시 특징
ES1 97' 초판
ES2 98' 국제 표준과 동일한 규격
ES3 99' 정규표현식, try ... catch
ES5 09' HTML5와 함께 등장, JSON, strict mode, 배열 조작 기능 향상 (forEach, map, filter, reduce 등)
ES6 15' let/const, 클래스, 화살표 함수, 구조분해할당, 스프레드(...)문법, for ... of, 모듈 import/export 등
ES7 16' 지수(**)연산, 배열과 문자열의 includes 메서드
ES8 17' async/await, Object 정적 메서드
ES9 18' Object rest/spread 프로퍼티, Promise.prototype.finally 등
ES10 19' Object.fromEntries, Array.prototype.flat 등
ES11 20' String.prototype.matchAll, 옵셔널 체이닝 연산자 등

 

1.2. JavaScript의 발전

최초엔 웹페이지의 보조적인 기능 수행을 위해 사용 (서버로부터 받은 HTML과 CSS 단순 렌더링)

1.2.1. AJAX (Asynchronous Javascript And XML)

서버와 브라우저가 비동기 방식으로 데이터 교환하는 통신 기능.

XMLHttpRequest라는 이름으로 등장.

의의) 페이지 전체를 다시 받아오던 방식에서 변경이 필요한 부분만 렌더링할 수 있게됨. (성능면에서 큰 향상)

1.2.2. JQuery

의의) DOM 쉽게 제어 가능하게되고, 크로스 브라우징 이슈도 어느 정도 해결됨.

1.2.3. V8 엔진

2008년 구글이 개발한 자바스크립트 엔진.

매우 빠른 성능.

의의) 웹 서버에서 수행되던 로직이 클라이언트로 이동.

1.2.4. Node.js

2009년 라이언 달이 발표한 V8으로 빌드된 JS런타임 환경.

V8을 브라우저에서 독립 시켜서 브라우저 외의 환경에서도 동작할 수 있도록 함.

비동기 I/O 지원 + 단일 스레드 이벤트 루프 기반으로 동작 -> 요청 처리 성능이 좋음 -> I/O가 빈번하게 발생하는 SPA에 적합 (CPU 사용률이 높은 어플리케이션에는 비권장)

의의) 서버 사이드 애플리케이션 개발에서도 사용할 수 있게 됨. (프론트 뿐 아니라 백엔드까지 아우름)

1.2.5. SPA 프레임워크

이제 웹에서 좋은 성능과 사용자 경험은 필수 -> 개발 규모와 복잡도 상승 -> 프레임워크 등장

CBD(Component Based Development) 기반의 SPA 대중화.

Angular, React, Vue.js, Svelte 등 사용자 확대.

2. JavaScript 와 ECMAScript

JavaScript = ECMAScript (프로그래밍 언어로서의 뼈대) + 클라이언트 사이드 Web API (브라우저가 별도로 지원)

즉, 자바스크립트가 ECMAScript를 아우르는 더 큰 개념.

클라이언트 사이드 Web API = DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web storage, Web worker 등

각 브라우저 제조사는 ECMAScript 사양을 준수해서 브라우저에 내장되는 엔진을 구현함.

클라이언트 사이드 Web API는 World Wide Web Consortium: W3C에서 별도의 사양으로 관리하며, MDN web docs에 들어가 확인 가능함.

 

3. JavaScript 특징

  • 인터프리터 언어
    • 모던 브라우저에서 사용되는 인터프리터는 일부 소스코드를 컴파일하고 실행함.
    • 하지만 런타임에 컴파일되며, 실행 파일이 생성되지 않고, 인터프리터의 도움 없이 실행될 수 없기 때문에 컴파일러 언어라고 할 수는 없음.
  • 멀티 패러다임 프로그래밍 언어 (명령형 / 함수형 / 프로토타입 기반 객체지향 프로그래밍 지원)
  • 프로토타입 기반의 객체지향 언어

 

반응형