웹엔진 Electron, NW.js, CEF, Qt WebEngine 에 관하여..

Web|2021. 6. 9. 07:42

웹엔진으로 앱을 만드는 것은 쉬운 일이지만, 브라우저 엔진을 실행하는 만큼 그 용도가 정확하게 맞아야 큰 효과가 있다. 몇가지 솔루션이 있는데, 한번 짚고 넘어가보자.

Electron 

Electron은 Chromium기반의 애플리케이션 런타임이다. 웹기술로 여러 플랫폼을 지원하는 앱을 쉽게 만들 수 있다. 이런 개념은 오래전 부터 존재해왔지만,  Electron이 많은 인기를 끌게된 원인은 바로 Node.JS의 지원이다. 그냥 Node.JS 패키지로 npm으로 설치할 수 있고 JavaScript로 Chromium WebView를 생성하고 Application의 Life cycle을 관리할 수 있다.  또한 다양한 Node.JS 패키지로 강력한 앱을 빠르고 쉽게 만들 수 있는 장점이 있다. 물론 원조는 NW.JS라는 것이 있다.  Electron을 만든 사람도 NW.JS개발자였고 비슷한 부분이 많다. 

https://www.electronjs.org/docs/tutorial/quick-start

위 튜토리얼 보면 쉽게 샘플앱를 만들고 바로 패키징도 할 수 있다.

 NW.js

비교한 글을 보면 NW.js는  Electron과 달리 브라우저 엔진과 같은 context에서 Single Thread로 동작한다고 한다. NW.js의 경우 소스코드를 노출하지 않을 수 있다고 하는데, 이 경우 서버로 기능을 숨길 수 있기 때문에 커다란 장점은 아니라고 한다.

CEF(Chromium Embedded Framework)

CEF의 경우 말 그대로 라이브러리 형태로 하나의 컴포넌트로 WebView를 앱에서 실행하는 것이다. 예전에 IE Component를 사용하는 방식과 같다고 할 수 있다. 기본적으로 C++로 앱을 만들때 사용할 수 있으며 다양한 바인딩이 존재한다.

Chromium 자체가 WebKit처럼  embedding을 목적으로 만들어져 있지 않아서 기존 앱에 WebView를 붙이는 것이 쉽지 않다. 분명 소스코드가 많이 수정되었고 최신 코드를 업데이트하기도 쉽지 않을 것 같다.

https://bitbucket.org/chromiumembedded/cef/wiki/Tutorial

Qt WebEngine

https://doc.qt.io/qt-5/qtwebengine-features.html

Qt도 Chromium WebView를 구현했는데,  Qt로 앱을 만들 때 사용할 수 있다.  Tesla 자동차에서 사용하는 것으로 알고 있다.

 참고

댓글()