Login
Newsletter
Werbung

So, 29. Mai 2005, 00:00

GNU Classpath - Was gibt es Neues?

GNU Classpath und seine Geschichte bis heute

1998 wurde das Projekt GNU Classpath gegründet, um eine freie Java-Klassenbibliothek zu schreiben, die von einer virtuellen Maschine mit dem Namen Japhar genutzt werden kann. Zwar entwickelte sich Classpath zunächst um dieses Projekt herum, jedoch bestand schon frühzeitig die Idee, eine gemeinsame Klassenbibliothek für mehrere virtuelle Maschinen zu haben. Zunächst wurde die Programmierung von fünf Entwicklern bewältigt.

Im Jahr 2000 wurde die Klassenbibliothek von GCJ einverleibt und es kamen weitere Entwickler hinzu. Drei Jahre später interessierte sich auch das Projekt Kaffe für Classpath und begann damit Patches auszutauschen. Im gleichen Jahr wurde Mark Wielaard Maintainer von GNU Classpath. Er verkürzte die vormals unsteten und langdauernden Releasezyklen auf die heute als sehr angenehm empfundenen zwei Monate und sorgte für die Integration von vier weiteren, vormals getrennt verwalteten Projekten.

Die Patchzahl ist im letzten Jahr deutlich gestiegen. Für das Release 0.12 zeichneten sich laut ChangeLog 29 Kontributoren verantwortlich. Im Schnitt kamen täglich 350 Zeilen Quellcode hinzu. Neue Entwickler treten uns etwa im Vierteljahrestakt bei. Noch immer besitzen die freien virtuellen Maschinen Kaffe, GCJ und SableVM eigene Versionen von GNU Classpath, an einer Vereinheitlichung wird aber weiterhin festgehalten und für JamVM, IKVM.NET und IBMs JikesRVM ist dieses Ziel schon erreicht.

Im Herbst letzten Jahres wurde der generics-branch eröffnet. Es handelt sich dabei um einen Nebenzweig der Entwicklung, der ganz den neuen Sprachfeatures von Java 5 gewidmet ist. Eine Weile lang gab es für diesen Zweig noch keinen freien Compiler, geschweige denn eine passende virtuelle Maschine. Als erster Compiler konnte dann aber im Dezember 2004 der aus Eclipse extrahierte ECJ benutzt werden. Zum Ende des Jahres 2005 soll auch Tom Tromeys neues Frontend für die GNU Compiler Collection (GCC) mit dem Namen GCJX soweit sein, den generics-branch zu übersetzen. Schließlich gelang es Anfang April Andrew John Hughes, erstmals den generics-branch mit Hilfe von JamVM 1.3.0 zum Laufen zu bringen.

Innovative freie Software

Neben Classpath selbst erhalten wir heute noch immer sehr viele Patches von GCJ und Kaffe, um die Klassenbibliothek zu vervollständigen oder Fehler zu beheben. Während wir also »nur« die klassische Java-Programmausführung mit virtueller Maschine bedienen, gibt es eine Reihe von Projekten, die auf Classpath aufbauen und dabei sehr innovative Ideen verfolgen: Von Übersetzungen des Bytecodes in Maschinensprache oder die Common Intermediate Language (Bytecode von .NET) über eine Integration mit C++ oder Oberon bis hin zu einem Betriebssystem, das nur in Java und Assembler geschrieben wird, haben wir alles dabei. Details zu all diesen Projekten wird es im zweiten Teil der Artikelserie geben.

Der Stand der Dinge

Große Teile der Klassenbibliothek von J2SE 1.4 sind bereits implementiert und konform mit der Spezifikation. Problematisch sind vor allem Randfälle und die grafischen Toolkits Swing und AWT. Unsere Stärken können wir vor allem dort ausspielen, wo wir auf die Funktionen anderer freier Bibliotheken oder öffentlich zugänglicher Information zurückgreifen können. So generieren wir die Daten für die Internationalisierung aus dem CLDR-Projekt und gewinnen dadurch die Unterstützung für 274 Sprachen (das JDK bietet momentan 134 an). Anwendungen, die auf dem von der IBM entwickelten Standard Widget Toolkit (SWT) basieren, haben es noch immer besonders leicht. Die SWT-Implementation ist dieselbe, die bei einer proprietären virtuellen Maschine eingesetzt wird, wodurch unser Anteil sich auf die nicht sichtbaren Komponenten verschiebt. Da hier ein Großteil der Arbeitszeit investiert wird, laufen SWT-basierte Anwendungen entsprechend gut.

Hall Of Fame oder wo wir glänzen

Eclipse

Die beliebte Entwicklungsumgebung Eclipse auf freien VMs lauffähig zu bekommen, gehört zu unseren größeren Errungenschaften. Es handelt sich hierbei um die SWT-basierte Anwendung schlechthin. Eclipse läuft schon seit einer ganzen Weile ohne JDK, hatte jedoch hin und wieder mit neu auftretenden Problemen zu kämpfen. Waren 2003 noch viele kleine Änderungen am Quellcode der IDE nötig, so kann man sie sich dieser Tage aus dem Netz laden und mit GNU Classpath 0.14 und einer leichtgewichtigen virtuellen Maschine wie JamVM und einem angepassten Befehl von der Konsole starten. Fast ebenso einfach ist es, eine nativ kompilierte Version von Eclipse herzustellen und diese auszuführen.

Übrigens: Wer in der Eclipse-Hilfe die Tips & Tricks öffnet, bekommt diese von einem integrierten Apache Tomcat präsentiert, während die Suchfunktionalität mit Apache Lucene realisiert ist.

Eclipse

Robert Schuster

Eclipse

RssOwl

RssOwl ist ein Java- und SWT-basierter Newsreader. Dass dieser problemlos funktioniert, geht auf das persönliche Engagement von Classpath-Entwickler Sven de Marothy zurück, der sowohl Probleme bei uns als auch in RssOwl selbst behoben hat.

Apache Tomcat

Apache Tomcat ist ein Webserver zur programmgesteuerten Erzeugung von Webseiten. Diese Technik wird Java Server Pages (JSP) genannt und konkurriert dadurch in diesem Bereich mit PHP, Perl und Python. Das Flagschiff von Apache Tomcat ist die aktuelle Version 5, welche mittels Kaffe und GCJ gleichermaßen läuft.

JOnas

JOnas ist ein weiterer Vertreter aus der Java-Serverwelt. Die Software wird genutzt, um große betriebliche Informationssysteme zu realisieren, ist also wiederum eine Umgebung für Programme. JOnas ist eine ziemlich komplexe Anwendung und wir sind froh, dass sie auf GCJ läuft.

BeanShell

BeanShell ist eine kleine interaktive Shell, die extrem einfach in Anwendungen integriert werden kann. Die verwendete Syntax orientiert sich an Java, bietet aber einiges an syntaktischem Zucker. Wer auf die Swing-basierte Version verzichten kann (bsh.Console bzw. bsh.util.JConsole), kann BeanShell problemlos mit GNU Classpath einsetzen.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung