Microsoft .NET Native Developer Previewが公開されています。こちら。
Microsoft .NET Nativeとは従来.NETで利用されていたプログラミング言語C#を用いてC++のような高パフォーマンスのNativeコードのアプリケーションが開発できるというプリコンパイル技術ですね。
折角ですので、MSDNに掲載されている説明を簡単に翻訳しておきますね。
適当翻訳(一部意訳なども含む)なのでいつものように内容は保証できません。気になるようであれば原典であるリンク先を確認して下さいね。
従来、.NETのプログラムでは一度Intermadiate language(通称IL)にプリコンパイルされたあと、Just-in-time(通称JIT) compilerによってアプリケーションの初回実行時にNative codeに変換されていました。
対してWindows Storeアプリではこの変換をILを介さず、直接行っています。
これによって、開発者視点では
- アプリがNative Codeにより優れたパフォーマンスで実行される
- 開発は従来利用していたC#で行える
- .NET Frameworkで利用していたクラスライブラリなどの開発リソースをと用いて開発を続けることができる。これらには自動メモリ管理、ガベージコレクション、例外ハンドリングなどが含まれます。
また、あなたが開発したアプリケーションのユーザーにとっての利点として
- 高速な実行時間
- 一貫した起動時間向上
- アプリケーションメモリの最適化
が挙げられます。
しかし、.NET Nativeは単にNativeコードにコンパイルするだけではありません。.NET Frameworkアプリのビルドと実行方法が変化します。たとえば
- プリコンパイルの際に、.NET Frameowkrの必要な箇所をあなたのアプリに静的なリンクします。つまり、アプリケーションのローカルにあるライブラリでアプリを実行することが可能になります。 それによってコンパイラーはローカルで総合的な解析がおこなえるようになり、最終的には.NET Frameworkの更新後でも一貫して高速に実行することが可能です。
- .NET Native Runtimeは静的プリコンパイルするために最適化されて最終的にはパフォーマンスの向上を可能しています。開発者にとって非常に生産的なコアリフクレクション機能であることがわかるでしょう。
- .NET NativeはC++コンパイラー同じバックエンドが利用されています。これらは静的プリコンパイリシナオリに最適化されています。
.NET Nativeはマネージコード開発者にC++の持つパフォーマンス利点を与えます。それはC++内部で利用されているツールに同じ、または近いものが利用されているからです。
その一部が以下になります。
.NET Native C++ Libraries .NET Framework + Windows Runtime Win32+Windows Runtime Compiler UTC最適化コンパイラ UTC最適化コンパイラ Deployed Ready-to-run binaries Ready-to-run binaries(ASM) Runtime MRT.dll(Managed Runtime) CRT.dll(C Runtime) (For Windows Storeアプリ for Windows 8.1, Windowsストアに.NET Native Codeによってコンパイルされたアプリケーションパッケージをアップロードした場合)
ということで、またおもしろそうな技術が出てきましたね。また、時間があるときにでも少し勉強会とかでお話させてもらおうかな。ということでメモ。
ツイート