How N-API Born

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2020 Jun 18 3:8
Editor
Edited
Edited
2022 Jun 23 8:2
Refs
Refs

N-API

문제종결

다시 위와같은 문제를 해결하기 위해 N-APINext Generation Node API가 만들어졌습니다. 2016년에 논의되었고, 2017년에 실험적으로 운용되었으며, 2018년에 이르러서야 정식으로 출시되었습니다. Node.JS의 초창기부터 함께해온 NAN와 비교하면 엄청난 후발주자가 아닐 수 없습니다.
 
하지만 NAN와 달리 N-API는 Node.JS자체에 포함되어 있으며, 바이너리 수준에서 호환성을 유지시켜주는 ABIApplication Binary Interface라는 것이 엄청난 장점입니다. 한번 N-API를 사용하여 컴파일된 DLL파일은 바이너리 호환성Binary Compatibility를 지니기때문에, 몇 년이 지나도 최신버전에서 안정적으로 동작할 수 있음을 보장하기 때문입니다.

또한 NAN보다 더 직관적인 인터페이스를 채택하고, Node-Addon-API라고 불리는 C++ 프로그래머를 위한 래핑 버전까지 제공합니다. 물론 NAN도 C++래핑을 지원하지만 Node-Addon-API가 훨씬 더 사용하기 쉽습니다. 반드시 이전 버전도 지원해야하는 경우가 아니라면 N-API를 사용하여 개발하는 것이 정신건강에 이롭습니다.
 
 
 

동작방식

한번 작성된 DLL파일이 앞으로 나올 최신버전에서도 모두 사용될 수 있다니 N-API는 마법의 산물일까요? 프로그래머는 마법같은 것을 믿지 않기 때문에, 그 원리를 파헤쳐야합니다. N-API가 이런 마법같은 일을 벌일 수 있는 기본원리는 매우 간단합니다. 바로 V8의 밑바닥를 추상화하는 것이죠.

V8코드도 N-API를 사용하고, 우리가 작성할 C/C++코드도 N-API를 사용하기 때문에, 새로운 V8이 나오더라도 그 엔진이 N-API를 사용하도록 노드팀이 재설계해준다면, 우리는 아무것도 할 필요가 없어지는 것이죠. 이것이 V8의 밑바닥을 추상화Abstraction of the underlying JavaScript engine하는 것의 의미이고, N-API의 기본 원리이며, Node.JS에 빌트인된 이유입니다.
notion image
N-API의 모형도
 
 
 
 
 
 
 
 
 
 

Recommendations