Die Performance von Java-basierten Programmen ist stark von der verwendeten Runtime abhängig. In Android 4.4 bringt Google eine neue, als ART bezeichnete virtuelle Maschine – sie verspricht wesentliche Performancesteigerungen.
In ersten, synthetischen Benchmarks führt die neue Laufzeitumgebung zu einer wesentlichen Steigerung der Performance. Das ist im folgenden Diagramm gezeigt, das auf dem weit verbreiteten Sortieralgorithmus QuickSort basiert:
Wichtig ist, dass diese Performancesteigerung nur in den wenigsten Fällen 1:1 beim Applikationsprogramm ankommt. Zum Verständnis dieses Zusammenhangs ist ein kleiner Exkurs in die Welt von Java notwendig: beginnen wir damit, dass jeder Prozessor seine eigene, fortan als Maschinensprache bezeichnete Sprache versteht. Ein in dieser Maschinensprache vorliegendes Programm rennt auf diesem Prozessor sehr schnell, ist für andere CPUs aber unnutz.
Java wird in sogenannten Intermediärcode verwandelt. Dabei handelt es sich um einen “einfacheren Maschinencode”, der während der Programmlaufzeit analysiert und ausgeführt wird. Diesen Prozess kann man sich so vorstellen, dass ein in slowakisch gehaltenes Rezept von einem Slowaken “on the fly” für seine nur deutsch sprechende Assistentin übersetzt wird. Zur Umgehung des dadurch entstehenden Performanceverlusts gibt es die Möglichkeit, die Übersetzung im Voraus durchzuführen – desto effektiver dabei gearbeitet wird, desto schneller ist das resultierende Programm.
Doch damit nicht genug. Die regelmäßig auftretenden “Mikroruckler” entstehen dadurch, dass Java die Referenzen auf erstellte Objekte sammelt und verwaltet. Nicht mehr benötigte Objekte werden von einem sogenannten Garbage Collector eingesammelt – desto effektiver dieser aufgebaut ist, desto weniger Rechenleistung ist für seine Abarbeitung erforderlich.
In Summe bleibt festzuhalten, dass Java-basierte Betriebssysteme im Vergleich zu nativ aufgebauten Plattformen performancetechnisch immer das Nachsehen haben. Allerdings relativiert sich dieser Nachteil durch zwei Faktoren: erstens das Moorsche Gesetz, das zu immer höherer Rechenleistung auf den Chips führt. Zweitens lassen die meisten Javabasierten Betriebssysteme – so auch Android – das Einbinden von Inseln von nativem Code zu. Dort dürfen Programmierer besonders empfindliche Teile ihres Produkts “verpacken” – diese laufen mit voller Performance ab.
Noch ist nicht klar, wann ART in den Massenmarkt kommt. In Android 4.4 ist die VM zwar integriert, aber aus Gründen der Kompatibilität abgeschaltet. Sie lässt sich nur dann aktivieren, wenn ihr euren Kernel selbst zusammenbaut – erste Custom ROMS mit ART sind mittlerweile bei den üblichen Verdächtigen (xda-developers und co) aufgetaucht.
Leider ist deren praktische Nutzbarkeit im Moment eher gering. Die meisten Programme leiden unter kleineren oder größeren Inkompatibilitäten – da der Java-Bytecode einer ficen Spezifikation folgt, handelt es sich dabei um einen Fehler der virtuellen Maschine.
Denkt ihr, dass Google den Nachteil der auf Java basierenden Systemarchitektur irgendwann ausgleichen kann? Oder folgt irgendwann eine Umstellung auf nativen Code?
Quelle: AndroidNext