Dalvik VM vs. ART (Android Runtime): wpływ na użytkowników końcowych?

22

Wraz z Nexusem 5 (Android 4.4 KitKat) Google dostarczył dwa środowiska wykonawcze do uruchamiania aplikacji.

Wybierz opcję Runtime w Androidzie 4.4 KitKat Środowiska wykonawcze Dalvik i ART w systemie Android 4.4 KitKat

Jakie są różnice między Dalvik a ART dla użytkowników końcowych? Jak może to wpłynąć na użytkowników końcowych? Czy jest jakiś konkretny powód, dla którego powinienem wybrać nowy środowisko uruchomieniowe ART?

Android Quesito
źródło
3
Fakt, że musisz włączyć i przeszukać opcje programisty, aby znaleźć to ustawienie, powinien wskazywać, że nie jest on przeznaczony dla użytkowników końcowych.
Dan Hulme
1
@DanHulme Fajna uwaga, ale entuzjaści, którzy nie są programistami, bawią się opcjami programistycznymi i używają jej nawet do pozytywnych celów niezwiązanych z programowaniem.
Android Quesito,
Jeśli chodzi o wrażenia użytkownika, zauważysz tylko, że energia baterii jest znacznie zaoszczędzona, ale nie będziesz w stanie zobaczyć różnicy prędkości podczas przełączania z Dalvik do ART.
Rahul Raina

Odpowiedzi:

26

Dalvik VM (maszyna wirtualna) to wersja wirtualnej maszyny Java Java firmy Google (na której działają aplikacje). Maszyny wirtualne utrzymują aplikacje w izolacji i są niezależne od rzeczywistego sprzętu i innych aplikacji. Aby to zadziałało, Dalvik musi przekonwertować tzw. Kod bajtowy (zaprojektowany dla maszyny wirtualnej) na natywny kod maszynowy. W celu zminimalizowania ograniczenia wydajności wprowadzanego przez konwersję kodu bajtowego na kod natywny, wykonywany jest proces zwany kompilacją Just-In-Time (JIT), który konwertuje gorący, tj. Często używany, kod bajtowy na kod natywny. 1

ART (Android Runtime) to zamiennik dla Dalvik, który korzysta z kompilacji Ahead-Of-Time (AOT), co oznacza, że ​​Twoje aplikacje są kompilowane do stanu gotowości do uruchomienia przed ich uruchomieniem. Zazwyczaj odbywa się to w momencie instalacji aplikacji, dzięki czemu proces uruchamiania i korzystania z nich jest znacznie szybszy i płynniejszy. A ponieważ oznacza to, że kompilacja jest wykonywana tylko raz, możesz także zobaczyć lepszą żywotność baterii.

Jeśli ART jest lepszy pod względem wydajności i żywotności baterii, czy powinienem zacząć go używać?

Nie. Jeśli to zrobisz, możesz uszkodzić aplikacje innych firm. Google udostępnił ten podgląd ART wraz z Androidem 4.4, aby programiści mogli przetestować na nim swoje aplikacje.

Uwaga dodatkowa: podejście Google z ART polega na pokonaniu iOS (aplikacje na iOS są natywne, więc działa lepiej nawet na słabszych specyfikacjach sprzętowych), ale nie wiem, dokąd zmierza ... Kolejna fragmentacja? Zobacz, jak producenci OEM mogą budować urządzenia za pomocą jednego lub obu . Chociaż ostateczna wersja nie powinna wpływać na większość aplikacji, ale nie jest w 100% wieloplatformowa.

1 Uwaga: JIT został dodany do Dalvik w Androidzie 2.2

Android Quesito
źródło
3
Być może warto zwrócić uwagę na dwa fakty: AOT ART powoduje, że aplikacje zużywają o 20..25% więcej pamięci niż DEX. Plus testy na Nexusie-5, które czytałem, nie wykazały żadnych różnic w subiektywnej prędkości ani wytrzymałości baterii. Oba z pewnością poprawią się, biorąc pod uwagę, że ART w KitKat jest jedynie podglądem programistów i sprawdzaniem zgodności (co np. Nie powiodło się WhatsApp). Popieram zatem wniosek Sachina: jeszcze nie jest dobry dla użytkowników końcowych.
Izzy
2
Doskonała odpowiedź. Zyskałem swobodę, aby trochę to poprawić. Ale nie zgadzam się z ostatnim akapitem: ART nie zwiększa fragmentacji: jeśli ART jest uważany za gotowy do produkcji, nie powinno mieć znaczenia, czy Twoja aplikacja jest uruchamiana przez Dalvik czy ART, oba używają tego samego formatu .dex jako punktu początkowego. Tyle tylko, że ART NIE kompiluje .dex do kodu natywnego.
Flow