Candidato de liberação do JDK 12: Shenandoah, G1, JMH, Arm64. Bugs no Swing contra-atacam

240 dias se passaram desde o lançamento do JEP 3: JDK Release Process , e a máquina infernal para a produção de novas versões não deseja parar. Então chegou a hora do próximo candidato a lançamento . É o período em que todas as pontes são queimadas, os bugs com prioridades P2-P5 já não significam nada e os dias até o lançamento são numerados.



Bugs


Nem todos os erros com prioridade P1 estão fechados. Você pode ver a lista completa de problemas no bugtracker . E aqui a coisa mais estranha nos espera: todos eles se referem estritamente ao Swing ao usar o GTKLookAndFeel.



Já disse mentalmente: "Mas o que há de errado com esses caras no Swing?" Desta vez, eles não são "culpados". Se alguém não sabe, o Gtk é um kit de ferramentas gratuito para o desenvolvimento de interfaces gráficas, especialmente no sistema operacional GNU / Linux para X11 e Wayland.


A partir do Gtk 3.20, sua maneira de trabalhar com muitos estilos e widgets mudou . Em vez de classes de estilo e nomes de tipos, os nomes dos elementos agora são usados. O Gtk 3.20 foi lançado em 21 de março de 2016 e foi uma versão em grande escala - 28933 confirma e Wayland por padrão. Em geral, todo o Gnome começou a parecer um pouco diferente.



Não é de admirar que o Swing possa esquecer algo e não testá-lo. Parte dos bugs foi alterada em prioridade para P2 e transferida para o JDK 13. Por exemplo, esse bug sobre o fato de o Motif no MacOS, como era mais fácil dizer, não ser mais um ambiente gráfico tão atualizado:



Será engraçado se alguém ainda usar Motif e AWT em Habré. Espero que o décimo segundo JDK não seja cancelado por causa disso, caso contrário, será o arquivo mais épico em Java em toda a sua jovem história de lançamentos.


Funcionalidades


Os PECs nesta lista não serão listados por importância, mas exclusivamente por número de série. Isso é para que você não pense de repente que Shenanda e JMH se levantaram por causa de simpatias pessoais.


189: Shenandoah: um coletor de lixo com pouco tempo de pausa (experimental)


Seria bom se isso acontecesse um ano atrás, e Shenanda entrou no LTS. Ok, espere - obrigado por isso. Shenandoah é um coletor de poço baixo que atinge seu poço baixo devido à fase de evacuação multithread. Além disso, as pausas não dependem do tamanho do quadril, para que você possa transformar com segurança os terabytes no produto.


230: Suíte Microbenchmark


Um conjunto de testes baseado em JMH é adicionado ao JDK e o próprio JMH também. Encontra-se em jdk/jdk/test/micro/org/openjdk/bench . O JMH é uma estrutura para criar, montar, ativar e analisar marcas de microbench para Java e outras linguagens JVM, escritas por alguém que você entende . O JMH agora é o padrão de fato para micro-benchmarks, e a aparência desses JEPs é uma questão de tempo.


325: Alternar expressões (visualização)


Em vez de mil descrições:


 int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; }; 

334: API de constantes da JVM


O objetivo é fornecer um conjunto de tipos para descrições formais de modelagem de classes, métodos e outras entidades em tempo de execução e arquivo de classe e puxá-los para as principais classes, como String ou Class . Eles vivem em pacotes como java.lang.invoke.constant e não solicitam, mas você pode dar uma olhada no patch aqui .


340: Uma porta AArch64, não duas


A antiga porta arm64 é descartada no frio, mas o ARM de 32 bits e o aarch64 estão sendo ativamente serrados. Agradecemos à RedHat e à BellSoft pela existência dessas portas (a propósito, o escritório da BellSoft está localizado em São Petersburgo, próximo ao antigo escritório da Oracle). No lançamento do JDK 12, tentaremos obter um comentário mais detalhado dos representantes da empresa.


341: Arquivos CDS padrão


Como um recurso, o CDS estava disponível para nós por um longo tempo, mas não estava claro por que, cada vez que você escreve -Xshare:dump se -Xshare:dump , se o resultado padrão deste comando é levemente previsível, mesmo no estágio de criação da distribuição JDK. Essa supervisão irritante será corrigida no JDK 12, o arquivo CDS será gerado pelos criadores da distribuição, mesmo para compilações noturnas (desde que sejam de 64 bits e nativas, não para compilação cruzada).


344: Coleções Mistas Abortáveis ​​para G1


Esse recurso é necessário pelos mecanismos internos do coletor de lixo G1, para que ele se encaixe mais frequentemente nos requisitos para a duração da pausa. Acontece que você pode determinar quando o G1 avalia repetidamente incorretamente a complexidade da montagem, especialmente para regiões antigas. Nesse ponto, você pode ficar com medo e começar a coletar de forma incremental, passo a passo e, após cada etapa, poder interromper a montagem. Argumenta-se que isso permitirá um melhor ajuste no tempo de montagem esperado.


346: Retorno imediato da memória confirmada não utilizada do G1


Agora, o G1 fornece a memória confirmada ao sistema operacional com GC completo ou com montagem paralela. Tanto esse quanto outro G1 de todas as formas possíveis tentam evitar, pelos quais agradecemos a ele. Mas isso também significa que a memória é devorada como se não fosse em si mesma, e G1 pode ser forçado a apagar a memória de volta apenas de alguma maneira externa. Isso é especialmente triste para todos os estivadores e outros hipsters sem terabytes de RAM no servidor. Em vez disso, propõe-se fazer da mesma maneira que Shenanda ou GenCon do OpenJ9 já sabe identificar a utilização insuficiente de heap e, consequentemente, reduzir seu uso. Em alguns testes no Tomcat, isso permitiu reduzir o consumo de memória em quase metade.


O que vem a seguir


Essa foi uma revisão de cima para baixo e tentaremos fazer uma análise detalhada dos recursos mais perto do lançamento, na forma de artigos separados - traduções de JEPs, screencasts com benchmarks ou outra coisa. Agora temos que aguardar o lançamento, que está programado para 19 de março.


Minuto de publicidade. Em breve, de 5 a 6 de abril, será realizada a conferência JPoint, que reunirá um grande número de pessoas que sabem muito sobre o JDK e todos os tipos de novos recursos. Por exemplo, certamente haverá Simon Ritter, da Azul, com uma palestra sobre "JDK 12: Armadilhas para os incautos" . O lugar mais apropriado para discutir a versão mais recente! Você pode aprender mais sobre o JPoint no site oficial .

Source: https://habr.com/ru/post/pt440314/


All Articles