- JavaScript 엔진은 브라우저나 서버 환경에서 JavaScript 코드를 실행하는 핵심 요소이다
- 코드를 해석하고 실행하는 과정을 통해, 웹 페이지의 동적 기능을 제공하여 성능을 향상시킨다
- 코드 파싱 : 엔진에서 JavaScript 코드를 읽어 이를 AST(Abstract Syntax Tree)로 변환한다
- AST는 코드 구조를 나타내는 트리 형태 자료 구조
- 바이트코드 변환 : 변환된 AST를 바이트코드로 변환하는데, 이는 바이트코드로 초기 실행 속도를 빠르게 하기 위함이다
- 최적화 컴파일 : 변환된 바이트코드는 Profiling Data, 코드 실행 정보를 기반으로 최적화 컴파일러에 의해 기계어로 다시 변환된다
- 멀티 스레드 실행 : 코드를 실행하기 위해 JavaScript 엔진은 여러 스레드를 사용하는데 아래와 같다
- 메인 스레드 : 최적화된 바이트코드를 실행한다
- 컴파일 스레드 : 병렬로 바이트코드를 컴파일한다
- 프로파일러 스레드 : Profiling Data, 코드 실행 정보로 최적화를 진행한다
- 가비지 컬렉터 스레드 : 더 이상 사용하지 않는 메모리를 해제한다
- 위 과정으로 인해 JavaScript 코드를 실행하게 되며, 대표적인 엔진은 아래와 같다
- V8 : Chrome, Brave, Opera 등의 브라우저, Node.js에서 사용
- SpiderMonkey : Firefox 브라우저, MongoDB에서 사용