Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo JIT

Introdução ao projeto OpenJDK CRaC

Projeto OpenJDK CRaC: reduzindo drasticamente o tempo de inicialização de aplicativos Java Um pouco de história O objetivo do Java sempre foi ser independente de plataforma. Isto é, sem precisar compilar o código novamente, é possível rodar em qualquer dispositivo compatível com a máquina virtual (JVM). O famoso slogam ( write once, run anywhere ) Desafios da inicialização de aplicativos na JVM Embora o Java seja uma linguagem popular, a inicialização de aplicativos na JVM pode ser um processo demorado. Isso ocorre porque a JVM precisa realizar várias etapas antes que um aplicativo possa ser executado. Primeiro, a JVM precisa carregar e inicializar todas as classes necessárias para o aplicativo. Isso envolve ler os arquivos de classe, desempacotar arquivos JAR e inicializar todas as dependências. Em seguida, a JVM precisa fazer algumas otimizações de tempo de execução, como compilação just-in-time (JIT) e inlining de métodos. Essas otimizações ajudam a melhorar o desempenho do ap

Projeto Leyden atrasa o compilador OpenJDK AOT e otimiza o compilador JIT em vez disso

Projeto Leyden atrasa o compilador OpenJDK AOT e otimiza o compilador JIT em vez disso O objetivo do Projeto Leyden é "resolver os pontos problemáticos de longo prazo do tempo de inicialização lenta do Java, do tempo lento para o desempenho máximo". Ele queria chegar lá "introduzindo um conceito de imagens estáticas" no OpenJDK. Imagens estáticas resultam da compilação Ahead-of-Time (AOT) para executáveis ​​nativos . Após dois anos sem atividade publicamente visível, o Projeto Leyden mudou em maio de 2022 para primeiro otimizar a compilação Just-in-Time (JIT). As " otimizações resultantes quase certamente serão mais fracas " do que o planejado inicialmente e alcançarão os principais desenvolvedores Java no final de 2025, no mínimo. O projeto Graal da Oracle já atingiu o objetivo do Projeto Leyden, mas a um custo que o projeto quer evitar por enquanto. O projeto Graal tem origem no Oracle Labs e não faz parte do OpenJDK. Sua imagem nativa GraalVM é

Uma questão de interpretação: de bytecodes a código de máquina na JVM

  Uma questão de interpretação: de bytecodes a código de máquina na JVM Esta é uma tradução/adaptação do artigo original em inglês . No primeiro artigo desta série , vimos como os aplicativos baseados em JVM usam um conjunto de instruções virtuais na forma de bytecodes para criar um aplicativo de plataforma neutra. A JVM converte esses bytecodes no tempo de execução nas instruções para a plataforma na qual o aplicativo está sendo executado. Antes de nos aprofundarmos na compilação just-in-time (JIT), vamos ver como a JVM começa a executar bytecodes usando um interpretador. A ideia básica do interpretador é simples. Cada método, começando com public static void main(), possui um conjunto de bytecodes que definem o que ele fará. A JVM interpretará o primeiro bytecode (assumindo que a instrução não resulta em um salto para um endereço diferente ou chamará outro método) continuará com cada bytecode em sequência. Interpretar é o processo de converter um bytecode em qualquer chamad