ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [javascript] javascript 는 인터프리터 언어?
    web 프로그래밍/javascript 2024. 10. 19. 15:04

    javascript는 많은 개발자들이 아직도 인터프리터 언어로 인식 하고 있습니다. 저도 그렇게 생각했었고요. 하지만 리액트 및 javascript 를 학습하다보니 javascript 는 인터프리터만 사용하는게 아니고 JIT(Just-In-Time) 컴파일러를 사용한다고 하네요.

     

    자바스크립트의 초기 역사에서는 인터프리터 언어로서, 소스 코드를 한 줄씩 읽고 실행하는 방식으로 동작했지만, 최신 자바스크립트 엔진(예: V8, SpiderMonkey 등)은 성능 최적화를 위해 JIT 컴파일 기술을 도입했습니다. 이로 인해 자바스크립트는 다음과 같은 방식으로 처리됩니다.

    1. 초기 해석 (Parsing): 먼저 자바스크립트 코드를 읽어서 구문 트리(Syntax Tree)를 생성합니다.
    2. 바이트코드로 변환: 이 구문 트리를 바탕으로 자바스크립트 엔진은 코드를 바이트코드(Bytecode)로 변환합니다. 이 바이트코드는 인터프리터에 의해 실행됩니다.
    3. JIT 컴파일: 실행 중에 자주 사용되는 코드(핫 코드, hot code)는 자바스크립트 엔진이 감지합니다. JIT 컴파일러는 이 핫 코드를 네이티브 머신 코드로 컴파일하여 성능을 크게 향상시킵니다. 즉, 처음에는 인터프리터 방식으로 코드를 실행하지만, 성능이 중요한 부분은 JIT 컴파일러가 실행 중간에 네이티브 코드로 변환해 최적화를 적용합니다.

    이 방식 덕분에 자바스크립트는 동적인 언어임에도 불구하고 성능을 크게 향상시킬 수 있습니다. 특히 Google의 V8 엔진(Chrome 및 Node.js에서 사용)은 매우 발전된 JIT 컴파일러를 사용하여 성능 최적화를 극대화합니다.

    따라서 자바스크립트는 단순한 인터프리터 언어가 아닌, 인터프리터와 JIT 컴파일 방식을 결합한 하이브리드 방식으로 동작합니다.

    댓글

Designed by Tistory.