자바스크립트 엔진
• node.js로 생각하면 JS 구동 플렛폼으로서 구글크롬 자바크립트 엔진인 V8로 만들어졌다.
• 보통 브라우저들마다 엔진의 종류는 다르나 구동방식은 비슷하다.
• 자바스크립트 엔진은 자바스크립트 소스코드를 파싱하여 AST(Abstract Syntax Tree)로 변환한다.
• 인터프리터는 AST기반으로 바이트 코드를 생성한다.
• 인터프리터는 프로파일링 데이터(자주 사용하는 함수 및 타입정보)를 바이트코드와 같이 최적화 컴파일러(Optimizing compiler) 에게 보낸다.
• 최적화 컴파일러는 바이트 코드와 프로파일링 데이터로 최적화 코드(Optimized code)를 생성한다.
• 프로파일링 코드가 잘못된 경우 최적화를 풀고(Deoptimize) 다시 바이트코드로 돌아가 반복과정을 거친다.
AST(Abstract Syntax Tree)
• 특정 언어로 작성된 프로그램의 소스코드를 각각 의미별로 분리하여 컴퓨터가 이해할 수 있는 구조로 변경시킨 트리
• Abstract Syntax라는 것은 데이터의 구조와 종류만 포함되는데 프로그래밍 언어의 문법 및 각 문단의 역할을 표현한다.
• 코드의 문법적인 측면에서 문제가 없을 경우를 판별할 때 사용된다.
인터프리터
• 소스코드를 만나 런타임뒤에 행별로 해석하며 프로그램을 구동시키는 방식으로 런타임 중간에 디버깅이 가능한 방식이다. 필요할 때 마다 메모리 소스를 할당 받아서 사용한다.
• 컴파일러와는 전혀다른 방식이다.
최적화코드(Optimized Code)
• 여기서 말하는 최적화 코드란 컴퓨터가 이해할 수 있는 기계어를 말한다.
참고
github.com/baeharam/Must-Know-About-Frontend/blob/master/Notes/frontend/bom-dom.md
'FrontEnd' 카테고리의 다른 글
CD와 CI (0) | 2021.01.14 |
---|---|
모듈 번들러와 트랜스파일러 (0) | 2021.01.14 |
BOM & DOM (0) | 2021.01.13 |
브라우저의 렌더링 과정 (0) | 2021.01.13 |
CSR(Client Side Rendering) 과 SSR(Sever Side Rendering (0) | 2021.01.13 |