Con Java Runtime Environment eseguire applicazioni Java non è più un problema.

Java è un linguaggio di programmazione ed una piattaforma di sviluppo nato nei laboratori di Sun Microsystems nel 1995 dalle brillanti menti di James Gosling e i suoi colleghi. Java a differenza di altri linguaggi che possono essere: (i) compilati, o (ii) interpretati è una via di mezzo. Infatti Java viene prima compilato in bytecode, che è una rappresentazione intermedia, che poi verrà eseguita all'interno di una virtual machine denominata Java Virtual Machine (JVM). Nella virtual machine di Java inoltre vengono eseguite ulteriori ottimizzazioni, come per esempio la compilazione Just In Time (JIT) per velocizzare l'esecuzione dei programmi Java.
Java a livello di sintassi deve la sua origine a linguaggio C e C++, ma è decisamente più semplice da gestire correttamente rispetto ai suoi antenati. Inoltre Java non va confuso con il popolare linguaggio di scripting per il web JavaScript in quanto sono due linguaggio molto differenti tra di loro. Le motivazioni della nascita di questo linguaggio sono da ricercasi nella volontà del suo creatore di sviluppare un linguaggio che fosse potente, al tempo stesso non troppo complicato e che soprattutto potesse essere eseguito su qualunque piattaforma. Nasce infatti in questo periodo il famoso motto "Write Once, Run Anywhere" (WORA).
Nella fase iniziale dello sviluppo vennero ben presto sviluppate differenti edizioni che potessero diffondersi su tutti gli ambienti computazionali disponibili. Nacquero così le seguenti versioni:
- Java SE (precedentemente nota come J2SE fino alla versione 1.5) - E' la versione standard di Java da cui trae l'acronimo di Standard Edition. E' il cuore della piattaforma Java ed include tutte le librerie e le API principali (java.lang, java.io, java.math, java.net, java.util., etc.);
- Java EE (precedentemente nota come J2EE) - E' la versione avanzata (enterprise) che oltre alle librerie standard include anche funzionalità utilizzate da ambienti di produzione ed in particolare ambienti web come per esempio: componenti per gestire la ridondanza delle applicazioni, componenti distribuiti e fault-tolerant, applicazioni multi-tier (multi livello) che solitamente vengono eseguiti su piattaforme server. Inoltre definisce differenti standard industriali come: invocazione remota dei metodi (RMI), messaggistica (JMS), web services, elaborazione di file XML, Enterprise JavaBeans, servlets e Java Server Pages (JSP).
- Java ME (precedentemente nota come J2ME) - E' l'edizione Mobile o anche Micro, utilizzata in particolare su ambienti con basse capacità computazionali come per esempio dispositivi mobili, sistemi embedded, set-top boxes e automotive.
JSE, JEE, JME in realtà definiscono solo degli standard. Per poter sviluppare dei programmi con queste librerie è necessario procurarsi il kit di sviluppo che implementa le varie specifiche. Se siete degli sviluppatori avrete bisogno infatti del cosiddetto JDK (Java Development Kit che sarebbe la versione abbreviata del ben più lungo nome Java Platform, Standard Edition Development Kit). Il JDK non è nient'altro che l'implementazione ufficiale degli standard visti sopra da parte della casa madre e proprietaria di Java, Oracle. Esistono anche altre implementazioni che sono: l'OpenJDK e l'IBM JX. Nel corso del tempo Java ha subito profonde trasformazioni. Riportiamo qui di seguito la lista dei principali aggiornamenti ricevuti da Java:
- JDK 1.0 - 1996
- J2SE 1.2 - 1999
- J2SE 1.4 - 2002
- J2SE 1.5 (anche nota come J2SE 5.0) - 2004
- Java SE 6 (1.6) - 2006
- Java SE 10 - 2018
Con quest'articolo siamo entrati nel dettaglio tecnico dal punto di vista dello sviluppo applicativo di un'applicazione Java. Ma se siete dei semplici utenti e volete semplicemente avere a disposizione l'ambiente per eseguire applicazioni Java allora vi servirà il download gratuito del componente che si chiama: Java Runtime Environment (JRE).
Il Java Runtime Environment permette di visualizzare ed eseguire contenuti basati sul linguaggio Java: in genere contenuti quali chat, programmi di messaggistica immediata e altri applicativi web basati sulla tecnologia Java tramite l'apposita funzionalità della Java Virtual Machine (anche denominata HotSpots).
Per concludere questo lungo e dettagliato articolo è importante anche introdurre le varie controversie che nel tempo hanno caratterizzato la vita di Java.
- Una delle controversie principali di Java si basa sul suo più famoso slogan. Infatti, con il passare del tempo, lo slogan Write Once, Run Anywhere è diventato Write Once, Debug Anywhere (WODA) in riferimento ai numerosi bug che hanno afflitto le varie Virtual Machine: infatti se da un lato il codice sorgente Java era lo stesso, dall'altro lato la Java Virtual Machine era necessariamente differente in base all'ambiente su cui si trovava in quel momento, condizione che poteva generare comportamenti differenti e difficili da debuggare.
- Di altro ambito, legale in questo caso, è la successiva controversia. Infatti già dal 2010 Oracle ha intentato causa contro Google per l'utilizzo delle API Java in Android. Oracle ha ritenuto che Google ne abbia fatto un utilizzo scorretto e ha richiesto l'enorme cifra di 9 miliardi di dollari americani di risarcimento. Il caso è addirittura andato fino alla Corte Suprema Americana.
- Per concludere, le feroci critiche ad uno dei sistemi portanti della programmazione Java, e cioè il Garbage Collector (GC). Se da un lato infatti il GC libera lo sviluppatore da una serie manuale di task sulla gestione della memoria e degli oggetti, dall'altro il GC può intervenire durante un passaggio critico dell'applicazione e non c'è molto che lo sviluppatore possa fare. Se nel programma è necessario controllare puntualmente l'allocazione della memoria, allora Java potrebbe non essere il linguaggio giusto.