Microsoft ogłosił rozpoczęcie prac nad piątą edycją platformy .NET
Microsoft ogłosił prace nad kolejną edycją platformy .NET.
Tak jak przewidywałem w trakcie otwarcia konferencji, Microsoft trzymał jeszcze kilka asów w rękawie. Jednym z nich jest ogłoszenie prac nad piątą już edycją platformy .NET.
Początkowo powstały jako projekt związany ściśle z platformą Windows. Platforma .NET i jej flagowy język C# zaczął w ostatnich latach stawać się coraz bardziej otwarty i multiplatformowy. Microsoft udostępnił jego kod źródłowy i stworzył przyczółek w postaci .NET Core, działający na innych systemach: macOS czy Linux.
To krok w dobrym kierunku. Microsoft zdał sobie sprawę z ograniczeń jakie przynosi związanie środowiska uruchomieniowego z systemem operacyjnym. W trakcie bardzo ciekawego spotkania z Andersem Hejlsbergiem (twórcą m.in. C#, Delphi, Typescript), stwierdził on, że był to błąd, który zatrzymał .NET w rozwoju.
Czas na kolejny krok naprzód
Nie od dziś hasłem Microsoftu jest integracja - to samo hasło będzie przyświecać .NET 5. Zunifikowana platforma, w której będziemy tworzyli i uruchamiali rozwiązania działające na naszych komputerach jako aplikacje webowe na urządzeniach mobilnych, w chmurze, na urządzeniach inteligentnych Internet of Things oraz na konsolach do grania.
Od powstania .NET Core, głównym zajęciem inżynierów Microsoft w ewolucji .NET jest unifikacja poszczególnych API. Dzięki temu napisana w .NET aplikacja będzie mogła być uruchomiona wszędzie - bez potrzeby specjalnego oprogramowywania poszczególnych platform.
Celem kompilacji w .NET 5 będą mogły być m.in: Windows, Linux, iOS, Android, tvOS (system Apple TV), watchOS (Apple Watch) i WebAssembly.
Richard Lander, szef zespołu .NET w Microsoft podkreśla, że w .NET 5 zawarte będą te elementy, które są zaletami .NET Core:
- otwarty kod umieszczony na GitHub, i zorientowanie na społeczność,
- implementacja wieloplatformowa, niezależna od konkretnego systemu,
- wsparcie dla bibliotek natywnych na danej platformie (np. Windows Presentation Foundation),
- wysoka wydajność i mały kod wynikowym
- instalacja wielu wersji obok siebie,
- wsparcie dla narzędzie linii poleceń, podobnie jak polecenie
dotnet
w Core, - integracja z Visual Studio i Visual Studio Code (również na Macach).
Interoperacyjność na sterydach
.NET staje się jeszcze bardziej elastyczny. Będziemy mieli do wyboru np. środowisko uruchomieniowe naszego kodu. Dzięki tzw. Runtime Experiences do wyboru początkowo będzie Mono (środowisko zawarte np. w Xamarin) oraz CoreCLR (będące częścią .NET Core).
Na każdej platformie będzie dostępna pełna interoperacyjność z Javą - z kodu w C# będziemy mogli wywołać metody i klasy Javy i pisać rozwiązania hybrydowe.
Podobnie pełna interoperacyjność będzie dostępna dla kodu w Objective-C oraz Swift - i to nie tylko na macOS.
Bardzo interesujące jest skupienie się na WebAssembly i projekcie Blazor. Blazor umożliwia pisanie webowych aplikacji klienckich za pomocą C#, co umożliwi programistom niemającym doświadczenia w pisaniu „frontendu“ implementację kodu w znanym im języku (C#) i z pełną interoperacyjnością z JavaScript.
Oznacza to, że będziemy mogli wykorzystywać znane i dostępne biblioteki JavaScriptowe i wywoływać ich metody z kodu C# - podobnie jak można to już robić w ASP.NET Core po stronie serwera. Blazor jest również 100 proc. dostępny jako open source, z ponad 60 tysiącami aktywnych kontrybutorów.
Na nową wersję trochę poczekamy
Wersji 5.0 możemy się spodziewać dopiero w 2020 roku. Do tego czasu inżynierowie z Microsoftu będą pracować nad dalszymi usprawnieniami. W trakcie Build 2019 podzielili się kilkoma szczegółami na temat bieżącego postępu.
Pierwsze spotkanie w sprawie .NET 5 odbyło się zaledwie pół roku temu, ale wiele pytań wciąż pozostaje otwartych. Na przykład: skoro będziemy mieli zunifikowaną platformę, to czy wciąż potrzebujemy .NET Standard jako definicji wspólnych API? Jak będą działały pakiety pobierane z NuGet? Podejrzewam, że będą mieli jeszcze pełne ręce roboty, z pożytkiem dla programistów na wszystkich platformach dla których nadchodzą ciekawe czasy.