- Utilizzare le reti e gli strumenti informatici nelle attività di studio, ricerca e approfondimento disciplinare.
- Utilizzare strategie del pensiero razionale e algoritmico per affrontare situazioni problematiche ed elaborare soluzioni.
- Sviluppare applicazioni informatiche comprendendo il ruolo della piattaforma di esecuzione.
- Descrivere e comparare strumenti e tecnologie informatiche in base alle loro caratteristiche funzionali.
- Redigere e documentare semplici attività di sviluppo software.
Java è un linguaggio di programmazione ad alto livello, orientato agli oggetti e progettato per sviluppare applicazioni portabili su sistemi operativi diversi. Creato nel 1995 da Sun Microsystems, oggi mantenuto da Oracle, è utilizzato nello sviluppo di applicazioni desktop, servizi web, software enterprise e numerosi sistemi distribuiti.
Una delle sue caratteristiche più importanti è il principio "Write Once, Run Anywhere" (WORA): un programma Java viene compilato una sola volta e può essere eseguito su qualsiasi piattaforma che disponga di una Java Virtual Machine (JVM).
Che cos'è Java?
Tipo: linguaggio di programmazione | Paradigma: orientato agli oggetti | Caratteristica: multipiattaforma
Java è un linguaggio di programmazione sviluppato nel 1995 da Sun Microsystems, oggi mantenuto da Oracle. È utilizzato per realizzare applicazioni desktop, software aziendali, servizi web e sistemi distribuiti.
Java è uno dei linguaggi più diffusi nello sviluppo di applicazioni professionali grazie alla sua affidabilità e portabilità.
| Ambito | Esempi |
|---|---|
| Applicazioni desktop | Gestionali, utility, editor |
| Applicazioni web | Backend di siti e servizi |
| Software aziendali | ERP, CRM, sistemi bancari |
| Sistemi distribuiti | Server e servizi di rete |
Il ciclo di vita di un programma Java
Sorgente | Compilazione | Esecuzione
Per comprendere perché Java è multipiattaforma, è necessario seguire il percorso che compie un programma dalla scrittura del codice fino alla sua esecuzione.
Quando si sviluppa un programma Java si attraversano tre fasi fondamentali:
- Scrittura del codice sorgente.
- Compilazione del codice in bytecode.
- Esecuzione del bytecode tramite la Java Virtual Machine.
| Fase | Descrizione |
|---|---|
| Codice sorgente | Il programmatore scrive il file .java. |
| Compilazione | Il compilatore javac genera il file .class. |
| Bytecode | Il file .class contiene istruzioni indipendenti dal sistema operativo. |
| JVM | La Java Virtual Machine interpreta il bytecode ed esegue il programma. |
- In C e C++ il compilatore genera un programma eseguibile.
- In Java il compilatore genera il bytecode.
- La JVM interpreta il bytecode.
- Lo stesso file .class può essere eseguito su sistemi operativi differenti.
JDK, JRE e JVM
Sviluppo | Esecuzione | Macchina virtuale
Per sviluppare ed eseguire un programma Java intervengono tre componenti fondamentali: JDK, JRE e JVM. Sebbene vengano spesso citati insieme, svolgono compiti differenti.
Lo schema mostra come questi tre elementi siano collegati tra loro:
- JDK (Java Development Kit) è il pacchetto utilizzato dagli sviluppatori. Contiene tutti gli strumenti necessari per creare programmi Java, compreso il compilatore javac.
- JRE (Java Runtime Environment) è l'ambiente necessario per eseguire un'applicazione Java. Include la JVM e le librerie standard del linguaggio.
- JVM (Java Virtual Machine) è il componente che interpreta il bytecode e lo esegue sul sistema operativo.
| Componente | Funzione | Utilizzato da |
|---|---|---|
| JDK | Scrivere e compilare programmi Java. | Programmatore |
| JRE | Eseguire applicazioni Java. | Utente |
| JVM | Interpretare il bytecode ed eseguire il programma. | JRE |
- Il JDK serve per sviluppare applicazioni Java.
- Il compilatore javac trasforma il codice sorgente (
.java) in bytecode (.class). - La JRE contiene tutto ciò che serve per eseguire un programma Java.
- La JVM interpreta il bytecode e lo rende eseguibile sul sistema operativo.
La Java Virtual Machine (JVM) interpreta il bytecode ed esegue il programma.
A questo livello avviene la vera magia di Java, basata su una distinzione importantissima:
- Il
bytecodeè identico e uguale per tutti: non importa se lo hai generato su un Mac, su Windows o su Linux. Il file compilato contiene un linguaggio intermedio che non cambia mai, indipendentemente dal computer su cui verrà eseguito. - La
JVMcambia a seconda della macchina: poiché Windows, macOS e Linux gestiscono l'hardware e la memoria in modi diversi, ogni sistema operativo ha bisogno della sua specifica versione di JVM (esisterà una JVM per Windows, una per Linux e una per macOS) per tradurre quel bytecode.
Da terminale (prompt dei comandi) è possibile verificare se Java e il kit di sviluppo sono installati utilizzando i seguenti comandi:
# Versione della Java Virtual Machine (JRE/JVM)
java -version
# Versione del compilatore Java (JDK)
javac -version
Se entrambi i comandi restituiscono un numero di versione, significa che il JDK è installato correttamente e il sistema è pronto per sviluppare ed eseguire programmi Java.
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Java è un linguaggio di programmazione interamente orientato agli oggetti.
- Il codice sorgente (
.java) non produce un eseguibile nativo, ma viene compilato in bytecode (.class). - Il bytecode è un linguaggio intermedio, universale e indipendente dalla piattaforma hardware sottostante.
- La Java Virtual Machine (JVM) interpreta ed esegue il bytecode adattandolo allo specifico sistema operativo ospitante.
- Il pacchetto JDK fornisce gli strumenti di sviluppo (come il compilatore
javac), mentre la JRE fornisce l'ambiente di runtime per l'utente finale.
- A differenziare l'architettura di esecuzione ibrida di Java rispetto a quella puramente compilata del C/C++.
- Il ruolo strutturale e la scomposizione dei componenti logici del JDK, della JRE e della JVM.
- Il significato operativo del bytecode e la sua centralità nel paradigma multipiattaforma Write Once, Run Anywhere.
- I comandi fondamentali della riga di comando per verificare la corretta installazione dell'ambiente di sviluppo e runtime Java.