Microsoft announced .NET Native at //BUILD 2014. .NET Native compiles MSIL programs to native machine code for performance benefits. The current released developer preview enables native code generation for Windows Store apps on ARM and x64 architectures. It is claimed to speed up the app start-up time by 60%, and use a smaller memory footprint.
Compared to the long-existing NGEN tool (ngen.exe), the new .NET Native allows MSIL programs to totally get rid of .NET Framework, whose size is usually tens to hundreds of megabytes. In a nutshell, the major difference is that .NET Native analyzes and extracts the transitive closure of all dependent .NET libraries and statically links them to the program. An optimized CLR runtime (MRT.dll, only hundreds of kilobytes) is also provided for fast start-up and memory management.
It is good to see that Microsoft has made substantial efforts to improve both developer and end-user experiences. More than ten years ago, Microsoft announced its “.NET Strategy” to provide developers an elegant platform for rapid multi-platform development. After years’ evolution, developers have been able to use the same set of programming languages and tools with similar programming interfaces to build apps for desktops, phones, tablets, and many more other devices. “Write once, run anywhere” has become a semi-standard, and greatly eased the cross-platform development.
On the other hand, nowadays various types of devices start running Windows with .NET Framework. The highly diversified hardware and software raise the bar of performance requirements. End-users expect more responsive and performant apps even on resource-limited devices, but managed apps are not running as fast as native apps by the nature of JIT and CLR. Microsoft has to be more developer-friendly to encourage developers contributing to the Windows ecosystem, and at the same time, satisfying users’ expectation is another tricky task. .NET Native is no doubt a crucial and affirmative step for improving user experiences across multiple devices without adding extra burden to developers.
For more information about .NET Native, please visit http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx and http://channel9.msdn.com/Shows/Going+Deep/Inside-NET-Native.