Google chrome の Native Client について話しています...
開発者は、ブラウザのサンドボックスで c / c++ からコンパイルされたネイティブ コードを実行できると主張しています。
それらは多くのことを説明していますが、私が必要としているものを決して指摘していません... では、CreateWindow を使用してアプリケーションでウィンドウを作成すると、Native Client アプリケーションがブラウザにロードされたときにこのウィンドウが表示されますか?
2 に答える
要するに、違います。ChromeでNativeClientを使用するアプリについて知っておくべき2つの重要な点:
- これらはプラットフォームに依存しません(プラットフォーム固有の呼び出しは許可されていません)。
- それらはまだそれに伴う制限と可能性を備えたウェブアプリです。
Native Clientがのようなオペレーティングシステム固有の呼び出しを許可した場合、CreateWindow
プラットフォームに依存しなくなります(また、セキュリティリスクも発生します)。
代わりに、Native Clientは、サポートされているすべてのオペレーティングシステム(現在はMac OS、Windows、Linux、およびChrome OS)で同じように機能するPepperまたはPPAPIと呼ばれるプラットフォームに依存しないAPIのセットを提供します。前述のように、Native Clientを使用するアプリは引き続きWebアプリであるため、PepperはJavaScriptに期待するのと同じ可能性と制限を提供します。たとえば、URLを取得したり、ユーザーに全画面表示の許可を求めたりすることはできますが、ローカルファイルシステムからランダムなファイルにアクセスすることはできません(アプリ固有の分離されたローカルストレージが可能です。ユーザーにアプリで使用するファイルをアップロードさせることもできます)。 。
既存のCまたはC++コードベースをNativeClientに移動することは、別のオペレーティングシステムに移植することと非常によく似ています。たとえば、Windows API呼び出しを使用する代わりに、アプリはPepperAPI呼び出しを使用する必要があります。
追加の背景として、 ChromePackagedAppsが名前空間内のはるかに幅広いAPIセットへのアクセスを要求できることに注意する価値があるかもしれませんchrome.*
。これらのAPIには、USB、ソケット、新しいウィンドウを開くなどが含まれます。Chromeパッケージアプリは引き続きOS固有の呼び出しを行うことはできませんが、プラットフォームに依存しない、さらに多くのAPIにアクセスできます。
つまり、アプリをPepperAPIとchrome。*APIで動作させることができれば、ネイティブクライアントとJavaScriptで記述でき、前述の4つのオペレーティングシステムで同じように動作するアプリができあがります。その上。アプリをこれらのAPIで動作させることができない場合、ChromeのNativeClientは適切な選択ではありません。
そうではないようです。これは少し関連しています: http://ssj-gz.blogspot.com/2013/01/emscripten-qt-progress-faster-better.html . ただし、これは JavaScript に変換されており、QT 専用です。そして遅い。