{"id":925546,"date":"2024-07-22T04:42:47","date_gmt":"2024-07-22T04:42:47","guid":{"rendered":"https:\/\/proxyelite.info\/?p=925546"},"modified":"2025-06-05T13:52:34","modified_gmt":"2025-06-05T13:52:34","slug":"what-s-new-in-java-11","status":"publish","type":"post","link":"https:\/\/proxyelite.info\/pt\/what-s-new-in-java-11\/","title":{"rendered":"O que h\u00e1 de novo no Java 11?"},"content":{"rendered":"<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Recurso<\/th><th>Descri\u00e7\u00e3o<\/th><th>Exemplo<\/th><th>Benef\u00edcios<\/th><\/tr><\/thead><tbody><tr><td>Sintaxe de vari\u00e1vel local para par\u00e2metros Lambda<\/td><td>Permite o uso de <code data-no-translation=\"\">var<\/code> em express\u00f5es lambda para melhorar a legibilidade.<\/td><td><code data-no-translation=\"\">(var x, var y) -&gt; x + y<\/code><\/td><td>Consist\u00eancia no c\u00f3digo.<\/td><\/tr><tr><td>Cliente HTTP (padr\u00e3o)<\/td><td>Nova API de cliente HTTP com suporte para HTTP\/1.1 e HTTP\/2.<\/td><td><code data-no-translation=\"\">HttpClient client = HttpClient.newHttpClient();<\/code><\/td><td>API moderna e rica em recursos.<\/td><\/tr><tr><td>Epsilon: um coletor de lixo aut\u00f4nomo<\/td><td>Um coletor de lixo que n\u00e3o recupera mem\u00f3ria.<\/td><td><code data-no-translation=\"\">java -XX:+UseEpsilonGC MyApp<\/code><\/td><td>\u00datil para testes de desempenho.<\/td><\/tr><tr><td>Controle de acesso baseado em Nest<\/td><td>Simplifica o controle de acesso para tipos aninhados.<\/td><td><code data-no-translation=\"\">private static class NestedClass {}<\/code><\/td><td>Performance melhorada.<\/td><\/tr><tr><td>Constantes din\u00e2micas de arquivo de classe<\/td><td>Novo formul\u00e1rio de pool constante <code data-no-translation=\"\">CONSTANT_Dynamic<\/code>.<\/td><td>N \/ D<\/td><td>Custos e limita\u00e7\u00f5es reduzidos.<\/td><\/tr><tr><td>Aprimoramentos da API de strings<\/td><td>Novos m\u00e9todos como <code data-no-translation=\"\">lines()<\/code>, <code data-no-translation=\"\">strip()<\/code>, e <code data-no-translation=\"\">repeat(int)<\/code>.<\/td><td><code data-no-translation=\"\">text.strip()<\/code><\/td><td>Manipula\u00e7\u00e3o de strings mais poderosa.<\/td><\/tr><tr><td>Melhorias na API de arquivos<\/td><td>M\u00e9todos para ler e escrever arquivos como strings.<\/td><td><code data-no-translation=\"\">Files.writeString(path, \"Hello!\");<\/code><\/td><td>Simplifica as opera\u00e7\u00f5es de arquivo.<\/td><\/tr><tr><td>Unicode10<\/td><td>Suporta o padr\u00e3o Unicode mais recente.<\/td><td>N \/ D<\/td><td>Suporte de personagem mais abrangente.<\/td><\/tr><tr><td>Gravador de voo<\/td><td>Ferramenta de perfil integrada.<\/td><td>N \/ D<\/td><td>Monitoramento de desempenho aprimorado.<\/td><\/tr><tr><td>Remo\u00e7\u00e3o de m\u00f3dulos Java EE e CORBA<\/td><td>M\u00f3dulos Java EE e CORBA removidos.<\/td><td>N \/ D<\/td><td>JDK simplificado.<\/td><\/tr><tr><td>Descontinuar ferramentas e API do Pack200<\/td><td>Ferramentas de compacta\u00e7\u00e3o e APIs Pack200 obsoletas.<\/td><td>N \/ D<\/td><td>Sinalizando remo\u00e7\u00e3o futura.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">O Java 11 introduziu v\u00e1rios recursos e melhorias que valem a pena explorar. A seguir, nos aprofundaremos em cada um desses novos recursos, fornecendo descri\u00e7\u00f5es detalhadas, exemplos pr\u00e1ticos e os benef\u00edcios que eles trazem aos desenvolvedores.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sintaxe de vari\u00e1vel local para par\u00e2metros Lambda<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Uma das adi\u00e7\u00f5es mais not\u00e1veis no Java 11 \u00e9 o suporte para o <code data-no-translation=\"\">var<\/code> palavra-chave em express\u00f5es lambda. Este recurso simplifica a sintaxe e melhora a legibilidade do c\u00f3digo, permitindo que os desenvolvedores usem <code data-no-translation=\"\">var<\/code> para declarar os par\u00e2metros formais de express\u00f5es lambda digitadas implicitamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exemplo:<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">(var x, var y) -&gt; x + y\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Consist\u00eancia:<\/strong> Usando <code data-no-translation=\"\">var<\/code> nos par\u00e2metros lambda torna o c\u00f3digo consistente com as declara\u00e7\u00f5es de vari\u00e1veis locais, reduzindo a carga cognitiva dos desenvolvedores.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cliente HTTP (padr\u00e3o)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A nova API HTTP Client, padronizada em Java 11, suporta HTTP\/1.1 e HTTP\/2. Essa API moderna e rica em recursos facilita a execu\u00e7\u00e3o de opera\u00e7\u00f5es HTTP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exemplo:<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">HttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(&quot;https:\/\/example.com&quot;))\n    .build();\nHttpResponse&lt;String&gt; response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>API moderna:<\/strong> Oferece uma maneira mais poderosa e flex\u00edvel de lidar com solicita\u00e7\u00f5es e respostas HTTP.<\/li>\n\n\n\n<li><strong>Performance melhorada:<\/strong> Suporta HTTP\/2, que pode melhorar o desempenho com recursos como multiplexa\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Epsilon: um coletor de lixo aut\u00f4nomo<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O Java 11 apresenta o Epsilon, um coletor de lixo aut\u00f4nomo que n\u00e3o recupera mem\u00f3ria. Isto \u00e9 particularmente \u00fatil para testes de desempenho e avalia\u00e7\u00e3o de press\u00e3o de mem\u00f3ria.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exemplo:<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">java -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xmx2g MyApp\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Teste de performance:<\/strong> Ajuda em benchmarking e testes de desempenho, removendo a sobrecarga da coleta de lixo.<\/li>\n\n\n\n<li><strong>Gerenciamento de mem\u00f3ria:<\/strong> \u00datil em cen\u00e1rios onde a aloca\u00e7\u00e3o de mem\u00f3ria \u00e9 gerenciada externamente.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Controle de acesso baseado em Nest<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O controle de acesso baseado em ninho em Java 11 simplifica as regras de acesso para tipos aninhados, permitindo melhor encapsulamento e controle de acesso dentro de classes aninhadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exemplo:<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">public class OuterClass {\n    private static class NestedClass {\n        private void nestedMethod() {\n            System.out.println(&quot;Inside NestedClass&quot;);\n        }\n    }\n}\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Encapsulamento Melhorado:<\/strong> Fornece melhor controle sobre o acesso de membros de classe aninhados.<\/li>\n\n\n\n<li><strong>Desempenho:<\/strong> Melhora o desempenho simplificando as regras de controle de acesso.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Constantes din\u00e2micas de arquivo de classe<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A introdu\u00e7\u00e3o de <code data-no-translation=\"\">CONSTANT_Dynamic<\/code> no pool de constantes permite constantes mais flex\u00edveis e eficientes em arquivos de classe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Custo reduzido:<\/strong> Reduz o custo e as limita\u00e7\u00f5es associadas \u00e0 cria\u00e7\u00e3o de novos tipos de constantes de arquivo de classe.<\/li>\n\n\n\n<li><strong>Flexibilidade:<\/strong> Fornece maneiras mais din\u00e2micas e flex\u00edveis de lidar com constantes no bytecode Java.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Aprimoramentos da API de strings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java 11 traz diversas melhorias para o <code data-no-translation=\"\">String<\/code> classe, incluindo novos m\u00e9todos como <code data-no-translation=\"\">lines()<\/code>, <code data-no-translation=\"\">strip()<\/code>, <code data-no-translation=\"\">stripLeading()<\/code>, <code data-no-translation=\"\">stripTrailing()<\/code>, <code data-no-translation=\"\">repeat(int)<\/code>, e <code data-no-translation=\"\">isBlank()<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exemplos:<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">String multiline = &quot;line1\\nline2\\nline3&quot;;\nmultiline.lines().forEach(System.out::println);\n\nString text = &quot;  hello  &quot;;\nSystem.out.println(text.strip());           \/\/ &quot;hello&quot;\nSystem.out.println(text.stripLeading());    \/\/ &quot;hello  &quot;\nSystem.out.println(text.stripTrailing());   \/\/ &quot;  hello&quot;\nSystem.out.println(&quot;=&quot;.repeat(5));          \/\/ &quot;=====&quot;\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Manipula\u00e7\u00e3o poderosa de cordas:<\/strong> Novos m\u00e9todos fornecem maneiras mais poderosas e convenientes de manipular strings.<\/li>\n\n\n\n<li><strong>Limpeza de c\u00f3digo:<\/strong> Simplifica opera\u00e7\u00f5es comuns de strings, resultando em um c\u00f3digo mais limpo e leg\u00edvel.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Melhorias na API de arquivos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O <code data-no-translation=\"\">Files<\/code> classe em Java 11 inclui novos m\u00e9todos como <code data-no-translation=\"\">readString(Path)<\/code> e <code data-no-translation=\"\">writeString(Path, CharSequence)<\/code> para ler e gravar arquivos como strings.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exemplo:<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Path path = Paths.get(&quot;file.txt&quot;);\nFiles.writeString(path, &quot;Hello, World!&quot;);\nString content = Files.readString(path);\nSystem.out.println(content);\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Opera\u00e7\u00f5es de arquivo simplificadas:<\/strong> Torna a leitura e grava\u00e7\u00e3o em arquivos mais simples e menos propensa a erros.<\/li>\n\n\n\n<li><strong>Produtividade aprimorada:<\/strong> Reduz o c\u00f3digo clich\u00ea, aumentando a produtividade do desenvolvedor.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Unicode10<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java 11 suporta Unicode 10, que inclui novos caracteres e scripts, garantindo que os aplicativos Java possam lidar com os caracteres internacionais mais recentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Suporte abrangente a personagens:<\/strong> Fornece melhor suporte para internacionaliza\u00e7\u00e3o e localiza\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Gravador de voo<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java Flight Recorder (JFR) agora est\u00e1 inclu\u00eddo no OpenJDK, fornecendo uma ferramenta poderosa para cria\u00e7\u00e3o de perfil e monitoramento de aplicativos Java.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Monitoramento de desempenho:<\/strong> Ajuda no diagn\u00f3stico de problemas de desempenho registrando informa\u00e7\u00f5es detalhadas sobre a execu\u00e7\u00e3o da aplica\u00e7\u00e3o.<\/li>\n\n\n\n<li><strong>Ferramenta integrada:<\/strong> Integrado ao JDK, tornando-o prontamente dispon\u00edvel sem a necessidade de ferramentas externas.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Remo\u00e7\u00e3o de m\u00f3dulos Java EE e CORBA<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java 11 removeu os m\u00f3dulos Java EE e CORBA, que estavam obsoletos em vers\u00f5es anteriores. Estas APIs est\u00e3o agora dispon\u00edveis como bibliotecas separadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>JDK simplificado:<\/strong> Reduz o tamanho e a complexidade do JDK, tornando-o mais leve e eficiente.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Descontinuar as ferramentas e API do Pack200<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As ferramentas de compacta\u00e7\u00e3o e APIs Pack200 foram descontinuadas no Java 11, sinalizando sua remo\u00e7\u00e3o em uma vers\u00e3o futura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benef\u00edcios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Preparado para o futuro:<\/strong> Incentiva os desenvolvedores a migrar para ferramentas de compacta\u00e7\u00e3o mais modernas, preparando-se para a eventual remo\u00e7\u00e3o do Pack200.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Conclus\u00e3o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java 11 traz uma s\u00e9rie de novos recursos e melhorias que aprimoram os recursos da linguagem e a produtividade do desenvolvedor. Desde a moderna API do cliente HTTP at\u00e9 os poderosos aprimoramentos da API de strings e arquivos, essas atualiza\u00e7\u00f5es tornam o Java uma plataforma mais robusta e eficiente. Embora a remo\u00e7\u00e3o de m\u00f3dulos desatualizados e a introdu\u00e7\u00e3o de novos coletores de lixo como o Epsilon mostrem um foco claro no desempenho e na moderniza\u00e7\u00e3o, os desenvolvedores devem adotar essas mudan\u00e7as para aproveitar todo o potencial do Java 11.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tabelas e descri\u00e7\u00f5es detalhadas:<\/strong> Para fornecer uma compreens\u00e3o mais abrangente, abaixo est\u00e3o descri\u00e7\u00f5es detalhadas e exemplos de alguns recursos com tabelas incorporadas:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tabela de aprimoramentos de API de string<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>M\u00e9todo<\/th><th>Descri\u00e7\u00e3o<\/th><th>Exemplo<\/th><\/tr><\/thead><tbody><tr><td><code data-no-translation=\"\">lines()<\/code><\/td><td>Divide a string em linhas.<\/td><td><code data-no-translation=\"\">multiline.lines().forEach(System.out::println);<\/code><\/td><\/tr><tr><td><code data-no-translation=\"\">strip()<\/code><\/td><td>Remove espa\u00e7os em branco \u00e0 esquerda e \u00e0 direita.<\/td><td><code data-no-translation=\"\">text.strip()<\/code><\/td><\/tr><tr><td><code data-no-translation=\"\">stripLeading()<\/code><\/td><td>Remove os espa\u00e7os em branco iniciais.<\/td><td><code data-no-translation=\"\">text.stripLeading()<\/code><\/td><\/tr><tr><td><code data-no-translation=\"\">stripTrailing()<\/code><\/td><td>Remove espa\u00e7os em branco \u00e0 direita.<\/td><td><code data-no-translation=\"\">text.stripTrailing()<\/code><\/td><\/tr><tr><td><code data-no-translation=\"\">repeat(int)<\/code><\/td><td>Repete a string determinada vezes.<\/td><td><code data-no-translation=\"\">\"=\".repeat(5)<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Os novos recursos do Java 11 garantem que os desenvolvedores tenham acesso a ferramentas e APIs modernas e eficientes, tornando-o uma atualiza\u00e7\u00e3o essencial para qualquer projeto de desenvolvimento Java.<\/p>","protected":false},"excerpt":{"rendered":"<p>Feature Description Example Benefits Local-Variable Syntax for Lambda Parameters Allows the use of var in lambda expressions for improved readability. (var x, var y) -&gt; x + y Consistency in code. HTTP Client (Standard) New HTTP Client API supporting HTTP\/1.1 and HTTP\/2. HttpClient client = HttpClient.newHttpClient(); Modern, feature-rich API. Epsilon: A No-Op Garbage Collector A [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":925563,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-925546","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles"],"acf":[],"_links":{"self":[{"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/posts\/925546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/comments?post=925546"}],"version-history":[{"count":4,"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/posts\/925546\/revisions"}],"predecessor-version":[{"id":926504,"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/posts\/925546\/revisions\/926504"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/media\/925563"}],"wp:attachment":[{"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/media?parent=925546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/categories?post=925546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/proxyelite.info\/pt\/wp-json\/wp\/v2\/tags?post=925546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}