Dalvik VM vs. ART (Android Runtime): Auswirkungen für Endbenutzer?

22

Mit Nexus 5 (Android 4.4 KitKat) hat Google zwei Laufzeiten für die Ausführung von Apps ausgeliefert.

Wählen Sie die Option Laufzeit in Android 4.4 KitKat Dalvik und ART Runtimes in Android 4.4 KitKat

Was sind die Unterschiede zwischen Dalvik & ART für Endverbraucher? Wie können Endverbraucher davon betroffen sein? Gibt es einen bestimmten Grund, warum ich mich für eine neue ART-Laufzeitumgebung entscheiden sollte?

Android Quesito
quelle
3
Die Tatsache, dass Sie die Entwickleroptionen aktivieren und durchsuchen müssen , um diese Einstellung zu finden, sollte ein Hinweis darauf sein, dass sie nicht für Endbenutzer bestimmt ist.
Dan Hulme
1
@DanHulme Netter Punkt, aber immer noch Nicht-Entwickler-Enthusiasten spielen mit Entwickleroptionen und sie verwenden sie sogar oft für positive Nicht-Entwicklungszwecke.
Android Quesito
Was das Benutzererlebnis betrifft, werden Sie nur bemerken, dass der Akku in hohem Maße geschont wird. Allerdings können Sie den Geschwindigkeitsunterschied beim Wechsel von Dalvik zu ART nicht feststellen.
Rahul Raina

Antworten:

26

Dalvik VM (Virtual Machine) ist Googles Version einer Java-VM (auf der Apps ausgeführt werden). VMs halten Apps isoliert und unabhängig von tatsächlicher Hardware und anderen Apps. Damit dies funktioniert, muss Dalvik den so genannten Bytecode (der für virtuelle Maschinen entwickelt wurde) in systemeigenen Maschinencode konvertieren. Um den Leistungsverlust zu minimieren, den die Konvertierung von Bytecode in systemeigenen Code mit sich bringt, wird ein Prozess namens Just-In-Time-Kompilierung (JIT) ausgeführt, bei dem heißer, dh häufig verwendeter Bytecode in systemeigenen Code konvertiert wird. 1

ART (Android Runtime) ist ein Ersatz für Dalvik, das die AOT-Kompilierung (Ahead-Of-Time) verwendet. Dies bedeutet, dass Ihre Apps in einen betriebsbereiten Zustand versetzt werden, bevor Sie sie überhaupt starten. Dies geschieht normalerweise zum Zeitpunkt der App-Installation, wodurch der Start und die Verwendung der Apps viel schneller und reibungsloser erfolgen. Und da dies bedeutet, dass die Kompilierung nur einmal durchgeführt wird, sehen Sie möglicherweise auch eine längere Akkulaufzeit.

Wenn ART in Bezug auf Leistung und Akkulaufzeit besser ist, sollte ich es verwenden?

Nein . Wenn Sie das tun, können Sie Anwendungen von Drittanbietern brechen. Google hat diese ART-Vorschau mit Android 4.4 ausgeliefert, damit Entwickler ihre Apps darauf testen können.

Nebenbemerkung: Googles Ansatz bei ART besteht darin, iOS zu schlagen (iOS-Apps sind nativ und bieten eine bessere Leistung, selbst bei Low-End-Hardwarespezifikationen), aber ich weiß nicht, wohin sie führen ... Eine weitere Fragmentierung? Siehe OEMs können Geräte entweder mit einem oder beiden Geräten bauen . Die endgültige Version sollte zwar die meisten Apps nicht betreffen, aber es ist keine 100% plattformübergreifende Sache.

1 Beachten Sie, dass JIT in Android 2.2 zu Dalvik hinzugefügt wurde

Android Quesito
quelle
3
Vielleicht sind zwei Fakten erwähnenswert: ARTs AOT führt dazu, dass Apps im Vergleich zu DEX 20,25% mehr Speicherplatz benötigen. Plus-Tests auf einem Nexus-5, die ich gelesen habe, zeigten keine Unterschiede in der subjektiven Geschwindigkeit oder der Batteriedauer. Beides wird sich sicherlich verbessern, wenn man bedenkt, dass ART in KitKat nur eine Vorschau und eine Kompatibilitätsprüfung für Entwickler ist (was z. B. bei WhatsApp fehlgeschlagen ist). Also folgere ich Sachins Schlussfolgerung: Es ist noch nicht gut für Endbenutzer.
Izzy
2
Hervorragende Antwort. Ich habe mir die Freiheit genommen, es ein bisschen zu verbessern. Aber ich stimme dem letzten Absatz nicht zu: ART erhöht nicht die Fragmentierung: Wenn ART als produktionsbereit angesehen wird, sollte es egal sein, ob Ihre App von Dalvik oder ART ausgeführt wird, beide verwenden dasselbe .dex-Format als Ausgangspunkt. Nur diese ART kompiliert AOT den .dex in nativen Code.
Flow