Imparare a Programmare Imparare a Programmare
  • Capitoli
    • 1. Introduzione a Java
    • 2. Velocità di apprendimento: 5/10
    • 3. Applicazioni: 8/10
    • 4. Richiesto nel lavoro: 10/10
    • 5. Risorse: 8/10
    • 6. La mia modesta opinione
  • 1. Introduzione a Java
  • 2. Velocità di apprendimento: 5/10
  • 3. Applicazioni: 8/10
  • 4. Richiesto nel lavoro: 10/10
  • 5. Risorse: 8/10
  • 6. La mia modesta opinione
  • 1. Introduzione a Java
  • 2. Velocità di apprendimento: 5/10
  • 3. Applicazioni: 8/10
  • 4. Richiesto nel lavoro: 10/10
  • 5. Risorse: 8/10
  • 6. La mia modesta opinione
Programmare in Java

Programmare in Java

Tutto quello che nessuno ti ha mai voluto dire su Java

Java viene continuamente consigliato come primo linguaggio di programmazione, ma è veramente un linguaggio adatto a chi vuole iniziare a programmare? Java è il miglior linguaggio di programmazione con cui iniziare?

Non voglio parlarti di specifiche tecniche ma risponderò alle domande più frequenti che un principiante si pone quando decide di studiare Java:

  • È un linguaggio facile da imparare? Sono necessarie delle basi di programmazione o è adatto a tutti?
  • Cosa posso creare con Java? (app, programmi, siti, ecc)
  • Posso trovare lavoro come programmatore Java? (la domanda più importante)
  • Come iniziare a studiarlo? (quali manuali, guide e tutorial scegliere)

Pronto a partire?

Goditi l'articolo!

Alberto OllaAlberto Olla
Capitolo 1

Introduzione a Java

Introduzione al linguaggio di programmazione Java

Perché imparare a programmare in Java? Cosa lo contraddistingue?

Eccoci arrivati a Java.
Solitamente tutti lo presentano così:
“Java non è da confondere con Javascript (il cugino bonaccione, che vien dalla campagna), sono due linguaggi diversi.”

Personalmente, iniziare dicendoti cosa "non sia" , mi sembra una pessima presentazione!

Potrei invece iniziare dicendo che:

  1. Java è il linguaggio di programmazione più popolare al mondo. Attenzione: popolare significa che è il più diffuso in generale (dalla didattica allo svago, al lavoro).
  2. È anche il più usato nel mondo del lavoro, infatti è in prima posizione come linguaggio di programmazione più richiesto nel settore informatico.
  3. Viene usato praticamente ovunque: sviluppo web, mobile, software, ecc (dopo torneremo su questo punto).
  4. Ha una comunità di sviluppatori enorme. Questo si traduce in tante risorse di qualità sia gratuite che a pagamento: guide, corsi, tutorial, manuali e così via.

Beh direi che come presentazione può bastare, anche se mi sarei potuto fermare al punto due, ovvero all'aspetto economico. Faccia felice

Forse il vantaggio più grande di Java è proprio il fatto di essere il più richiesto nel lavoro.

Ma come è arrivato a questo traguardo, nonostante ci siano tanti altri linguaggi? In cosa si distingue Java? Cos’ha lui in più di me?! Cioè volevo dire, cos’ha lui in più degli altri linguaggi?

Cerchiamo di capire quali sono le caratteristiche di questo linguaggio tanto richiesto.

Innanzitutto va detto che Java è un linguaggio molto “versatile”, perché è pensato per affrontare qualsiasi scopo.

Mi spiego meglio:

Immagina un linguaggio che ha l’unico scopo di essere usato per creare programmi per computer (software), e in particolare per Windows.
Non potrà mai essere usato per creare software per Mac dato che non è predisposto per farlo, e tanto meno potrà essere usato per creare applicazioni per smartphone. Quindi, è un linguaggio limitato ad un solo ambito.

Invece per Java è l’esatto opposto, è stato pensato per poter essere usato un po’ ovunque, senza queste limitazioni.

Probabilmente starai pensando: “Certo ottima idea! Avere un linguaggio che possa essere eseguito in qualsiasi sistema, geniale!”
Il problema è che realizzare un'idea simile non è così semplice.

Java dispone di uno “strumento” particolare, un intermediario che si occupa di convertire il codice Java (quello scritto da noi) in un codice che la macchina (il computer) possa eseguire.

In questo modo possiamo scrivere il nostro codice Java una sola volta, ed eseguire lo stesso codice su qualsiasi sistema (Windows, Mac, Linux, sul web o sullo smartphone).

Questo strumento magico prende il nome di Java Virtual Machine, in breve JVM.

Si, lo so, tutti questi nomi sembrano dei mostri spaventosi a prima vista, ma se tradotto in italiano si trasformerà in un piccolo coniglietto paffuto:
macchina (o computer) virtuale di Java.

Sembra molto più semplice, no?

Immagina questo:

Abbiamo il nostro codice Java sul sistema operativo X (per esempio Windows). Non facciamo eseguire il nostro codice direttamente dal sistema operativo perché vogliamo che il linguaggio funzioni ovunque, che sia indipendente dalla piattaforma su cui è eseguito. Quindi facciamo eseguire il nostro codice da un computer virtuale, un programmino (la Java Virtual Machine) che si occupa di eseguire il nostro codice, indipendentemente dal sistema in cui si trova.

Questa è la vera forza del linguaggio Java, ciò che gli ha permesso di restare in vita per tanti anni!

Bene, adesso facciamo un piccolo viaggio nel tempo. Torniamo al 1992: avevo appena due anni e Java vedeva la luce con la sua prima riga di codice alla Stanford University.

Primo esercizio pratico in Java
Semplice codice Java: Hello World (Ciao Mondo).

L’idea di base era semplice:

Creare un linguaggio che fosse più facile da usare di C++.

Di che? C++?
Mamma mia, che confusione! Java, Javascript, C++, un sacco di nomi da ricordare!
Ma andiamo con calma, ce la puoi fare. Faccia sorridente

Hai mai sentito parlare di C?
C può essere considerato come il linguaggio che ha posto le fondamenta per tutti i successivi linguaggi. I suoi più grandi “difetti” (se cosi si possono definire) sono due:

  1. Primo problema: Usa un approccio alla programmazione considerato obsoleto (chiamato imperativo o procedurale).
  2. Secondo problema: Il codice è molto “simile” al modo di pensare del computer (linguaggio macchina). Questo rende la programmazione più complessa rispetto ai linguaggi che, invece, sono più “lontani” dalla macchina e più vicini al nostro modo di pensare.

Il fatto che sia così “simile” al linguaggio macchina offre enormi vantaggi in termini di prestazioni: esecuzione del codice veloce e poche risorse utilizzate (RAM, CPU). Tuttora rimane uno dei linguaggi più veloci e potenti.

Il secondo punto quindi non rappresenta un reale problema, mai il primo, al contrario, lo è eccome!

C è stato ideato nel 1972 e da allora la programmazione si è evoluta, si è arrivati ad un nuovo modo di organizzare il codice:
La Programmazione a Oggetti (OOP-Object Oriented Programming)!

La sentirai nominare molto spesso, ad oggi è considerato uno standard.

Tutti i programmatori nati dopo il 1970 dovrebbero saper programmare ad oggetti.

Se è la prima volta che lo senti nominare non ti preoccupare. C’è sempre tempo per imparare e io sono qui per questo. Faccia sorridente

Questa famosa “programmazione ad oggetti” non è altro che una filosofia!
Lo so, sembra strano ma è così.
È un nuovo modo di pensare e organizzare il codice che rende tutto più semplice da mantenere e gestire, aiutando a diminuire gli errori.
Una vera forza!

Il problema è che C non lo supporta!

Per risolvere il problema numero 1 del C vennero creati altri linguaggi, molto simili, MA con una grande differenza: il supporto alla programmazine ad oggetti.
I risultati furono C++ e Objective-C. (La parola “objective” non sembra più cosi strana, indica semplicemente un C che supporta gli Oggetti.)

Quindi, il primo problema venne risolto grazie a C++ e Objective-C, ma anche questi nuovi linguaggi presentavano comunque il secondo problema, ovvero la complessità!

Ora possiamo capire meglio la domanda iniziale: In cosa si distingue Java?
Abbiamo detto che C++ è un evoluzione del C, che resta "simile" al linguaggio macchina, e per questo è ancora complesso da usare.

E si sa ... quando qualcosa è complicato, c’è sempre qualcuno che la vuole semplificare!

Per semplificare C++, è stato creato Java.

Quindi abbiamo capito qualcosa in più di Java:

  • È un linguaggio versatile: può essere usato in qualsiasi ambito.
  • È indipendente dal sistema operativo: viene eseguito da una macchina virtuale, chiamata Java Virtual Machine.
  • Nasce per essere più semplice di C++.
  • Non solo supporta la cosiddetta “programmazione ad oggetti”, ma la rende una delle sue caratteristiche principali.
Capitolo 2

Velocità di apprendimento: 5/10

Java è difficile o facile da imparare?

Java è un linguaggio difficile da imparare? È adatto a chi inizia da zero o bisogna avere già delle basi di programmazione?

Abbiamo già detto che Java non nasce per essere un linguaggio complesso, anzi, tutt’altro!

C++ al contrario era, ed è tutt’oggi, un linguaggio molto complesso, per questo viene considerato un linguaggio altamente tecnico. Per programmare in C++ è necessario un certo livello di attenzione.

Ed è proprio su questo che Java ha voluto puntare!

Gli ideatori di Java hanno cercato di semplificare la programmazione eliminando le parti più complesse e non necessarie (ereditarietà multipla tra classi, istruzione goto, aritmetica dei puntatori e relativa gestione della memoria).

In questo modo hanno evitato che i programmatori Java dovessero gestire parti troppo “tecniche” o difficili, che sono più soggette a problemi ed errori.

Possiamo dire, quindi, che Java è un linguaggio relativamente semplice.
Quel relativamente non è casuale!

Ancora prima di aver creato la tua prima variabile, condizione, o ciclo, Java ti obbliga a creare una Classe, un Metodo, e ad Istanziare un Oggetto.

Ti è sfuggito qualcosa?
È normale!

Classe, Metodo, Istanza, Oggetto, non sono concetti base della programmazione (come variabili e cicli) ma fanno parte di uno “stile” di programmazione intermedio.

Per questo dico che Java è relativamente semplice da imparare.

Da per scontato che si conoscano le basi della programmazione, forzando il programmatore a scontrarsi con Classi, Metodi e Oggetti.

Questo è un vantaggio per chi conosce già le basi della programmazione, ma non per chi sta cominciando da zero!

Ora che ti ho spiegato la teoria, passiamo alla pratica.

Ti mostro un esempio di codice in due linguaggi diversi. Entrambi quando vengono eseguiti mostrano la frase "Hello World" (ovvero "Ciao Mondo").

Codice in Java
package hello;                

public class HelloWorld {
   public static void main(String[] args) {
      System.out.println("Hello, World");
   }
}
Codice in Javascript
console.log("Hello, World");
Per gli esperti: so bene che paragonare due linguaggi in questo modo è inutile. Serve unicamente per mostrare, a chi non è esperto, la differenza tra le diverse impostazione del codice.

Ma andiamo avanti, perché non è finita qui.

Java è un linguaggio di “alto livello”! Wow, alto livello? Non voglio neanche immaginare cosa starai pensando dopo aver letto questa frase, ma non è ciò che pensi tu!

Ricordi quando ti dicevo che C è vicino al modo di pensare del computer (linguaggio macchina), mentre i linguaggi moderni sono più vicini al nostro modo di pensare?
Ecco, immagina il linguaggio macchina come il più basso livello esistente; dalla parte opposta abbiamo i linguaggi di alto livello!

L'avevi intuito?

Quindi Java è un linguaggio di alto livello, questo vuol dire che si occupa LUI di tutti quei dettagli complicati riguardanti le comunicazioni con il computer.

Si preoccupa per noi di gestire il “basso livello”.
Visto che gentile?

Così il programmatore può concentrarsi sullo sviluppo principale del programma invece che perdere tempo in dettagli più tecnici, che molti considerano difficili e noiosi.

Fin qui sembrerebbe essere abbastanza positivo se non fosse che, a differenza di altri linguaggi (come Python  o Javascript), Java è un linguaggio sicuramente meno immediato da apprendere.

Potresti perdere parecchio tempo dietro al codice, prima di ottenere dei risultati soddisfacenti, e questo potrebbe essere molto demotivante, soprattutto per i neofiti!

La verità è che Java non è stato pensato per fare questo, quindi è del tutto normale che non abbia questa caratteristica.
E questo giustifica il mio voto sulla velocità di apprendimento.

Capitolo 3

Applicazioni: 8/10

Cosa si può creare in Java?

Cosa puoi fare con Java? Cosa si può sviluppare con questo linguaggio?

Ho già detto che Java è nato nel 1992, quindi parecchio tempo fa, ma forse non ti ho detto che è il principale linguaggio per creare applicazioni su Android.

Com’è possibile? In fondo a quel tempo non esistevano gli smartphone (tantomeno Android) ...

La risposta è semplice:

Gli ideatori avevano previsto che Java si potesse adattare a qualsiasi sistema, presente e futuro.

Per rendere l’idea di come Java si adatti ad ogni settore immagina un parassita (sì, hai capito bene).

Immaginati un bel parassita che va in giro per il mondo cercando di infiltrarsi nei corpi altrui. Pensa ai dinosauri: passa comodamente da un dinosauro all’altro, infiltrandosi nel loro sistema e vivendo lì dentro.

Ma ad un certo punto cosa accade?

I dinosauri si estinguono e al loro posto arriva una nuova specie.
Per il nostro amico parassita non è un problema, si infiltra nei nuovi sistemi e si adatta anche a loro, sopravvivendo all’evoluzione del mondo, fino ad arrivare ai nostri giorni. Faccia sorridente

Senz'altro il paragone più riuscito di sempre!

Java non è altri che il nostro amico parassita. Per questo è un linguaggio che non morirà mai!

Inizialmente veniva usato per creare software, poi, con la diffusione di internet si è evoluto ed è passato sul web arrivando all’epoca degli smartphone dove viene usato per creare applicazioni. Si è adattato e continua a farlo.
Con queste premesse potresti dirmi:

“Ma Alberto, se si adatta così tanto allora perché hai dato solo 8 su 10?”

Bellissima domanda! Te lo spiegherò più in basso, nelle mie opinioni personali.

Adesso è finalmente arrivato il momento di dirti dove viene usato.

Prima, tuttavia volevo dirti che per ogni settore non viene utilizzato il linguaggio Java nudo e crudo ma, nel 99% dei casi, viene usato in combinazione con altri strumenti (sempre basati su Java) che ne facilitano l’utilizzo in quel particolare ambito. Lo so, detto così è molto generico, ma lo vedremo meglio entrando nei dettagli nel capitolo sul lavoro.

Applicazioni mobile per Android

Questo è facile:

Se apri un'applicazione a caso nel tuo smartphone Android con tutta probabilità è stata scritta utilizzando proprio Java. Il linguaggio si integra perfettamente con il sistema operativo.

Questo tipo di applicazioni strettamente collegate alle risorse del cellulare prende il nome di Native, in quanto riesce a sfruttare al meglio le varie risorse: la CPU e i suoi core, la RAM, la scheda SD e tutto ciò che viene gestito dal sistema operativo.

Java è considerato il linguaggio nativo per Android ma, ovviamente, ogni sistema operativo mobile ha il suo.
Infatti iOS ha l’Objective-C o Swift, mentre Windows Phone (anche se non interessa a nessuno) utilizza C#.

Lo sviluppo di applicazioni Native non è l’unico modo per sviluppare delle applicazioni! Tratto meglio questo argomento nell'articolo su Javascript.

Sul web, applicazioni e servizi web

Ebbene sì, Java si è diffuso anche sul web, sia per creare applicazioni sia per servizi web.

Un momento:

Applicazioni web? Servizi web? Cosa sono questi nomi strani?

Ora te lo spiego.  Faccia sorridente

Applicazioni web: anche se il nome ci ricorda le applicazioni per smartphone, con questo termine si intendono semplicemente i siti internet “dinamici” di qualsiasi tipo: e-commerce, social network, semplici siti aziendali. Insomma qualsiasi sito internet che abbia delle funzioni dinamiche.

Con “dinamico” intendiamo che i contenuti variano. Immagina, ad esempio, una ricerca su YouTube: i risultati possono variare quindi sono considerati dinamici.


Servizi web: con questo termine intendiamo una cosa leggermente diversa, meglio fare un esempio.

Immagina di aver creato un'applicazione graficamente bella e perfettamente funzionante per il tuo sistema operativo mobile preferito.

Ora immagina di voler inserire un sistema di accesso e di registrazione per i nuovi utenti.
Secondo te, dove viene creato il nuovo utente, durante la registrazione?

Non può essere salvato all’interno del cellulare perché, così facendo, quell’utente esisterebbe solo in quel cellulare e non esisterebbe altrove.

Quindi come si risolve?

L’idea è quella di spedire queste informazioni verso una sorta di “sito internet” più piccolo che viene chiamato servizio web.

Nei servizi web non viene creata nessuna grafica perché non devono essere visti da nessuno!

Noi ci registriamo dall’applicazione e clicchiamo il tastino “Registrati ora”: a questo punto l’applicazione contatta di nascosto il servizi web e spedisce tutti i nostri dati. Il servizio web li riceve, li analizza e risponde qualcosa tipo “Ok” oppure “Mmm nah, questo nome utente è già in uso“.

In questo modo tutte le applicazioni (che possono essere installate in 20.000 dispositivi diversi) si collegano ad un unico servizio per verificare i dati: questo è un servizio web.

Java, ovviamente, non è l’unico linguaggio che permette di fare queste genere di cose. Vedi PHP, Ruby, Python o Javascript.

Nei Big Data

I celeberrimi Big Data! Wow, che nome!

Magari potresti averlo già sentito da qualche parte, dopotutto è tra quelle parole che vengono inserite in un discorso per sembrare più intelligenti, un po’ come il “cloud”!

Big Data in realtà è un termine molto generico che tradotto letteralmente significa “grandi dati”. Con dati intendiamo qualsiasi tipo di informazione, ad esempio: se avessi un sito internet o un’app i dati potrebbero essere gli utenti registrati o, se avessi un e-commerce potrebbero essere tutti gli acquisti e le fatture.

Si parla di Big Data quando abbiamo un'enorme quantità di dati che molto spesso è in continua evoluzione (e crescita). Basti pensare agli utenti di Facebook o ai video di YouTube.

Questi sono ottimi esempi di Big Data ma non occorre scomodare dei grandi siti come quelli, perché anche aziende più piccole, magari nazionali, possono comunque avere i propri Big Data.

Voglio evitare di andare troppo sul tecnico, ti basti sapere che le maggiori tecnologie del settore usano Java.

Adesso ti farò una lista di nomi molto strani quindi tieniti pronto e non traumatizzarti: Hadoop, HBase, Accumulo, ma anche ElasticSearch, usano o permettono di utilizzare Java. Queste sono tra le migliori tecnologie del settore ma ne esistono altre che non usano Java, per citarne una: MongoDB (il database di nuova generazione più diffuso al mondo).

Software (programmi)

Ovviamente non poteva mancare questa categoria, una delle più classiche della programmazione.

Java può essere utilizzato anche per creare veri e propri programmi per computer.
Grazie alla JVM (Java Virtual Machine) il codice viene scritto solo una volta ma può essere eseguito con facilità in tutti i sistemi operativi desktop , come Windows, Mac e Linux.

Sistemi embedded (sistemi integrati)

Lo so, il nome sembra complicato e anche se in italiano possiamo tradurlo in “sistemi integrati”, questo non ci aiuta molto a capirne il significato ...

Spiegazione breve:

Hai presente un orologio digitale da polso?
Al suo interno ha un piccolo circuito con una sorta di processore, una memoria e così via, ecco, quello è un sistema embedded!

La macchinetta del caffè?
Un sistema embedded!

L’allarme di casa?
Un sistema embedded!

I vecchi cellulari che non facevano le foto, non avevano i colori e lo schermo era piccolo e verde?
Dei sistemi embedded!

Il tuo nuovo smartphone di ultima generazione?
Un sistema ... NON embedded! Ci stavi cascando, sii sincero!

Spiegazione lunga: Puoi trovarla nell’articolo sul Linguaggio C , in cui spiego meglio cosa si intende con sistemi integrati o embedded.

Applicazioni Scientifiche

Mi sembra doveroso citare anche questo punto.

Molto spesso, Java si utilizza in ambiti scientifici e di ricerca. I principali motivi sono quelli di cui ti ho già parlato:

  • È versatile.
  • È di alto livello.
  • Ha molte "librerie” a disposizione.
Ti starai chiedendo cosa diamine sia una libreria?

Beh, essenzialmente è un insieme di codici scritti da altri sviluppatori che servono per risolvere dei problemi specifici.

Per esempio:

Supponiamo voglia inserire nel mio programma dei meccanismi per la gestione degli errori.
Potrei scrivere il codice da solo, oppure cercare il codice scritto da qualcun’altro, che faccia al caso mio, ed integrarlo nel mio programma.
Cosi risparmio tempo e fatica e sono tutti contenti.

Ovviamente le librerie esistono per tutti i linguaggi di programmazione, ma Java ha il vantaggio di essere il più popolare e il più richiesto in ambito lavorativo.
Quindi possiede un’ottima varietà di librerie disponibili.

Nota: Nelle applicazioni scientifiche Python sta prendendo il posto di Java.

Capitolo 4

Richiesto nel lavoro: 10/10

Java e come trovare lavoro

Vuoi diventare un programmatore Java? Non avrai problemi a trovare lavoro!

Ah ... Java e il lavoro, è come parlare di pane e nutella! Perfette assieme finché non si esagera.

(Ricordati di questi ingredienti perché ne riparleremo nelle mie considerazioni personali.)

Parlando da un punto di vista puramente economico, Java è il miglior linguaggio in circolazione.

Java è il linguaggio più richiesto nel lavoro
Fonte: Articolo edX su indagine Indeed.com
Ci sono più richieste di lavoro per Java che per qualsiasi altro linguaggio esistente.

Se diventi un programmatore Java, sia con un percorso di studi/laurea sia da autodidatta, puoi esser certo che non avrai difficoltà a trovare lavoro.

Questo dovrebbe renderti l’idea di quanto sia richiesto nel “mondo del lavoro”.
Ho messo volontariamente le virgolette perché dire “mondo del lavoro” è parecchio generico e a noi non piacciono i discorsi generici, vero?

Quindi andiamo a scoprire nello specifico quali tipi di aziende lo usano e come lo usano.
Abbiamo visto che Java si può applicare a vari ambiti, dallo sviluppo di software ai Big Data, ma nella realtà per cosa viene utilizzato? Meglio partire con calma perché il discorso è particolare.

Java è così richiesto perché, di fatto, è considerato il linguaggio delle aziende Enterprise.

Ma cosa si intende per Enterprise?
Sono quelle aziende che:

  1. Ricevono lavori su commissioni con budget elevati.
  2. Spesso hanno varie sedi sparse per il mondo.
  3. Hanno molto dipendenti.
  4. Facciamo un esempio pratico molto veloce:

    Immagina che Gino, il tuo fruttivendolo di fiducia, voglia realizzare un'applicazione per permettere ai suoi clienti di acquistare le verdure online. Il budget di Gino è circa 2.000 euro. Secondo te come farà a creare la sua applicazione?
    Le scelte sono poche:

    A) Impara a programmare e la scrive da solo.
    B) Cerca su google un'azienda della sua città che la sviluppi per lui.
    C) Contatta una multinazionale come Microsoft o Oracle per chiedere un preventivo per la sua app.

    Qual’è, secondo te, la risposta corretta?
    Ovviamente è B!

    Sarà più propenso a cercare una piccola azienda nella sua città, a cui affidare il lavoro, cercando di spendere il meno possibile.

    Adesso facciamo lo stesso esempio per la stessa idea di app, ma invece di immaginare un uomo sudato e peloso di nome Gino immaginiamo la COOP o i supermercati Conad.

    Ecco che tutto cambia!

    Il budget non sarà più di 2.000 euro ma diventerà qualcosa come 60.000 euro, e con un budget del genere si preferisce affidarsi ad aziende “accreditate”, con tanti dipendenti, che offrano garanzie e certificazioni.

    Ecco quindi cosa sono le Enterprise!

    Il fatto che Java sia il linguaggio preferito dalle Enterprise è l’unica ragione per cui è così richiesto, ed è solo per questo motivo che Java domina il settore informatico (in ambito lavorativo).

    Questo non significa che Java sia il miglior linguaggio per gli usi che ne fanno le Enterprise, ma tra poco riprenderemo questo discorso nelle mie opinioni personali.

    Adesso che abbiamo capito chi richiede Java nel mondo del lavoro, andiamo a vedere nel concreto per cosa lo usa.

    Gli usi attualmente più diffusi sono 3 e il quarto è in espansione.

    1. Android
      Il mobile sta conquistando il mondo e Java esige la sua parte!
      Qui bisogna fare attenzione perché, anche se Java è considerato il linguaggio nativo delle applicazioni Android, essere bravi su Java non significa essere bravi anche nel creare app Android. Infatti, il sistema di Android è molto diverso dal resto dell’infrastruttura Java, quindi all'inizio sarà difficile.
    2. Applicazioni web
      Si hai capito bene, nelle aziende Enterprise si usa Java per creare veri e propri siti web. Adesso ti citerò le tecnologie più usate quindi tieniti pronto a non capire nulla. Java viene eseguito da un server grazie a dei web server come Tomcat o Glassfish. Solitamente si usano dei framework MVC come Struts, Spring o addirittura (Dio ci aiuti) JSF.
    3. Servizi Web
      Ti ho spiegato cosa sono ma qui andrò più sul tecnico: SOAP con XML per l’integrazione tra software oppure REST con JSON usati in combinazione con applicazioni web, grazie ad AJAX, o anche in applicazioni mobile.
    4. Big Data
      Questo è un settore ancora nuovo ma in continua crescita. Ti ho già citato Hadoop, Hbase e ElasticSearch. Tutti strumenti che usano in un modo o nell’altro Java e che vengono utilizzati anche nelle Enterprise.
      Ricordiamoci che stiamo parlando di enormi quantità di dati, quindi i progetti nel quale usarli sono pochi rispetto agli altri campi.

    Il fatto che Java sia il linguaggio favorito nelle Enterprise è qualcosa che non cambierà facilmente, anzi, è destinata a restare una situazione costante.

    Le grandi aziende sono molto, ma molto, “prudenti” (dico prudenti per non dire altro) ed evitano il più possibile i cambiamenti.

    Se domani dovesse nascere il linguaggio perfetto chiamato Avaj, le Enterprise continuerebbero ad usare Java come se nulla fosse. Faccia sorridente

    Ti sembra un comportamento strano?
    In realtà no.

    Adesso ti spiego:

    Immagina di essere a capo di un’azienda Enterprise e avere, ad esempio 50.000 dipendenti che usano Java quotidianamente in settori diversi. Fior fior di professionisti con anni di esperienza nei loro particolari settori, competenze forti e consolidate, e in grado di gestire tutte le problematiche relative a quel settore.

    Praticamente hai un ecosistema funzionante, hai professionisti formati, hai tutti gli strumenti, e hai i clienti che ti lanciano danari addosso per realizzare lavori su commissione.

    Perché mai dovresti cambiare qualcosa?

    Un cambio di linguaggio vorrebbe dire instabilità, incertezza e costi per la formazione del personale.

    Se la nuova tecnologia è fortemente diversa dalla precedente (per esempio nel caso dei database SQL e NoSQL) vorrebbe dire perdere anni di esperienza e professionalità accumulati. Inoltre, utilizzando nuove tecnologie si verificherebbero errori diversi dai precedenti che potresti non saper affrontare.

    Insomma, per un Enterprise, abbandonare Java per passare ad altro è solo un costo con pochi vantaggi.
Capitolo 5

Risorse: 8/10

Le migliori guide, corso e manuali di Java

Le migliori risorse per imparare a programmare in Java da zero

Come hai potuto vedere, Java può essere usato in tantissimi settori diversi, e per ognuno di essi ci sono tantissime risorse disponibili online, sia gratis che a pagamento.

Chi vuole iniziare a programmare da zero con Java si ritrova sommerso da un mare di informazioni, e in questo enorme oceano di tutorial, libri e corsi, per un principiante diventa difficile!

Fosse per me ti consiglierei solo delle risorse in lingua inglese, gratuite e altamente professionali, ma capisco che potrebbe essere un problema; per questo motivo ho inserito anche delle risorse in italiano.

Se hai problemi con l’inglese ho un consiglio per te:

Inizia il prima possibile! Ma non necessariamente seguendo un corso di lingua inglese, cerca di seguire un vero corso di qualcosa che a te interessi (come programmare in Java) ma in inglese.

Probabilmente la prima volta che sentirai i video dovrai leggere i sottotitoli e capirai il 2% o il 5% di tutto quello che ti viene spiegato, ma la seconda volta capirai già il 10% o il 15%, e così via.

Non pensare che non ce la farai perché è troppo difficile, ti assicuro che ce la puoi fare. Faccia sorridente

Si, sarà dura, dovrai faticare tanto, ma puoi farlo. Io ho iniziato proprio in questo modo, leggendo i sottotitoli e guardando cinque volte lo stesso video per capire cosa stessero dicendo, e adesso posso seguire tranquillamente qualsiasi tipo di lezione o corso, in inglese, senza problemi.

Se ci sono riuscito io puoi farlo anche tu. Faccia sorridente
Prima inizi meglio è per te e per la tua carriera da programmatore. Faccia felice

Quindi ecco la tua stella polare per non perderti nel mare delle risorse. Una lista di guide e manuali selezionati per iniziare a programmare con Java:

Tutorial (in inglese e italiano)

Hai fretta di imparare? I tutorial sono ottimi per un inizio veloce!

  • Free Interactive Java Tutorial
  • The Java™ Tutorials - Oracle
  • Java Tutorial by TutorialsPoint
  • Java tutorial for beginners with examples
  • Playlist di video tutorial su Youtube (in italiano)

Corsi (in inglese)

Hai mai sentito parlare di Coursera? È una società no-profit che collabora con le più importanti università del mondo per offrire corsi universitari online, aperti a tutti gratuitamente!

E indovina un po’?
Esistono anche dei corsi per Java, che puoi seguire gratuitamente!

Se invece vuoi un certificato di fine corso che attesti le competenze acquisite devi pagare, ma non è obbligatorio. Puoi iscriverti al corso online e seguire le lezioni in maniera completamente gratuita.

Per Java attualmente ci sono due “percorsi”, che su Coursera chiamano Specializzazioni, ognuno dei quali contiene più corsi. Se vuoi puoi iscriverti anche al singolo corso senza seguire l'intera specializzazione.

  • “Java Programming and Software Engineering Fundamentals Specialization” di livello base.
    Non sono richieste esperienze per seguirla, il che la rende l’ideale per chi vuole iniziare a programmare da zero come autodidatta.
    I corsi sono tenuti dai professori della Duke University e sono:
    • Java Programming: Solving Problems with Software
    • Java Programming: Arrays, Lists, and Structured Data
    • Java Programming: Principles of Software Design
    • Java Programming: Build a Recommendation System
  • “Object Oriented Java Programming: Data Structures and Beyond Specialization” di livello intermedio.
    Questo invece è tenuto dai professori della University of California di San Diego e sono:
    • Object Oriented Programming in Java
    • Data Structures and Performance
    • Advanced Data Structures in Java
    • Mastering the Software Engineering Interview.
      Quest’ultimo è particolarmente interessante! Non spiega come programmare in Java ma bensì ti aiuta per quello che viene dopo, ovvero la ricerca di un lavoro. Hanno collaborato con il team di reclutamento di Google, forniscono esempi, consigli e opportunità pratiche per prepararti ad un reale colloquio di lavoro.

Letture, libri ed ebook (in italiano)

Si trovano tantissimi libri sulla programmazione in Java ma non tutti sono adatti ad un principiante. Per aiutarti, ho raccolto i migliori libri per chi vuole iniziare a studiare Java da autodidatta.

Ebook gratuiti

  • Manuale Java “Object Oriented && JAVA 5” (PDF) di Claudio De Sio Cesari
  • Introduzione alla programmazione orientata ad oggetti in Java di Eugenio Polito e Stefania Iaffaldano

Libri cartacei

  • Programmazione di base e avanzata con Java Di Walter Savitch di Walter Savitch
  • Manuale di Java 8. Programmazione orientata agli oggetti con Java standard edition 8 di Claudio De Sio Cesari
  • Dai fondamenti agli oggetti. Corso di programmazione Java. di Giovanni Pighizzini e Mauro Ferrari
Capitolo 6

La mia modesta opinione

Consigli su come imprare a programmare in Java

Tutta la verità su Java
(quello che nessuno ti dice)

Parliamoci chiaro:

La tua priorità è essere assunto in un posto “sicuro”?
Se hai risposto Sì, allora Java è il linguaggio perfetto per te.

Complimenti e auguri, hai trovato la tua strada!

Se invece hai risposto No, Nì o So, allora continua a leggere. Devi sapere qualcosa di più su Java, qualcosa che tutti i programmatori pensano ma in pochi dicono.

Finalmente in questo capitolo posso parlarti liberamente: la verità è che Java è il mio arci-nemico.

Anzi, non il linguaggio in sé ma l’uso che ne viene fatto.

Java non viene usato, viene sfruttato!

È come prendere un bravissimo ciclista e costringerlo fare una gara di nuoto in mare aperto! Come vuoi che vada?

Probabilmente arriverà al traguardo, perché è un buon atleta, ma sicuramente non per primo.

Per Java è la stessa cosa: anche se tecnicamente non è adatto ad alcuni settori viene comunque utilizzato senza il minimo dubbio.

Voglio farti un esempio reale di una grande azienda:

Il caso PayPal: da Java a Node.js
PayPal abbandona Java

Paypal nel 2013 doveva creare la sua applicazione per smartphone quindi, come ti ho spiegato sopra (vedi il capitolo delle applicazioni), doveva sviluppare anche un servizio web per gestire tutti i dati dell’app mobile.

Quando si parla di aziende così grandi come PayPal questi tipi di progetti vengono sviluppati solitamente in Java, e la cosa non dovrebbe stupirci. Fin qui sembra la solita storia noiosa di un sviluppo classico in Java MA non è questo il caso!

Un gruppo di ingegneri propose invece qualcosa di diverso: utilizzare una tecnologia molto promettente, e relativamente nuova, basata sul linguaggio Javascript, chiamata Node.js, ed è qui che la storia comincia a farsi interessante!

Immagina cosa potevano pensare fior fior di ingegneri informatici di Paypal che usavano Java da una vita, ovviamente non ci credevano più di tanto.
Decisero di avviare due gruppi di sviluppo paralleli per realizzare lo stesso web service con esattamente le stesse funzioni:

  • Un gruppo sviluppava con linguaggio Java (più di 2 persone)
  • L’altro gruppo in Node.js (solo 2 persone)

Indovina quale fu il risultato? Faccia felice

Rullo di tamburi ...

Node.js vinse in qualsiasi aspetto!

L’applicazione scritta in Node.js era:

  1. Scritta due volte più velocemente rispetto ai tempi del team Java, pur avendo meno personale.
  2. Con il 33% di righe di codice in meno.
  3. Con il 40% di file in meno.
  4. Gestiva il doppio delle richieste al secondo rispetto all’applicazione Java.
  5. Otteneva una diminuzione del tempo di risposta medio del 35%, per la stessa pagina.

Questi risultati sono sbalorditivi. (Adesso te li spiego)

Non solo l’applicazione scritta in Node.js è stata sviluppata in metà del tempo rispetto a quella Java ma aveva anche meno persone che ci lavoravano!

Cerchiamo di capire:

Java: 4 professionisti al lavoro per 4 mesi.
Node.js: 2 professionisti al lavoro in 2 mesi.

Fantastico! Sono queste le cose belle della programmazione!

Cosa accadrebbe mettendo 6 professionisti al lavoro su Node.js?
Finirebbero il lavoro in un attimo!

Ma non ci si ferma qui. Faccia felice

L'applicazione scritta in Node.js gestisce il doppio delle richieste al secondo con minori tempi di risposta. Cosa vuol dire questo?

Semplificando: se l’app Java riusciva a “gestire” undici utenti al secondo, Node.js ne gestiva venticinque nello stesso tempo. Ne gestisce di più e più velocemente.
Nota tecnica: sulle performance, inoltre, c’è da fare un appunto importante: l’app Java era predisposta per sfruttare a pieno la CPU con tutti gli 8 core mentre quella Node ne utilizzava solo 1 dato che per fare i test non era stato predisposto il multicore. Di consegueza, predisponendo Node per un esecuzione multicore si avrebbe un ulteriore aumento delle prestazioni.

Bellissimo. Faccia sorridente

Inoltre, nell’articolo viene precisato che gli ingegneri Java, inizialmente molto restii a cambiare linguaggio, furono felicissimi di passare allo sviluppo con Node.js dopo aver visto dei risultati così incoraggianti.

Ecco il link dell’articolo ufficiale di PayPal che ho citato: Node.js at PayPal.
Se sei curioso riguardo Node.js, e vuoi scorprire qualcosa in più, ne parlo nell'articolo che ho scritto su Javascript.

...

Questo è solo UN esempio ma ne esistono migliaia.

Ti ho voluto raccontare questo fatto per uno scopo preciso: la parte importante della storia non è nelle performance tecniche, non mi interessa chi è il più forte tra Java o Node, non è così importante.

La cosa importante è la “felicità” dei programmatori nel fare il proprio lavoro.

  1. Tempi di sviluppo più brevi si traducono in meno ore di lavoro. Essendo una tecnologia adatta a quello scopo è sicuramente più “attrezzata” ed è più semplice usarla per lo scopo per il quale è stata creata.
  2. Il 33% di codice in meno e il 40% di file in meno significano un programma più pulito, ordinato e leggibile, in cui è più facile apportare modifiche e lavorare.

Un programmatore felice lavora meglio, produce di più, fatica di meno ed è contento di trattenersi oltre l’orario.
Lo so per esperienza diretta.

Per questo dico che:

Java viene usato non perché sia la soluzione migliore, ma per pigrizia.

Alle Enterprise non frega nulla di “quanto è bello programmare” o di Java in sé, poteva essere anche il peggior linguaggio del mondo, non sarebbe stato importante per loro.
Per le Enterprise l’unica cosa importante è guadagnare e hanno trovato in Java un mezzo sicuro e affidabile per farlo.

Java si adatta a qualsiasi sistema/settore? Ottimo!

Assumiamo degli esperti così possiamo accettare qualsiasi tipo di lavoro, dai siti/servizi web alle app mobile, dai sistemi embedded ai software, dai big data e chissà cos’altro!

Tutto con i nostri esperti Java, senza assumere professionisti di altri linguaggi più adeguati.

Che grande risparmio!

Certo, il grande risparmio esiste ma solo in termini di costi, e la lista dei vantaggi finisce qui.

Che altro dire?

Io non condivido questo tipo di approccio alla programmazione, mi sembra totalmente sbagliato e per nulla stimolante per il programmatore, ma è solo il mio modesto parere. Faccia sorridente

Ognuno ha la sua strada. Scegli il linguaggio che preferisci in base a quelle che solo le tue idee e le tue priorità. Faccia sorridente

Nulla ti vieta di iniziare con un linguaggio per poi passare ad un altro, anzi, i migliori programmatori di solito possiedono un mix di competenze in vari linguaggi.

Ora che l'articolo è finito voglio chiederti un favore.
Mi farebbe piacere che tu condividessi questo articolo con 1 persona (o se vuoi anche di più), se è stato utile per te sarà utile anche per qualcuno!

Ci vediamo online e ricordati: Che Java sia con te!

Il tuo simpatico amico Alberto

Sto creando una serie di Corsi su Java.
Sei interessato?

Inserisci il tuo indirizzo email e ti manderò un avviso appena ho qualcosa di pronto!

Grande!

Ci risentiamo nei prossimi mesi, io continuo a registrare le lezioni :-)

Grande!

Ci risentiamo nei prossimi mesi, io continuo a registrare le lezioni :-)

altre guide popolari simili

Git: il software di versioning più usato al mondo

Tutto quello che devi sapere prima di inziare

Programmare in C: miglior linguaggio per iniziare?

Tutto quello che devi sapere per cominciare

Programmare in Javascript: miglior linguaggio per iniziare?

Scopri tutte le potenzialità del linguaggio

  • Corso di Programmazione
  • Corso Java
  • Privacy