엔진과 런타임, 그리고 ECMAScript
엔진과 런타임
브라우저의 종류는 여러가지가 있고
브라우저별로 사용하는 엔진이 저마다 다르다.
나는 구글 크롬을 가정하고 내용을 정리했다.
자바스크립트는 브라우저에서 v8엔진을 통해 인터프리터된다.
반복적인 부분은 JIT컴파일방식을 활용해서 인터프리터 + JIT컴파일방식으로 처리한다.
node.js도 v8엔진이 있다.
그래서 서버PC에서 자바스크립트언어를 활용해서 백엔드구축이 가능.
자바스크립트가 실행되는 환경 : 런타임
브라우저의 런타임은 v8 , web Api , 큐, 이벤트루프로 구성되어있다.
서버쪽을 node.js를 사용한다면,
서버런타임은 v8 , node.js api , 큐 , 이벤트루프로 구성되어있다.
ECMAScript와 엔진의 관계
ECMAScript는 자바스크립트의 표준규격이다.
그래서 자바스크립트 엔진을 만들려면, 이 ECMAScript를 참고해서 만들어야
자바스크립트를 올바르게 잘 해석해내는 엔진을 만들 수 있는것이다.
그래서 서로 다른 엔진들이지만, 동일하게 자바스크립트를 해석할 수 있는 것이다.
그렇다면, ECMAScript의 버전이 업데이트되면, 기존에 개발한 엔진은 어떻게 되는걸까?
엔진도 그에 맞게 업데이트되지 않으면 자바스크립트의 새로운 언어들을 해석하지 못하게 된다.
그래서 엔진도 업데이트가 되야하는 듯..
참고로 내가 배우는 자바스크립트 버전은 ES6이다.
2015년도에 ECMAScript가 크게 업데이트 된적 있는, 그 버전을 기준으로 한다.
v8엔진은 ES6버전을 충분히 해석할 수 있는 엔진이다.
+) 회사에서 서버에 원격접속했을 때, IIS랑 node.js를 동시에 같이 쓰고있다는걸 발견했다.
바탕화면에 node파일 같은것을 본적이 있다.
하나의 서버를 iis와 node를 같이 돌릴수도 있는듯..
포트번호를 서로 다르게 하거나,
리버스 프록시? 라는 방법을 사용했다고 함. (구글 잼민이의 답변)