CodeGym
AI Academy
Promozione
CodeGym University
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
  • 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
  • Compressione e profilazione della serializzazione

    JAVA 25 SELF
    Livello 45,Lezione 4
    Come ridurre la dimensione e accelerare la serializzazione degli oggetti in Java: escludiamo i campi superflui con transient, prendiamo il pieno controllo tramite Externalizable, applichiamo la compressione a flusso ( GZIPOutputStream, ZipOutputStream), acceleriamo l’I/O con la bufferizzazione ( BufferedOutputStream, BufferedInputStream) e la copia veloce tramite FileChannel. transferTo. Per valutare le prestazioni utilizziamo sia misurazioni rapide con System. nanoTime(), sia microbenchmark affidabili con JMH. Concluderemo con un mini‑esperimento e l’analisi degli errori tipici.
    Disponibile
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