NW.jsまたはElectron?





Webテクノロジーに基づいて独自のデスクトップアプリケーションを作成する場合、オープンソースの世界には、NW.js(以前のnode-webkit)とElectron(atom-shell)の2つの主なオプションがあります。 それらの間の選択はそれほど明白ではないので、比較表を作成し、最も重要な違いに焦点を合わせることにしました。



NW.jsとElectronの両方は、HTMLを表現としてデスクトップアプリケーションを開発するためのプラットフォームと、システムAPIにアクセスするためのNodeJS(ハードディスク、ハードウェアなどを操作するため)を提供します。 しかし、2つのプロジェクトには根本的な違いがあります。



パラダイム



NW.jsでは、アプリケーションへのエントリポイントはWebページです。 package.jsonでメインページのURLを指定すると、メインアプリケーションウィンドウとして開きます。 Electronでは、エントリーポイントはNodeJSプログラムです。 URLを直接指定する代わりに、手動でウィンドウを作成し、APIを使用してHTMLファイルをそこにロードします。



これは過度に単純化されていますが、NW.jsパラダイムはブラウザー指向であると言えます。 NW.jsは指定されたHTMLページをロードし、このページはNode.jsのコンテキストにアクセスします。 複数のウィンドウが開いている場合、それらはすべてこの共通のNode.jsコンテキストにアクセスできます。 これは、開いているすべてのウィンドウのDOMに透過的にアクセスできることを意味します。

一方、ElectronはよりNodeJS指向のアプローチを採用しています。 Node.jsランタイムを起動し、ウィンドウを開いてWebページをロードできるようにします。 つまり、複数のウィンドウをメインプロセスにリンクすることははるかに困難です。

勝者 :ニーズに依存します。



ソースコード保護



Electronには、ソースコードを保護するメカニズムがありません。 Asarは単純なtarアーカイブであり、事実上すべてのユーザーがプログラムを通常のアーカイブとして「解凍」し、すべてのリソースとソースコードにアクセスできることを考えると、許容可能な保護とは言えません。



NW.jsを使用すると、 V8 Snapshotで保護された実行可能ファイルを作成できます。 もちろん、このソリューションはJavaScriptをマシンコードにコンパイルせず(ドキュメントの主張どおり)、ソースコードの完全なセキュリティを提供しません。 本質的に、これは非常にわかりにくいコードです。 ただし、ソースコードを完全に開いたままにしておくことが唯一の選択肢である場合、多くの開発者はパフォーマンスの約30%の損失を考慮してもV8スナップショットを好むでしょう。

勝者 :NW.js



打ち上げ時間



アプリケーションの起動時間を具体的に測定しようとはしませんでしたが、私の個人的な感情によると、ElectronのアプリケーションはWindowsとOSXの両方で著しく速く起動します。 V8スナップショットを無効にしても、NW.jsアプリケーションのロードははるかに遅くなります。

勝者 :電子



オープンソース



かつて、ElectronはNode.jsの開発停滞時にIO.jsをサポートする大胆な一歩を踏み出しました。 これは、Electronが高度なJavaScript機能のサポートに大きくコミットしているのに対し、NW.jsは後方互換性をサポートすることを指向していることを意味します(少なくとも理論上)。



また、Electronの開発速度が速いことも忘れてはなりません。 1週間に100を超えるコミット、1か月に10のリリース。 開発チームは、githubに関する質問に積極的に回答しています。 一方、NW.jsはバージョン0.15のままであり、githubのドキュメントはかなり古いようです。 たとえば、「node-webkit」という名前への参照を定期的に確認できますが、プロジェクトの名前は数年前に変更されました。

勝者 :電子



実績



NW.jsがElectronよりも長いという事実にもかかわらず、私が知る限り、Electronははるかに人気のあるアプリケーションを開発しました。 この NW.jsのリストから、Popcorn TimeとKoalaのほかに、重要なもの選び出すことは困難です。 一方、 Electronリストはより堅実に見えます。

-アトム

-スラック

-Visual Studioコード

-Cocos Creator

-ピクサートピクサート

勝者 :電子



おわりに







概して、2つのプロジェクトの唯一の重要な違いは、1つの機能、つまりソースコードを「保護」する機能(またはその欠如)にあります。 私の意見では、これが開発者がNW.jsを選択できる唯一の理由です。 この結論はおそらく私自身のバイアスに苦しんでいますが、 ElectronはNW.jsよりもはるかに積極的に使用しました。 したがって、コメントでは、これら2つのライブラリの使用経験を教えてください。



こちらもご覧ください

NW.jsとElectronの比較

ElectronとNW.jsの技術的な違い



All Articles