Setlog hat sein erstes Open Source Projekt veröffentlicht. Es heißt trivrost und ist ein kombinierter Installer, Updater und Launcher, der unter anderem eine Java Web Start Alternative darstellt. Dies ist der Start einer Artikel-Serie dazu.

Tri-was?!?!

Bifröst Heimdall

Ursprünglich wollten wir das Projekt Bifröst nennen, was in der nordischen Mythologie eine „Regenbogenbrücke“ bezeichnet, welche die Götterwelt Asgard (einen Webserver) mit der Menschenwelt Midgard (dem Computer des Nutzers) verbindet. Warum haben wir uns nun für trivrost entschieden? Weil die Software drei Dinge tut: installieren, updaten und starten einer Anwendung. Zudem läuft es auf den drei großen Betriebssystemen Windows, macOS und Linux.

Probleme erfordern Lösungen

Der Client unserer Software OSCA wurde mit Java Web Start ausgeliefert. War dieses Tool auf dem Rechner des Anwenders installiert, konnte letzterer OSCA per Doppelklick auf eine jnlp-Datei einfach starten. Hierbei handelte es sich im Prinzip um eine einfache kleine Textdatei, in der alle Informationen zum Herunterladen und Starten von OSCA standen. Java Web Start übernahm dann die Installation, das Updaten und das Starten von OSCA. Die Entwickler der Anwendung brauchten sich also keine weiteren Gedanken um diesen Prozess zu machen.

Leider hat Oracle den Support von Java Web Start eingestellt. Hinzu kam das Problem, dass aktuelle Java-Versionen nicht mehr dafür vorgesehen sind, sie auf dem Rechner eines Endbenutzers zu installieren. Vielmehr sollen neue Java-Anwendungen ihre Laufzeitumgebung selbst mitliefern. Hierfür wäre es sinnvoll, auf das Java-Modulsystem zurückzugreifen. Eine Migration kann allerdings sehr arbeitsintensiv sein.

Somit hatten wir uns auf die Suche nach einer anderen Lösung gemacht. Wir fanden diverse Alternativen, die allerdings allesamt nicht alle unsere Anforderungen erfüllen konnten.

trivrost

Als Alternative zu Java Web Start gibt es ein nettes Projekt namens getdown. Die Entwickler dieses Tools haben Computerspiele in Java entwickelt und waren mit Java Web Start nicht zufrieden. Also haben sie eine Alternative geschaffen. Das Problem: dieses Projekt selbst ist in Java umgesetzt. Damals, als es vorgesehen war, dass Java auf jedem Rechner installiert ist, war dies kein Problem. Da neuere Java-Versionen nun aber nur noch mit der eigentlichen Anwendung zusammen ausgeliefert werden sollten, fiel diese Option leider weg.

Zum Bundlen der Java-Runtime und der Java-Anwendung gibt es diverse Projekte. Leider widmet sich keines dieser Projekte der Installations- und Updateproblematik. Von OpenWebStart– eine freie Alternative zur Ablösung des alten Java Web Starts – war damals noch nicht die Rede. Auch heute ist OpenWebStart noch im Alpha-Stadium.

Also beschlossen wir selbst einen Launcher zu implementieren. Die wichtigsten Anforderungen für uns waren:

  1. Der Launcher soll auf den drei Betriebssystemen Windows, macOS und Linux laufen.
  2. Die Zielanwendung (in unserem Fall OSCA) soll sich ohne Admin-Rechte „installieren“ lassen.
  3. Die Installation soll möglichst einfach sein. Ein Installieren von zusätzlichen Tools soll nicht nötig sein.
  4. Sowohl die Zielanwendung als auch der Launcher sollen sich – falls erforderlich – beim Starten automatisch aktualisieren. Auch dies soll ohne Admin-Rechte möglich sein.
  5. Der Launcher soll sicherstellen, dass während des Updates die Zielanwendung nicht läuft.
  6. Alles soll robust und sicher sein.

Eine erste prototypische Implementierung war nach einem Tag fertig. Bis der letzte Endschliff getätigt wurde sollte allerdings noch fast ein Jahr vergehen.

trivrost Update

Es stellte sich schnell heraus, dass wir ohne Mehraufwand eine allgemeingültige Lösung entwickeln können, die nicht auf Java-Anwendungen beschränkt ist. Wie wir dies konkret umgesetzt haben werden wir im nächsten Blogpost dieser Serie genauer beleuchten.

Neugierig geworden?

trivrost ist nun Open Source Software. Es steht unter der MIT Lizenz. Wenn Du trivrost ausprobieren oder etwas zu dem Projekt beitragen möchtest, so bist Du herzlich eingeladen Dich in unserem GitHub Repository umzusehen. Feedback, Verbesserungsvorschläge und Bugbeschreibungen sind als Issue dort gerne gesehen. Und über Pull Requests mit Verbesserungen am Code würden wir uns natürlich auch sehr freuen. Mindestens genau so sehr freuen würden wir uns aber, wenn Du anderen von unserem Projekt erzählt oder trivrost vielleicht sogar einsetzt.