Ważne

.NET Native, czyli szybsze uniwersalne aplikacje na Windowsa 10

Niedawno napisałem obszerny artykuł opisujący mechanizm tworzenia, kompilowania i uruchamiania aplikacji na Androida i dotykowego Windowsa. Po niecałych dwóch tygodniach muszę to zrewidować z uwagi na duże zmiany, jakie pojawiły się na windowsowej platformie.

Pisałem:

Największym zaskoczeniem dla niektórych będzie pewnie informacja, że Windows Phone, Windows 10 czy Windows 10 Mobile, do aplikacji dotykowych działających w środowisku uruchomieniowym WinRT (Windows Runtime), również wykorzystuje maszynę wirtualną. Tak, C# jest językiem, który kompilowany jest do kodu pośredniego (bytecode) dokładnie tak jak Java. Dopiero Common Language Runtime (CLR), czyli maszyna wirtualna tego środowiska, kompiluje kod przejściowy do kodu maszynowego. Dokładnie tak jak w Androidzie.

1_DotNetNativeCreateAppPackages

W czasie powstawania tego artykułu było to prawdą, ale wkrótce ma się to diametralnie zmienić. .NET Native to technologia implementowana w Visual Studio, która sprawia, że uniwersalne aplikacje tworzone dla Windowsa 10 kompilowane będą bezpośrednio do kodu maszynowego, a nie tak jak to ma miejsce obecnie – do kodu pośredniego (bytecode), a dopiero potem, na urządzeniu, kompilowane do maszynówki przez lokalną maszynę wirtualną.

Po co to wszystko? Kompilacja do kodu natywnego to mniejsze zużycie zasobów (głównie RAM i procesora), do 60% szybszy zimny start aplikacji i do 40% szybsze wznawianie (wg Microsoftu), wydajność zbliżona do języków kompilowanych do kodu maszynowego (takich jak C++) – a to wszystko przy zachowaniu elastyczności i wygody programowania w C# czy VB.

Po szczegóły odsyłam tutaj i tutaj, ale w największym skrócie będzie to działać w następujący sposób. Kompilując do wersji „Release” wynikiem tego działania będą dwie paczki – .appx do sideloadowania na urządzenia testowe odblokowane dewelopersko i .appxupload z kodem pośrednim dla wysyłania paczek do sklepu. Dlaczego kod pośredni w tym drugim przypadku? I tutaj zaczyna być ciekawie. Kompilacja do kodu maszynowego będzie odbywać się na serwerach Microsoftu (w chmurze). Ale dlaczego nie lokalnie, na maszynie programisty? Microsoft wciąż będzie optymalizował kompilator i wysłane do sklepu paczki mogą być rekompilowane w chmurze przez Microsoft bez potrzeby angażowania w to programisty. Pozwoli to na poprawę szybkości i działania aplikacji oszczędzając jednocześnie czas deweloperów.

3__DotNetNativeCreatePackageForStore

Czas pokaże na ile nowe podejście poprawi wydajność, a w szczególności czasy uruchamiania appek, które były piętą achillesową na słabszych smartfonach. Microsoft najwyraźniej rozumie ten problem i postanowił coś z tym zrobić. Warto podkreślić, że .NET Native to narzędzie tylko i wyłącznie dla platformy Universal Windows Platform, czyli uniwersalnych aplikacji pisanych dla Windowsa 10. Starsze aplikacje mobilne pisane dla WP8.1 nie skorzystają w żaden sposób z tej zmiany, a w systemie Windows 10 Mobile dalej będzie musiała istnieć maszyna wirtualna (CLR) do obsługi appek kompilowanych do bajtowego kodu pośredniego.

Jeżeli znalazłeś literówkę w tekście, to daj nam o tym znać zaznaczając kursorem problematyczny wyraz, bądź zdanie i przyciśnij Shift + Enter lub kliknij tutaj. Możesz też zgłosić błąd pisząc na powiadomienia@tabletowo.pl.

Komentarze

  • kakao

    No to tylko android został z powolną wirtualizacją. RIP

    • Przecież też już nie ma. ART kompiluje do natywnego podczas instalacji.

    • chromixos

      Witamy ART. Już od przeszło 2 lat jest.

      • Konrad Uroda-Darłak

        Od przeszło dwóch lat? Stabilna wersja zadebiutowała niecały rok temu ^^

        • Kamil Stępień

          ART jeszcze nie jest w pełni stabilny z wersją 5.1.1. Trochę wycieków, błędy przekładu kodu B>M się zdarzają w ARMv7[l,a,hl,hf]. Ale w Androidzie M pewnie już działą sprawniej.

          W ogóle ciekawi mnie, w której wersji Androida po zrobieniu pełnego logcat & dmesg nie zobaczę jakichś błędów (i mody, i stocki) :p

          • Konrad Uroda-Darłak

            To jeszcze lepiej :P

    • Nie do końca. ART działa bardzo podobnie, tylko kompilacja jest lokalna na urządzeniu, co ma plusy i minusy. O czym zresztą pisałem tu
      http://www.tabletowo.pl/2015/08/10/lagujacy-android/

      Do natywnego kodu .NET podchodzę z dystansem, bo właśnie ART nie przyniósł zauważalnej poprawy w przypadku Androida.

  • Endo

    W samą porę. Ładowanie apek na mojej 620 irytuje.

  • pistorius

    Windows 10 zanihiluje Androida w ciągu 2-3 lat

    • Kamil Stępień

      Ok, 2-3 lata może to lekka przesada. Da mu to jednak kolejną przewagę nad Androidem.

      • Michael

        Jeżeli W10M będzie działał jak na chwilę obecną to życzę mu powodzenia całym sobą. Przyda się..

    • Tomasz Lenartowski

      A słyszałeś że za miesiąc koniec świata?

    • Android umiera. Tak samo jak Apple i Microsoft.

    • Michael

      Taaaa…

Tabletowo.pl
Logowani/Rejestracja jest chwilowo wyłączona