Struttura del corso
Introduzione a Java
- Storia ed evoluzione Java
- Panoramica delle versioni e degli aggiornamenti di Java
- Novità di Java 17
- Configurazione del kit di sviluppo Java (JDK 17) e dell'IDE
Java Struttura del programma
- Scrivere un semplice programma Java
- Java Panoramica della sintassi
- Compilazione ed esecuzione di applicazioni Java
Tipi di dati e variabili
- Tipi di dati primitivi e classi wrapper
- Dichiarazione di variabili e costanti
- Conversione del tipo e fusione
Operatori in Java
- Operatori aritmetici, relazionali, logici e bit per bit
- Precedenza e associatività degli operatori
Istruzioni del flusso di controllo
- Istruzioni condizionali (if-else, switch)
- Costrutti di ciclo (for, while, do-while)
- Espressioni switch migliorate (Java funzione 17)
Introduzione ai concetti OOP
- Classi e Oggetti
- Incapsulamento, ereditarietà, polimorfismo e astrazione
Creazione di classi e oggetti
- Dichiarazione e inizializzazione di oggetti
- La parola chiave this
- Costruttori (predefiniti e con parametri)
Eredità
- Estensione delle classi (parola chiave extends)
- Override del metodo e parola chiave super
- Classi e metodi astratti
Polimorfismo
- Polimorfismo in fase di compilazione e polimorfismo di runtime
- Overload e override dei metodi
Interfacce
- Definizione e implementazione delle interfacce
- Interfacce funzionali e metodi predefiniti
Classi di record (Java 17 funzionalità)
- Informazioni sui record in Java 17
- In che modo i record semplificano l'incapsulamento dei dati
Generici in Java
- Informazioni sui parametri di tipo
- Classi, metodi e interfacce generici
- Tipi delimitati e caratteri jolly
Gestione delle eccezioni
- Tipi di eccezioni (selezionate e deselezionate)
- Blocchi try-catch-finally
- Generazione e rilevamento delle eccezioni
- Creazione di eccezioni personalizzate
Java Quadro delle collezioni
- Interfacce Elenco, Impostazione, Mappatura e Coda
- Implementazioni più diffuse: ArrayList, HashMap, HashSet
- Iteratori e cicli for migliorati
Lambda Expressioni e funzionali Programming
- Introduzione alle espressioni lambda
- Sintassi e utilizzo
- Interfacce funzionali
API di flusso
- Panoramica dei flussi Java
- Operazioni di flusso (filtraggio, mapping, riduzione)
- Flussi paralleli e considerazioni sulle prestazioni
Classi sigillate
- Definizione e utilizzo di classi sealed
- Sottoclassi consentite e restrizioni
Pattern Matching per esempio di (Java 17 caratteristica)
- Semplificazione dei controlli dei tipi con la corrispondenza dei criteri
Blocchi di testo
- Utilizzo di blocchi di testo su più righe in Java
- Confronto con la gestione tradizionale delle corde
Miglioramenti ai record e alla serializzazione
- Serializzazione e compatibilità con le versioni precedenti
- In che modo i record migliorano la leggibilità e la manutenzione del codice
Deprecazione e rimozione di funzionalità
- API deprecate in Java 17
- Rimozione di funzionalità obsolete
Miglioramenti dell'interruttore Expression
- Corrispondenza dei modelli nell'interruttore
- Utilizzo di espressioni switch per un codice più pulito
Funzione esterna e API di memoria (incubatore)
- Panoramica del modulo incubatore
- Utilizzo del codice nativo in Java
Java Sistema di moduli (Progetto Seghetto Alternativo)
- Introduzione ai moduli in Java
- Creazione e utilizzo dei moduli
- Descrittori e module-info.java dei moduli
- Vantaggi della modularizzazione
Concorrenza e multithreading
- Introduzione ai thread e al multithreading
- Interfaccia eseguibile e interfaccia chiamabile
- Sincronizzazione, blocchi e sicurezza dei thread
Asincrono Programming con CompetableFuture
- Scrittura di codice asincrono
- Utilizzo di CompetableFuture per operazioni non bloccanti
Distribuzione di applicazioni Java
- Creazione ed esecuzione di file JAR
- Creazione di pacchetti e distribuzione di applicazioni Java
- Introduzione a GraalVM (opzionale)
Best practice e ottimizzazione del codice
- Scrittura di codice efficiente e manutenibile Java
- Problemi comuni di prestazione e come evitarle
- Tecniche di refactoring del codice
Riepilogo e passaggi successivi
Requisiti
- Conoscenze di base di programmazione
Pubblico
- Sviluppatori di software
- Programmatori
Recensioni (1)
La prima parte, quella relativa ai meccanismi di base