One-Jar mit erweiterter Unterstützung für native Bibliothken

Mein Projekt beamer-tool unterstüzt zuzeit die folgenden Architekturen:

  • Linux 32Bit
  • Linux 64Bit
  • Mac OS X
  • Windows 32Bit
  • Windows 64Bit

Es handelt sich zwar um ein Java-Programm, jedoch sind einige native Bibliotheken für die Kommunikation mit der Hardware (Grafikkarte und GSM-Gerät) nötig.
So gab es bis heute für jede Architektur ein eignes Releasefile mit immer den selben Jar-Dateien und den jeweiligen nativen Bibliotheken. Gestartet wurde das ganze immer über Startskripte (Batch oder Bash).

Nach mehreren Versuchen, dem Benutzer vernünftige Startdateien bereitzustellen bin ich schließlich bei One-Jar gelanden. Eine gute Zusammenfassung über die anderen Möglichkeiten findet man unter www.excelsior-usa.com/…/java-to-exe.html.

One-Jar bietet eigentlich alles was nötig ist, um dumme Startskripte oder Exe-Wrapper zu umgehen. Alles, auch native Bibliotheken, wird in eine Jar-Datei gepackt und dieses lässt sich direkt Starten.

Um wirkliches Java-Feeling aufkommen zu lassen ist das Ziel jedoch, eine Jar für möglichst alle (s.o.) Plattformen anzubieten.
One-Jar bietet aber leider nur einen Ort um native Bibliotheken zu plazieren, unabhängig davon ob sie für die aktuelle Architektur passen. Eigentlich ist die Java VM auch schlau genug die richtigen Bibliotheken zu laden.
Die nativen Bibliothken heißen aber leider teilweise gleich für die unterschiedlichen Architekteuren, so dass sie gar nicht in den selben Ort ablegbar sind.

Die Lösung bringt ein kleiner Patch, den ich schnell geschrieben habe: JarClassLoader.diff
Nähere Details zu der Verwendung findet man in diesem Forenbeitrag von mir auf SourceForge: sourceforge.net/…/message.php?msg_id=4705216

Für die o.g. Plattformen sollte es nun auf jeden Fall funktionieren.
Eine Jar-Datei für „alle“ Plattformen. Der höhere Speicherverbauch durch die paar KB an Bibliotheken, die dann beim User nicht gebraucht werden, da sie für eine andere Architektur sind, sind in Zeiten von DSL16000 wohl zu verkraften.

Ich hoffe über kurz oder lang fließt der Quellcode in One-Jar selber ein.

Eine Antwort auf „One-Jar mit erweiterter Unterstützung für native Bibliothken“

Schreibe einen Kommentar