Mac OpenJDK

Oracle ha recentemente cambiato le politiche di supporto e di licenza di Java SE. Questo comportera' delle differenze negli aggiornamenti e per i costi, sia per gli utenti commerciali che per le utenze personali.
Tra le alternative possibili OpenJDK ha una licenza molto piu' aperta e quindi e' una valida alternativa applicabile in molte configurazioni.

In questo documento vediamo come installare Oracle OpenJDK su MacOS.

E cercheremo anche di rispondere a domande del tipo: Si deve pagare Java? Continueranno ad esserci gli aggiornamenti? ...

Licensing

Con la versione Java 8 SE entrata nella fase di "End of Public Updates" ed il rilascio della versione Java 11 SE LTS (Long Time Support) vi sono significativi cambiamenti sulla disponibilita' degli aggiornamenti dell'ambiente Java. Cerchiamo di riassumere... per essere piu' chiari e' necessario distinguere tra le versioni.

Java 8 SE e' disponibile dal 2014 ed e' ora entrato nella fase di "End of Public Updates". Questo significa che i Commercial Users verranno limitati da aprile 2018 e che i Personal Users riceveranno gli update gratuiti fino a dicembre 2020; dopo tali date dovranno sottoscrivere una licenza (eg. Java SE Subscription, Java SE Desktop Subscription, ...) e diventare quindi Oracle Customers per continuare a ricevere gli aggiornamenti [NdA previsti per Java 8 almeno fino al 2025].

Java 11 SE e' stato rilasciato a settembre 2018 ed e' una versione LTS (ovvero Long Time Support: mantenuta a lungo). Per questa versione sono disponibili: Oracle OpenJDK con licenza Open Source [NdA GPLv2+CE] o Oracle JDK  con una licenza commerciale [NdA prevede generalmente un costo ma gratuita per lo sviluppo, l'utilizzo personale, ...].
Nuove versioni LTS verranno rilasciate indicativamente ogni 3 anni ed avranno un supporto per piu' anni mentre mentre le altre versioni non-LTS verranno desupportate non appena disponibile la release sucessiva [NdA come e' gia' successo per la versione Java 9 SE al rilascio di Java 10 SE].

Maggiori dettagli sono disponibili nella Roadmap ufficiale.

La scelta tra gli ambienti Java da installare e' quindi ora molto importante e l'utilizzo di OpenJDK e' un'alternativa significativa.

Che Java e'?

Controllare la versione di Java installata su macOS [NdA ma anche su altri OS] e' molto semplice:

java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) javac -version javac 1.8.0_102

Installiamo OpenJDK

Il primo passo e' accedere al sito OpenJDK e scaricare il file per macOS [NdA vecchio link]. E' un file tar.gz e basta un doppio click per estrarlo. Ora va spostato [NdA i nomi dei file cambiano a seconda delle versioni]:

cd cd Downloads/openjdk-11.0.2_osx-x64_bin sudo mv jdk-11.0.2.jdk /Library/Java/JavaVirtualMachines/

Gia' fatto!
Ma ovviamente non ci fidiamo. Ecco la prova:

java -version openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode) javac -version javac 11.0.2

Ora che e' disponibile l'ambiente Java e' naturalmente possibile compilare ed eseguire un programma come in questo esempio.

Molti programmi Java utilizzano la variabile d'ambiente JAVA_HOME. Per l'impostazione della JAVA_HOME si dovrebbe utilizzare il comando:
 export JAVA_HOME=`/usr/libexec/java_home`

In realta' in molti casi non serve perche' viene automaticamente scelta la versione con il numero maggiore. Per i piu' curiosi, o per chi vuole fare un po' di pulizia, l'elenco completo delle JVM si ottiene con:

/usr/libexec/java_home -V Matching Java Virtual Machines (4): 11.0.2, x86_64: "OpenJDK 11.0.2" /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home 1.8.0_102, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home 1.8.0_73, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home 1.7.0_111, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_111.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home

Facile vero? Non e' sempre cosi'!

Varie ed eventuali

Premesso che non e' semplice... cerco di seguire gli aggiornamenti delle versioni di Java in questo documento.

Vi sono molteplici altre distribuzioni binarie di Java SE/OpenJDK tra cui quelle di: AdoptOpenJDK, Azul, Amazon, BellSoft, IBM, jClarity, Red Hat, SAP, ... ma le due versioni di Oracle sono sicuramente le piu' diffuse.

Su OpenJDK non c'e' tutto... alcune componenti Java Plug-In o Java Web Start che utilizzano i file JNLP non sono piu' presenti nella versione 11.

Sono sicuramente utili i seguenti documenti: Java is Still Free 2.0.2, Oracle Java SE Releases FAQ, Oracle Java SE Support Roadmap, Oracle Java SE Subscription FAQ, Oracle Java SE 8 Release Updates, Installing OpenJDK 11 on macOS Mojave, JDK 11.0.2 General-Availability Release, Java SE Downloads, Is Java WebStart Deprecated?, ...


Titolo: Mac OpenJDK
Livello: Medio (2/5)
Data: 31 Ottobre 2018
Versione: 1.0.1 - 14 Febbraio 2019 ❤️ San Valentino
Autore: mail [AT] meo.bogliolo.name