관리 메뉴

프론트엔드 정복하기

자바스크립트의 여러가지 엔진들 본문

JavaScript

자바스크립트의 여러가지 엔진들

GROWNFRESH 2023. 11. 18. 20:35

Javascript의 여러 엔진들에 대해 알아보자.

 

Javascript 엔진이란?)

JS 코드를 실행하는 프로그램 또는 인터프리터*이다.

 


 

V8

- 개발사: Google

- 개발언어: C++

- 사용처: Node.js 런타임, Chrome 브라우저

- 속도 향상을 위해 인터프리터 대신 JIT 컴파일러*를 사용해 더 효율적으로 JS를 기계어로 번역한다.

- 바이트코드와 같은 중간 코드를 생산하지 않는다.

- 멀티 스레드(메인스레드, 컴파일 담당 스레드, 프로파일러 스레드 등으로 이루어짐.)

 

Javascript Core

- 개발사: Apple

- 사용처: Safari, RN App

 

SpiderMonkey

- 최초의 엔진 / C++ / FireFox에 사용

 

Chakra

- MS 개발 / IE, Edge에 사용

 

Rhino

- Java / Mozilla에 사용

 


 

*인터프리터: 프로그래밍 언어를 한 줄 단위로 번역, 실행을 반복하는 프로그램

 

 

* JIT 컴파일러

 

- 코드가 실행되는 과정에 실시간으로 일어나며 그래서 Just-In-Time이고, 동적 번역이라고도 불린다.

- 한줄씩 실행하는 인터프리터보다는 빠르고, 실행 전에 미리 컴파일하는 정적 컴파일보다는 성능이 떨어진다.

- 자주 사용되는 메서드 등은 캐싱해서 최적화시킨다.

- 대표적으로 JVM(자바 가상 머신)과 V8엔진에서 사용된다.

 

 

JVM에서 JIT를 도입한 배경을 설명해보자면..

 

자바는 JVM이해할 수 있는 바이트코드로 먼저 컴파일하고, JVM에서 인터프리터로 기계어로 번역해 OS에 전달한다.

Java --> javac --> 바이트코드로 변환 --> JVM --> 인터프리터로 기계어 변환 --> OS

 

자바는 바이트코드로 컴파일하는 과정과 인터프리트하는 과정을 거쳐야해서, 컴파일 과정만 거치는 다른 언어들보다 느리다.

이런 문제를 개선하기 위해 JIT 컴파일러를 일부 도입한 것.

 

 

참고 사이트

https://samslow.github.io/development/2020/07/06/JIT/

https://hyeinisfree.tistory.com/26