Coletor de lixo Epsilon
De acordo com a Proposta de Melhoria JDK (ou JEP) 318, o Epsilon é um coletor de lixo (GC) de baixa sobrecarga, cuja finalidade é lidar com a alocação de memória sem implementar qualquer mecanismo real de recuperação de memória.
O objetivo é “fornecer uma implementação de GC completamente passiva com um limite de alocação limitado e a menor sobrecarga de latência possível, às custas da pegada de memória e rendimento de memória”, afirmam os desenvolvedores de núcleo Java na proposta. “Uma implementação bem-sucedida é uma mudança de código isolada, não afeta outros GCs e faz mudanças mínimas no resto da JVM.”
Embora o Java já ofereça uma ampla escolha de implementações de GC altamente configuráveis, os desenvolvedores acreditam que é mais fácil manter uma implementação separada de GC para lidar com casos de uso específicos, como teste de desempenho, teste de pressão de memória, teste de interface VM, trabalhos de vida extremamente curta , melhorias de latência de última gota ou melhorias de taxa de transferência de última gota, do que empilhar outra opção de configuração na implementação de GC existente.
Sintaxe de variável local para parâmetros Lambda
Java 10 introduziu a inferência de tipo de variável local para reduzir o detalhamento associado à gravação de código Java e o Java 11 o expande para permitir var a ser usado ao declarar os parâmetros formais de expressões lambda digitadas implicitamente, conforme declarado em JEP 323, intitulado Sintaxe de variável local para parâmetros Lambda.
Como tal, em vez de escrever:
(var x, var y) -> x.processo (y)Será possível escrever simplesmente:
(x, y) -> x.processo (y)A uniformidade em si não é o único benefício da sintaxe de variável local para parâmetros lambda. Outro benefício é que se tornará possível aplicar modificadores a variáveis locais e formais lambda sem perder a brevidade.
Constantes de arquivo de classe dinâmica
O JEP 309 estende o formato de arquivo de classe Java para suportar um novo formulário de pool constante, CONSTANT_Dynamic, a fim de reduzir o custo e a interrupção da criação de novas formas de constantes de arquivo de classe materializáveis. Assim como ligar um invocado dinâmico chamar o site delegates linkage para um método de bootstrap, então carregará um CONSTANT_Dynamic delegar a criação a um método bootstrap.
De acordo com os desenvolvedores de núcleo de Java, a nova forma de pool constante oferecerá aos designers de linguagem e implementadores de compilador opções mais amplas de expressividade e desempenho. “Constantes mais ricas, mais flexíveis e altamente tipadas removem a fricção do desenvolvimento de protocolos invocados dinâmicos, o que, por sua vez, facilita o movimento da lógica complexa do tempo de execução para o tempo de ligação, melhorando o desempenho do programa e simplificando a lógica do compilador.”
O que não vai chegar ao Java 11
Apesar dos recursos descritos acima, o Java 11 será realmente mais enxuto do que o Java 10 porque está configurado para perder CORBA (Common Object Request Broker Architecture), módulos Java EE e JavaFX, um conjunto de pacotes gráficos e de mídia que permite aos desenvolvedores projetar, criar, testar, depurar e implantar aplicativos rich client.
CORBA é o padrão aberto para computação heterogênea e foi descontinuado, junto com os módulos Java EE, no Java SE 9. Versões independentes de módulos Java EE ainda estarão disponíveis em sites de terceiros, mas a Oracle não terá mais que manter duas implementações separadas: uma em Java SE e outra em Java EE.