Java è un linguaggio di programmazione ad alto livello, orientato agli oggetti, e una piattaforma di sviluppo software. È stato sviluppato da Sun Microsystems (ora parte di Oracle Corporation) e rilasciato per la prima volta nel 1995. Java è progettato per essere semplice, sicuro e portabile, consentendo agli sviluppatori di scrivere codice che può essere eseguito su qualsiasi dispositivo dotato di una Java Virtual Machine (JVM), indipendentemente dal sistema operativo.
1.2 Caratteristiche principali di Java
Orientato agli oggetti: Java segue il paradigma della programmazione orientata agli oggetti, che organizza il software come una collezione di oggetti che interagiscono tra loro.
Portabilità: Grazie alla JVM, un programma Java può essere eseguito su qualsiasi dispositivo che supporta la JVM, indipendentemente dall’hardware e dal sistema operativo. Questo principio è noto come “Write Once, Run Anywhere” (scrivi una volta, esegui ovunque).
Sicurezza: Java include funzionalità di sicurezza integrate, come la gestione automatica della memoria, la prevenzione dell’accesso non autorizzato alla memoria e un modello di esecuzione che limita l’accesso alle risorse di sistema.
Robustezza: Java è progettato per essere un linguaggio robusto, con un forte controllo sui tipi di dati e la gestione delle eccezioni.
Gestione automatica della memoria: Java gestisce automaticamente la memoria attraverso un sistema di garbage collection, che recupera la memoria inutilizzata e la ridistribuisce.
Multithreading: Java supporta il multithreading, permettendo di eseguire più processi contemporaneamente, migliorando così le prestazioni dei programmi.
API estese: Java include un’ampia libreria di classi (Java API) che fornisce funzionalità per sviluppo grafico, networking, accesso ai database, gestione delle I/O e molto altro.
In sostanza, Java è ampiamente utilizzato per lo sviluppo di applicazioni desktop, web, mobili (Android), e per lo sviluppo di sistemi enterprise e server-side.
2. Struttura di un programma Java
Ciascuna classe deve essere inserita in un file separato con stesso nome della classe + “.java”.
Ogni file .java ha un package, che rappresenta il percorso in cui si trova.
L’esecuzione di un’applicazione in java parte sempre dalla classe con la funzione main (come in c/c++).
In java usiamo il concetto di OOP che si basa sull’organizzare tutto in oggetti.
2.1 Oggetti
Gli oggetti hanno attributi (dati) e comportamenti (metodi/funzioni).
Esempio: un oggetto “Persona” può avere attributi come nome, cognome, età e comportamenti come “parla”, “cammina”, ecc…
In questo modo, possiamo creare oggetti che rappresentano entità del mondo reale e interagire con loro in modo più naturale e intuitivo.
La classe è una specie di “definizione” di un oggetto → mi permette di creare degli oggetti. Quindi, per definire un oggetto, ci basta definire una classe.
Per costruire un oggetto bisogna richiamare il suo costruttore che non ha mai un valore di ritorno e deve avere in nome uguale alla classe in cui è definito.
Essi vengono sempre creati con new.
2.2 Tipi di dato
Ci sono 2 categorie di tipi da dato:
Semplici primitivi;
int;
float;
char;
boolean;
ecc…
Tipi refence.
“build-in” (no classi) → array
classe:
ricostruiti dal linguaggio (in java .lang):
String;
Integer;
…
di libreria (in java .util):
Set;
List;
Scanner;
…
definiti da utente:
Esercizio;
Scuola;
Alunni;
…
2.3 Confronto con il c++
Stessi insiemi di valori e operazioni del c++;
boolean distinti da int (NO boolean → int);
In generale no conversione da tipo più grande a tipo più piccolo (es: NO double → float);
Dichiarazione variabili come in c++;
Operazioni simili al c++:
NO: operatore sizeof, *;
SI: operatore sizeof;
Costrutti controllo come in c++, con piccole differenze:
while(1)
OK in c++
No in java
while(true)
OK in java
esempio di un semplice programma:
package helloworld; // nome del package in cui mi trovopublic class Main { public static void main(String[] args) { System.out.println("Hello World"); int x = 5; int y = 2; int z = x + y; int t = x * y; int h = x / y; System.out.println("x + y = " + z); // cout << "x + y = " << z; System.out.println("x * y = " + t); System.out.println("x / y = " + h); for (int i = 0; i < 10; i++) { System.out.print(i + " "); // cout << i << " "; } }}