35 Stimmen

Kastriert Android die Jazelle-Technologie von ARM?

Die Rechtfertigung, die ich für die, sagen wir mal, "Bastardisierung" der Java-Bytecodes in Android gesehen habe, war die Leistung. (Ich vermute, es gibt noch einen anderen Grund.) Aber haben sie durch die Änderung des Bytecodes nicht Hardware-Beschleunigungstechnologien wie Jazelle überflüssig gemacht und damit die für eine mobile Java-Plattform verfügbare Leistung tatsächlich verschlechtert?

Es erscheint mir kontraintuitiv zu wissen, dass die Zielplattform eine ARM-basierte mobile Plattform ist. Während es Ihnen eine bessere Leistung auf anderen CPU-Architekturen geben könnte, scheint es in das Gesicht von ARM und Jazelle zu spucken.

Welche quantitativen Auswirkungen hat dies auf die Java-Leistung?

Verbessert es tatsächlich die Leistung, und wenn ja, wie?

Welche Auswirkungen hat das auf andere Plattformen? (d.h. x86, mips, usw.)

19voto

hacken Punkte 2115

Ja, Dalvik macht Jazelle nutzlos. Die Frage ist nur, war Jazelle überhaupt nützlich oder ist es zu 90% ein Marketing-Hype? Ein guter JIT- oder AOT-Compiler (ahead of time) bringt in der Regel eine viel bessere Leistung als der Versuch, spezielle Anweisungen zu verwenden. Der registerbasierte Ansatz von Dalvik mag schneller sein als ein traditioneller Java-Bytecode-Interpreter, aber der Unterschied zwischen dem eines Interpreters und dem eines JIT ist gering. Hoffentlich hat eine der nächsten Versionen von Android ein JIT.

Es dauert ca. 5-10 Jahre, um eine gute virtuelle Maschine mit modernsten Garbage Collectors und Optimierern zu schreiben. Sun (und Microsoft) haben diese Jahre investiert. Google hat das nicht. Hoffentlich investieren sie weiter, damit Android-Java-Code eines Tages nicht 90% langsamer ist, als er sein sollte.

5voto

Eugene Yokota Punkte 92703

Wikipedia: Dalvik Virtuelle Maschine :

Anders als die meisten virtuellen Maschinen und echte Java VMs, die Stack-Maschinen sind, ist die Dalvik VM eine registerbasierte Architektur.

Da Dalvik für geringe Speicheranforderungen optimiert ist, hat es einige spezifische Eigenschaften, die es von anderen Standard-VMs unterscheiden:

  • Die VM wurde verschlankt, um weniger Platz zu benötigen.
  • Dalvik hat keinen Just-in-Time-Compiler.
  • Zur Vereinfachung des Interpreters wurde der Konstanten-Pool so geändert, dass nur noch 32-Bit-Indizes verwendet werden.
  • Es verwendet seinen eigenen Bytecode, nicht den Java-Bytecode.

Außerdem wurde Dalvik so konzipiert, dass ein Gerät mehrere Instanzen der VM effizient ausführen kann.

bearbeiten : Siehe Wikipedia: Open Handset Alliance . Zu den Gründungsmitgliedern gehören Intel, Motorola, Qualcomm und Texas Instruments. ARM trat ein Jahr später, im Dezember 2008, bei. Für diese Unternehmen war es wohl nicht sinnvoll, sich auf eine proprietäre Technologie eines damaligen Nichtmitglieds zu verlassen, wenn das Ziel darin bestand, einen Open-Source-Konkurrenten für iPhone und Blackberry zu schaffen.

2voto

Daniel Yankowsky Punkte 6835

Ich hatte eigentlich den Eindruck, dass Dalvik eher für Platzersparnis als für Ausführungseffizienz gedacht war. Auch aus Wikipedia:

Eine unkomprimiert .dex-Datei ist in der Regel ein paar Prozent kleiner als eine komprimiert .jar (Java Archive), die von denselben .class-Dateien abgeleitet sind.

Die aktuellen Telefone verwenden zwar einen ARM-Prozessor mit Jazelle-Unterstützung, aber das gilt nicht unbedingt für die Zukunft.

Auch aus Wikipedia (Warnung: Hörensagen):

Die veröffentlichten Spezifikationen sind sehr unvollständig und reichen nur aus, um Betriebssystemcode zu schreiben, der eine JVM, die Jazelle verwendet, unterstützen kann. Die erklärte Absicht ist, dass nur die JVM-Software von den Details der Hardwareschnittstelle abhängen muss (oder darf). Diese enge Bindung ermöglicht es, dass sich die Hardware und die JVM gemeinsam weiterentwickeln können, ohne andere Software zu beeinträchtigen. Dadurch hat ARM Holdings die Kontrolle darüber, welche JVMs Jazelle nutzen können. Außerdem wird verhindert, dass Open-Source-JVMs Jazelle nutzen können.

Sobald sie einen JITter zu Dalvik hinzufügen, wird das alles zur Nebensache.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X