Acabou de chegar o Java 13. O ZGC começou a compartilhar memória, o próprio CDS se lembra de classes e outras maravilhas técnicas


Hoje, uma nova versão do Java é lançada - Java / JDK 13. A corrida começou com o lançamento da primavera do JDK 12, realizado em 19 de março, e a bifurcação da filial principal ocorreu em 13 de junho. Alguém que perdemos no caminho como o JEP 343: Packaging Tool , mas, em geral, tudo está normal e é hora de colher os benefícios.


Você pode fazer o download da nova versão aqui . Abaixo do corte, haverá uma pequena visão geral dos JEPs frescos incluídos nesta versão.


JEP 351: ZGC: Confirmação de memória não utilizada


Como você sabe, no JDK 11, temos um novo GC - ZGC brilhante, escalável, rápido e com baixa pausa. Bem, ou pelo menos essa é a ideia. Um problema bastante sério nele era que ele se comportava como um cachorro na manjedoura e não abandonava a memória ocupada, mesmo que não fosse necessário. Shenandoah e G1 começaram a compartilhar há muito tempo, e o comportamento do ZGC parecia criminalmente apertando as mãos. Bem, agora tudo está resolvido, logo após o tempo limite em -XX:ZUncommitDelay , recuperamos nossos bytes.


JEP 350: Arquivos CDS dinâmicos


O próprio recurso CDS permite adicionar classes carregáveis ​​a um arquivo comum, acelerando a inicialização e reduzindo a quantidade de RAM desperdiçada. Infelizmente, antes de ser um pouco idiota você ter que reiniciar o aplicativo várias vezes, formando uma lista dessas classes e depois também colocar as mãos nessa lista. Agora, os robôs estão funcionando, não os humanos: quando a opção -XX:ArchiveClassesAtExit , as classes são automaticamente despejadas no arquivo morto após um desligamento normal do aplicativo.



Stuart Marks - Doctor Deprecator, membro consultor da equipe técnica da Oracle + olegchir no Oracle Code One, alguns minutos após o anúncio do Java 13


JEP 353: Reimplementar a API do Soquete Legado


Em todas as javas (agora obsoletas), net.Socket e java.net.ServerSocket baseadas em uma mistura infernal de Java e código C, da qual até os teóricos do desempenho mais experientes choram. O problema foi resolvido escrevendo uma nova implementação usando a mesma infraestrutura interna da NIO, de modo que quase não precisa de seu próprio código nativo. Bem, no entanto, isso não é legado, eles escreveram tudo lindamente e adequado para mudar para as fibras do projeto Loom. Se for interessante, é necessário olhar para a classe NioSocketImpl .


JEP 354: Expressões de Switch


Continuamos nos preparando para a chegada da correspondência de padrões. Switch Expressions é o primeiro recurso que permite escrever o código do formulário:


 int j = switch (day) { case MONDAY -> 0; case TUESDAY -> 1; default -> { int k = day.toString().length(); int result = f(k); yield result; } }; 

Como vemos no exemplo, desde o JDK 12, temos uma mudança cosmética: o break mudou para yield , agora tudo é como todas as pessoas normais.


JEP 355: Blocos de Texto


JEP 326: Literais de cordas cruas entraram na faca, mas seus negócios continuam vivos! "Diga ao camarada Stalin - ocorreu um erro terrível . " Blocos de texto é um novo recurso de visualização que permite fazer sem escapar, formata as linhas de maneira conveniente, fabrica café com espuma e milagrosamente fornece controle sobre o formato da sequência resultante.


Mais mundano, agora qualquer carrasco sem a necessidade de aprender JSP pode escrever algo como:


 String html = """ <html> <body> <p>Hello, world</p> </body> </html> """; 

Um DBA iniciante poderá construir uma carreira começando com o seguinte código:


 String query = """ SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB` WHERE `CITY` = 'NEW DEHLI' ORDER BY `EMP_ID`, `LAST_NAME`; """; 


Parece um pouco ameaçador


Advertência


Uma visão geral do JEP é uma pequena parte do que você pode e deve dizer sobre o novo Java. Esta revisão completa também deve incluir uma revisão abrangente de inovações táticas interessantes e uma visão geral dos erros no rastreador de erros. Talvez alguém ( lany , ay!) Consiga continuar esse trabalho. Agora, minha equipe e eu estamos no Oracle Code One - infelizmente, sentados em relatórios ou apoiados no estande Liberica JDK - é muito difícil escrever algo por tanto tempo. De qualquer forma, este é um tópico para um site de hub completamente diferente.



Brian Goetz - Arquiteto para a linguagem Java na Oracle + olegchir no Oracle Code One


E também temos uma conferência do Joker, onde você pode discutir a necessidade de mudar para o Java 13, o momento da transição para o ZGC, a quantidade de estoque de pipoca necessária após a introdução dos Blocos de Texto e outros problemas relevantes. Os ingressos, como sempre, podem ser adquiridos no site oficial .

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


All Articles