ORACLE BCL AGREEMENT
Il BCL riguarda le versioni (compresi gli aggiornamenti) rilasciate prima del 16 aprile 2019, dalla versione 5 alla 10 (esclusa la versione 8 in seguito all’update 211, poi lo vedremo nel dettaglio).
L’Oracle BCL prevede un concetto di “restricted use” e quindi richiede il pagamento di una sottoscrizione per utilizzare Oracle Java, ad eccezione dei casi in cui:
- ci siano le condizioni di “General Purpose”
Il BCL definisce “Software”, “General Purpose Desktop Computers and Servers”, “Programs” e le relazioni tra questi termini. All’interno del BCL, si legge che Java è gratuito nei casi in cui vengano rispettate le condizioni di “general purpose computing” (i casi di “utilizzo generico” come la visualizzazione di contenuti tramite browser, l’utilizzo di mail o di applicazioni di produttività come può essere una suite per erogare webinar in streaming)
“General Purpose Desktop Computers and Servers” means computers, including desktop and laptop computers, or servers, used for general computing functions under end user control (such as but not specifically limited to e-mail, general purpose internet browsing and office suite productivity tool)
- rientri in ambiente di sviluppo per applicazioni interne (e non di terze parti)
“Oracle grants you a non-exclusive, non-transferable, limited license without fees to reproduce internally and use internally the software complete and unmodified for the purpose of designing, developing, and testing your programs.”
Allo stesso tempo nel BCL Oracle definisce anche che:
“You may not use the Commercial Features for running programs, Java applets or applications in your internal business operations or for any commercial or production purpose, […]. If you want to use the Commercial Features for any purpose other than as permitted in this Agreement, you must obtain a separate license from Oracle.”
In altre parole, è necessario pagare una licenza commerciale per utilizzare qualsiasi funzionalità commerciale. Sembra semplice, ma è sorprendentemente facile attivare e utilizzare inavvertitamente le funzioni commerciali di Java. Scaricare il software Java dal sito web Oracle, che presenta un mix di funzioni gratuite e commerciali, richiede attenzione su quali siano le funzioni aggiuntive per cui è richiesta licenza.
Infatti, bisogna essere consapevoli di quali sono le funzionalità commerciali incluse automaticamente in Java SE, leggendo il sito Oracle e i termini aggiuntivi. Tra queste troviamo:
- Java Flight Recorder
- Java Mission Control
- Java Advanced Management Console
- MSI Enterprise JRE Installer
- JRockit Flight Recorder
- JRockit Mission Control Console observability
- JRockit Mission Control Memory Leak Detector observability
- JRE Usage Tracking
- JRockit Real Time, Deterministic GC
Quindi, se la versione scaricata rientra tra quelle sotto BCL, bisogna verificare se l’utilizzo rientra in quelli previsti dal “General Purpose”, per cui non è richiesta licenza.
Ma quest’ultimo decade se: 1) applico l’update di aprile 2019 e se 2) vengono utilizzate funzionalità commerciali al di fuori di Test e Sviluppo per applicazioni interne.
ORACLE OTN AGREEMENT
A partire da aprile 2019, Oracle ha cambiato la politica di licenza per JDK8: non essendo più previsti aggiornamenti pubblici gratuiti per Java 8 (che era la versione più diffusa tra gli sviluppatori), le aziende dovevano cominciare a pagare il supporto commerciale o cercare un sostituto per Oracle Java.
A partire da questo “critical patch update”, le licenze JDK scaricate dal sito Oracle rientrano sotto il contratto OTN, ovvero dall’aggiornamento successivo al 8u202. Anche le licenze sotto BCL, una volta fatto l’aggiornamento di sicurezza, rientrano sotto OTN.
Questo agreement è sostanzialmente diverso dal BCL: decade il concetto di “General Purpose” ma sono previsti usi gratuiti come:
- uso personale (ad esempio per il gioco)
- uso per lo sviluppo (a condizione che l’applicazione non sia in produzione e quindi sviluppata solo per uso interno)
- utilizzi di prodotto approvati da Oracle (li possiamo trovare qui)
- utilizzo sull’Oracle Cloud Infrastructure (OCI)
ORACLE NFTC AGREEMENT
Con l’uscita di Java17 nel 2021, Oracle ha modificato i termini di licenza e ha introdotto la licenza NFTC Oracle No-Fee Terms and Conditions, sulla base del feedback degli sviluppatori che desideravano avere Java nuovamente libero per l’uso commerciale.
Come accennato prima, con la nuova LTS Java SE 21, la versione 17 non richiede sottoscrizione solo se ha aggiornamenti precedenti all’update 13.
Se si utilizza una versione con aggiornamenti successivi, viene licenziata con OTN e quindi sono vietati gli utilizzi commerciali (salvo le eccezioni previste sotto “License Rights and Restrictions“)
Lo switch alla versione Java SE 17 fino a poco fa era una delle soluzioni che si potevano prevedere per ridurre l’impatto sul budget legato alla nuova metrica. Ora bisogna valutare sotto quale contrattualistica rientra (se OTN o NFTC)
Possiamo comunque adoperarci per migrare alla Java SE 21 o prevedere altre contromisure, ad esempio rimuovendo Java o passando a versioni open source o ancora prevedendo casi in cui l’utilizzo è gratuito, ma ricordiamo che in qualsiasi momento un dipendente o un appaltatore potrebbe installare Java senza la licenza appropriata, e allora non sareste più conformi.
Il problema non è solo la compliance: i costi di migrazione, aggiornamento o supporto (es. OpenJDK non lo prevede) potrebbero essere superiori al mantenimento dello status quo.
In WEGG ci occupiamo di ottimizzare la spesa legata alle licenze con le strategie più adatte per la vostra azienda, in modo da garantire il valore di Java e la sua conformità in ogni momento.