Login
Newsletter
Werbung

Mo, 27. September 2010, 09:00

Software::Entwicklung

Paketierung von Java-Software in Linux-Distributionen bleibt problematisch

Thierry Carrez, Technischer Leiter des Ubuntu-Server-Teams, hat in seinem Blog die relativ geringe Zahl von Java-Software-Paketen in Linux-Distributionen erklärt.

Carrez stellt fest, dass Java-Software nicht gleichrangig mit anderer Software dasteht. Zwar werden die grundlegenden Bibliotheken paketiert, aber zahlreiche Java-Programme fehlen völlig. Der Grund ist nicht in einer Abneigung der Entwickler gegen Java zu suchen, sondern in der zu starken Orientierung der Java-Entwickler an Binärpaketen.

Binärpakete, wie Java-Entwickler sie produzieren, bestehen aus JAR-Dateien und haben nichts mit den Paketen gemeinsam, die die Distributionen verwalten. JAR-Pakete enthalten oft nicht nur die Java-Anwendung selbst, sondern auch Bibliotheken in den passenden Versionen, die sie benötigen. Für die Entwickler hat das Vorteile: Sie können eine Zusammenstellung ausliefern, die genau in dieser Kombination getestet wurde und auf allen Plattformen funktioniert.

Für Linux-Distributionen hat diese Vorgehensweise einige Nachteile. Zum einen wird Code dupliziert, was es im Falle einer Sicherheitslücke unmöglich macht, diese an einer zentralen Stelle zu korrigieren. Bibliotheken sollten, so Carrez, Teil der Plattform sein, die von der Linux-Distribution bereitgestellt wird, und nicht in Anwendungen dupliziert werden. Zum anderen erstellen Distributionen ihre Pakete aus dem Quellcode, und das ist äußerst mühevoll, wenn dafür zahlreiche Bibliotheken in genau festgelegten Versionen benötigt werden; teilweise ist der Quellcode für eine bestimmte Version gar nicht mehr zu finden.

Es gibt mehrere Lösungsansätze für das Problem. Der einfachste ist, die mitgelieferten Bibliotheken eines Java-Programms durch die der Distribution zu ersetzen. Dies funktioniert manchmal, kann aber auch zu Fehlern im Programm führen und zu Reibungen mit den Originalentwicklern, die diese Zusammenstellung nicht getestet haben. Ein anderer Ansatz wäre, alle benötigten Versionen von Java-Bibliotheken zu paketieren. Dies skaliert nicht und bringt eine Reihe technischer Probleme mit sich, unter anderem weil es keine allgemeine Richtlinien für Versionsnummern in Java-Bibliotheken gibt. Außerdem verwenden manche Java-Anwendungen modifizierte Versionen von Bibliotheken. Der naheliegendste Lösungsansatz, die Programme mit allen Bibliotheken zu paketieren, scheitert an dem bereits genannten Problem, das Programm aus dem Quellcode zu generieren.

Eine echte Lösung des Problems ist noch nicht in Sicht. Das Java-Ökosystem ist nach Meinung von Carrez zu stark auf Binärpakete ausgerichtet. Eine Referenzplattform, an der sich alle Java-Entwickler orientieren, ist laut Carrez wohl utopisch - das Projekt JPackage versuchte dies bereits, bisher ohne sichtbare Erfolge. Dazu kommen weitere Probleme: Oft halten sich die Java-Projekte nicht an den Linux Filesystem Hierarchy Standard (FHS), das Generier-Werkzeug Maven ermuntert die Entwickler, Abhängigkeiten zu einer exakten Version einer Bibliothek zu definieren, was in der Linux-Welt unerwünscht ist, und größere Java-Programme hängen von hunderten von Bibliotheken ab, was zu einem exponentiell wachsenden Aufwand bei der Paketierung führt.

Werbung
Kommentare (Insgesamt: 34 || Alle anzeigen )
Re[2]: verstehe die Argumente nicht (nano, Di, 28. September 2010)
Das ist exakt das Problem (Phisiker, Di, 28. September 2010)
Jetzt verstehe ich, was... (Phisiker, Di, 28. September 2010)
Re[2]: Das Problem "final" (Phisiker, Di, 28. September 2010)
Re: verstehe die Argumente nicht (Anonymous, Di, 28. September 2010)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung