Cosa vuol dire Programmare in Java? Perché scegliere questo linguaggio di programmazione e quali sono le sue caratteristiche? Quali sono gli sbocchi professionali e da dove iniziare? In questa guida dedicata ad uno dei più famosi e richiesti linguaggi di programmazione parleremo proprio di questo, ma partiamo da un po’ di storia.
Java nacque in un periodo in cui Internet era una realtà, l’hardware dei computer si potenziava rapidamente e l’informatizzazione complessiva marciava a ritmi forzati. Tutti questi fattori ponevano le basi per un contesto in cui i sistemi, sebbene eterogenei tra loro, sarebbero stati in grado di dialogare reciprocamente. Il linguaggio – nato nel 1995 come progetto Oak ad opera di Sun Microsystems – vide la luce proprio con l’intenzione di generare applicazioni in grado di essere eseguite su ogni dispositivo dotato di intelligenza, dal più grande al più piccolo, favorendo così scambi di informazioni, automazione industriale, controllo remoto. Si sognavano impianti intelligenti per la casa, applicazioni su ogni smartphone e dispositivi molto piccoli in grado di fare grandi cose: sono passati circa venticinque anni, tutto questo è realtà e Java, ormai il linguaggio di programmazione più usato al mondo, può prendersene buona parte dei meriti. Ma ora vediamo tutto ciò che c’è da sapere su questa tecnologia e del mondo di opportunità che offre.
Java è una tecnologia contraddistinta da molte caratteristiche interessanti che l’hanno resa unica e spesso imitata. Ecco un elenco dei suoi principali punti di forza, li analizziamo uno alla volta soprattutto per individuare i motivi che possono spingerci a studiare questo linguaggio fantastico:
Questo è il motto che accompagna da sempre Java (in inglese suona “Write once, run everywhere”) ed è tuttora in grado di sintetizzare al massimo la sua idea di fondo. Buona parte dei linguaggi a quel tempo esistenti, portavano ad una “compilazione” del codice sorgente in funzione del sistema operativo su cui il programma doveva essere eseguito. Se un programma nasceva per Windows veniva appositamente convertito in codice macchina per questo sistema operativo e per poter essere portato, ad esempio, su Linux doveva essere adattato nel codice sorgente e compilato nuovamente. Ciò portava ad una decuplicazione degli sforzi sia in fase di progettazione sia durante lo sviluppo e la distribuzione che potevano essere tanto maggiori quanto numerose erano le piattaforme su cui il software doveva apparire. Oltre ai disagi per programmatori e progettisti, insorgevano maggiori costi e sforzi organizzativi per le aziende. Con Java tutto ciò non è più un problema. Al centro della sua concezione, è stata posta una compilazione più “generica” che non produce codice macchina specifico per un solo sistema operativo ma del bytecode eseguibile da un apposito strumento: la Java Virtual Machine. Sarà proprio quest’ultima ad essere resa disponibile per ogni sistema operativo. Grazie a questo si avrà uno stesso codice Java, compilato una sola volta ed eseguibile su qualsiasi sistema operativo dotato di Java Virtual Machine;
Utilizzare Java non richiede costi. Si può iniziare ad utilizzarlo gratuitamente per quanto riguarda sia il linguaggio in sé stesso sia gli ambienti con cui scrivere programmi. Ciò tuttavia non deve trarre in inganno: Java è un linguaggio altamente professionale, gratuito per scelta ma non perché valga meno di altri ambienti che richiedono costose licenze;
Java è un ottimo esempio di Programmazione Orientata agli Oggetti. Le informazioni sono ricchezza ma lo sono soprattutto quando vengono aggregate e connesse bene tra loro, quando costituiscono una rete da attraversare per produrre conoscenza. Se abbiamo bisogno di dimostrazioni basti pensare ai Social Network che ogni giorno utilizziamo. La Programmazione Orientata agli Oggetti è proprio l’arte di organizzare le informazioni, associarle e farle comunicare tra loro. Con questa tecnica di sviluppo – che in Java va assolutamente utilizzata – potremo realizzare modelli informatici di realtà esistenti per produrre applicativi di commercio elettronico, analisi di mercati finanziari, gestionali aziendali e tutto ciò che permette di “informatizzare” contesti reali;
Uno dei motori principali di un linguaggio di programmazione è il seguito che genera nella comunità di informatici: quello di Java è invidiabile per chiunque. Una folta community è una fonte inesauribile di materiali, esempi, informazioni ma anche di suggerimenti per chi “crea” Java e le sue nuove versioni. Inoltre il codice scritto in Java è facilmente condivisibile – soprattutto per la sua natura multipiattaforma – pertanto sono numerose le librerie software (raccolte di funzioni già fatte) che vengono pubblicate da aziende, sviluppatori e fondazioni e rese disponibili per chiunque le voglia scaricare ed integrare nel proprio ambiente di lavoro. Parlando di librerie non si pensi solo a piccoli aggregati di funzionalità: intendiamo in molti casi vere e proprie piattaforme, imponenti strumenti per lo sviluppo che spesso superano in qualità ed efficienza quelli ufficiali;
Negli anni, i detrattori di Java hanno accusato il linguaggio di essere fermo, si è sospettata addirittura una sua presunta morte imminente ed invece non è mai successo niente di tutto questo. Anzi le cose sono andate esattamente al contrario. Non solo proprio quando si tacciava Java di godere di pessima salute era in preparazione la versione 8, la sua edizione più rivoluzionaria, ma negli ultimi anni il linguaggio ha inaugurato un ciclo di aggiornamento semestrale quasi introvabile in qualsiasi altro scenario tecnologico. A settembre 2017 è stato pubblicato Java 9. L’anno successivo sono state rilasciate la versione 10, a marzo, e la 11 a settembre mentre il 2019 vedrà la prosecuzione di tale cadenza. Ognuna di queste versioni non si è accontentata di innovazioni limitate e di facciata ma ha introdotto strumenti importanti che hanno determinato drastici salti di qualità della piattaforma in sé stessa come una nuova struttura modulare, un ambiente REPL per la programmazione interattiva (una sorta di riga di comando in cui impartire direttive in Java) ed un nuovo client HTTP per l’interazione in Rete già rivolto ad HTTPS e al nuovissimo protocollo HTTP2. Inoltre si può vedere l’evoluzione di Java anche nel numero di linguaggi che le fioriscono attorno, ad esempio Kotlin e Scala per citare quelli più noti. Conoscere questa tecnologia permette di approcciarli nel migliore dei modi sentendosi già addentro ai principi fondamentali e trasformando spesso l’acquisizione della nuova sintassi in un compito del tutto semplice.
Dopo questa introduzione probabilmente la prospettiva di diventare un programmatore Java inizierà ad allettarti ma ti starai a questo punto chiedendo: che lavori si possono fare in Java? La risposta è molto semplice: qualsiasi lavoro nel campo dell’Informatica può essere fatto in Java.
Partiamo dai settori che probabilmente toccano l’utente più da vicino: il web ed il mobile. Le applicazioni web richiedono tipicamente due componenti che comunicano tra loro da parti diverse della Rete: il client (pensa al browser quando “vai” su Internet) ed il server, il cervellone che offre le risposte ad ogni richiesta (siti web, notizie, previsioni del tempo, video, etc.). Java costituisce una delle tecnologie più importanti in assoluto per quanto riguarda lo sviluppo server. La sua stabilità e completezza l’hanno resa una delle scelte migliori per le applicazioni in ambienti molto delicati quali il settore bancario, l’assicurativo e l’industria in generale. In questo caso, come in molti altri si può optare per framework “ufficiali” – pensiamo Java Enterprise Edition (https://www.oracle.com/technetwork/java/javaee/overview/index.html) – prodotti dagli stessi creatori di Java o di terze parti che sono comunque soluzioni validissime e adottate in gran parte dei progetti: di questo emisfero potremmo nominare, tra i molti, i progetti Spring (https://spring.io/), Play Framework(https://www.playframework.com/) e Google Web Toolkit (http://www.gwtproject.org/).
Per quanto riguarda il mobile, non si può non pensare al mondo Android (https://www.android.com/). Hai uno smartphone di questo tipo? Probabilmente sì, ci sono circa l’85% di possibilità che ciò sia vero. Bene, in tal caso non solo hai in tasca un sistema operativo fatto in buon parte in Java ma anche ogni applicazione che normalmente usi è stata realizzata in questo linguaggio e tu, qualora adottassi tale tecnologia, potresti in breve tempo diventare uno degli autori di qualche bella app. Java è stato scelto sin da subito da Google come linguaggio predefinito per sviluppare applicazioni Android e questo ha attirato ancora più interesse sul linguaggio.
Altro settore che in questi anni interessa molto le aziende è quello dell’intelligenza artificiale con tutti i campi che ad essa sono connessi: Big Data, Machine Learning, Data Science. Se un utente acquista il prodotto A quanto è probabile che in un dato lasso temporale acquisti anche il prodotto B? E come capire se una certa azione farà guadagnare tanti soldi nel giro dei prossimi mesi? Tutti questi quesiti trovano risposta negli ambiti che abbiamo appena citato, discipline variegate figlie di matematica e statistica da un lato, dell’elettronica e dell’informatica dall’altro e imparentate con molte altre scienze pure o applicate a seconda degli ambiti di cui parliamo. Moltissimi framework che permettono di analizzare grandi moli di dati (quelle che noi stessi contribuiamo a generare accedendo a Social Network, viaggiando in auto più elettroniche che meccaniche ormai o utilizzando smartphone, tanto per citare qualche esempio) sono realizzati in Java e ciò rende importantissimo questo linguaggio proprio perché lo candida come strumento primario di interazione con essi.
Come prospettiva non si può nemmeno ignorare un altro ambito interessante e attualissimo, noto come Internet of Things, l’Internet degli Oggetti. Con esso si intende una nuova concezione dell’automazione della vita quotidiana degli individui, per cui “cose” comuni (elementi della casa, automobili, sensori indossabili, etc.) vengono rese intelligenti da chip inseriti al loro interno e sono così in grado di comunicare tra loro. Il risultato sarà l’attivazione di funzionalità finalizzate all’assistenza degli esseri umani nei contesti che frequentano. Data la diversità di tali oggetti tra loro e degli hardware che li animano, un linguaggio dalla natura multipiattaforma come Java vi si innesta a pennello. Inoltre si consideri che gran parte di tali dati accumulati e trasmessi finiscono per alimentari i grandi serbatoi dei Big Data di sui si è parlato poco fa.
Il bello di Java è che qualunque sia l’ambito in cui vuoi cimentarti, il linguaggio è sempre lo stesso. Impari Java una volta, lo approfondisci gradualmente e tutta la preparazione che costruisci puoi applicarla in ogni ambito. Il modo di elaborare stringhe, calcolare espressioni, comunicare in Rete o lavorare su file è il medesimo che tu stia realizzando un’app Android, un’applicazione web o un programma per computer desktop.
Allora pensi di voler iniziare a programmare in Java? Non voglio convincerti che sia un percorso facile perché qualsiasi cosa importante, che dà frutti e offre opportunità, se fatta bene, non risulta mai troppo facile, ma sicuramente non avrai di fronte a te nessun ostacolo per iniziare. Ti serve un computer innanzitutto: alla luce di tutto quello che abbiamo detto sinora non deve avere nessun requisito particolare. Non uno specifico sistema operativo: vanno bene tutti. Non hardware particolarmente nuovo o performante: Java ha una buona capacità di adattamento ad ogni condizione. Non dispositivi particolari se non lo stretto necessario legato ad un contesto: ad esempio, se vuoi programmare Android, può essere utile (ma non sempre vitale vista l’esistenza degli emulatori) uno smartphone o un tablet.
Per il resto, il software è assolutamente libero e gratuito. Con una comunissima connessione ad Internet puoi scaricare il tuo ambiente di lavoro, installarlo ed iniziare ad utilizzarlo. Ciò che si rende necessario è una buona guida che ti accompagni in un percorso efficace e fruttuoso evitando inutili perdite di tempo e distrazioni. Potresti partire ad esempio da un corso introduttivo, proprio come quello che proponiamo noi https://devacademy.it/corsi/fondamenti-di-java/ a cui puoi iscriverti anche subito e che puoi seguire online quando vuoi e da qualsiasi dispositivo, per passare poi al percorso più completo Android Developer (https://devacademy.it/percorsi/android-developer/) che ti permetterà di diventare un programmatore android in Java.