CodeGym
Promozione
Learning
Corsi
Tasks
Surveys & Quizzes
Games
Help
Schedule
Community
Users
Forum
Chat
Articles
Success stories
Activity
Reviews
Subscriptions
Tema chiaro

Lezioni

  • Recensioni
  • Chi siamo
Inizia
Inizia a imparare
Start learning now
  • I miei progressi
  • Corsi
  • Mappa Quest
  • Lezioni
  • Externalizable: controllo fine della serializzazione

    JAVA 25 SELF
    Livello 43,Lezione 2
    Estendiamo la serializzazione di base in Java: quando l’automatismo di Serializable non basta, viene in aiuto il contratto manuale Externalizable con i metodi writeExternal/ readExternal. In questa lezione vediamo come controllare completamente il formato dei dati, ridurre la dimensione dei file e mantenere la retrocompatibilità, confrontiamo con i flussi ObjectOutputStream/ ObjectInputStream, mostriamo esempi, pro/contro ed errori tipici (costruttore public senza parametri obbligatorio, ordine di scrittura/lettura ecc.).
    Disponibile
  • Configurazione del comportamento della serializzazione: metodi personalizzati

    JAVA 25 SELF
    Livello 43,Lezione 3
    In questa lezione analizziamo come influenzare i processi di serializzazione e deserializzazione in Java tramite i metodi writeReplace e readResolve: perché sostituire l’oggetto con un proxy, come preservare un singleton, cosa fare con oggetti immutabili e come questo si rapporta a writeObject/ readObject. Esercitazione passo‑passo, diagramma di flusso delle operazioni e analisi degli errori tipici.
    Disponibile
  • Sicurezza della serializzazione: best practice

    JAVA 25 SELF
    Livello 43,Lezione 4
    Guida pratica alla serializzazione sicura in Java: perché la deserializzazione da fonti non attendibili è pericolosa, come difendersi con ObjectInputFilter, la parola chiave transient, un serialVersionUID esplicito, la verifica dei tipi tramite instanceof e formati di scambio alternativi (JSON/Proto). All'interno — esempi di codice chiari, filtraggio delle classi consentite e analisi degli errori tipici.
    Disponibile
  • Serializzazione di oggetti annidati: particolarità

    JAVA 25 SELF
    Livello 44,Lezione 0
    In questa lezione analizziamo come Java esegue la serializzazione profonda di un grafo di oggetti: cosa accade con i campi di tipo riferimento, perché tutti gli oggetti annidati devono implementare Serializable, come evitare NotSerializableException e in quali casi aiuta il modificatore transient. Con esempi mostreremo la serializzazione/deserializzazione di oggetti con annidamento, collezioni e riferimenti ciclici, e affronteremo anche gli errori tipici legati a serialVersionUID e a grafi di oggetti di grandi dimensioni.
    Disponibile
  • Oggetti annidati e gerarchici: serializzazione di grafi

    JAVA 25 SELF
    Livello 44,Lezione 1
    Come Java serializza strutture dati complesse: da collezioni annidate e gerarchie di ereditarietà fino a grafi di oggetti ciclici. Vedremo perché funziona la serializzazione di Map<String, List<Book>>, come si conservano i tipi reali dei discendenti in List<Animal>, che cosa fa il meccanismo dei riferimenti in presenza di cicli e quali insidie si incontrano. Parleremo del ruolo di ObjectOutputStream/ ObjectInputStream, dei metodi writeObject/ readObject, del campo serialVersionUID e del modificatore transient.
    Disponibile
  • Il problema dei riferimenti ciclici: rilevamento e gestione

    JAVA 25 SELF
    Livello 44,Lezione 2
    Analizziamo cosa sono i riferimenti ciclici nei grafi di oggetti, perché sono pericolosi per la serializzazione e come gestirli. Mostriamo come gli stream standard di Java — ObjectOutputStream/ ObjectInputStream — tracciano automaticamente gli oggetti già incontrati e scrivono riferimenti (handles), prevenendo StackOverflowError. Esaminiamo le insidie della serializzazione personalizzata ( writeObject/ readObject, defaultWriteObject/ defaultReadObject) e le strategie per gestire i cicli con JSON: annotazioni @JsonIdentityInfo, @JsonBackReference/ @JsonManagedReference, esclusione di campi tramite transient e uso di identificatori.
    Disponibile
  • Identità degli oggetti nella serializzazione binaria

    JAVA 25 SELF
    Livello 44,Lezione 3
    Come Java conserva e ripristina l’identità degli oggetti nella serializzazione binaria: perché l’equivalenza tramite a. equals( b) non è uguale all’identità ( a == b), come ObjectOutputStream/ ObjectInputStream tracciano il grafo degli oggetti e scrivono «riferimenti ripetuti» invece di duplicati, perché questo funziona correttamente in presenza di cicli e come i metodi writeReplace() e readResolve() possono influenzare l’identità finale. Analisi con esempi: cicli, riferimenti condivisi, pratica ed errori tipici.
    Disponibile
  • Analisi degli errori tipici nella serializzazione delle collezioni

    JAVA 25 SELF
    Livello 44,Lezione 4
    In questa lezione esaminiamo i problemi più comuni nella serializzazione delle collezioni: dalla java.io.NotSerializableException (quando gli elementi non implementano Serializable) e alle insidie dei generics con ClassCastException fino all'incompatibilità delle versioni delle classi tramite serialVersionUID. Parleremo delle sfumature delle collezioni immutabili ( List.of(), Set.of(), Map.of()), del comportamento dei campi transient/ static, nonché di prestazioni e dimensioni dei file, dove aiutano la scrittura in streaming e la compressione ( GZIPOutputStream). Otterrete consigli pratici, esempi di codice e raccomandazioni per una deserializzazione sicura ( readObject/ writeObject).
    Disponibile
  • Problemi della serializzazione binaria: sicurezza, compatibilità

    JAVA 25 SELF
    Livello 45,Lezione 0
    In questa lezione analizziamo i rischi della serializzazione binaria in Java: perché la deserializzazione da fonti non attendibili è pericolosa (catene «gadget chain», RCE), quali insidie comportano metodi speciali come readObject e readResolve, e come difendersi (whitelisting, preferenza per JSON/ XML, librerie sicure come Jackson). Esamineremo in dettaglio la compatibilità tra versioni di classe e il ruolo del campo serialVersionUID, il comportamento in caso di InvalidClassException, le limitazioni di transient/ static, le prestazioni, nonché le best practice e gli errori tipici.
    Disponibile
  • Serializzazione delle collezioni generics: particolarità

    JAVA 25 SELF
    Livello 45,Lezione 1
    Analizziamo come la cancellazione dei tipi ( type erasure) influisce sulla serializzazione delle collezioni generics: perché a runtime List<String> e List<Integer> sono lo stesso ArrayList, cosa viene effettivamente scritto e letto tramite ObjectOutputStream/ ObjectInputStream, da dove arrivano le ClassCastException e gli avvisi di cast unchecked. Mostreremo esempi con collezioni annidate, Map/ Set, menzioneremo Gson/ Jackson e formuleremo pratiche per una deserializzazione sicura.
    Disponibile
  • Compatibilità e retrocompatibilità (backward compatibility) nella serializzazione

    JAVA 25 SELF
    Livello 45,Lezione 2
    Analizziamo come evolvere le classi serializzabili senza rompere i dati: perché fissare serialVersionUID, come la JVM verifica la compatibilità, quali modifiche sono sicure (aggiunta/rimozione di campi) e quali sono critiche (cambio di tipo, spostamento della classe in un package). Mostreremo il ruolo di transient/ static, tecniche di serializzazione personalizzata tramite writeObject/ readObject, la differenza tra serializzazione binaria e XML/JSON, strategie per garantire la compatibilità ed errori tipici (ad esempio, InvalidClassException).
    Disponibile
  • Migrazione e versioning dei dati serializzati

    JAVA 25 SELF
    Livello 45,Lezione 3
    Come evolvere in modo sicuro le classi serializzabili in produzione: cosa succede quando si modificano campi e tipi, come funziona la versione della classe tramite serialVersionUID, quando cambiarla e quando lasciarla invariata, come applicare la migrazione “lazy” tramite readObject/ readFields e la conversione “in-place”, e quali tecniche avanzate esistono come ObjectInputStream.readClassDescriptor(). Analizzeremo uno scenario pratico completo con due versioni della classe e errori tipici, incluse le insidie di InvalidClassException.
    Disponibile
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 30
Learn
  • Registration
  • Java Course
  • Help with Tasks
  • Pricing
  • Java Syntax
Community
  • Users
  • Articles
  • Forum
  • Chat
  • Success Stories
  • Activity
  • Affiliate Program
Company
  • About us
  • Contacts
  • Reviews
  • Press Room
  • CodeGym for EDU
  • FAQ
  • Support
CodeGymCodeGym is an online course for learning Java programming from scratch. This course is a perfect way to master Java for beginners. It contains 1200+ tasks with instant verification and an essential scope of Java fundamentals theory. To help you succeed in education, we’ve implemented a set of motivational features: quizzes, coding projects, content about efficient learning, and a Java developer’s career.
Follow us
Lingua dell'interfaccia
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ்
Italiano
Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programmers Are Made, Not Born" © 2026 CodeGym
MastercardVisa
"Programmers Are Made, Not Born" © 2026 CodeGym