JDK Jongleur

Als Java Entwickler im Dienstleistungs-Umfeld hat man meist mit vielen Projekten und damit auch mit mehreren JDK-Versionen zu tun. Und selbst wenn man nur an einem Projekt mit fixer JDK-Version arbeitet, steht immer ein neues JDK vor der Tür, dessen Features man kennenlernen will oder dessen Kompatibilität mit dem aktuellen Projekt untersucht werden soll.
Die unterschiedlichen Betriebssysteme haben alle mehr oder weniger gute Mechanismen, um systemweit das verwendete JDK zu ändern. Bei einer globalen Änderung der JDK-Version kann es zumindest bei Major-Versionssprüngen unschöne Nebeneffekte geben. Daher ist es meistens sinnvoller, das gewünschte JDK aus dem Internet herunterzuladen und dann lokal für eine Shell eines Benutzers durch das Setzen von PATH und JAVA_HOME verfügbar machen.
Diese manuellen Schritte nimmt einem Jabba (https://github.com/shyiko/jabba) ab. Jabba ist ein in Go geschriebenes Tool, das zum einen Download und lokale Installation verschiedenster JDK-Versionen erledigt und zum anderen das lokale Wechseln dieser Versionen sehr einfach macht.
Nach der Installation des Tools kann man sich per ‘jabba ls-remote’
alle für Jabba gepflegten JDKs auflisten lassen:

jabba ls-remote

Neue JDKs können auf dem Github Repo von Jabba als PullRequest hinzugefügt werden (falls es die Maintainer nicht schon gemacht haben).
JDK-Versionen, die lokal noch nicht installiert wurden, können mit ‘jabba install’ installiert werden.

jabba install 1.8.112

Falls es schon systemweit installierte JDKs gibt, können diese mit ‘jabba link’ verlinkt und damit zur lokalen Verwendung in Jabba bereitgestellt werden.

jabba link system@1.8.112 /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk

Will man in seiner Shell ein bestimmtes JDK nutzen, kann dieses einfach per ‘jabba use’ ausgewählt werden:

jabba use 1.8.112

Alles in allem ist Jabba ein kleines, handliches Tool, das genau das tut, was es soll und mir meinen Arbeitsalltag mit unterschiedlichen und zum Teil auch early-access Versionen von JDK 9 erheblich einfacher macht.
Wie grenzt sich Jabba nun von ähnlichen Tools (oder Skript-Lösungen) ab?

  • Es bietet eine konsistente Nutzung auf die Linux, Windows und Mac.
  • Neben dem Setzen der JDK-Version kümmert sich Jabba auch um Download und lokale Installation (aka. Unzip).
  • Installation und JDK-Wahl haben nur Nutzer- bzw. Shell-lokale Effekte.

An dieser Stelle geht ein herzlicher Dank an Sven Ruppert (@SvenRuppert), der mich auf dieses praktische Tool aufmerksam gemacht hat.