CodeGym
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
  • Creazione di oggetti tramite reflection

    JAVA 25 SELF
    Livello 62,Lezione 3
    Come creare oggetti e gestire classi “al volo”: perché Class.newInstance() è deprecato, come usare correttamente getConstructor/ getDeclaredConstructor e Constructor.newInstance, invocare metodi tramite Method.invoke e leggere/modificare campi tramite Field. Affronteremo le eccezioni tipiche ( ReflectiveOperationException e altre), le limitazioni del sistema modulare, pratiche utili e una mini‑utility per l’instanziazione dinamica. In più — uno schema visivo dell’intero processo.
    Disponibile
  • Riflessione e Dependency Injection

    JAVA 25 SELF
    Livello 62,Lezione 4
    In questa lezione analizziamo la pratica della riflessione in Java: come leggere i campi privati tramite Class, Field e Method ( setAccessible( true)) e costruire un semplice serializzatore; come i container DI iniettano le dipendenze in base alle annotazioni ( @Inject, @Autowired) tramite costruttori e campi; come i proxy dinamici basati su Proxy e InvocationHandler intercettano le chiamate; dove tutto ciò è usato nella pratica ( Spring, JUnit, Jackson) e quali limitazioni ed errori si incontrano.
    Disponibile
  • Fondamenti del logging: java.util.logging, Log4j, SLF4J

    JAVA 25 SELF
    Livello 63,Lezione 0
    Perché alle applicazioni servono i log e perché un semplice System.out.println non basta in produzione. Vedremo i livelli ERROR/ WARN/ INFO/ DEBUG/ TRACE, lo stack integrato java.util.logging e il file di configurazione logging.properties, conosceremo Log4j 2, Logback e il facade SLF4J. Confronteremo con l'output su console, aggiungeremo le dipendenze e analizzeremo gli errori tipici di configurazione e di utilizzo.
    Disponibile
  • Formattazione e livelli di log: best practices

    JAVA 25 SELF
    Livello 63,Lezione 1
    Analizziamo da cosa è composto un buon messaggio di log (timestamp, livello INFO/ ERROR, nome del logger, testo, stack), come formattare correttamente le voci tramite template SLF4J/Log4j2 ( "{}" invece della concatenazione), come registrare le eccezioni ( logger.error(..., ex)), quando usare i livelli ERROR/ WARN/ INFO/ DEBUG/ TRACE, oltre alle best practices: niente dati sensibili, messaggi chiari, ID di correlazione ( orderId, userId) e una configurazione accurata di log4j2.xml.
    Disponibile
  • Logging nelle applicazioni multithread e web

    JAVA 25 SELF
    Livello 63,Lezione 2
    Come rendere i log affidabili nel multithreading e nel web: thread safety delle librerie pronte all’uso ( Logback, Log4j 2, java.util.logging), contesto MDC con propagazione di requestId, integrazione con i filtri Spring e i gestori degli errori, differenze rispetto a System.out, particolarità dei thread pool e tracciamento nei microservizi (traceId, OpenTelemetry). Analizziamo esempi pratici ed errori tipici, usiamo SLF4J e Logger come campo static final.
    Disponibile
  • Monitoraggio JVM: JMX, VisualVM, Java Flight Recorder

    JAVA 25 SELF
    Livello 63,Lezione 3
    Questa lezione è una guida pratica al monitoraggio della JVM: come leggere le metriche standard tramite JMX e JConsole, come osservare visivamente memoria, thread e profilare i metodi in VisualVM (inclusi heap dump e thread dump), nonché come registrare la «scatola nera» con Java Flight Recorder e analizzarla in JDK Mission Control. Mostreremo i comandi di avvio ( -XX:StartFlightRecording), esamineremo scenari tipici di analisi di GC/thread ed errori comuni.
    Disponibile
  • Profilazione e ottimizzazione del codice: strumenti, approcci

    JAVA 25 SELF
    Livello 63,Lezione 4
    Vediamo in cosa la profilazione differisce dal monitoraggio, quali metriche sono importanti (tempo di esecuzione dei metodi, memoria, thread, lock) e quali strumenti usare: VisualVM, Java Flight Recorder, nonché profiler commerciali. In pratica analizziamo un calcolatore “lento”, impariamo a cercare i “punti caldi”, ad analizzare heap dump e a rimuovere i colli di bottiglia sostituendo algoritmi, riducendo le allocazioni e usando la cache. Concludiamo con uno schema visivo del processo di ottimizzazione e l'analisi degli errori tipici.
    Disponibile
  • Architettura della memoria nella JVM: stack, heap, PermGen/MetaSpace

    JAVA 25 SELF
    Livello 64,Lezione 0
    Dove finiscono le variabili locali, gli oggetti e i metadati delle classi durante l’esecuzione della JVM: analizziamo lo stack dei thread, l’heap e l’evoluzione da PermGen a MetaSpace. Parleremo di come funziona il GC, quali errori di memoria possono verificarsi ( StackOverflowError, OutOfMemoryError) e come influiscono i flag di avvio ( -Xss, -Xmx, -XX:MaxMetaspaceSize). Sono incluse schemi, un diagramma mermaid e un esempio funzionante.
    Disponibile
  • I garbage collector: G1, ZGC, Shenandoah, confronto

    JAVA 25 SELF
    Livello 64,Lezione 1
    In questa lezione analizziamo come funziona il garbage collector ( GC) nella JVM, in cosa differiscono i classici Serial/ Parallel/ CMS dai moderni G1, ZGC e Shenandoah, cosa sono la giovane e la vecchia generazione, perché si verificano le pause Stop-the-World e come minimizzarle. In pratica vedremo come abilitare diversi GC con i flag ( -XX:+UseG1GC, -XX:+UseZGC, -XX:+UseShenandoahGC), configurare le pause ( -XX:MaxGCPauseMillis) e le dimensioni dell’heap ( -Xms/ -Xmx), leggere i log ( -Xlog:gc*) ed evitare errori tipici (ad esempio, l’invocazione forzata di System.gc()).
    Disponibile
  • Variabili locali, perdite di memoria, riferimenti deboli

    JAVA 25 SELF
    Livello 64,Lezione 2
    Da questa lezione scoprirai dove vivono le variabili locali (lo stack del thread) e in cosa differisce dall’heap, perché in Java sono comunque possibili perdite di memoria nonostante il GC e come evitarle. Analizzeremo scenari reali: «eterne» static-collezioni, listener non rimossi e cache. Conosceremo la famiglia dei riferimenti: SoftReference, WeakReference, PhantomReference, nonché il contenitore WeakHashMap. Faremo pratica nel correggere le perdite e discuteremo perché la chiamata a System.gc() è solo un suggerimento per la JVM, non un ordine, e come può finire con OutOfMemoryError.
    Disponibile
  • Strumenti di analisi della memoria: jmap, jvisualvm

    JAVA 25 SELF
    Livello 64,Lezione 3
    Guida pratica alla diagnostica dei problemi di memoria nella JVM: creiamo un’istantanea dell’heap ( heap dump) con l’utilità jmap, leggiamo i riepiloghi tramite -heap e -histo, esploriamo l’applicazione in jvisualvm (schede Monitor, Heap Dump, Threads, Profiler), analizziamo una perdita con un esempio e facciamo conoscenza con Eclipse MAT e jconsole. Alla fine — errori comuni e consigli.
    Disponibile
  • Analisi degli errori tipici nella gestione della memoria

    JAVA 25 SELF
    Livello 64,Lezione 4
    Analisi pratica del perché un’applicazione Java può «perdere» memoria e rallentare: listener dimenticati ( addActionListener/ removeActionListener), collezioni statiche eterne, risorse non chiuse (consiglio: try-with-resources), classi anonime/interne che trattengono riferimenti e abuso di System.gc(). Impareremo a leggere i log del GC ( -Xlog:gc*, -XX:+PrintGCDetails), scegliere il collector, costruire cache con WeakHashMap, monitorare ( jvisualvm, jconsole), analizzare heap dump e configurare correttamente -Xmx/ -Xms. Alla fine — esempi reali di leak e le loro correzioni.
    Disponibile
  • 1
  • ...
  • 27
  • 28
  • 29
  • 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