java studio - "Warum Apache Harmony" oder "Wie verwende ich Java 8 auf Android"




2 Answers

Warum verwenden sie Apache Harmony?

Weil Sun sich geweigert hat, Google eine Lizenz für Sun (jetzt Oracle) Java unter akzeptablen Bedingungen zur Verfügung zu stellen. Google und Sun haben verhandelt, aber sie sind von dem Deal weggegangen.

Nitpick: In der Tat sind die Android-Bibliotheken nicht Apache Harmony. Sie begannen als basierend auf Harmony, aber die beiden Codebasen haben sich voneinander getrennt. Außerdem wurde das Apache Harmony-Projekt offiziell im November 2011 in den Ruhestand versetzt.

Warum können sie keine neuere Version von Java verwenden?

Erstens läuft Android Java (tm) nicht. Es wird eine Java-ähnliche Sprache mit einer Klassenbibliothek ausgeführt, die funktional einer Untergruppe der Java-Klassenbibliothek (+ Android-spezifische Bibliotheken) auf einer virtuellen Maschine mit einem anderen Befehlssatz entspricht.

Aus technischer Sicht könnten sie ... aber nur, wenn sie viel Arbeit in die Implementierung von Java 7 und Java 8 Sprachfunktionen, Bibliotheksfunktionen usw. für die Android-Plattform stecken.

UPDATE - Ab Android 19 (KitKat) und Eclipse ADT 22.6 unterstützt Android jetzt die Java 7-Spracherweiterungen. siehe http://tools.android.com/recent/eclipseadt226preview

Wenn sie Oracle's Java nicht wollen, warum können sie dann nicht eine Teilmenge von OpenJDK verwenden?

Ich glaube nicht, dass der Wechsel zu OpenJDK irgendetwas verändern würde. Oracle Java und OpenJDK sind 99,9% gleich.

Wie auch immer, es kann Lizenzierung und damit verbundene rechtliche Probleme geben. (Und um ein Gefühl dafür zu bekommen, lesen Sie die Oracle gegen Google Klage ... das wird ansprechen.)

Wahrscheinlicher ist, dass Google nicht genug kommerziellen Wert sieht, um den (massiven) Anstrengungen zu begegnen, die nötig wären, um Änderungen vorzunehmen, und die Störungen, die es für das Android-Ökosystem verursachen würde, das bereits unter Fragmentierungsproblemen leidet.

Kennen Sie Pläne zur Aktualisierung der verwendeten Java-Version?

Nein, tu ich nicht. Das bedeutet nicht, dass es keine Pläne gibt, aber wenn es welche gibt, sind sie nicht öffentlich.

Kennen Sie Java-Klassen auf aktuellen Android-Systemen?

Du könntest sie portieren. Oder zumindest könnten Sie versuchen , sie zu portieren. (Einige Java-APIs haben eine enge Beziehung zur Seite des systemeigenen Codes der JVM ... und das könnte die Portierung problematisch machen.)

version desugar

Die meisten von uns haben inzwischen von den coolen Features von Java 8 gehört, aber Android wird es nicht unterstützen. Dies liegt daran, dass Google Apache Harmony für Android verwendet. Dies ist es, was uns (die Android-App-Entwickler) davon abhält, unseren Code mit Lambdas, Standardimplementierungen in Schnittstellen, Einschalten eines Strings und vielem mehr zu verbessern. Sicher werden wir für einige Zeit damit umgehen, aber was ist, wenn einige Bibliotheken, die wir in unseren Apps verwenden, Java 8-Funktionen verwenden? Soweit ich weiß, wird dies nicht funktionieren (bitte korrigieren Sie mich, wenn Sie falsch liegen). Dies erzeugt eine Inkompatibilität zwischen Standard- Java und Android- Java. Es kann nicht sein, was Google beabsichtigt, oder zumindest kann ich mir keinen Grund vorstellen, warum ein Unternehmen, das ein weit verbreitetes Betriebssystem entwickelt, dauerhaft bei einer alten Java-Version bleiben würde.

Fragen:

  • Warum verwenden sie Apache Harmony?
  • Warum können sie keine neuere Version von Java verwenden?
  • Wenn sie Oracle's Java nicht wollen, warum können sie dann nicht eine Teilmenge von OpenJDK (Lizenzierung hier noob)?
  • Kennen Sie Pläne zur Aktualisierung der verwendeten Java-Version?
  • Kennen Sie Java-Klassen auf aktuellen Android-Systemen?



Aktualisieren.

Android plant die Verwendung von OpenJDK. Möglicherweise, weil sie wie Sie denken und die Funktionen von Java 8 nutzen wollen. Sieh this




Related

java android apache java-8