Node.js/Node.js 공식문서

V8 자바스크립트 엔진

코딩크리처 2024. 9. 15. 23:12

제목 : V8 자바스크립트 엔진


V8Google Chrome 의 자바스크립트 엔진입니다.

이는 우리의 자바스크립트 를 가져오는 것이며, 크롬으로 브라우징을 할 때 실행합니다.


V8 은 자바스크립트 엔진입니다.

즉, 이는 자바스크립트 코드를 파싱하고 실행합니다.

그리고 DOM (Document Object Model) 과,

다른 웹 플랫폼 API 들 (이것들은 모든 실행 환경에 맞춰져 있습니다) 이 브라우저에 의해 제공됩니다.


멋진 것은 이 자바스크립트 엔진이 브라우저로부터 독립적이라는 것입니다.

이러한 핵심 기능은 Node.js 가 떠오를 수 있게 해 주었습니다.

V8 은 2009 년에 Node.js 의 엔진으로 선택받았습니다.

그리고 Node.js 의 인기가 폭발한 것 처럼,

V8은 자바스크립트로 작성된 엄청난 양의 서버 사이드 코드로 지금 구동되고 있는 엔진입니다.


Node.js 의 생태계는 거대하며,

V8 덕분에 Electron(일렉트론)과 같은 데스크톱 프로젝트 어플도 구동할 수 있습니다.


또 다른 JS 엔진들

다른 브라우저들도 그들의 자바스크립트 엔진을 가지고 있습니다 :

  • Firefox 는 SpiderMonkey 을 가지고 있습니다.
  • Safari 는 JavaScriptCore 를 가지고 있습니다. - Nitro 라고도 불린다.
  • Edge 는 원래 Chakra 였으나, 현재는 Chromium 과 V8 엔진으로 재구축 되었습니다.

이러한 모든 엔진들은 ECMA ES-262 기준 을 구현했으며,

또한 ECMAScript 라고도 불리며, 자바스크립트의 표준으로 사용되고 있습니다.


성능에 대한 의문

V8 은 C++ 로 작성되었으며, 지속적으로 향상되었습니다.

또한 가벼울 뿐만 아니라, 맥, 윈도우, 리눅스 그리고 여러 다른 시스템에서도 구동됩니다.


이번 V8 소개에서는,

V8 에 대한 구현 세부사항을 무시할 겁니다.

이러한 세부사항은 V8 공식 사이트 와 같은 인증된 사이트에서 더 찾아 볼 수 있습니다.

그리고 이들은 시간이 지남에 따라 바뀌어 왔습니다.


V8 은 언제나 진화하며, 다른 자바스크립트 엔진들처럼,

Web 그리고 Node.js 생태계의 속도를 올리기 위해 진화해 왔습니다.


웹에서는, 몇 년 간 성능에 대해 경쟁이 있었습니다.

그리고 우리는 이러한 경쟁으로 인해 많은 헤택을 얻게 되었는데,

우리는 더욱 최적화 된 기기는 시간이 지날수록 더 빨라지기 때문입니다.


컴파일 (여기서는 - Compilation)

자바스크립트는 보통 인터프리터 언어 로 고려됩니다만,

모던 자바스크립트 엔진은 더 이상 그냥 자바스크립트를 인터프리트 하지 않고,

컴파일 합니다.


이러한 일은 2009 년에 일어났으며,

SpiderMonkey 자바스크립트 컴파일러가 Firefox 3.5 버전에 추가되었으며, 모두가 이러한 생각을 따랐을 때 입니다.


자바스크립트는 실행의 속도를 올리기 위해서 V8 엔진으로 JIT(Just In Time) 컴파일을 사용하여 전역적으로 컴파일링합니다.


이러한 방식은 직관적이지 않아 보일 수도 있겠지만,

2004 년에 구글 맵이 도입 된 이래로,

자바스크립트는 보통 어플리케이션을 완성하기 위해서 수십 개 만의 코드만 실행되던 언어에서,

브라우저에서 수십만의 코드를 실행하기 위해 언어로 진화했습니다.


우리의 어플리케이션들은 간단한 검증 규칙만을 가지고 있거나, 간단한 스크립트에서, 발전하여,

브라우저에서 몇 시간 동안 구동할 수 있게 되었습니다.


이러한 새로운 세상에서, 자바스크립트를 컴파일링 하는 것은 완벽하게 맞아 떨어졌는데,

완전히 인터프리터 된 코드 보다는, 준비된 자바스크립트가 훨씬 더 성능이 좋기 때문입니다.