Java Advanced II: Java ad alte prestazioni - corso RUB 67.500. da IBS Training Center, formazione 40 ore, Data 29 gennaio 2024.
Miscellanea / / December 04, 2023
Pavel lavora in Luxoft dal 2005. Durante questo periodo, ha preso parte a numerosi progetti per aziende leader russe e straniere, come Boeing, Russian Post, DHL, MVideo. Attualmente ricopre il ruolo di ingegnere informatico capo in un progetto a supporto della più grande catena di vendita al dettaglio di elettronica ed elettrodomestici in Russia. L'interesse principale di Pavel è lo sviluppo di applicazioni Java scalabili e la fornitura di soluzioni tecniche per migliorare le prestazioni e l'affidabilità delle applicazioni.
Argomenti trattati:
Modulo 1. Revisione dell'ottimizzazione delle prestazioni - 5 ore.
Pratiche generali;
Strategie di ottimizzazione delle prestazioni;
Metriche delle prestazioni;
Come migliorare la produttività?
Strumenti di misurazione delle prestazioni;
JMetro;
Test di carico utilizzando JMeter;
Come migliorare la produttività utilizzando l'architettura?
Best practice per migliorare le prestazioni del codice.
Compiti a casa – 2 ore.
Modulo 2. Algoritmi GC – 5 ore.
Utilizzo della memoria degli oggetti Java;
Approcci generali e algoritmi dei garbage collector;
Garbage Collector seriale GC;
Garbage Collector GC parallelo;
Garbage Collector CMS;
Raccoglitore di rifiuti G1;
Raccoglitore di rifiuti di Shenandoah;
Ottimizzazione dei garbage collector;
Strumenti per la raccolta e l'analisi delle metriche di garbage collection;
Scelta del garbage collector ottimale.
Modulo 3. Compilatore JIT HotSpot – 5 ore.
Compilazione JIT;
codice byte Java;
Compilazione multistrato;
Cache del codice e sua messa a punto;
Ottimizzazione del codice;
Deottimizzazione del codice e quando avviene;
Strumento JITWatch per l'analisi dei risultati della compilazione;
Tipi di ottimizzazioni;
Ottimizzazioni speculative;
Impostazioni del compilatore;
Compilazione dell'AOT.
Compiti a casa – 2 ore.
Modulo 4. Flag JVM: 3 ore.
Scopo e categorie dei flag JVM;
Bandiere generali;
Flag associati alle stringhe;
Flag di gestione della memoria;
Safepoint e flag ad essi associati;
TLAB e flag ad essi associati;
Piano di ottimizzazione JVM.
Modulo 5. Testare le prestazioni degli algoritmi (benchmarking) utilizzando JMH – 2 ore.
Cos'è il benchmarking;
Introduzione a JMH;
API JMH;
Esempi non banali;
Applicazione di JMH nella pratica.
Compiti a casa – 2 ore.
Modulo 6. Utilizzo della memoria all'esterno dell'heap (memoria off-heap) – 3 ore.
Cos'è sun.misc. Non sicuro;
Metodi non sicuri;
Prestazioni della memoria nativa;
Creazione di strutture dati nella memoria nativa;
Valutazione delle prestazioni della memoria nativa e confronto con la memoria heap;
Promettente API di accesso alla memoria esterna.
Modulo 7. Serializzazione – 2 ore.
Serializzatori JSON (GSON, Jackson);
Serializzatori binari (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Confronto delle prestazioni di diversi serializzatori.
Modulo 8. Profilazione Java – 4 ore.
Quando e come fare la profilazione?
Profilatori di campionamento e strumentazione;
Utilizzo di Java VisualVM per la profilazione;
Profilazione con Spring AOP;
Profilazione con IDEA e profiler asincrono;
Registratore di volo Java;
Analisi dei log di Java Flight Recorder utilizzando Mission Conrol;
Creazione e registrazione di eventi JFR personalizzati;
Utilizzo di agenti Java per incorporare codice e registrare eventuali eventi in Java Flight Recorder;
Scrittura di programmi per l'analisi automatica dei log JFR;
Raccolta e analisi di query SQL tramite JFR;
Raccolta e analisi delle richieste REST tramite JFR.
Compiti a casa – 2 ore.
Modulo 9. Monitoraggio e analisi dei dati heap. Perdite di memoria – 2 ore.
Strumenti di analisi dei dati in memoria;
Segni di perdite di memoria;
Le principali cause di perdite di memoria;
Cerca e rileva perdite di memoria.
Modulo 10. GraalVM – 3 ore
Ecosistema GraalVM;
Tempo di esecuzione di GraalVM;
API poliglotta;
Compilazione e immagine nativa;
Punti di riferimenti.
Modulo 11. Caching nelle applicazioni Java - 3 ore.
Modelli di memorizzazione nella cache;
Confronto delle API della cache;
Memorizzazione nella cache delle query del database;
Memorizzazione nella cache delle richieste HTTP;
Metriche e impostazioni di base delle librerie di memorizzazione nella cache;
Confronto tra le più diffuse librerie di caching;
Caching a livello di servizio;
Servizi di memorizzazione nella cache Spring;
Applicazioni che utilizzano cache di diversi livelli.
Modulo 12. Revisione di altri approcci per migliorare la produttività - 3 ore.
Programmazione parallela (thread pool, thread paralleli, struttura fork-join);
Programmazione asincrona;
Programmazione reattiva (Reactor, VertX);
Ottimizzazione del lavoro con i database;
Cloud computing (microservizi, Spring Cloud);
Benchmark e conclusioni.