Dal caffé Java a quello corretto
Recentemente Amazon ha annunciato la disponibilità di un nuovo prodotto: Amazon Corretto. Ha a che fare con il caffè, come potrebbe suggerire il nome? Solo in senso metaforico: in realtà è un nuovo prodotto dell’ecosistema Java, e di questo riprende appunto l’immagine del caffè che ha contraddistinto il linguaggio nato in casa Sun ormai quasi un quarto di secolo fa…
Però, tornando all’annuncio: che cosa c’entra adesso Amazon.com, Inc. con Java? Sicuramente è vero che l’azienda fondata da Jeff Bezos — tra l’altro proprio negli stessi anni in cui nasceva Java — ha ampliato molto il suo ambito d’affari, dall’iniziale commercio elettronico di libri, CD e videogiochi a rivenditore globale di tutto (o quasi) e a nuovo asso pigliatutto della logistica e delle consegne. È vero che negli ultimi anni hanno assunto sempre maggior importanza servizi di cloud computing come AWS. Ma qui si sta andando verso una nuova e ulteriore direzione, che merita qualche approfondimento.
Una ripartenza veloce per Java
L’acquisizione di Sun da parte di Oracle ha comportato un periodo di “incertezze” per Java e per le tecnologie connesse a questa piattaforma, scatendando le lamentele di molti per l’immobilismo che, effettivamente, almeno per qualche anno ha caratterizzato Java.
Però, da poco più di un anno a questa parte, la stasi è stata decisamente superata e ha portato a una serie di novità.
E necessario pertanto inquadrare la situazione attuale nel mondo Java, che ha subito numerose variazioni negli ultimi tempi a causa di certe decisioni di Oracle. Queste stanno avendo un impatto su almeno quattro cose:
- la denominazione delle versioni di Java;
- la frequenza dei rilasci;
- la durata del supporto (fino all’end-of-life);
- la licenza d’uso.
Denominazione, rilasci, supporto
Per quanto riguarda la denominazione delle versioni, la frequenza dei rilasci e la durata del supporto, MokaByte ha già pubblicato un articolo esaustivo [1], che vi consigliamo di rileggere — o di leggere, se ve lo siete perso — in particolare per quanto riguarda il nuovo ciclo di vita, ossia per quanto tempo i vari rilasci vengono supportati con aggiornamenti: questo è in generale molto più breve, fatta eccezione per rilasci specifici marcati LTS (Long Term Support).
Licenze d’uso
Pochi mesi fa, Oracle ha cambiato le regole anche per quanto riguarda la licenza d’uso. Una delle ultime mosse di Sun, pochi anni prima di essere assorbita da Oracle, fu il rilascio del JDK in open source, vale a dire la creazione di OpenJDK distribuito con la licenza GPL + Classpath Exception.
Ma, sostanzialmente, chi usava ancora i rilasci ufficiali di Sun, poi di Oracle, non subiva limitazioni pratiche all’uso commerciale, non avendo necessità di pagare alcunché, a meno che non volesse esplicitamente qualche forma di supporto esteso o che non volesse usare in produzione certe funzioni, denominate “Commercial Features”, ad esempio un supporto avanzato per il profiling, come il Flight Recorder.
“E io pago…”
Tutto è cambiato con l’introduzione del modello “Java SE Subscription”: sul sito Oracle [2] ne sono descritti i vari termini, che vi invito a leggere attentamente. In somma sintesi, la Java SE Subscription prevede questo: per usare in produzione a scopo commerciale — non educativo o dimostrativo — le nuove versioni di Java, è necessario pagare una quota periodica e attenersi ai tempi del nuovo ciclo di rilasci. Se tutto questo non vi piace, probabilmente dovrete passare a una distribuzione di OpenJDK.
Oracle JDK vs OpenJDK
Sicuramente l’introduzione di questo nuovo modello di licensing potrà essere uno shock per molti… e certamente apparirà come un cambiamento notevole dopo i primi ventidue anni di Java. Tuttavia Oracle garantisce un paio di cose:
- di supportare OpenJDK, le cui versioni verranno rilasciate in sincronia con quelle di Oracle JDK;
- di far sì che OpenJDK si mantenga funzionalmente interscambiabile con Oracle JDK, senza (troppe) sorprese.
Tutto ciò ora porta molto più interesse, anche commerciale, nei confronti di OpenJDK: infatti ora diventa rilevante il caso di chi usa Java professionalmente e non gradisce le condizioni del programma “Java SE Subscription”.
Open JDK “di qualità”
Stiamo quindi parlando di chi vuole usare la versione open source del JDK, ma ha bisogno di qualche forma di assistenza e supporto. Voglio ricordare che un conto è dire che i sorgenti di JDK sono disponibili con licenza open source, un altro è avere chi si cura della qualità, del packaging e dei rilasci puntuali di tali pacchetti open source, tutte cose di cui Oracle non si occupa più.
Dunque, ecco che negli ultimi tempi accanto allo storico OpenJDK (ora AdoptOpenJDK [4]) stanno sbucando un po’ come funghi diverse varianti di OpenJDK con relativi sponsor, per esempio Azul Zulu [5].
Amazon Corretto
Amazon Corretto [3] è semplicemente l’ultimo arrivato in questo nuovo mercato: la multinazionale, che già fornisce una sua variante di Linux (Amazon Linux 2), si appresta ad arricchire l’ecosistema Java: parliamo infatti per ora di un prodotto in preview, con il primo rilascio previsto per il primo trimestre 2019.
Amazon punta a supportare anche il mondo Java con una sua distribuzione gratuita, testata e certificata, con possibilità di supporto per quanto riguarda i miglioramenti di prestazioni e il supporto di correzioni per i buchi di sicurezza, per i tre sistemi operativi principali (Linux, Windows, Mac OS).
Amazon fornisce supporto per Java 8 e 11: non c’è da preoccuparsi per il 9 e il 10… chi è ancora rimasto a Java 8 farà meglio a portarsi direttamente sulla versione 11, che è LTS. Prevede inoltre un end-of-life piuttosto lungo (fino al 2023 e 2024). I sorgenti sono disponibili su GitHub [6].
Ma come è questo Corretto?
Cosa dire di questo nuovo prodotto? Permettetemi prima un passo indietro: cosa dire di questa nuova situazione, con una disponibilità senza precedenti di binari Java con alti standard di qualità?
Da un lato, la competizione è cosa buona e giusta e ci assicura di non dover essere necessariamente soggetti ai termini d’uso di Oracle, senza per questo doverci appoggiare a un prodotto senza supporto. Dall’altro c’è il rischio di un po’ di confusione, sempre in agguato in questi casi. Ed ecco che la risposta al “cosa dire di questo nuovo prodotto” implica necessariamente un’approfondita attività di analisi dei diversi prodotti a nostra disposizione, attività che richiederà un certo tempo per essere espletata.
Per ora possiamo dire che Amazon Corretto ha ricevuto l’elogio di James Gosling, il papà di Java [7]; e anche l’autore dell’articolo citato sul blog di Amazon, Aron Gupta, è una vecchia conoscenza di Sun, che sicuramente molti di voi avranno ascoltato a qualche conferenza in giro per il mondo.
Dettagli importanti
Il problema è che “il diavolo è nei dettagli”, come sempre… Per esempio, c’è chi ha notato che al momento la pagina di download offre .msi, .rpm e .pkg — ossia i file di installazione specifici per i tre sistemi operativi più popolari — ma non mette a disposizione .zip e .tgz che molti apprezzerebbero per la possibilità di download automatico in un sistema di Continuous Integration come Jenkins, o addirittura in un repo di Maven.
Tutte cose che certamente si possono fare “in casa”… ma sarebbe bello se fossero già pronte; a onor del vero va detto che sono disponibili immagini Docker, che sta riscuotendo sempre più interesse anche in ambito di Continuous Integration.
Conclusioni
Per tutto il resto, bisognerà semplicemente provare… E dunque, ora tutti ai posti di lavoro con Jenkins, per configurare job multipiattaforma che provino il livello di qualità dei nostri progetti in congiunzione con Amazon Corretto. O qualche altra nuova distribuzione preferita…