Managed code vs. native code, it's one of the great debates of our time. Microsoft began working on the .Net Framework back in the late '90s, and .Net 1.0 was released way back in 2000. Basically the idea is that instead of writing code that performs all the mundane and common duties like memory management for each and every application, a "common language runtime" or CLR, would perform all the low level duties of the program and developers would be able to concentrate on the higher levels of their code. This worked great and reduced the intricacies of writing code, but performance has always been an issue, as that transformation from high level code to the CLR to the actual instructions to the computer inherently slowed things down.
Now Microsoft thinks it has hit upon the best of both worlds with a new programming paradigm it's calling .Net Native. Developers who have grown up with .Net and call Visual Studio home will be able to use all their familiar tools including C# or Visual Basic and common .Net libraries, but once the code is compiled, these .Net Native programs will start up and run faster, and won't require the installation of a .Net Framework version on the client's computer to run.
In a post on the Building Apps for Windows blog, Microsoft Program Manager Daniel Jacobsen describes .Net Native, and offers a number of reasons why Microsoft thinks it's better:
- Up to 60% performance improvement on cold startup times
- Up to 40% performance improvement on warm startup times
- Less memory consumption of your app when compiled natively
- No dependencies on the desktop .NET Runtime installed on the system
- Since your app is compiled natively, you get the performance benefits associated with native code (think C++ performance)
- You can still take advantage of the industry-leading C# or VB programming languages, and the tools associated with them
- You can continue to use the comprehensive and consistent programming model available with .NET– with extensive APIs to write business logic, built-in memory management, and exception handling.