Java in Linux – Installeer de juiste versie
- June 1, 2023
- 0
Ontwikkel je Java-software of wil je een Java-programma installeren dat een specifieke versie vereist? Dan kijk je best even na of de juiste Java-versie wel geïnstalleerd is. We overlopen hoe je dat doet met OpenJDK, Oracle Java en OpenWebStart.
Het voordeel van Java is dat je eender welk Java-programma van het internet kunt plukken om in Linux Mint te draaien. Het maakt daarbij niet uit dat de ontwikkelaar het programma geschreven heeft op een Windows- of macOS-systeem: in principe werkt het net zo goed in Linux Mint. In de praktijk verloopt dat helaas niet altijd even vlot als verwacht. Misschien is het programma geschreven voor een nieuwere Java-versie of werkt het nét even wat beter in Oracle Java dan in OpenJDK. Gelukkig kun je dat eenvoudig oplossen door een extra Java runtime te installeren. We leggen hier stap voor stap uit hoe dat in zijn werk gaat.
JRE of JDK?
Om te beginnen moet je weten dat elke Java-versie in twee smaken komt: JRE en JDK. De Java Runtime Environment of JRE volstaat om bestaande Java-programma’s te starten. Wil je zélf ook Java-software ontwikkelen, dan heb je de Java Development Kit of JDK nodig. Daarnaast bestaan er nog zogenaamde headless-versies van de JRE en JDK. Dat zijn minimale versies bedoeld voor installatie op servers, zonder ondersteuning voor grafische programma’s. Dat klinkt allemaal nogal verwarrend: daarom hebben de Linux Mint-ontwikkelaars één en ander vereenvoudigd voor jou. Standaard bevat Linux Mint het pakket “default-jre”, dat een JRE installeert die volstaat voor de meeste mensen. In Linux Mint 20 is dat “openjdk-11-jre”, ofwel de JRE versie 11 van het OpenJDK-project. Wil je zelf controleren welke Java-versie momenteel op jouw systeem draait? Dat gaat het snelst met volgend commando in een terminalvenster:
$ java -version
openjdk version “11.0.11” 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
Meerdere versies
Blijkt jouw Java-versie te oud te zijn voor een bepaald programma, dan is dat geen probleem. Linux Mint bevat immers nog verschillende andere OpenJDK-versies. Zoek maar eens in Softwarebeheer op “openjdk jre”. In Linux Mint 21 vind je bijvoorbeeld nog versies 8, 11, 13, 14 en 16 terug. Installeer je één van die versies, dan stelt Linux Mint die meteen in als standaardversie:
$ java -version
openjdk version “16.0.1” 2021-04-20
Dat betekent dat alle Java-programma’s op jouw systeem vanaf nu versie 16 van de JRE gebruiken. Wil je liever de standaardversie laten zoals het was en enkel voor specifieke programma’s een nieuwere versie instellen? Gebruik dan het commando update-alternatives:
$ sudo update-alternatives –config java
Dat commando toont de beschikbare Java-versies en laat je door middel van een volgnummer de gewenste standaardversie kiezen. In de afbeelding zie je trouwens twee entries voor versie 16: één met “auto mode” als status en één met “manual mode”. Die eerste zorgt ervoor dat Linux Mint bij de installatie van een andere JRE meteen naar die versie omschakelt, terwijl manual mode ervoor zorgt dat de geselecteerde versie altijd de standaardversie blijft. Wil je in ons voorbeeld terug versie 11 als standaard instellen, kies dan optie 1.
## 01_alternatives.png: Zo selecteer je de standaard Java-versie op jouw systeem.
Versie kiezen
Update-alternatives stelt de standaardversie van de java-binary in door slim gebruik van symlinks. Zo verwijst /usr/bin/java naar /etc/alternatives/java, wat op zijn beurt een link is naar de gekozen Java-versie, bijvoorbeeld /usr/lib/jvm/java-11-openjdk-amd64/bin/java. Het volgende commando toont alle beschikbare versies van de java-binary op jouw systeem:
$ update-alternatives –list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-16-openjdk-amd64/bin/java
Wil je één specifiek programma met een andere Java-versie starten, gebruik dan het volledige pad naar die versie. Bijvoorbeeld: /usr/lib/jvm/java-16-openjdk-amd64/bin/java voor versie 16, terwijl /usr/bin/java verwijst naar versie 11. Voor programma’s die je via het startmenu opstart, pas je de menu-entry aan (via het contextmenu) of vervang je het java-commando in het opstartscript ervan door de gewenste versie.
Oracle Java
Omdat Oracle zijn Java-software niet meer onder een open source licentie verdeelt, moet je een kleine omweg maken om Oracle Java alsnog te installeren. Om te beginnen voeg je Oracle Java PPA van het Linux Uprising Team toe aan Linux Mint:
$ sudo add-apt-repository ppa:linuxuprising/java
$ sudo apt update
Op de webpagina van die PPA (https://launchpad.net/~linuxuprising/+archive/ubuntu/java) zie je welke versies ondersteund worden: op het ogenblik van schrijven waren dat versies 11 en 16. Installeer vervolgens de installer voor de gewenste versie, bijvoorbeeld:
$ sudo apt install oracle-java16-installer
De installer vraagt je eerst de licentie-overeenkomst te aanvaarden, waarna de eigenlijke download pas start. Hett pakket installeert trouwens altijd de JDK: je kunt dus niet voor de JRE kiezen. Na installatie is Oracle’s Java meteen de standaardversie. Wil je Oracle Java enkel voor specifieke programma’s gebruiken, pas dan de standaardversie aan met update-alternatives (zoals eerder uitgelegd).
## 02_oracle.png: Omwille van de licentie-overeenkomst moet je Oracle Java via een omweg installeren.
OpenWebStart
Tot slot willen we nog één Java-pakket vermelden dat je soms nodig hebt in Linux Mint: OpenWebStart. Tot enkele jaren geleden gebruikten websites wel eens Java apps die je via Java Web Start lokaal op jouw computer kon draaien. De app-bestanden hadden de extensie .jnlp en werden gestart met de javaws-binary. Een bekend voorbeeld zijn onder andere de remote KVM-viewers om het scherm van een server op afstand over te nemen. Zelf hebben wij nog een 5 jaar oude SuperMicro homeserver die van die technologie gebruik maakt. Vroeger was de gebrekkige ondersteuning voor Java Web Start in Linux trouwens één van de hoofdredenen om Oracle Java te installeren. Helaas heeft Oracle Java Web Start verwijderd sinds versie 11: laat dat nu net de oudste versie zijn die nog ondersteund wordt!
Gebruik je nog een Java Web Start app die je absoluut niet kan missen, dan moet je dus OpenWebStart installeren. Dankzij dat pakket kun je zo’n Java apps nog steeds in een recentere Java-versie starten. Op https://openwebstart.com/download vind je een installatiepakket voor Linux Mint. Na installatie is OpenWebStart meteen gekoppeld aan .jnlp-bestanden. In het startmenu vind je ook een entry naar de instellingen van OpenWebStart, enigzins te vergelijken met het Control Panel dat je in oudere JRE’s van Oracle vond. Je kunt er bijvoorbeeld de beveiligingsinstellingen aanpassen of de log console openen om apps te debuggen die niet werken zoals verwacht. Onder JVM Manager zie je welke Java-versie OpenWebStart gebruikt. Wil je die aanpassen, klik dan op “Find Local” om alle geïnstalleerde versies te tonen. Vervolgens klik je op het icoontje met de drie stippen naast een Java-versie en kies je de optie “Deactivate JVM” bij alle versies die je niet wilt gebruiken.
## 03_openwebstart.png: Met OpenWebStart start je oude Java Web Start applicaties in recente Java-versies.