본문 바로가기
Dev/javascript

V8! V8! Witeness me! Witness You! Witnessed! - 1

by 괴발짜응 2022. 11. 10.
반응형

개봉 당시 꽤나 임팩트 있었던 영화 "매드맥스:분노의 도로"에서는 "워보이"라는 극 중 사이비 종교 집단이 있다. 이들은 그들의 교주인 "임모탄 조"를 추앙하며 자동차의 8기통 엔진(V8)을 숭배한다. 

 

8기통 엔진! (V8 Engine) 

보통 V8이라고 하면 사람마다 차이가 있겠으나, 보통의 소프트웨어 개발자라면 Google Chrome이나 NodeJS에서 사용되는 V8을 상상할 것이고, 일반적인 사람들이라면 자동차의 엔진을 생각할 것이다. 

8기통 엔진은 실린더가 8개인 엔진이고, V8이면 이 실린더가 V자 형태로 양쪽으로 늘어져 있는 형상의 엔진을 말한다. 

이전(?) 음... 뭐랄까 오일파동(1,2차... 아 옛날 사람 같네...) 이전까지는 종종 이 V8 엔진을 장착한 차량들이 있었고 그런 차량들은 스포츠카, 고성능 차량으로 분류되었다. 몇 백 마력은 기본이고 전차에 들어가는 V8 엔진은 1200마력 정도는 우습게 뽑아낸다. 최대 단점은 연료 소비량이 어마 무시하다는 거다. 그래서 크롬도 메모리를 다 쳐 먹나...

잡설이 길었는데 오늘은 이 구글에서 개발한 자바스크립트 엔진 V8에 대해서 알아보려고 한다.

이제 V8 엔진에 관한 이야기 진짜 시작 부릉 부릉


 

구글의 자바스크립트 엔진인 V8은, 웹 브라우저 크롬의 JS 엔진으로 시작했다. 왜 V8이라는 이름을 가지게 되었는지는 모르겠다. 아마도 이름만큼 빠른 퍼포먼스를 내는 엔진 성능 때문에 붙여진 이름이 아닐까 추측해 본다.

 

크롬의 JS 엔진에 불과(?)했던 V8이 유명세를 타게 된 건, 2009년 Ryan Dhal이 V8 엔진에 libuv 라이브러리를 끼얹어서 탄생시킨 Node.js 때문이다. 

 

이미 꽤 오래전부터 JavaScript를 브라우저에서 끌어내 데스크톱과 서버에서도 사용하기 위해 무던하게 노력하던 사람들이 있었지만, 이래 저래 좌절을 맛보고 있던 상황에서 충공깽 급인 Node.js의 등장과 더불어 대성공으로 인해 덩달아 유명해졌다.

 

JavaScript Engine의 종류 (유명한 것만... 아마도 더 있을 거예요)

  • V8 (chrome / nodejs / electron / MS Edge etc)
    지금 이야기하고는 JS Engine
  • SpiderMonkey (firefox)
    JavaScript의 아부지 브랜든 아이크 할아버지가 만든 최초의 JS Engine으로 현재 모질라재단에서 관리되며 불여우(FireFox)의 JS 및 웹어셈블리 엔진으로 사용 중이다.
  • Chakra(Microsoft Edge)
    원래는 IE9에서 사용되는 JScript(JavaScript가 아니다!) 엔진이었으나 브라우저 시장에서 패배하기 시작한 MS가 Edge 브라우저를 내놓으며 다시 같은 이름을 붙여 함께 출시한 JS 엔진이다. 뭐 이마저도 오픈소스로 전환하고 에지는 여차 저차 해서 더 이상 Chakra를 사용하지 않는다.
  • JavaScriptCore (Safari / React Native / Bun etc)
    애플에서 제공하는 JS 엔진으로 "번"이 맥에서 겁나 빠른 이유가 바로 이거임... JS 런타임인 번은 우린 NodeJS 나 Deno 보다 겁나 빠르다고 하는 게 이거 기반으로 맥으로 서비스하는 경우만 임.

보시면 아시겠지만, 현재 JS 엔진은 V8이 세계를 제패하고 있다고 보면 된다. JS 개발자가 굳이 이런 것까지 깊이 알 필요까지는 없겠지만,  I/O 작업보다는 CPU 민감한 작업을 해야 한다면, 필요해 따라서는 C / C++로 개발하고 V8에 끼얹어서 컴파일해야 하는 경우가 있다면 어느 정도는 알아야 하겠죠?

 

필요하다면 엔진 자체를 설치해서 사용해 볼 수 있다

jsvu
 

GitHub - GoogleChromeLabs/jsvu: JavaScript (engine) Version Updater

JavaScript (engine) Version Updater. Contribute to GoogleChromeLabs/jsvu development by creating an account on GitHub.

github.com

 

사용법은 github 확인. 따로 정리하기 귀찮음...

 

여기서 잠깐 보통 브라우저는 크게 두 개의 엔진으로 구성된다. 하나는 지금 알아보고 있는 JavaScript 엔진이고 다른 하나는 HTML과 CSS를 처리해서 화면에 그려주는 역할을 하는 게 렌더링 엔진이다.

 

렌더링 엔진의 종류

  • Gecko
    웹의 폭발을 일으켰던 넷스케이프 내비게이터에서 갈라져 나온 엔진으로 아주 오래전부터 진행돼온 렌더링 엔진이다 보니 오래된 사이트와도 호환성이 뛰어난 편이다. 현재 불여우의 렌더링 엔진이며, 모바일용 FireFoxOS가 이걸 기반으로 제작되었으나 망했다...
  • WebKit 
    KDE의 파일 관리자 Konqueror에서 사용한 브라우저 엔진인 KHTML을 애플에서 가져다가 만들어낸 엔진으로 현재는 Blink와 WebKit으로 분기되었으며 Safari 가 사용 중이다. 재밌는건 iOS의 정책 덕에 iOS용 크롬은 WebKit 기반으로 제작되고 있다.
  • Blink
    구글이 WebKit을 기반으로 만들어낸 엔진으로 현재 사용 중인 대부분의 브라우저 렌더링 엔진이 Blink를 기반으로 제작되었다. 크롬, 크로뮴, 네이버 웨일, MS Edge 등이 그 예이다.
  • Trident
    IE에서만 사용되던 렌더링 엔진으로 악마 같은 놈이었다는 것만 소개한다... 물론 야들이 그런 건 아니지만... 어쨌든 결과론적으로는 악마 같은 놈들의 한 축이었다. 몇 개월 전에 유명을 달리했다. 그것도 우리나라에서... 

 

 

Internet Explorer's final resting place: as a 'world-class joke' in South Korea | CNN

For Jung Ki-young, a South Korean software engineer, Microsoft’s decision to retire its Internet Explorer web browser marked the end of a quarter-century love-hate relationship with the technology. To commemorate its demise, he spent a month and 430,000

www.cnn.com

 

 

너무 길다 V8 동작 방식은 2편으로~~

 

 

반응형