Apache-Harmonie - Apache Harmony

Apache-Harmonie
Apache Harmony Logo.png
Entwickler Apache Software Foundation
Endgültige Veröffentlichung
5.x  5.0M15 / 15. September 2010 ; Vor 11 Jahren ( 2010-09-15 )
6.x 6.0M3 / 15. September 2010 ; Vor 11 Jahren ( 2010-09-15 )
Repository
Geschrieben in C , Java
Betriebssystem Linux , Windows
Typ Java Virtual Machine , Java- Bibliothek
Lizenz Apache-Lizenz 2.0
Webseite Harmonie .apache .org

Apache Harmony ist eine ausgemusterte quelloffene , freie Java-Implementierung , die von der Apache Software Foundation entwickelt wurde . Es wurde Anfang Mai 2005 angekündigt und am 25. Oktober 2006 stimmte das Board of Directors dafür, Apache Harmony zu einem Top-Level-Projekt zu machen. Das Harmony-Projekt erreichte (Stand Februar 2011) 99 % Vollständigkeit für J2SE 5.0 und 97 % für Java SE 6 . Das Android- Betriebssystem war in der Vergangenheit ein wichtiger Benutzer von Harmony, obwohl es seit Android Nougat zunehmend auf OpenJDK- Bibliotheken angewiesen ist .

Am 29. Oktober 2011 wurde vom Projektleiter Tim Ellison eine Abstimmung gestartet, ob das Projekt zurückgezogen werden soll. Das Ergebnis war 20 zu 2 zu Gunsten, und das Projekt wurde am 16. November 2011 eingestellt.

Geschichte

Einleitung

Das Harmony-Projekt wurde ursprünglich als Versuch konzipiert, alle Entwickler der freien Java-Implementierungen zu vereinen . Viele Entwickler erwarteten, dass es das Projekt über den GNU- , Apache- und anderen Communities sein würde. GNU-Entwickler wurden zu den ersten vorbereitenden Planungen eingeladen und nahmen daran teil. Apache entschied sich dann, keinen Code von GNU Classpath zu verwenden, da Harmony unter der Apache-Lizenz v2 verfügbar sein sollte. Apache-Entwickler würden dann die benötigten Klassen von Grund auf neu schreiben und die notwendigen großen Codespenden von Softwarefirmen erwarten . Verschiedene Missverständnisse zu Beginn des Projekts und Vorschläge von großen Unternehmen wie IBM , große Mengen vorhandenen Codes zu spenden, führten dazu, dass einige Leute in der freien Java-Community das Projekt als Unternehmenskonsortium und nicht als Apache-Projekt betrachteten.

Ein Hauptpunkt der Inkompatibilität zwischen den GNU Classpath- und Apache Harmony-Projekten waren ihre inkompatiblen Lizenzen: die GNU General Public License von Classpath mit der Linking-Ausnahme versus die Apache-Lizenz von Harmony .

Schwierigkeiten, eine TCK-Lizenz von Sun zu erhalten

Am 10. April 2007 schickte die Apache Software Foundation einen offenen Brief an den CEO von Sun Microsystems , Jonathan Schwartz, wegen der Unfähigkeit, eine akzeptable Lizenz für das Java SE 5 Technology Compatibility Kit (TCK) zu erwerben , ein Testkit, das das Projekt zu Demonstrationszwecken benötigt Kompatibilität mit der Java SE 5-Spezifikation, wie von der Sun- Spezifikationslizenz für Java SE 5 benötigt. Was die Lizenz für ASF inakzeptabel macht, ist die Tatsache, dass sie Rechtebeschränkungen durch Beschränkungen des "Nutzungsbereichs" auferlegt, der den Benutzern von Harmony zur Verfügung steht, nicht mit den Java Community Process- Regeln konform .

Sun antwortete in einem Firmenblog, man beabsichtige, eine Open-Source-Implementierung der Java-Plattform unter GPL zu erstellen , einschließlich des TCK, aber ihre Priorität sei es, die Java-Plattform so schnell wie möglich für die Linux- Gemeinde unter GPL zugänglich zu machen.

Diese Antwort löste einige Reaktionen aus, die entweder Sun dafür kritisierten, nicht "in ausreichend offener Weise" auf einen offenen Brief zu reagieren, oder vielmehr die Apache Software Foundation ; einige denken, dass ASF unklug gehandelt hat, um aggressiv etwas zu fordern, das sie mit mehr Diplomatie von Sun hätten erreichen können, insbesondere angesichts des Zeitrahmens der Eröffnung der Klassenbibliothek.

Sun hat das OpenJDK im Mai 2007 zusammen mit einer speziellen Lizenz veröffentlicht, die es erlaubt, das TCK im OpenJDK-Kontext für jede GPL- Implementierung auszuführen, die im Wesentlichen von OpenJDK abgeleitet ist. Dies gilt nicht für Apache Harmony, das nicht GPL-lizenziert ist. Am 9. Dezember 2010 schied die Apache Software Foundation aus dem Java Community Process Executive Committee aus, aus Protest gegen die Schwierigkeit, eine für Apache akzeptable Lizenz für die Verwendung mit dem Harmony-Projekt zu erhalten.

Verwendung im Android SDK

Die virtuelle Maschine , die in verwendet wird Google ‚s Android - Plattform ( Dalvik bis zur Version 4.4, und sein Nachfolger, Android Runtime (ART)) verwenden eine Untergruppe der Harmonie für den Kern seiner Klassenbibliothek . Dalvik richtet sich jedoch nicht nach Java SE- oder Java ME- Klassenbibliotheksprofilen (beispielsweise werden J2ME- Klassen, AWT und Swing nicht unterstützt).

Android 7.0 "Nougat" ersetzt Harmony durch OpenJDK .

Projektende

Am 11. Oktober 2010 beschloss IBM , der bei weitem größte Teilnehmer des Projekts, sich Oracle im OpenJDK- Projekt anzuschließen und seine Bemühungen effektiv von Harmony auf die Oracle- Referenzimplementierung zu verlagern . Bob Sutor, IBMs Leiter für Linux und Open Source, schrieb in einem Blog, dass „IBM seine Entwicklungsbemühungen vom Apache Project Harmony auf OpenJDK verlagern wird“. Im März 2011 gab Tim Ellison von IBM bekannt, dass er als Project Management Chair für Harmony zurückgetreten sei. Nach dem Rückzug von IBM ging die Aktivität des Projekts stark zurück.

Am 29. Oktober 2011 wurde von Projektleiter Tim Ellison eine Umfrage auf der Harmony-dev-Mailingliste gestartet, ob das Projekt eingestellt werden solle. Das Ergebnis am 3. November war 20 zu 2 zugunsten des Ruhestands. Am 16. November 2011 hat der Vorstand der Apache Software Foundation einen Antrag auf Beendigung des Projekts gestellt. Ein Direktor, Larry Rosen , gab eine "Nein"-Stimme ab, basierend auf dem Zeitpunkt und nicht auf den Vorzügen des Vorschlags; ansonsten war es einstimmig. Das Projekt wurde am 16.11.2011 eingestellt.

Entwicklungsteam

Zu Beginn erhielt Apache Harmony einige große Code-Beiträge von mehreren Unternehmen. Auf offenen Mailinglisten fanden Entwicklungsdiskussionen statt. Später haben die Mentoren der Apache Software Foundation große Anstrengungen unternommen, um den Entwicklungsprozess "nach dem Apache-Weg" in Einklang zu bringen, und es schien, dass ihre Bemühungen erfolgreich waren.

Letzter Entwicklungsstand

Apache Harmony wurde am 29. Oktober 2006 in die offiziellen Apache-Projekte aufgenommen.

Die Architektur

Die virtuelle Maschine der dynamischen Laufzeitschicht besteht aus den folgenden Komponenten:

  1. Der VM-Kern: konzentriert mit seinen Unterkomponenten die meisten JVM-Steuerungsfunktionen.
  2. Die Portierungsschicht : verbirgt plattformspezifische Details vor anderen VM-Komponenten hinter einer einzigen Schnittstelle und basiert auf der Apache Portable Runtime- Schicht.
  3. Der Garbage Collector : ordnet Java-Objekte im Heap-Speicher zu und gibt mithilfe verschiedener Algorithmen nicht erreichbare Objekte zurück
  4. Execution Manager : wählt die Execution Engine zum Kompilieren einer Methode, verarbeitet Profile und die dynamische Neukompilierungslogik.
  5. Klassenbibliothek : ist eine Java-Standardbibliothek.
  6. Der Thread-Manager , der das Threading des Betriebssystems handhabt
  7. Die Ausführungs-Engine: besteht aus Folgendem:
    1. Der Just-in-Time-Compiler zum Kompilieren und Ausführen von Methodencode.
    2. Der Interpreter für einfacheres Debugging.

Unterstützungsplattform und Betriebssystem

Das Projekt lieferte eine portable Implementierung, die die Entwicklung auf vielen Plattformen und Betriebssystemen erleichtert. Der Schwerpunkt lag auf Windows- und Linux- Betriebssystemen auf x86- und x86-64-Architekturen.

Windows 2000 Windows XP , Server 2003 , Vista Linux RHEL , SLES , Debian , Gentoo , Fedora FreeBSD AIX Mac OS X
IA-32 (Pentium III oder besser) Nein Jawohl Jawohl Nein N / A N / A
x86-64 (Intel 64, AMD64) N / A Jawohl Jawohl N / A N / A N / A
Itan (IA64, IPF) N / A Nein Jawohl N / A N / A N / A
PowerPC 32-Bit N / A N / A Nein N / A N / A N / A
PowerPC 64-Bit N / A N / A Nein N / A Nein N / A
zSerie 31-bit N / A N / A Nein N / A N / A N / A

Abdeckung der Klassenbibliothek

Die erwarteten Spenden von Softwarefirmen sind tatsächlich eingegangen. Der Apache Harmony enthält jetzt den Arbeitscode, einschließlich des Swing- , AWT- und Java 2D- Codes, die von Intel beigesteuert wurden .

Im Februar 2011 erreichte das Harmony-Projekt 99 % Vollständigkeit für JDK 5.0 und 97 % für Java SE 6 .

Der Fortschritt des Apache Harmony-Projekts kann anhand von J2SE 1.4 und Java SE 5.0 verfolgt werden. Außerdem ist ein Zweig für Harmony v6.0 in Entwicklung für Java SE 6.0.

Apache Harmony-Entwickler integrieren mehrere bestehende, praxiserprobte Open-Source-Projekte, um ihr Ziel zu erreichen (nicht das Rad neu zu erfinden ). Viele dieser Projekte sind ausgereift und bekannt und andere Teile der Bibliothek mussten von Grund auf neu geschrieben werden.

Dies ist eine Liste vorhandener Open-Source-Komponenten, die im Apache Harmony-Projekt verwendet werden; einige davon waren bereits vor Projektbeginn im Einsatz.

Komponente Beschreibung
Intensivstation Ausgereifte C/C++- und Java-Bibliotheken für Unicode- Unterstützung und Software-Internationalisierung und -Globalisierung
Apache Xalan XSLT- Stylesheet-Prozessor für Java , C++, der die XPath- Sprache implementiert
Apache Xerces XML- Parser-Bibliothek für Java, C++, Perl
Apache Portable Runtime Plattformübergreifende Abstraktionsbibliothek, bietet Plattformunabhängigkeit
Apache CXF Robustes, leistungsstarkes Webservice- Framework funktioniert über Protokolle wie SOAP , XML/HTTP, RESTful HTTP, CORBA
BCEL Bibliotheken zum Zerlegen, Ändern und Neuzusammensetzen von binären Java-Klassen, z. B. Bytecode
MX4J Java Management Extensions (JMX)-Tools zum Verwalten und Überwachen von Anwendungen, Systemobjekten, Geräten und serviceorientierten Netzwerken
VM-Magie Satz von Erweiterungen der Java-Sprache, um die Systemprogrammierung in Java durch Hinzufügen direkter Speicheroperationen usw. zu erleichtern.
Hüpfburg Bibliotheken-Sammlung von leichtgewichtiger Kryptografie für Java und C#
ANTLR Sprachwerkzeug, bietet einen Rahmen zum Konstruieren von Erkennern, Interpretern, Compilern und Übersetzern aus grammatikalischen Beschreibungen, die Aktionen in vielen Zielsprachen enthalten

Dokumentation

Harmony ist weniger dokumentiert als die alternativen kostenlosen Java-Implementierungen. Zum Beispiel hat in GNU Classpath jede Methode der zentralen CORBA- Klasse (ORB) den erklärenden Kommentar sowohl in der standardmäßigen abstrakten API-Klasse als auch in der Implementierung. Im Yoko- Projekt, das von Harmony verwendet wird, waren die meisten Methoden sowohl in der Standarddeklaration als auch in der Implementierungsklasse Ende Oktober 2006 undokumentiert. Außerdem unterstützte GNU Classpath sowohl ältere als auch neuere CORBA-Funktionen (wie die Implementierung von Sun). Harmony hingegen ließ die zentrale Methode des älteren Standards ( ORB.connect(Object)) völlig unimplementiert.

Werkzeuge

Eine vollständige Implementierung der Java-Plattform erfordert auch einen Compiler , der Java-Quellcode in Bytecodes übersetzt , ein Programm, das JAR-Dateien verwaltet , einen Debugger , einen Applet- Viewer und ein Webbrowser- Plugin , um nur einige zu nennen. Harmony verfügt über den Compiler , appletviewer , jarsigner, javah, javap, keytool , policytool und unpack200 .

Unterstützung für virtuelle Maschinen

Harmony verfügt über sieben Implementierungen virtueller Maschinen , auf denen die Harmony-Klassenbibliothek ausgeführt wird, die alle von externen Gruppen gespendet wurden:

  • JC Harmony Edition VM, "JCHEVM", basierend auf dem JCVM- Interpreter , beigesteuert vom Autor Archie Cobbs.
  • BootJVM, eine einfache virtuelle Bootstrapping- Maschine, beigesteuert von Daniel Lydick.
  • SableVM , ein fortschrittlicher, tragbarer Interpreter, der von Autoren der Sable Research Group beigesteuert wurde ; und die virtuelle Maschine der dynamischen Laufzeitschicht.
  • DRLVM , ein Just-in-Time-Compiler von Intel .
  • BEA gab die Verfügbarkeit einer Evaluierungsversion von JRockit VM bekannt, auf der die Apache Harmony Class Library ausgeführt wird.
  • JikesRVM , eine Open-Source - metazirkulare JVM, die die Apache Harmony Class Library verwendet.
  • Ja.NET SE , ein Open-Source-Projekt, das ein Java 5 JDK (Klassenbibliotheken, Tools usw.) bereitstellt, das auf der .NET Framework CLR ausgeführt wird. Ja.NET SE basiert auf den Apache Harmony-Klassenbibliotheken.

Am Ende November 2006 wird die Sprachunterstützung durch diese virtuelle Maschine zur Verfügung gestellt war noch nicht abgeschlossen, und die Build - Anweisungen empfohlen zu verwenden IBM ‚s proprietäre statt J9 die Klassenbibliothek Testsuite zu laufen. Dies ist jedoch nicht mehr erforderlich (Stand Juli 2007).

Was den Rest des Projekts betrifft , ist die Entwicklung virtueller DRLVM- Maschinen jetzt ins Stocken geraten (Stand Mai 2011).

Bewerbungsstatus

Seit seiner Konzeption ist Harmony in seiner Fähigkeit gewachsen, nicht-triviale Java-Anwendungen auszuführen. Ab Juli 2007 umfassen die unterstützten Anwendungen:

Die unvollständige Bibliothek von Harmony verhinderte jedoch, dass einige andere Anwendungen gestartet wurden:

  • ArgoUML : weil es eine Java-Applet- Implementierung benötigt, die in Harmony noch nicht verfügbar war.
  • Apache Geronimo läuft auf Apache Harmony mit einigen Problemen und Problemumgehungen.
  • Vuze , ehemals Azureus, wegen nicht implementierter Sicherheitsklassen.

Siehe auch

Verweise

Externe Links