Dispense

Le dispense sono in lavorazione e escono durante il corso, una per argomento. Non sostiuiscono libri o appunti ma vogliono essere un supporto in più per lo studio. E' la prima edizione delle dispense, quindi se trovate errori segnalateli! (prima però verificate che siano effettivamente errori) Le dispense sono distribuite gratuitamente con licenza CC BY-NC-SA 4.0.

  • D01

    Java Fast Forward

    Oggetti, riferimenti, ereditarietà, record, interfacce, enumerazioni, collezioni e risorse

    Il ripasso da cui parte il corso: dal sorgente all'esecuzione, oggetti e riferimenti, ereditarietà e tipo dinamico, equals e hashCode, i record, interfacce, enumerazioni, collezioni, try-with-resources e lettura di file di testo e binari.

    PDF

    Versione 0.1.1 · aggiornata il 25 ottobre 2026

  • D02

    Dal nome alla funzione

    Classi anonime, lambda expression, method reference e interfacce funzionali

    Come si passa dalla classe usa-e-getta alla funzione passata come argomento: classi anonime e variabili catturate, interfacce funzionali, lambda expression, method reference e il catalogo di java.util.function.

    PDF

    Versione 0.1 · aggiornata il 23 settembre 2026

  • D02b

    Le interfacce in Java moderno

    Contratti, metodi default e static, gerarchie sealed e switch sui tipi

    Le interfacce oltre il contratto: classi astratte a confronto, Comparable e Comparator, metodi default con le regole di risoluzione, static e private, gerarchie sealed e switch sui tipi con verifica di esaustività.

    PDF

    Versione 0.1 · aggiornata il 27 settembre 2026

  • D03

    Stream, per intero

    Pipeline, laziness, ordine di valutazione, collettori e l'anatomia della libreria

    Le pipeline di java.util.stream: sorgenti, operazioni intermedie e terminali, laziness, elaborazione verticale, short-circuit e barriere; stream primitivi, Optional, collect, groupingBy, reduce e flatMap. In chiusura l'anatomia della libreria (spliterator, stadi, sink, bandiere) e che cosa costa davvero.

    PDF

    Versione 0.1 · aggiornata il 1 ottobre 2026

  • D04

    Thread e concorrenza

    Dal processo alla JVM, executor, stato condiviso, la coda degli eventi di Swing e i thread virtuali

    Un libro in dieci capitoli che parte da una finestra che congela: processi e thread nel sistema operativo e nella JVM, Runnable e Thread, executor, Callable e Future con le misure sui numeri primi; conflitti, synchronized, lock, atomiche e collezioni concorrenti; compiti periodici, stream paralleli e thread virtuali; la coda degli eventi di Swing, invokeLater e SwingWorker. Palestra con nove problemi e le soluzioni nel repository pajc-soluzioni.

    PDF

    Versione 0.2 · aggiornata il 11 ottobre 2026

  • D05

    Interfacce grafiche con Swing

    Componenti e layout, eventi, finestre di dialogo, grafica con le primitive, Graphics2D, coordinate, mouse e animazioni

    Un libro che parte da una lavagna da disegno che si rompe: finestre, componenti e layout annidati, eventi, modelli e renderer, le finestre di dialogo di sistema e quelle scritte da noi, paintComponent e le primitive di Graphics, forme, tratti e colori di Graphics2D, coordinate e trasformazioni, mouse, tastiera e animazioni con javax.swing.Timer. Palestra con otto problemi.

    PDF

    Versione 0.1.4 · aggiornata il 27 ottobre 2026

  • D06

    Comunicazione in rete

    Socket e TCP in Java, protocolli di testo, un server per molti client, il client con la finestra, byte, oggetti e datagrammi

    Un libro che parte da una chat per l'aula che non regge: la rete vista da un programma, Socket e ServerSocket con gli stream, un protocollo di testo scritto come tabella di comandi e provato senza rete, un server per molti client con thread virtuali e stato condiviso, il client Swing con il thread lettore e l'EDT, cornici binarie, serializzazione, datagrammi UDP e HttpClient. Palestra con otto problemi e le soluzioni nel repository pajc-soluzioni.

    PDF

    Versione 0.2 · aggiornata il 5 novembre 2026