자바스크립트 핵심컨샙33 #11. 자바스크립트 엔진

김동욱·2021년 10월 2일
0

자바스크립트

목록 보기
11/25

자바스크립트 엔진(JavaScript engine)은 자바스크립트 코드를 실행하는 프로그램 또는 인터프리터이다. 자바스크립트 엔진은 전통적인 인터프리터일 수도 있고, 특정한 방식으로 바이트코드로 JIT 컴파일을 할 수 있다. 여러 목적으로 자바스크립트 엔진을 사용하지만, 대체적으로 웹 브라우저에서 사용된다. feat.Wiki

자바스크립트를 공부하는데 엔진을 왜 공부해야하냐? 라고 궁금해 하는 사람들이 많다. 엔진을 깊게 공부한다기보단 자바스크립트 환경을 이해한다는 개념으로 접근해야한다.


자바스크립트 엔진

자바스크립트 엔진이란 자바스크립트 코드를 마이크로프로세서가 이해할 수 있는 낮은 레벨 또는 기계 코드로 변환하는 프로그램이다. Javascript 엔진의 기본 작업은 개발자가 작성한 Javascript 코드를 빠르게 변환하고, 애플리케이션에 내장화 하거나 브라우저가 해석 가능하도록 최적화 하는 것이다.

자바스크립트의 가장 일반적인 호스트 환경은 **웹 브라우저**이다. 웹 브라우저는 일반적으로 퍼블릭 API를 사용하여 문서 객체 모델(DOM)을 자바스크립트에 반영하는 일을 맡는 호스트 오브젝트를 생성한다.

하지만 웹브라우저가 다양한것처럼 자바스크립트 엔진도 다양하다. 다양하다는 뜻이 각 브라우저 별로 다른 명령어를 입력해야한다는 뜻이 아닌 조금씩 다른 방식으로 렌더링 한다는 말이다.

엔진 종류와 환경

  • 라이노: 모질라 재단이 운영, 오픈 소스, 모두 자바로 개발
  • 스파이더몽키: 최초의 자바스크립트 엔진. 넷스케이프 내비게이터에서 지원되며 오늘날은 모질라 파이어폭스를 지원
  • V8 - 오픈 소스. 덴마크에서 구글이 개발. 구글 크롬의 일부
  • 웹킷 - 오픈 소스. Nitro가 홍보하고 사파리용으로 애플이 개발.
  • 차크라 (자바스크립트): 마이크로소프트 엣지용
  • 기타 등등...

이중 제일 유명한 엔진은 갓구글이 개발한 갓V8엔진이며 얼마나 성능이 좋으면 현재 노드JS 엔진으로도 사용되고있다.

V8엔진의 특징

  • C++, 오픈소스, Chrome(클라이언트) 및 Nodejs(서버) 모두에 사용된다.
  • ECMA-262에 지정된 대로 ECMAScript를 구현합니다.
  • V8은 JS 실행 성능(속도)을 높이기 위해 인터프리터 대신 JavaScript 코드로 보다 효율적인 기계 코드로 변환합니다.
  • V8 엔진은 독립 실행형으로 실행할 수 있으며, C++ 프로그램을 통해 내장할 수 있습니다.

자바스크립트는 기본적으로 인터프리터언어이다. 하지만 위에서 언급한 엔진들은 비교적 처리 속도가 느린 인터프리터의 단점을 해결하고자 인터프리터와 컴파일러의 장점을 결합했다(타입스크립트는 컴파일언어입니다.)


profile
안녕하세요. 부산에서 근무하고 있는 프론트엔드 개발자 김동욱입니다. 영어 공부 겸 개발 공부를 위해서 글을 작성하고있습니다.

0개의 댓글