- ~1995년까지의 웹 역사
HTML, CSS로만 웹사이트를 만들었지만 이후 자바스크립트가 개발되면서 차츰 웹 브라우져에서는 자바스크립트 엔진을 구축하기 시작함. 예를 들어 Internet Explorer에서는 chakara, FireFox에서는 SpiderMonkey, 크롬에서는 V8이 있겠다.
- What is JIT(Just-In-Time) Compiler? (feat. V8)
전통적으로 컴퓨터 프로그램을 만드는 방식에는 2가지가 있다.
1) 인터프리터 : 실행 시점에 프로그래밍 언어를 읽어서 기계어 코드를 생성, 실행
2) 정적 컴파일 : 실행 전 프로그래밍 언어를 기계어로 번역
인터프리터의 경우 실행 시점에 바이트코드 등으로 변환없이 곧바로 기계어로 번역되기 때문에 성능이 낮다.
정적 컴파일의 경우 실행 전에 각 플랫폼에 맞게 번역해야 하므로 실행 속도가 늦다.
이러한 두 생성 방식의 장점만을 뽑아놓은 방식이 바로 동적 컴파일러, 즉 JIT 컴파일러이다. 즉, 실행 과정에서 컴파일이 가능하도록 만들어진 것이다.
그 중 크롬의 V8 엔진을 예로 들면, 실행 시점에 JS 코드를 바이트코드 (머신코드로 번역되기 이전의 중간 언어)로 번역한 후 이를 머신코드로 번역하여 최적화와 실행 속도를 둘 다 잡았다.
(V8 엔진에 대해 더 알고 싶다면 이 링크로 갑시다...)
- 일반적인 JS와 Node.JS의 차이점
일반적인 JS의 경우 사용자와의 interaction 등 브라우저 내에서만 종속된 언어였다면, Node.JS는 브라우저가 아닌 OS를 기반으로 하여서 브라우저 바깥에서 JS 코드를 실행시킬 수 있게 만든 JAVASCRIPT RUNTIME, 즉 V8 엔진 기반의 JS 실행환경이다. 그러므로 그저 웹사이트의 상호작용으로만 국한되는 것이 아니라 스크립트나 자동화 등 컴퓨터의 프로그램으로서의 역할도 수행할 수 있다.