iOS 8 WKWebView – wielka zmiana dla aplikacji mobilnych HTML5

Pojawiła się zupełnie nowa kontrolka WKWebView, oraz dodano wsparcie dla nowych funkcjonalności HTML5. Całość opisana została szczegółowo w artykule!

Tworzenie aplikacji mobilnych przy pomocy HTML5 od zawsze wiązało się z mniejszą wydajnością w porównaniu do aplikacji natywnych. Każde stworzone oprogramowanie jest zależne w tym momencie od platformy, a będąc bardziej dokładnym od przeglądarki na jakiej pracuje.

Każda z platform ma własną specjalną kontrolkę „Web view”, która służy do wyświetlania zawartości treści przy pomocy HTML5. W systemie iOS do dyspozycji programistów kontrolką web view jest „UIWebView Class”, która niestety nie posiada dostępu do niektórych metod optymalizacji wydajności, takich jak silnik NitroJIT Javascript, który był w wbudowany w natywną aplikację Safari. To właśnie z powodu tych niedogodności wszystkie mobilne aplikacje hybrydowe na platformie iOS działały przyzwoicie, ale trochę brakowało do ideału.

Teraz wszystko się zmienia! Aktualnie Apple wdrożyło zupełnie nową kontrolkę „WKWebView”, która swoją wydajność posiada identyczną jak ta z przeglądarki Safari. Jest to wielki ukłon Apple w stronę programistów tworzących aplikacje mobilne w technologiach Web (HTML5, CSS3, Javascript), bo wszystkie hybrydowe aplikacje zyskają znacząco na wydajności, gdy już zaczną korzystać z nowych rozwiązań.

Lepsza wydajność

Należy się przyjrzeć o jakich dokładnie korzyściach mówimy. Według Allena Pike sytuacja prezentuje się następująco:


Niestety w tym momencie nie jestem w stanie samemu przeprowadzić testów na fizycznych urządzeniach w obu wersjach systemu, dlatego posłużę się przykładami z sieci. Według źródła Dev Cordova Apache
Dla urządzenia iPod Touch iOS 8 wyniki przeprowadzonych testów przy pomocy Sunspider Javascript Benchmarking oraz wynik HTML5 prezentują się następująco:

Typ Sunspider HMTL5 Test
Safari 1825ms 440/555
UIWebView 7114.6ms 427/555
WKWebView 1822.8ms 438/555
HomeScreen 1801.0ms 427/555

Kilka ciekawych wniosków z podanego źródła:
– IndexedDB i Objectstore ArrayBuffe jest wspierany tylko przez Safari i WKWebView
– UIWebView jest średnio ~4x wolniejszy od WKWebView dla Javascript na podstawie wyników Sunspider
– WKWebView nie może ładować lokalnych plików co jest problematyczne dla Cordova / Phonegap / Offline.

Co to zmienia?

Wieloplatformowe aplikacje mobilne HTML5 nigdy nie będą tak szybkie i idealnie dopasowane jak te, które korzystają z natywnych rozwiązań. Jednak zwiększenie ich prędkości dzięki kontrolce WKWebVeiw może w końcu sprawić, że dla wielu aplikacji taka wydajność będzie w zupełności wystarczająca. W szczególności mam na myśli aplikacje biznesowe lub te, które po prostu wyświetlają listy produktów i inne podstawowe treści.

Czego jeszcze nie zmienia?

Zespół tworzący Apache Cordova nadal pracuje nad wdrożeniem kontrolki WKWebView.
Całość prac można obserwować w zadaniu CB-7043 w systemie zarządznia zgłoszeń „Jira”. Czekam z niecierpliwością 😉

You may also like...