프론트엔드 정복하기
자바스크립트의 여러가지 엔진들 본문
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 컴파일러를 일부 도입한 것.
참고 사이트
'JavaScript' 카테고리의 다른 글
모던 Javascript 튜토리얼 - 파트2 (0) | 2022.03.28 |
---|---|
모던 Javascript 튜토리얼 - 파트1 (0) | 2022.03.20 |
모던 javascript info 번역 사이트 (0) | 2021.12.12 |
intersection observer 를 이용해 infinite scroll 구현하기 (0) | 2021.10.28 |
useContext 와 MouseMove 이벤트핸들러 (0) | 2021.10.15 |