atom-shellとNode-Webkitとの技術的な違い
Node-Webkitのように、atom-shwllはJavaScriptとHTMLでデスクトップアプリケーションを書くダメのプラットフォームを提供します。そしてシステムのローレベルな権限へのアクセスも可能です。
しかしながら、そこには根本的な違いがあって、atom-shellはNode-Webkitとは完全に別なプロダクトになっています。
1. Entry of application
Node-WebkitはアプリケーションのエントリポイントがWebページで、package.jsonにメインページを指定します。そしてそれがアプリケーションのメインウィンドウとしてブラウザで開かれます。
対してatom-shellのエントリポイントはJavaScriptです。そこでURLで指定する代わりにブラウザを作成しHTMLをロードする必要があります。またWindowのイベントを購読してアプリケーションが終了をハンドリングする必要があります。
つまりatom-shellはNode.jsのランタイムのように動作します。そしてAPIはNode-Webkitに比べて低レイヤーです。またatom-shellをphatom.jsのようにウェブのテストのために使うことも出来ます。
2. Build system
Chromiumで完全にビルドする複雑さを避けるために、atom-shellはlibchromiumcontentをChromiumのContent APIにアクセスするために使います。
libchromiumcontentは1つの共有ライブラリでChromium Contentのモジュールとその全ての依存が含まれています。だからビルドのパワフルなマシンを使う必要がありません。
3. Node integration
Node-Webkitでは、NodeをWebページと結合するにはChromiumにpatchを適用することが必要です。対してatom-shellでは私達は違う方法を取りました。libuvのをそれぞれのプラットフォームのメッセージループと結合する方法です。どうやっているのかはnode_bingindsのコードを見て下さい。
4. Multi-context
もしあなたがNode-WebkitのユーザーであったならNodeのコンテキストとWebのコンテキストを理解している必要がありますが、これらのコンセプトはNode-Webkitの実装方法によるものです。
Nodeのマルチコンテキストの機能を使うことにより、atom-shellは新しいJavaScriptのコンテキストをWebページに導入しません。