JavaScript 엔진:
- 웹 브라우저(Computer, virtual machine)의 두뇌(Processor)
- JavaScript 엔진은 웹 브라우저의 핵심 구성 요소
- HTML과 CSS를 담당하는 레이아웃 엔진(렌더링 엔진)과 함께 현대 웹 브라우저의 대표적 기반 요소임.
- JavaScript 코드를 해석하고 실행
- 이는 오늘날 단순한 인터프리터를 넘어선 정교한 실행 환경으로 간주됨.
JavaScript 엔진의 본질
- JavaScript 엔진은 기본적으로 Interpreter(인터프리터)로 시작했지만,
- 현대의 엔진들은 Interpreter와 최적화 메커니즘(JIT Compiler)을 결합한 복합 실행환경 시스템으로 진화한 상태임.
이 엔진들은
- JS 소스코드를 Bytecode로 변환하여 실행: Interpreter
- JIT(Just-In-Time) 컴파일 기술을 통해 성능을 크게 향상시킴.
https://dsaint31.me/mkdocs_site/CE/ch08/ce08_compiler_interpreter/#interpreter-language
BME
Compiler Language and Interpreter Language compiled language 와 interpreted language라고도 불림. Compiler Language Compiler(High-level language를 machine language로 번역)를 사용하는 고급 언어. 프로그램 전체를 읽어들여 이를 o
dsaint31.me
2024.06.05 - [CE] - [CE] Bytecode (바이트코드)
[CE] Bytecode (바이트코드)
Bytecode (바이트코드)정의:Bytecode는 고수준 프로그래밍 언어로 작성된 source code를 중간 형태로 변환한 code 임.이는 특정 Virtual Machine (VM)에서 실행될 수 있도록 설계됨.가장 대표적인 예로 Java 및 Pyt
ds31x.tistory.com
2024.01.18 - [분류 전체보기] - [CE] Compilation 의 종류
[CE] Compilation 의 종류
원래 compilation(컴파일)은 programming language로 작성된 소스코드(source code, 원시코드)를 타겟 하드웨어에서 동작할 수 있는 기계 코드 (machine code, binary code, opcode)로 바꾸어주는 것을 의미했다. https://d
ds31x.tistory.com
JavaScript 엔진의 작동 원리
현대 JavaScript 엔진의 작동 과정은 다음과 같습니다:
1. 인터프리터 단계
- JavaScript 소스 코드는 먼저 Parsing(파싱)되어 추상 구문 트리(AST)로 변환.
- 이 AST는 다시 바이트코드(bytecode)로 변환됨.
- Bytecode는 기계어가 아닌 중간 표현(IR, Intermediate Representation)이며 VM에서 실행되는 코드를 가리키는 용어임.
- Interpreter는 이 소스코드를 바이트코드로 statement별로 해석하여 실행.
2. JIT 컴파일 단계
- 엔진이 코드를 실행하는 동안, 프로파일러는 자주 실행되는 코드 경로(hot paths)를 모니터링.
- 특정 코드 블록이 임계값 이상으로 자주 실행되면, 해당 Bytecode는 JIT 컴파일러로 전달.
- JIT 컴파일러는 이 바이트코드를 최적화된 형태로 변환하고 캐시시킴.
- 이후 동일한 코드가 다시 실행될 때는 인터프리터를 거치지 않고 캐시된 최적화 코드를 직접 실행하여 성능을 향상시킴.
3. 코드 안정성 관리
- 최적화된 코드는 특정 가정(예: 변수 타입이 변경되지 않음)에 기반함.
- 이러한 가정이 더 이상 유효하지 않으면(예: 변수 타입이 변경됨), "탈최적화(deoptimization)"가 발생하여 다시 인터프리터 모드로 전환됨.
이러한 방식으로 JavaScript 엔진은
- 코드가 변경되지 않는 한 바이트코드를 재사용하고,
- 자주 실행되는 부분은 더 빠른 실행을 위해 최적화하는 효율적인 실행 모델을 제공.
Web Browser를 VM 관점으로 볼 때 JavaScript Engine의 역할.
브라우저를 하나의 가상머신으로 볼 때, JavaScript 엔진은 다음과 같은 역할을 수행함:
- 실행 환경: 브라우저 가상머신의 "프로세서" 역할을 담당하며 웹 애플리케이션 코드를 처리.
- 런타임 시스템: 코드 실행, 메모리 관리, 가비지 컬렉션을 총괄.
- Bytecode Interpreter: 중간 표현인 bytecode를 실행하는 핵심 컴포넌트.
- 최적화 컴파일러: 자주 사용되는 코드 패턴을 감지하고 최적화 (JIT 컴파일러 기술 포함)
- 샌드박스 메커니즘: 보안 경계를 형성해 웹 코드가 시스템의 다른 부분에 접근하지 못하도록 제한.
2024.04.22 - [CE] - [CE] Virtual Machine, Web Browser and Bytecode.
[CE] Virtual Machine, Web Browser and Bytecode.
Virtual Machine (가상 머신) An abstract computer with an incredibly complicated instruction set (=Bytecode)implemented entirely in software bytecode란?2024.06.05 - [CE] - [CE] Bytecode (바이트코드) [CE] Bytecode (바이트코드)Bytecode (바이
ds31x.tistory.com
같이 보면 좋은 자료
https://dsaint31.me/mkdocs_site/CE/ch09/ce09_web_browser/
BME
title: Web Browser tags: - web browser - engine Web Browser 웹브라우저는 가장 널리 사용되는 복잡한 SW 중 하나이면서, 매우 다양한 instruction set을 지원하며 이들을 조합하여 새로운 기능을 추가할 수 있는 일
dsaint31.me
'CE' 카테고리의 다른 글
| [Term] Ligatures (합자), glyph (0) | 2025.08.04 |
|---|---|
| [CE] Parity Check and Hamming Code - Parity Bit (0) | 2025.05.21 |
| [CE] Memory(RAM)의 구조와 속도관련 표기법 (0) | 2025.04.28 |
| [CE] WebAssmbly (WASM) (0) | 2025.04.21 |
| [Programming] MVC, MVVM, and Qt's MV (0) | 2025.04.14 |