본문 바로가기
목차
CE

[CE] Java Script Engine

by ds31x 2025. 5. 12.
728x90
반응형

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

 

728x90