본문 바로가기
웹 프론트엔드/JavaScript

초기 자바스크립트의 실행 원리 및 발전 방향

by 번데기 개발자 2018. 5. 29.
반응형

초기 자바 스크립트의 실행 원리


현재 Html브라우저로 사용되고 있는 사파리,크롬등에서 사용하는 자바스크립트 엔진은 모두 JITC(Just-In-Time-compiler)방식을 사용합니다. 

기본적으로 javascript는 인터프리터 언어로 대부분 알고 있고 초기에는 모든 javascript코드를 바로 JITC Native Code로 변환해서 통째로 읽는 방식으로 구현되었습니다.

JITC Interpreter방식은 자바스크립트의 내부 엔진의 동작 방식입니다.



    -기본적인 실행 방식-



1. text 형태로 배포

2. 배포된 javascript code를 파싱하여 중간언어인 byte 코드 형태로 전환

3. native 코드로 변환 (Interpreter방식 JITC방식 2가지로 나뉨)

Interpreter => 변환된 바이트 코드를 한줄씩 읽어나가며 동작 수행

JITC         => 전체를 natvie code로 컴파일 하여 동작 수행



JITC방식이 빠르지만 에러처리를 잘 해줘야 합니다.

예를 들면 var같은 경우에 동적인 자료형이 할당되기 때문에 JITC컴파일 과정에서 어떤 자료형인지 파악이 불가능합니다.



인터프린터 언어란? (Interpreter => 번역자 ,통역기) => 바이트코드를 번역한다.


컴파일 할 필요없이 소스코드 자체가 실행시 해석되는 언어.

재컴파일시 드는 시간 비용이 절약된다.



Adaptive JITC방식


반복수행되는 정도에 따라 다른 최적화 수준을 적용하는 방식입니다.

기본적으로 인터프리터를 통해 수행되지만 반복적인 코드 수행 부분에서는 JITC를 적용하여
Native 코드로 변경하여 수행합니다. (옵션 : baseline ,optimizing)



JITC 방식이란? => Just In Time Complication

Safari,Chrome,FileFox는 모두 JITC 방식을 사용합니다. 

JITC방식은 컴파일을 수행중에 실행을 하고 source->bytecode->native code중에 bytecode->native code부분을 수행하는 방식입니다.

단점으로는 GCC같은 컴파일러와 다르게 실행중에 컴파일을 해야하므로 코드의 최적화를 할 수 없고 실행과 동시에 컴파일 되기 떄문에 overhead가 발생하게 됩니다.
(그럼에도 불구하고 Interpreter보다는 빠릅니다.)

반응형