バイトコードをアーキテクチャ固有の命令に変換できる仮想マシンでコードを実行すると、異なる CPU アーキテクチャ (x86 および ARM) 用に Windows (Windows 8 および RT) の個別のバージョンがあるのはなぜですか? たとえば、Android は JVM で実行される Java に基づいており、完全な互換性を持つ ARM と Intel CPU を搭載したスマートフォンがあるのはそのためです。マイクロソフトが同じことをしない理由は何ですか?
1 に答える
バイトコードをアーキテクチャ固有の命令に変換できる仮想マシンでコードを実行すると、異なる CPU アーキテクチャ (x86 および ARM) 用に Windows (Windows 8 および RT) の個別のバージョンがあるのはなぜですか?
Windows 8 の x86 バージョンでは、すべてのコードが仮想マシンで実行されるわけではありません。デスクトップ モード アプリケーションは、完全な x86 または x64 プロセスとして実行されます。
そうは言っても、ここでの目標の一部は、これらのデバイスの API を意図的に制限および変更することであり、完全なサポートを提供することではなかったと思います。.NET フレームワークには、「デスクトップ」または「サーバー」アプリケーション用に設計された多くの型とメソッドがあります。ネイティブ命令に変換することでこれらを機能させることは (理論的には) 可能ですが、全体的なアーキテクチャはこれらのデバイスには適していません。
Windows 8 (および Windows Phone 8) に固有の新しい API と別の "フレームワーク" を提供することで、フレームワークは適切な API (遅延 (同期メソッドなし)、消費電力、またはその他の同様の問題の観点から適切なもの) に制限することができます。
そうは言っても、ポータブル クラス ライブラリは、ほとんどの "純粋な" ロジック アセンブリの橋渡しをしようとしています。PCL を使用すると、デスクトップと RT、電話などの Windows 8 で使用できる単一のアセンブリを作成できます。