Já postamos vídeos dos relatórios do JPoint 2018 no YouTube e, especialmente para o hub Java em Habré, fizemos uma seleção tradicional dos melhores, de acordo com os visitantes da conferência.
Como sempre, existem relatórios "juniores" no topo, com a classificação mais alta no final. Obviamente, isso não significa que um relatório seja muito pior que outro: se você alterar a metodologia de cálculo, os locais poderão mudar facilmente. Na realidade, nós mudamos, agora a versão “quorum suave” da classificação é usada, levando em consideração o número de participantes presentes no relatório. Essa abordagem tem suas desvantagens (por exemplo, mais pessoas vêm à palestra do que a um relatório regular, simplesmente porque o público não tem escolha), mas, em geral, fornece uma imagem melhor do que aconteceu.
Abaixo do corte - e vídeos dos melhores relatórios, links para suas apresentações, descrições curtas e um link para a lista de reprodução completa.

Lista de reprodução completa
A lista de reprodução completa com todos os vídeos discutidos abaixo está disponível aqui .
→ Baixar slides
A revolução dos contêineres varreu todo mundo - o mundo Java não ficou sem ele. No entanto, Java sempre teve e há certos problemas e recursos, que serão discutidos no relatório de Sasha Goldstein.
Sasha é o criador em série da performance hardcore. No ano passado, na JPoint, ele fez uma excelente conversa sobre o uso do Berkeley Packet Filter para a JVM (eu recomendo desesperadamente assistir a uma postagem do YouTube), e foi apenas uma questão de tempo até ele ter uma visão detalhada da contêiner. O mundo entra nas nuvens e estivadores, o que por sua vez nos traz muitos problemas novos. Como você deve ter notado, a maioria dos sistemas de depuração e criação de perfil de baixo nível, após aplicá-los em contêineres, é cercada por diferentes recursos e batentes. Sasha percorreu os principais cenários (utilização da CPU, capacidade de resposta de E / S, acesso a bancos de dados compartilhados etc.) através do prisma de usar ferramentas modernas na plataforma GNU / Linux, incluindo BCC e perf.
Nem todo mundo precisa dessa especificidade. Essa é uma das razões pelas quais o relatório ficou apenas em décimo lugar - foi assistido por cerca de duzentas pessoas (compare com mais de mil de Tolkachev e Borisov), e nosso algoritmo de cálculo de classificação é muito sensível ao tamanho da audiência.
Para aqueles que estão de alguma forma conectados aos contêineres, esse relatório deve ser exibido. Isso economizará muito tempo em uma pesquisa independente de todos os detalhes, com uma pesquisa completa de inúmeros utilitários e como usá-los.
Eu também gostaria de observar que o relatório de Sasha entre os 10 melhores é quase o mais denso em termos de quantidade de informações práticas por unidade de tempo. De quase todos os slides, você pode copiar algumas coisas úteis. Para não participar de uma recontagem detalhada, mostrarei apenas a estrutura da superfície da apresentação:
Esboço do relatório- Como são organizados os contêineres?
- Grupos de controle: CPU, memória, bloco de E / S;
- Namespaces: namespace pid, namespace de montagem, namespace de rede;
- A diferença entre os problemas que surgem:
- No host;
- No recipiente;
- Exemplos de problemas com soluções:
- Conexão com JVM?
- Dados de desempenho da JVM?
- Ferramentas JVM de demonstração no host;
- Recursos Ferramentas de informação:
- side-car para monitoramento;
- estatísticas do docker;
- systemd-cgtop;
- htop + cgroup ID;
- nsenter ou docker exec;
- Monitoramento de demonstração dos recursos do contêiner;
- Criação de perfil de contêineres da CPU:
- perf no host: -G, mapeamento de símbolos, mapeamento PID, compartilhando perf map (perf-map-agent);
- Demonstração com flamegrams; oos;
- perf no contêiner no modo não privilegiado;
- honest-profiler, async-profiler, perf vs async-profiler;
- Demyn async-profiler;
- O BCC é uma ferramenta de criação de perfil (resolve vários problemas por si só, mas funciona apenas no Linux 4.9 ou superior);
- Estrangulamento;
- Outros métodos de monitoramento:
- cAdvisor, SysDig, Nova Relíquia, DataDog ...
9. Uma vez por ano, os jardins florescem: analisando a semântica do Apache Kafka "exatamente uma vez"
→ Baixar slides
Victor Gamov tem uma vantagem completamente injusta sobre outros alto-falantes. Este é o homem que lançou quase duzentas edições do podcast Debriefing, autor de vários relatórios, textos, postagens e até o livro “Enterprise Web Development” de O'Reilly. A própria presença de Gamow faz algo melhor. Tenho certeza de que ele poderia dizer com a mesma entonação não sobre Kafka, mas sobre o crescimento de gerânio no peitoril da janela, e isso ainda seria fascinante.
Aqui temos um caso especial: o tópico inicialmente holivorny sobre a semântica de "exatamente uma vez". Kafka correu para usar tudo em uma escala extraordinária, o que exigiu o processamento da semântica tradicional de entrega de mensagens. Não coloque um dedo na boca - eles trocaram de sapatos em movimento com o protocolo e o formato de mensagem corretos e fizeram tudo o que precisavam. Ao longo do relatório, Victor fala sobre como ele é organizado e o que afeta.
Duas notícias, boas e más. Bom: tudo está configurado em Kafka. Ruim: tudo está configurado em Kafka. Para viver com isso, você precisa entender como funciona e onde escalar com as mãos sujas.
Pode-se esperar algum tipo de batido de Victor, mas então ele tem um hardcore desesperado, e o plano é algo assim:
Esboço do relatório- Introdução ao Kafka:
- Tópicos
- Partições
- Logs e deslocamentos
- Sugestões e líderes
- Clientes: Produtores e Consumidores
- Produtor
- Como funciona em exemplos
- Protocolo do produtor
- Consumidor
- Como funciona em exemplos
- Protocolo do Consumidor
- Modelo de processamento
- Lido, contado, gravado
- Tipos de falhas (tudo quebrou, zumbis)
- Semântica de processamento
- Pelo menos uma vez, no máximo uma vez, exatamente uma vez
- Semântica "exatamente uma vez"
- Com exemplos
- Fraquezas
- tentativas inseguras
- gravação offset não atômica
- zumbis
- Corrigindo a primeira fraqueza: um produtor idempotente
- Corrija a segunda fraqueza:
- Chandy Lamport Instantâneos
- Princípio
- Como conviver com falhas?
- Difícil: falha durante o processamento
- Suave: travamento antes ou durante a remoção do instantâneo
- Transações em Kafka
- Dois tipos de marcadores (COMMIT, ABORT)
- Gravação atômica em muitas partições (incluindo! _Consumer_offsets)
- Corrija a terceira fraqueza: esgrima de zumbis
- Isolamento da leitura do consumidor
- eos de ponta a ponta
- Fonte de conexão Kafka
- Kafka streams
- Kafka Connect Sink
8. Luta contra hackers russos com Kafka Streams e API Firehose
→ Baixar slides
Mais uma vez Kafka! Gamow de novo! Sim, e com Baruch Sadogursky ( jbaruch ) agora. No entanto, este relatório não é um smoothie, mas uma peça prática muito específica sobre como, na plataforma Bintray (da qual Baruch é o deus), usando Apache Kafka (pelo qual Victor é responsável) e Firehose, analisam padrões comportamentais e processam grandes quantidades de dados.
Se o relatório anterior sobre o interior de Kafka tinha 245 slides, este tem apenas 17. Isso é porque você precisa assistir! Este é principalmente um diálogo animado entre as principais e as demonstrações ao vivo. Não demore, abra o vidosik e veja.
7. Memória transacional de hardware em Java
→ Baixar slides
Nikita Koval ( ndkoval ) é pesquisadora do JetBrains na equipe Kotlin e estudante de doutorado no IST Áustria (ele estava no Devexperts no momento da palestra). Seu relatório contrasta fortemente com os "hackers russos", porque não é um assunto de leitura leve e divertido, mas uma história sobre os intrincados internos da VM. Se você olhar os slides , poderá encontrar 150 folhas, a maioria delas com código.
Se você estava no JBreak no início de 2018, pode ter encontrado a história da Nikita sobre coisas completamente diferentes - sobre como escrever uma tabela de hash multithread rápida usando o poder das arquiteturas modernas de múltiplos núcleos e algoritmos especiais. Concordo, Nikita tem um estilo . Lembro-me imediatamente de Shipilev.
Desta vez, falaremos sobre memória transacional, que está aparecendo gradualmente nos processadores modernos, mas ainda não está claro como usá-lo para uma pessoa comum do mundo da JVM. Fora da JVM, é claro, tudo é mais simples. Mas imagine o que você diz a um desenvolvedor web regular do Spring: "Sim, basta editar vmstructs, acumular suas intrínsecas, reconstruir o OpenJDK e pronto!" E ele é assim: "Bem, é claro, eu faço isso todos os dias!". Nikita fala muito claramente sobre maneiras de usar, quais otimizações já estão no OpenJDK e como executar transações diretamente do código Java.
Esboço do relatório- Introdução: por que precisamos de multithreading
- Abordagens de construção de algoritmos
- Bloqueio áspero
- Bloqueio fino
- Sincronização sem bloqueio
- Todos os três tipos são ilustrados na tarefa de exemplo sobre um banco de brinquedos.
- Multithreading é complicado. O que fazer
- Transações em um mundo perfeito. Basta escrever atômica!
- De onde obter atômica:
- Memória transacional de software (STM). Scala STM, NOrec, Coroutines.
- Memória transacional de hardware (HTM). Haswell, Poder 8.
- Memória transacional híbrida
- Intel RTM por exemplos
- XBEGIN, XEND, XABORT, XTEST
- Intel RTM + Java
- Bloquear elisão
- java.util.concurrent.RTMSupport
- Intrínseca: intérprete, C1, C2
- Grosseiro / sem bloqueio + RTMSuporte nos gráficos
6. Criamos perfis com precisão em microssegundos e instruções do processador
→ Baixar slides
Sergey Melnikov ( RainM ) do Raiffeisenbank nos apresentou o segundo relatório de criação de perfil. Curiosamente, antes de trabalhar em código Java de baixa latência, ele trabalhou na Intel como engenheiro de desempenho de compilador para linguagens C / C ++ / FORTRAN. Este relatório também tem perf! :-) Existem também os recursos de hardware dos processadores e a tecnologia Intel Processor Trace, que permitem dar o próximo passo na precisão do perfil e reconstruir a execução de uma seção do programa. Existem poucos relatórios desse tipo (por exemplo, você pode encontrar o relatório Andi Kleen no Tracing Summit 2015), eles geralmente deixam um mar de perguntas e não brilham com praticidade em relação ao Java. Aqui, não apenas temos uma pessoa que visitou os dois mundos (Intel e Java no banco), mas também sabemos como explicar claramente tópicos complexos.
Esboço do relatório- O que é e por que é necessário
- Área de assunto - aplicativos de baixa latência
- Exemplo de troca de Moscou
- Escolha um profiler
- Como perfil? Perfis de amostragem e instrumentação
- async-profiler
- Ensinamos o criador de perfil a montar um perfil detalhado
- Como executar o perf
- Como olhar no perfil, na pilha de chamadas
- perf-map-agent, sysctl, dmesg ...
- Usando eventos PMU / PEBS no perf
- Intel Processor Trace - o que é e como criar perfil em Java
- Requisitos: pacotes, hardware, sistema operacional
- Como executar no Skylake-X (Xeon e i9)
5. VMStructs: Por que o aplicativo precisa saber sobre os componentes internos da JVM
→ Baixar slides
Andrey ( apangin ) é uma pessoa que, repetidamente, coleta os relatórios mais profundos e poderosos. No passado, o Joker reunia um pouco menos de mil pessoas - este é um recorde em termos de tamanho de público em um relatório regular que não é uma palestra. Nisso, ele é ajudado por uma década de experiência trabalhando em máquinas virtuais e pela capacidade de explicar hardcore técnico para que possa ser repetido na prática.
Muitos não entendem bem por que mergulhar em uma máquina virtual se você tem um aplicativo regular em um tomcat, com um banco de dados e tudo está como deveria ser. Este relatório tem um bom argumento no nível de "como entender qual consulta extrairá muitos dados?" Se você tentar instruir o código usando JMX, algo estranho começará a acontecer com o desempenho. Em primeiro lugar, você pode entender por que isso acontece e, em segundo lugar, o que pode ser feito sobre isso. Na minha opinião, este relatório é valioso não tanto com um conjunto de ferramentas (embora exista um pouco de impotência), mas com uma demonstração da mentalidade correta do desenvolvedor do OpenJDK e como se comportar em situações difíceis. Fala a presença e explica o significado de coisas específicas como TLAB, cache de código, pool constante, etc.
4. Corotinas em Kotlin
→ Baixar slides
Somente o preguiçoso não conhece Kotlin agora, e você, o leitor, leu uma vez até o quarto parágrafo - obviamente não dos preguiçosos. Roman ( elizarov ) é um ex-desenvolvedor de software comercial de alto desempenho e agora é líder nas bibliotecas Kotlin. Já fizemos uma entrevista com os ciganos sobre corotinas e pode valer a pena relê- las antes ou depois da visualização do relatório. As corotinas são um conceito muito antigo, desde a época do Simula, mas nem todas as linguagens convencionais os suportam, elas não aparecerão em Java em breve. Mas em Kotlin eles já estão na versão estável.
Este relatório responde a todas as perguntas relevantes sobre corotinas, ou seja, todas as questões relevantes do nosso tempo em geral :-)
Esboço do relatório- Quadro geral do desenvolvimento de linguagens
- Programação de retorno de chamada assíncrona
- Futuros / Promessas / Rx
- Corotinas em Kotlin
- loops regulares, manipulação de exceção, funções de ordem superior
- funções personalizadas de ordem superior
- tudo parece no código de bloqueio!
- Como isso funciona?
- funções de suspensão, código com pontos de suspensão
- Integração
- Retrofit assíncrono
- Retornos de chamada e continuações (call / cc do Scheme!)
- contlinx-coroutines-core
- jdk, goiaba, nio, reator, rx1, rx2
- Como executar corotinas?
- assíncrono / aguardar
- Por que não há palavra-chave wait no Kotlin?
- A concorrência é difícil. Você precisa fazer isso explicitamente.
- A abordagem de Kotlin para assíncrona
- Conceito Corutin: fios muito leves
- Interoperabilidade com Java
- Corotinas síncronas - gerar / produzir
- Exemplo de números de Fibonacci
- Comunicação de processos sequenciais (CSP)
- Biblioteca vs idioma
- O núcleo da língua deve ser pequeno!
- Palavras-chave: assíncrono / espera, gerar / rendimento
- Modificadores: suspend
- kotlinx-coroutines: lançamento, assíncrono, runBlocking, futuro, atraso, trabalho, adiado, ...
3. Sobre os ombros dos gigantes: as línguas que Kotlin estudou
→ Baixar slides
Relatório sobre Kotlin de um dos criadores da linguagem - o que mais é necessário para a felicidade? A essência e a estrutura da apresentação são completamente diferentes da do relatório anterior de Elizarov. A novela falou sobre coisas específicas - o que, como e por que no design da corotina e como usá-la, e eu preciso disso para melhorar a habilidade de programação no Kotlin. Aqui Andrei ( abreslav ) fala sobre coisas que melhoram a erudição em geral na vida e dão uma compreensão do seu lugar no mundo. Se você viu todas essas linguagens com seus próprios olhos - Java, C #, Scala, Groovy, Python, Gosu - isso é ainda mais interessante, porque há motivos para discussão (os visitantes da conferência provavelmente poderiam aproveitar a oportunidade e realmente discutir sua compreensão das coisas na área de discussão. ) São sete idiomas em sete semanas, mas apenas em uma hora.
A propósito, recentemente fizemos uma entrevista em separado com Andrey, mas não é apenas sobre Kotlin, mas sobre muitas coisas diferentes.
2. As aventuras de Senior Holmes e Junior Watson no mundo do desenvolvimento de software
→ Baixar slides
Fazer apresentações envolvendo mais de um palestrante é extremamente difícil. Muitas vezes, é assim: na metade do tempo, um deles fica no palco e fica entediado, e parece muito chato. O que você pode dizer sobre o desempenho conjunto de Baruch Sadogursky e Evgeny Borisov ( EvgenyBorisov ) - pelo contrário, foi feito esplendidamente, é uma obra de arte. As estrelas se reuniram na ordem correta, e dois palestrantes de topo com grande experiência e a prática de conduzir relatórios emparelhados apareceram no palco para discutir um tópico que era interessante para os dois. Por que enfatizo isso? Geralmente, os espectadores não têm idéia do que é a criação de uma apresentação e tomam tudo como garantido.
Mas o resultado justificou o investimento. Julgue por si mesmo: esta é a palestra da noite, o relatório mais recente da conferência, durante o qual as pessoas já estão exaustos com dois dias de lata, querem dormir, alguém precisa voltar para casa agora e assim por diante. E, no entanto, mais de 600 pessoas foram deixadas no salão, com certeza.
Este não é um relatório de referência, mas um relatório que deve ser observado. Nele, Holmes e Watson revelarão vários quebra-cabeças que você encontrou, encontrou ou encontrará no desenvolvimento cotidiano. Não haverá entranhas de coletores de lixo e códigos de código, mas haverá ferramentas, bibliotecas e estruturas que confundem os desenvolvedores comuns em sua rotina diária, levando a tempo de inatividade, criação de perfil de prazos e depressões prolongadas. Na prática, neste relatório, Sherlock e Watson salvam sua testa dos facepalms e ancinhos que alguém já pisou.
Portanto, não haverá um breve resumo aqui - basta iniciar o vídeo e assistir.
1. Inicie você mesmo, a primavera está chegando
→ Baixar slides
Baruch + Gamow, Baruch + Borisov, quem está faltando nos autores dos relatórios populares de pares? Isso mesmo, Borisov + Tolkachev ( tolkkv ). Outro relatório interessante, que, não sendo uma palestra, reuniu um número recorde de participantes - mais de mil. Havia tanto material e é tão interessante que dois slots foram alocados no programa da conferência - e você terá que assistir a dois vídeos no YouTube de acordo.
Muitos anos atrás, programadores Java usavam "new" para criar serviços. Eles fizeram muitas ações manuais e configuraram configurações com a lógica de negócios. Eles até usaram técnicas de copiar e colar. Muitas linhas de código miserável foram escritas, que às vezes até funcionavam.
Então chegou a primavera. Muita coisa mudou com ele ... Recebemos muitas "mágicas" do cilindro mágico do Spring, e nosso código se tornou mais limpo, simples e sustentável.
E então o Spring Boot apareceu. Por um lado, resolve milhares de problemas pré-existentes: conflitos de versão, tarefas de configuração, trabalhando com compartimentos de infraestrutura, o problema de configurar o ambiente e, é claro, iniciar ou implantar um aplicativo, incluindo a criação de arquivos jar / war. Por outro lado, o Spring Boot adicionou ainda mais magia ao nosso cilindro mágico. Como resultado, existem dois cenários:
- Tudo funciona muito bem, embora ninguém saiba como.
- Nada funciona e ninguém sabe o porquê.
Este relatório revela os segredos básicos da mágica do Spring Boot. Você entenderá os princípios e convenções básicas para aplicativos típicos do Spring Boot. A tarefa de Cyril e Eugene, para que toda a magia do cilindro se transforme em um processo muito mais transparente e você possa não apenas aproveitar quando tudo funciona, mas também entender a essência dos problemas e resolvê-los sem envolver ambulância e outros serviços disponíveis no site. chamadas urgentes.
Conclusão
Levei vários dias para assistir a todos os vídeos da lista. Não foi fácil, mas é claramente visível que valeu a pena. Na realidade, havia muito mais relatórios na conferência, e ver os dez primeiros é um bom começo para uma maneira muito maior. Se você também assistir esses relatórios, não fique com preguiça de escrever seus comentários nos comentários em Habré!
Enquanto isso, já é possível comprar ingressos para o próximo JPoint. Será realizada de 5 a 6 de abril de 2019 no WTC Congress Center. Até 1º de janeiro, ainda há a oportunidade de comprar ingressos a preços baixos !