Kennst du den Glaubenskrieg zwischen Java Entwicklern und C# Devs? Bisher war das Argument, dass Java besser sei, da es auf allen Plattformen unterstützt wird. Ich werde mir aber hier nicht anmassen, meine eigenen Kommentare dazuzugeben. 😀
.NET 5 – eine vereinte Plattform
Seit der Einführung von .NET Core hat Microsoft uns C# Entwicklern nun dieselbe Ausgangslage geschaffen. So können wir mit der Verwendung von .NET Core auch C# für Linux oder Mac OS entwickeln. Da es sich bisher aber um ein anderes Framework handelte, waren noch nicht alle Bibliotheksfunktionen auf allen Plattformen unterstützt. So hatte ich bisher immer die Qual der Wahl, ob ich meine Applikation auf .NET Core beginne und um Limitationen herum programmiere, oder ob ich das Standard .NET Framework verwende, was mich einfach an Windows und seine Laufzeitumgebung bindet.
Nun hat Microsoft uns .NET 5 vorgestellt. Hierbei sollen genau diese zwei Frameworks miteinander «verheiratet» werden. Zusätzlich wollen sie auch gleich Xamarin und Mono zu einem perfekten Quartett vereinen. Falls dir die beiden Parteien noch kein Begriff sind:
- Xamarin ist eine Plattform, welche es uns erlaubt, C# Code für Mobile Applikationen zu schreiben und diese auf iOS sowie Android zu kompilieren.
- Mono hingegen startete 2004 als ein Open Source Projekt, um C# auf anderen Plattformen wie Linux und Mac zu entwickeln. Ja – genau das, was Microsoft nun mit .NET Core gemacht hat. Mono wurde aber mittlerweile von Microsoft akquiriert und hat sich unter anderem im Xamarin Umfeld etabliert.
Alle Tools und Spracheigenschaften sowie das «Look & Feel» sollen sich auf jedem System gleich verhalten.
.NET 5 soll im November lanciert werden und jedes Jahr im November ein Major Update erhalten. So sollte im November 2021 bereits die erste LTS (Long Term Support) Version von .NET erscheinen.
Laufzeitumgebung, Laufzeitumgebung wechsel dich!
Bis heute gab es zwei verschiedene Laufzeitumgebungen CoreCLR und Mono. In Zukunft sollen diese beiden Laufzeitumgebungen über einen Schalter gewechselt werden können. Beide Laufzeitumgebungen haben ihre Anwendungsgebiete und Vorteile – darum soll dies so einfach wie möglich verändert werden können.
Der «Just In Time Compiler» auf welchem .NET von Anfang an basiert, um den «Intermediate Language (IL)» Code in Maschinencode zu übersetzen, wurde mit der neuen Laufzeitumgebung auf Geschwindigkeit, Sicherheit und Einfachheit getrimmt. Dies erlaubt es, der Laufzeitumgebung den Code während der Laufzeit neu zu kompilieren und auf unterschiedlichste Plattformen hin zu optimieren. So werden auch «containerisierte» Anwendungen, welche limitierte Funktionalitäten aufgrund ihrer Umgebung besitzen, besser unterstützt. Im Gegenzug dazu benutzt die Mono Laufzeitumgebung eine «Ahead of Time» (AOT) Kompilation mit dem LLVM Compiler. Somit kann die Startzeit und die Grösse der Applikation verringert werden. Dies ist unter anderem auf Plattformen wie iOS und gewissen Spielkonsolen notwendig, weil es vom Hersteller vorausgesetzt wird. Es schützt zudem die Plattform vor ungewolltem Schadcode, der nachträglich über einen Exploit eingeführt werden könnte. Somit ist die Laufzeitumgebung von Mono für gewisse Anwendungen durchaus praktisch.
Bereits alles geklärt?
Es gibt jedoch noch eine ganze Menge offener Fragen, die geklärt werden müssen:
- Wird Nuget nach wie vor gleich unterstützt sein?
- Wie schreibt man Architektur-/Plattform-spezifischen Code?
- Wird es noch .NET Standard geben?
All diese und noch mehr Fragen stellen sich für das .NET Team und werden in den nächsten Monaten in Form von Konzeptdokumenten der Öffentlichkeit vorgestellt, um Feedback einzuholen.
Was bedeutet das für mein aktuelles .NET 4.X Projekt?
Du fragst dich nun sicherlich: was bedeutet das für mein aktuelles (Legacy) Projekt?
Microsoft hat in einem Blogpost darüber berichtet, dass mit der Version 4.8 des .NET Frameworks die letzte Version mit neuen Funktionalitäten erschienen ist. Das bedeutet einen klaren Shift, wobei sich Microsoft hierbei nur noch auf das .NET Framework 5 fokussieren will.
Sicherheitsupdates und Patches für Netzwerkprotokolle seien die einzigen Aspekte, welche für einige Zeit weiter «supported» werden würden. Daher sollte man sich langsam aber sicher Gedanken zur Migration hin zu .NET 5 machen. Es gibt hierbei doch sehr viele positive Aspekte, von denen alle profitieren können.
Die Zukunft sieht gut aus! Wie wird es sein, wenn wir als Entwickler mit dem gleichen Code auf jeder Plattform unsere Applikationen laufen lassen können? Visual Studio auf Mac OS zu bedienen, um einen Microservice in Azure zu schreiben?
Da könnte jeder Java Entwickler neidisch werden… 😉
Quelle:
Wenn du nicht weiterkommst oder Fragen hast, melde dich einfach!