Programmazione · Avanzato

Java Advanced

Prosecuzione di Java Essential: generics, lambda e Stream API, concorrenza, accesso ai dati con JDBC e design pattern, fino a un progetto finale integrato.

10 lezioni 30 ore totali livello avanzato 30 esercizi prerequisito Java Essential
01 Interfacce, classi astratte e principi SOLID 3 ore ➤

Obiettivi

  • Progettare interfacce con metodi default e static
  • Distinguere quando usare interfaccia o classe astratta
  • Applicare i principi SOLID a un piccolo modulo

Esercizi

  • IntermedioRefactoring di una gerarchia rigida in un'interfaccia con metodi default
  • AvanzatoViolazione e correzione del principio di sostituzione di Liskov
  • AvanzatoProgettazione di un modulo di pagamento rispettando Open/Closed
02 Generics: classi e metodi generici 3 ore ➤

Obiettivi

  • Definire classi generiche con parametri di tipo
  • Usare wildcard e bounded type (extends/super)
  • Applicare i generics alle strutture dati personalizzate

Esercizi

  • IntermedioClasse generica Coppia<A,B> con metodi di accesso
  • IntermedioMetodo generico per trovare il massimo in una collezione
  • AvanzatoStack generico con vincoli di tipo (bounded types)
03 Collections Framework avanzato 3 ore ➤

Obiettivi

  • Scegliere la collezione adatta (List, Set, Map)
  • Ordinare con Comparable e Comparator
  • Usare strutture ordinate come TreeMap e TreeSet

Esercizi

  • BaseRimozione duplicati e ordinamento alfabetico con Set e Comparator
  • IntermedioRubrica con Map<String, List<Contatto>>
  • AvanzatoClassifica ordinata con Comparator multipli concatenati (thenComparing)
04 Espressioni lambda e interfacce funzionali 3 ore ➤

Obiettivi

  • Scrivere lambda per sostituire classi anonime
  • Usare Function, Predicate, Consumer e Supplier
  • Comporre interfacce funzionali

Esercizi

  • BaseFiltro di una lista di prodotti con Predicate
  • IntermedioPipeline di trasformazioni con Function.andThen
  • AvanzatoInterfaccia funzionale personalizzata per una regola di validazione
05 Stream API 3 ore ➤

Obiettivi

  • Elaborare collezioni con operazioni stream
  • Applicare filter, map, sorted e reduce
  • Raccogliere risultati con i Collectors

Esercizi

  • BaseSomma e media di una lista di ordini con stream numerici
  • IntermedioRaggruppamento di studenti per fascia di voto con Collectors.groupingBy
  • AvanzatoPipeline di stream su un catalogo prodotti con statistiche aggregate
06 Eccezioni avanzate e logging 3 ore ➤

Obiettivi

  • Progettare gerarchie di eccezioni personalizzate
  • Usare il try-with-resources
  • Introdurre un logging strutturato al posto di System.out

Esercizi

  • IntermedioGerarchia di eccezioni applicative per un modulo di validazione ordini
  • IntermedioLettura sicura di un file con try-with-resources
  • AvanzatoSostituzione dei messaggi di debug con un logger configurato per livelli
07 I/O e NIO.2 3 ore ➤

Obiettivi

  • Leggere e scrivere file di testo e binari
  • Utilizzare le API NIO.2 (Path, Files)
  • Serializzare oggetti su file

Esercizi

  • BaseImport/export di un elenco di prodotti da file CSV
  • IntermedioCopia e ricerca di file in una cartella con l'API Path
  • AvanzatoSerializzazione e deserializzazione di un archivio di oggetti
08 Multithreading e concorrenza 3 ore ➤

Obiettivi

  • Creare thread con Thread e Runnable
  • Gestire l'accesso concorrente con synchronized
  • Usare un ExecutorService per gestire un pool di thread

Esercizi

  • IntermedioContatore condiviso protetto da synchronized
  • AvanzatoElaborazione parallela di una lista di file con ExecutorService
  • AvanzatoProduttore/consumatore con una coda condivisa
09 Accesso ai dati con JDBC 3 ore ➤

Obiettivi

  • Stabilire una connessione a un database relazionale
  • Eseguire query con PreparedStatement
  • Gestire le transazioni

Esercizi

  • BaseConnessione a un database e lettura di una tabella con ResultSet
  • IntermedioInserimento sicuro di record con PreparedStatement parametrizzato
  • AvanzatoTransazione atomica per il trasferimento tra due conti
10 Design pattern e progetto finale 3 ore ➤

Obiettivi

  • Riconoscere quando applicare Singleton, Factory, Observer e Strategy
  • Integrare più pattern in un'unica applicazione
  • Consolidare i concetti del corso in un progetto completo

Esercizi

  • IntermedioSingleton per la gestione di una configurazione applicativa
  • IntermedioFactory per la creazione di oggetti Documento di tipo diverso
  • AvanzatoProgetto finale: gestionale magazzino con generics, stream, JDBC e pattern Observer per le notifiche di scorta