r   e   k   l   a   m   a
r   e   k   l   a   m   a

Sky (is the limit). Dość już Javy, superszybkie aplikacje dla Androida powstaną w języku Dart

Strona główna AktualnościOPROGRAMOWANIE

Aplikacje w Androidzie 5.0 znacząco przyspieszyły – to przyzna chyba każdy użytkownik urządzeń z Lollipopem, który wcześniej korzystał z poprzednich wersji tego systemu. To zasługa zmiany środowiska uruchomieniowego. Kolejne wersje tego systemu mogą ich szybkość poprawić jeszcze bardziej: na horyzoncie pojawiła się możliwość zmiany języka, w którym powstają aplikacje dla Androida.

W porównaniu do iOS-a, Android w swoich początkach szybkością nie grzeszył. Widać to było nie tylko w responsywności interfejsu użytkownika, ale też w szybkości działania większości aplikacji, zarówno systemowych, jak i tych ze sklepu Play. Nie mogło być inaczej – oprogramowanie dla iPhone'a czy iPada pisane było w Objective-C i kompilowane bezpośrednio do kodu maszynowego, podczas gdy na Androidzie pisano je zwykle w Javie i kompilowano do kodu bajtowego dla wirtualnej maszyny Javy, który był następnie tłumaczony na kod bajtowy maszyny wirtualnej Dalvik. Narzut generowany w tym procesie potrafił być zaskakująco duży. Niektóre benchmarki pokazywały nawet trzydziestokrotną różnicę w wydajności między aplikacją natywną a aplikacją Dalvika na tym samym urządzeniu z Androidem.

Zastąpienie w Androidzie 5.0 Dalvika przez nowe środowisko uruchomieniowe ART poprawiło sytuację. Aplikacje wciąż są pisane w Javie, ale podczas procesu instalacji aplikacji przeprowadzana jest kompilacja wraz kompleksową optymalizacją typu ahead-of-time (AOT), w wyniku czego uzyskujemy natywny kod maszynowy w linuksowym formacie ELF. Choć instalacja trwa teraz dłużej, a aplikacje zajmują więcej miejsca, to zarazem uruchamiają się szybciej, działają oszczędniej (w sensie zużycia energii) i wydajniej – znika narzut generowany przez Dalvika.

r   e   k   l   a   m   a

W zeszłym roku Apple pokazało jednak następcę Objective-C, język Swift, przeznaczony do pisanania oprogramowania na systemy iOS i OS X, określany często jako Objective-C bez C. Nowoczesne struktury języka pozwoliły na efektywniejsze wykorzystanie kompilatora LLVM, powstały kod działa nie tylko sporo szybciej, ale jest też bardziej zwięzły i odporniejszy na błędy. Wiele wskazuje na to, że Google chce pójść podobną drogą i Javę zastąpić docelowo swoim językiem Dart, rozwijanym niegdyś jako niespełniona alternatywa dla JavaScriptu. Dart w Androidzie przynieść ma niespotykaną szybkość działania i łatwość integrowania aplikacji z usługami webowymi.

Dart został stworzony przez autorów silnika skryptowego V8, wykorzystywanego w przeglądarkach Chromium i Chrome oraz ich klonach, a także w popularnym frameworku programistycznym Node.js, w nadziei, że uda się nim zastąpić ten brzydki i koślawy język zwany JavaScriptem. Wyparcie JS okazało się niemożliwe, przeglądarki do dziś nie mają wirtualnych maszyn Darta, więc jedyne co zostawało zwolennikom tego języka, to kompilacja kodu Darta do JavaScriptu. Kilka dni temu jednak na GitHubie zadebiutował projekt, który obiecuje nowe życie dla Darta – Sky. To eksperymentalny framework interfejsu użytkownika dla mobilnych aplikacji, który pozwolić ma na budowę przepięknego oprogramowania o bardzo wysokiej responsywności, działającego płynnie z częstotliwością odświeżania 120 Hz. Ta liczba to nie efekt pracy chochlika, deweloperzy Sky naprawdę mierzą w rysowanie kolejnych klatek animacji w czasie 8 milisekund.

Nawet dzisiaj, z Androidem 5.0, rzadko kiedy udaje się osiągnąć renderowanie animacji 60 Hz (czyli rysowanie kolejnych klatek co 16 ms), szczególnie na słabszych urządzeniach można zobaczyć, jak animacje potrafią się zacinać, gdy podsystem grafiki nie zdąży z wyrobieniem się w tym czasie. Tymczasem już dziś w sklepie Play pobrać można zbudowaną na Sky aplikację testową, która rysuje klatki w czasie 1,2 ms. Jak to jest możliwe?

Sercem Sky jest napisany w C++ silnik, dostarczający m.in. planistę czasu rzeczywistego i własny, hierarchiczny podsystem grafiki. Nad nim działa szkielet Sky, zapewniający dobrze znane elementy interfejsu – rozmaite przyciski, listy, animacje – sterowane programami pisanymi właśnie w języku Dart. Architektura frameworka ma gwarantować, że interfejsy programistyczne nigdy nie zablokują głównego wątku interfejsu użytkownika, dzięki czemu nawet jeśli aplikacja będzie spowalniała, interfejs wciąż będzie płynny i responsywny.

Co szczególnie zastanawia, to niezależność kodu pisanego na Sky od platformy. Widać tu wpływy przeglądarkowego paradygmatu myślenia o oprogramowaniu. Aplikacje takie mogą działać na dowolnym urządzeniu z maszyną wirtualną Darta, czy to będzie Android, iOS, czy może nawet Windows. Co więcej, aplikacje nie są de facto instalowane w systemie, ale są serwowane z Internetu, po HTTP, tak samo jak aplikacje webowe. Bez pamięci podręcznej nie będą działały offline. Niektórym użytkownikom może się to nie spodobać, ale z perspektywy programistów ma to same zalety, ułatwiając aktualizację i dystrybucję nowych wersji oprogramowania. Poza tym aplikacje Sky zachowują się w Androidzie całkiem normalnie, mają pełny dostęp do systemowych API, kontrolowane są przez uprawnienia, a wykorzystywane przez nie widżety zgodne są z wytycznymi wzornictwa Material Design.

Za wcześnie jeszcze mówić, czy to właśnie Dart i Sky będą odpowiedzią Androida na Swifta, ale nawet jako eksperyment już teraz robi spore wrażenie. Tak responsywnych aplikacji nie ma nawet na iOS-ie, nie było nawet na Symbianie, a przecież właśnie na responsywność użytkownik głównie patrzy, oceniając „szybkość” systemu operacyjnego (co pokazała historia Windows Phone, systemu zoptymalizowanego głównie pod kątem responsywności).

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.