.NET Native
.NET Native ist eine Toolchain, die als wichtigsten Bestandteil einen Ahead-of-time-Compiler beinhaltet und zu Microsofts .NET-Plattform gehört. Der Compiler dient der Kompilierung von Windows Store Apps (UWP), die in C# oder Visual Basic .NET programmiert sind.[1] .NET Native wird außerdem als Laufzeitumgebung und als Bestandteil oder Ergänzung von .NET Core eingeordnet, aber bisher nur für UWP-Apps unterstützt.
Im Rahmen des ursprünglichen Kompilierungssystems im .NET Framework wird der Programmcode zur Übersetzungszeit zunächst in den Zwischencode Common Intermediate Language und davon ausgehend zur Laufzeit per Just-in-time-Kompilierung in Maschinencode kompiliert (Siehe auch: Common Language Runtime). Im Unterschied dazu wird bei .NET Native der Programmcode von UWP-Apps zusätzlich vorab in Maschinencode, d. h. in nativen Code kompiliert.
Für das eigentliche .NET Core (also nicht UWP) dagegen ist seit mehreren Jahren ohne Freigabe (Stand Juni 2019) ein alternatives Laufzeitsystem für die Ahead-of-time-Kompilierung im Repository corert in Entwicklung, das anscheinend auch bis auf weiteres experimentell bleibt.[2][3][4]
Eine weitere Möglichkeit der AOT-Kompilierung gibt es für .NET Core seit der Version 3.0 durch sogenannte Ready-To Run Images. Die JIT-Kompilierung wird vorab ausgeführt und das Ergebnis, der (plattformspezifische) Maschinencode gemeinsam mit dem Managed Code in der Assembly-Datei gespeichert.[5]
Geschichte
Die Entwicklung von .NET Native wurde durch Microsoft erstmals im April 2014 bekanntgegeben. Eine Vorabversion des Compilers war in Visual Studio 2013 Update 2 enthalten. Die erste finale Version wurde zusammen mit Visual Studio 2015 verfügbar.
Einsatz
Anfänglich konnte der Compiler nur für Windows-Anwendungen benutzt werden, die basierend auf der Windows Runtime unter Windows 8.x laufen. Mittlerweile ist er für Anwendungen einsetzbar, die für die Universal Windows Platform und Windows 10 entwickelt wurden. Microsofts Angaben zufolge verbessert .NET Native die Performance von UWP-Anwendungen um bis zu 60 Prozent.[6]
Literatur
- Mascha Schnellbacher: .NET Native und die Bedeutung für Universal-Windows-Platform-Entwickler, in: entwickler.de vom 21. August 2015
- Holger Schwichtenberg: Native Framework-Evolution, in: dotnetpro Nr. 8/2014, S. 74 ff.
- Holger Schwichtenberg: C# erzeugt jetzt auch nativen Code, in: heise developer vom 3. April 2014
- Holger Schwichtenberg: Zwei auf einen Streich, in: Windows Developer Nr. 10/2015, S. 8–14, auch online bei entwickler.de
- Holger Schwichtenberg: Begrenztes Universum, in: iX – Magazin für professionelle Informationstechnik Nr. 2/2016, S. 50 ff.
Weblinks
- Überblick über .NET bei mirGitHub (Memento vom 4. März 2016 im Internet Archive)
- Dokumentation zu .NET Native im MSDN
- .NET Native als Package in NuGet
Einzelnachweise
- mairaw: .NET Native und Kompilierung. Abgerufen am 28. November 2019 (deutsch).
- This repo contains CoreRT, a .NET Core runtime optimized for AOT (ahead of time compilation) scenarios, with the accompanying compiler toolchain.: dotnet/corert. .NET Foundation, 23. Juni 2019, abgerufen am 23. Juni 2019.
- [Question] CoreRT future plans · Issue #7200 · dotnet/corert. Abgerufen am 23. Juni 2019 (englisch).
- Matt Warren: CoreRT - A .NET Runtime for AOT. 7. Juni 2018, abgerufen am 23. Juni 2019 (amerikanisches Englisch).
- Announcing .NET Core 3.0 Preview 6. 12. Juni 2019, abgerufen am 28. November 2019 (amerikanisches Englisch).
- Mascha Schnellbacher: .NET Native und die Bedeutung für Universal-Windows-Platform-Entwickler, in: entwickler.de vom 21. August 2015