Java Advanced II: Java de alto desempenho - curso RUB 67.500. do IBS Training Center, treinamento de 40 horas, data 29 de janeiro de 2024.
Miscelânea / / December 04, 2023
Pavel trabalha na Luxoft desde 2005. Durante este tempo, participou em vários projetos para empresas líderes russas e estrangeiras, como Boeing, Russian Post, DHL, MVideo. Atualmente, ele desempenha o papel de engenheiro de software líder em um projeto para apoiar a maior rede varejista que vende eletrônicos e eletrodomésticos na Rússia. O principal interesse de Pavel é desenvolver aplicações Java escaláveis e fornecer soluções técnicas para melhorar o desempenho e a confiabilidade das aplicações.
Assuntos abordados:
Módulo 1. Revisão de ajuste de desempenho – 5 horas.
Práticas Gerais;
Estratégias de ajuste de desempenho;
Métricas de desempenho;
Como melhorar a produtividade?
Ferramentas de medição de desempenho;
JMetro;
Teste de carga utilizando JMeter;
Como melhorar a produtividade usando arquitetura?
Melhores práticas para melhorar o desempenho do código.
Lição de casa – 2 horas.
Módulo 2. Algoritmos de GC – 5 horas.
Uso de memória de objetos Java;
Abordagens gerais e algoritmos de coletores de lixo;
Coletor de lixo serial GC;
Coletor de lixo GC paralelo;
Coletor de Lixo CMS;
Coletor de lixo G1;
Coletor de lixo de Shenandoah;
Ajustando coletores de lixo;
Ferramentas para coleta e análise de métricas de coleta de lixo;
Escolhendo o coletor de lixo ideal.
Módulo 3. Compilador HotSpot JIT – 5 horas.
Compilação JIT;
Bytecódigo Java;
Compilação multicamadas;
Cache de código e seu ajuste;
Otimização de código;
Desotimização de código e quando ocorre;
Ferramenta JITWatch para análise de resultados de compilação;
Tipos de otimizações;
Otimizações especulativas;
Configurações do compilador;
Compilação AOT.
Lição de casa – 2 horas.
Módulo 4. Sinalizadores JVM - 3 horas.
Finalidade e categorias de flags JVM;
Bandeiras gerais;
Sinalizadores associados a strings;
Sinalizadores de gerenciamento de memória;
Safepoints e sinalizadores associados a eles;
TLAB e sinalizadores associados a eles;
Plano de ajuste JVM.
Módulo 5. Testar o desempenho de algoritmos (benchmarking) utilizando JMH – 2 horas.
O que é benchmarking;
Introdução ao JMH;
API JMH;
Exemplos não triviais;
Aplicação do JMH na prática.
Lição de casa – 2 horas.
Módulo 6. Usando memória fora do heap (memória fora do heap) – 3 horas.
O que é sun.misc. Inseguro;
Métodos inseguros;
Desempenho de memória nativa;
Criação de estruturas de dados em memória nativa;
Avaliação do desempenho da memória nativa e comparação com memória heap;
API promissora de acesso à memória estrangeira.
Módulo 7. Serialização – 2 horas.
serializadores JSON (GSON, Jackson);
Serializadores binários (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Comparando o desempenho de diferentes serializadores.
Módulo 8. Perfil Java – 4 horas.
Quando e como fazer o perfil?
Perfis de amostragem e instrumentação;
Usando Java VisualVM para criação de perfil;
Criação de perfil com Spring AOP;
Criação de perfil com IDEA e criador de perfil assíncrono;
Gravador de voo Java;
Análise de logs do Java Flight Recorder utilizando Mission Conrol;
Criação e registro de eventos JFR personalizados;
Usando agentes Java para incorporar código e registrar quaisquer eventos no Java Flight Recorder;
Escrever programas para análise automática de logs JFR;
Coleta e análise de consultas SQL utilizando JFR;
Coleta e análise de solicitações REST utilizando JFR.
Lição de casa – 2 horas.
Módulo 9. Monitoramento e análise de dados heap. Vazamentos de memória – 2 horas.
Ferramentas de análise de dados na memória;
Sinais de vazamento de memória;
As principais causas de vazamentos de memória;
Pesquise e detecte vazamentos de memória.
Módulo 10. GraalVM – 3 horas
Ecossistema GraalVM;
Tempo de execução do GraalVM;
API poliglota;
Compilação e imagem nativa;
Referências.
Módulo 11. Cache em aplicativos Java - 3 horas.
Padrões de cache;
Comparação de APIs de cache;
Cache de consultas de banco de dados;
Cache de solicitações HTTP;
Métricas e configurações básicas de bibliotecas de cache;
Comparação de bibliotecas de cache populares;
Cache de nível de serviço;
Cache de serviços Spring;
Aplicativos que usam caches de diferentes níveis.
Módulo 12. Revisão de outras abordagens para melhorar a produtividade - 3 horas.
Programação paralela (thread pools, threads paralelas, estrutura fork-join);
Programação assíncrona;
Programação reativa (Reactor, VertX);
Otimização do trabalho com bancos de dados;
Computação em nuvem (microsserviços, Spring Cloud);
Referências e conclusões.