<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6448280182389226496</id><updated>2026-04-13T19:40:22.031-03:00</updated><category term="Java"/><category term="OpenJDK"/><category term="JDK"/><category term="JVM"/><category term="Tutorial"/><category term="Guia"/><category term="Programador"/><category term="Java8"/><category term="Plataforma"/><category term="AdoptOpenJDK"/><category term="Certificação"/><category term="1Z0-808"/><category term="Java11"/><category term="Java17"/><category term="Spring"/><category term="Carreira"/><category term="Cloud"/><category term="Oracle"/><category term="docker"/><category term="2024"/><category term="GraalVM"/><category term="JIT"/><category term="OracleJDK"/><category term="Records"/><category term="Sealed"/><category term="pattern"/><category term="Java 21"/><category term="Java16"/><category term="Java18"/><category term="SpringBoot"/><category term="instanceof"/><category term="kubernetes"/><category term="match"/><category term="AWS"/><category term="BigData"/><category term="Compilation"/><category term="Compilação"/><category term="Inglês"/><category term="JDK 25"/><category term="JDK24"/><category term="Java 13"/><category term="Jornada"/><category term="LTS"/><category term="Lambda"/><category term="Nuvem"/><category term="Quarkus"/><category term="Spring Boot"/><category term="bytecode"/><category term="junit"/><category term="minikube"/><category term="retrospectiva"/><category term="testes"/><category term="2023"/><category term="2025"/><category term="30 anos"/><category term="AOT"/><category term="Adoptium"/><category term="Android"/><category term="Atualizações de Frameworks"/><category term="Automação"/><category term="Azul"/><category term="Azure"/><category term="CRaC"/><category term="Cloud-Native"/><category term="Criptografia"/><category term="DSA"/><category term="DateTime"/><category term="EMT4J"/><category term="Ecossistema Java"/><category term="GC"/><category term="Games"/><category term="Glossario"/><category term="Heroku"/><category term="Hora"/><category term="JDK22"/><category term="JDK23"/><category term="Jakarta EE"/><category term="Java 24"/><category term="Java 25"/><category term="Java Champions"/><category term="Java15"/><category term="Java21"/><category term="Java24"/><category term="Java25"/><category term="JavaEE"/><category term="JavaME"/><category term="JavaSE"/><category term="Javadoc"/><category term="Jogos"/><category term="Junit4"/><category term="Junit5"/><category term="Junit6"/><category term="KDF"/><category term="Kotlin"/><category term="Leyden"/><category term="ML-KEM"/><category term="Markdown"/><category term="Micronaut"/><category term="Microsoft"/><category term="Mironaut"/><category term="Modernização Java"/><category term="Novidades Agosto 2025"/><category term="PDF"/><category term="Project Loom"/><category term="RFC-9180"/><category term="Spring Boot 4"/><category term="Spring Framework"/><category term="Spring Framework 7"/><category term="Tendências Java"/><category term="Time"/><category term="Timezone"/><category term="Web"/><category term="instancio"/><category term="java19"/><category term="java22"/><category term="migrate"/><category term="newrelic"/><category term="pdfbox"/><title type='text'>Guia do Java</title><subtitle type='html'>Blog sobre a plataforma Java e assuntos relacionados</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>66</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-7478112597815010620</id><published>2025-08-25T13:10:00.000-03:00</published><updated>2025-08-25T13:10:17.712-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automação"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="junit"/><category scheme="http://www.blogger.com/atom/ns#" term="Junit4"/><category scheme="http://www.blogger.com/atom/ns#" term="Junit5"/><category scheme="http://www.blogger.com/atom/ns#" term="Junit6"/><category scheme="http://www.blogger.com/atom/ns#" term="Kotlin"/><category scheme="http://www.blogger.com/atom/ns#" term="testes"/><title type='text'>Novidades e o futuro do JUnit by Marc Philipp</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj0FQ94uwpJGkoTHa5MVGsqnTZU6TGMEguB-vxzNZy8YZOEGna_0ejG_YLOS2JGcqOJ_7MqI0yel0ne5vAoAL7WnXx_RbR_0OSf2gYuGe_XtmLaZ61xmd4kg2gnWFAXILnpdYHt2YXSPqFA8NPGcHnILAuWZrBSrchlzqWtxDo7ATJMnYKuWOcz1NO8RS2a&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;280&quot; data-original-width=&quot;280&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj0FQ94uwpJGkoTHa5MVGsqnTZU6TGMEguB-vxzNZy8YZOEGna_0ejG_YLOS2JGcqOJ_7MqI0yel0ne5vAoAL7WnXx_RbR_0OSf2gYuGe_XtmLaZ61xmd4kg2gnWFAXILnpdYHt2YXSPqFA8NPGcHnILAuWZrBSrchlzqWtxDo7ATJMnYKuWOcz1NO8RS2a&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;Olá, pessoal!&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Hoje vamos mergulhar nas novidades e no futuro do JUnit, o framework de testes mais popular do Java. Vamos fazer um resumo de uma sessão com Marc Philipp, o &lt;em&gt;team lead&lt;/em&gt; da equipe JUnit, que está agora trabalhando em tempo integral no projeto, graças ao financiamento do Sovereign Tech Fund. Preparem-se para um resumo didático sobre o que há de novo e o que está por vir!&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;O JUnit em um Relance: Um Legado de Testes&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;O JUnit é um dos projetos &lt;em&gt;open source&lt;/em&gt; Java mais antigos, criado por Kent Beck e Erich Gamma em 1997. É um projeto independente, sem o apoio de uma única empresa, e grande parte do trabalho é feita no tempo livre dos colaboradores, embora Marc esteja em tempo integral atualmente.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Existem algumas gerações do JUnit:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;JUnit 4.x:&lt;/strong&gt; Ainda muito utilizado, com &lt;em&gt;baseline&lt;/em&gt; no Java 5 e agora em modo de manutenção, recebendo apenas correções críticas e de segurança.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;JUnit 5.x:&lt;/strong&gt; Lançado em 2017, com &lt;em&gt;baseline&lt;/em&gt; no Java 8 e suporte a recursos modernos do Java. É o foco principal das discussões atuais.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;JUnit 6.0:&lt;/strong&gt; A próxima geração, que promete simplificar a migração e trazer novos requisitos, como o Java 17.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Marc Philipp, que é um &lt;em&gt;committer&lt;/em&gt; desde 2012 e &lt;em&gt;team lead&lt;/em&gt; desde 2016, tem trabalhado em várias melhorias importantes.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;As Mais Recentes Melhorias no JUnit 5.13&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;As versões mais recentes do JUnit 5.x, especialmente a 5.13, trouxeram recursos muito aguardados:&lt;/p&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;1. Relatórios de Teste Aprimorados&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;O JUnit agora oferece &lt;strong&gt;relatórios de teste muito mais legíveis e ricos&lt;/strong&gt;, um avanço significativo em relação aos formatos legados.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Open Test Reporting XML Format:&lt;/strong&gt; Introduzido na versão 5.9, este novo formato XML é pensado para substituir o antigo, que não suportava recursos modernos do JUnit Platform, como tags, estruturas hierárquicas e testes aninhados. Ele funciona de forma &lt;strong&gt;baseada em eventos&lt;/strong&gt; (início e fim de cada nó da árvore de testes) e também em um &lt;strong&gt;formato hierárquico&lt;/strong&gt;, que é um pouco mais legível por humanos, embora ainda seja XML.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Relatório HTML:&lt;/strong&gt; A grande novidade é a capacidade de gerar um &lt;strong&gt;relatório HTML completo&lt;/strong&gt; a partir dos arquivos XML. Isso torna a análise dos resultados dos testes muito mais amigável.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Como Funciona:&lt;/strong&gt; Você precisa adicionar a dependência &lt;code data-backticks=&quot;1&quot;&gt;junit-platform-reporting&lt;/code&gt; e ativar a geração do formato XML via configuração. Em seguida, uma &lt;strong&gt;ferramenta CLI&lt;/strong&gt; do projeto Open Test Reporting converte esses arquivos XML em um relatório HTML.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Recursos do Relatório HTML:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Visão Geral Clara:&lt;/strong&gt; Barra de status (verde para sucesso, vermelho para falha), informações sobre o ambiente de execução (OS, JVM) e até mesmo o status do repositório Git no momento da execução.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Árvore de Testes:&lt;/strong&gt; Uma representação hierárquica clara dos seus testes, similar ao que você vê na IDE.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Detalhes de Falha:&lt;/strong&gt; Em caso de falha, você obtém a &lt;strong&gt;stack trace completa&lt;/strong&gt;, com a opção de copiá-la facilmente para sua IDE.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Entradas de Relatório:&lt;/strong&gt; Possibilidade de &lt;strong&gt;publicar dados arbitrários&lt;/strong&gt; (como &lt;em&gt;string-string maps&lt;/em&gt;) ou &lt;strong&gt;anexar arquivos&lt;/strong&gt; (textos são mostrados &lt;em&gt;inline&lt;/em&gt;, imagens são incorporadas) diretamente no relatório, o que é útil para testes de UI, por exemplo.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Modo Escuro:&lt;/strong&gt; Sim, porque todo mundo gosta!&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Integração com CI:&lt;/strong&gt; Embora não haja uma integração direta com a UI do GitHub Actions para HTML completo, é possível &lt;strong&gt;arquivar o relatório HTML&lt;/strong&gt; como um artefato. O arquivo HTML é &lt;em&gt;self-contained&lt;/em&gt;, facilitando o compartilhamento.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Formato Agnóstico:&lt;/strong&gt; O esquema XML subjacente é &lt;strong&gt;agnóstico à plataforma&lt;/strong&gt;, o que significa que outras &lt;em&gt;frameworks&lt;/em&gt; de teste (como PHPUnit) já estão começando a adotar esse formato.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;2. Classes de Teste Parametrizadas&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Esta é uma funcionalidade altamente solicitada, que permite &lt;strong&gt;parametrizar uma classe inteira de testes&lt;/strong&gt;, em vez de apenas métodos individuais.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Motivação:&lt;/strong&gt; Evitar a duplicação de código quando múltiplos métodos de teste precisam ser executados com o mesmo conjunto de parâmetros. Imagine testar diferentes implementações de uma interface (como &lt;code data-backticks=&quot;1&quot;&gt;List&lt;/code&gt;) com o mesmo conjunto de testes.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Como Usar:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Anote sua classe com &lt;code data-backticks=&quot;1&quot;&gt;@ParameterizedClass&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Use anotações de origem (&lt;code data-backticks=&quot;1&quot;&gt;SourceAnnotation&lt;/code&gt;) no nível da classe (como &lt;code data-backticks=&quot;1&quot;&gt;@MethodSource&lt;/code&gt; ou &lt;code data-backticks=&quot;1&quot;&gt;@ValueSource&lt;/code&gt;) para fornecer os argumentos.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Os parâmetros podem ser injetados via &lt;strong&gt;injeção de campo&lt;/strong&gt; (anotando o campo com &lt;code data-backticks=&quot;1&quot;&gt;@Parameter&lt;/code&gt;) ou &lt;strong&gt;injeção de construtor&lt;/strong&gt; (ideal para classes &lt;code data-backticks=&quot;1&quot;&gt;record&lt;/code&gt; ou com construtores personalizados).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Cuidado com Dados Mutáveis:&lt;/strong&gt; Se os dados ou instâncias injetadas forem mutáveis, a ordem de execução dos testes pode importar, levando a &lt;em&gt;flaky tests&lt;/em&gt;. O ideal é usar &lt;strong&gt;dados imutáveis&lt;/strong&gt; ou implementar métodos &lt;code data-backticks=&quot;1&quot;&gt;@AfterEach&lt;/code&gt; para resetar o estado.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Conversores Customizados:&lt;/strong&gt; Você pode usar &lt;code data-backticks=&quot;1&quot;&gt;@ConvertWith&lt;/code&gt; para converter &lt;em&gt;strings&lt;/em&gt; ou outros tipos para seus objetos, especialmente útil com &lt;code data-backticks=&quot;1&quot;&gt;@ValueSource&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Métodos de Ciclo de Vida Específicos:&lt;/strong&gt; Há suporte para métodos &lt;code data-backticks=&quot;1&quot;&gt;static&lt;/code&gt; &lt;code data-backticks=&quot;1&quot;&gt;@BeforeParameterizedClassInvocation&lt;/code&gt; para inicializações complexas.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Combinando Recursos:&lt;/strong&gt; É possível combinar classes parametrizadas com testes aninhados e até mesmo métodos de teste parametrizados, embora isso possa levar a uma &quot;explosão&quot; de combinações de testes.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;text-align: justify;&quot;&gt;3. Relato de Problemas de Descoberta de Testes&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Um pesadelo para qualquer desenvolvedor é escrever um teste e ele não ser executado. Antes da versão 5.13, o JUnit &lt;strong&gt;silenciosamente ignorava testes malformados&lt;/strong&gt;. Agora, ele protege você contra isso!&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;O Problema:&lt;/strong&gt; Métodos anotados com &lt;code data-backticks=&quot;1&quot;&gt;@Test&lt;/code&gt; que não são válidos (por exemplo, retornam um &lt;code data-backticks=&quot;1&quot;&gt;int&lt;/code&gt; em vez de &lt;code data-backticks=&quot;1&quot;&gt;void&lt;/code&gt; ou &lt;code data-backticks=&quot;1&quot;&gt;Unit&lt;/code&gt; no Kotlin, classes aninhadas estáticas) eram descartados sem aviso.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;A Solução:&lt;/strong&gt; O JUnit Platform agora &lt;strong&gt;coleta e relata esses problemas&lt;/strong&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Warnings e Erros Críticos:&lt;/strong&gt; Problemas não críticos são logados como &lt;em&gt;warnings&lt;/em&gt;. Problemas críticos podem &lt;strong&gt;fazer a execução do teste falhar&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Severidade Configurável:&lt;/strong&gt; A severidade padrão para falha é &quot;error&quot;, mas você pode configurá-la para &quot;warning&quot; ou &quot;info&quot;, garantindo que qualquer problema leve à falha da &lt;em&gt;build&lt;/em&gt;, semelhante ao tratamento de &lt;em&gt;warnings&lt;/em&gt; como erros em compiladores.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Exemplos:&lt;/strong&gt; Retorno de tipo incorreto em &lt;code data-backticks=&quot;1&quot;&gt;@Test&lt;/code&gt; ou &lt;code data-backticks=&quot;1&quot;&gt;@TestFactory&lt;/code&gt;, classes aninhadas declaradas como &lt;code data-backticks=&quot;1&quot;&gt;static&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Assistência da IDE:&lt;/strong&gt; IDEs como o IntelliJ IDEA já oferecem inspeções para muitos desses problemas, mas nem sempre os desenvolvedores prestam atenção aos avisos visuais. A falha da &lt;em&gt;build&lt;/em&gt; torna isso impossível de ignorar.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;O Roteiro para o JUnit 6.0&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;A próxima grande versão do JUnit, a 6.0, trará algumas mudanças importantes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Migração Simplificada:&lt;/strong&gt; A boa notícia é que &lt;strong&gt;não será uma migeração drástica&lt;/strong&gt; como a do JUnit 4 para o 5. A API do JUnit Jupiter permanecerá amplamente a mesma.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Requisitos de Versão:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Java 17:&lt;/strong&gt; Será o &lt;em&gt;baseline&lt;/em&gt; mínimo necessário.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Kotlin 2.2:&lt;/strong&gt; Também será um requisito.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Novidades:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;JSpecify:&lt;/strong&gt; Informações de anulabilidade (&lt;code data-backticks=&quot;1&quot;&gt;nullability&lt;/code&gt;) estarão disponíveis em todas as APIs.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Remoção de APIs Deprecadas:&lt;/strong&gt; APIs que estavam deprecadas desde o 5.10 (há cerca de 3 anos) serão removidas, incluindo o &lt;code data-backticks=&quot;1&quot;&gt;JUnitPlatformRunner&lt;/code&gt; (um adaptador para rodar testes JUnit 5 em ambientes JUnit 4).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Depreciação de Camadas de Compatibilidade:&lt;/strong&gt; O &lt;code data-backticks=&quot;1&quot;&gt;JUnit Vintage Engine&lt;/code&gt; (necessário para rodar testes JUnit 3 e 4 na plataforma JUnit 5) será deprecado, mas não para remoção imediata, sendo uma solução temporária para migrações.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Suporte de Longo Prazo para 5.13:&lt;/strong&gt; Para aqueles que não podem migrar para Java 17 imediatamente, o JUnit oferecerá &lt;strong&gt;suporte de longo prazo (LTS) para a versão 5.13&lt;/strong&gt;, com correções de &lt;em&gt;bugs&lt;/em&gt; e segurança, mas sem novos recursos.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Conclusão&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;O JUnit continua evoluindo, trazendo ferramentas cada vez mais robustas e amigáveis para garantir a qualidade do seu código. Os novos relatórios HTML, as classes de teste parametrizadas e a detecção proativa de problemas de descoberta de testes são adições fantásticas que certamente farão a diferença no dia a dia dos desenvolvedores.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Experimente os novos recursos&lt;/strong&gt;, especialmente os relatórios HTML e as classes parametrizadas, e &lt;strong&gt;não deixe de dar seu &lt;em&gt;feedback&lt;/em&gt;&lt;/strong&gt; no repositório do GitHub. É assim que o projeto continua a melhorar! E fique de olho no JUnit 6.0, que promete ser uma atualização mais tranquila e poderosa.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Até a próxima!&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Referências&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;357&quot; src=&quot;https://www.youtube.com/embed/-cY5BJaHz6E&quot; width=&quot;560&quot; youtube-src-id=&quot;-cY5BJaHz6E&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/7478112597815010620/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2025/08/novidades-e-o-futuro-do-junit-by-marc.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7478112597815010620'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7478112597815010620'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2025/08/novidades-e-o-futuro-do-junit-by-marc.html' title='Novidades e o futuro do JUnit by Marc Philipp'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEj0FQ94uwpJGkoTHa5MVGsqnTZU6TGMEguB-vxzNZy8YZOEGna_0ejG_YLOS2JGcqOJ_7MqI0yel0ne5vAoAL7WnXx_RbR_0OSf2gYuGe_XtmLaZ61xmd4kg2gnWFAXILnpdYHt2YXSPqFA8NPGcHnILAuWZrBSrchlzqWtxDo7ATJMnYKuWOcz1NO8RS2a=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-8005320663148721541</id><published>2025-08-16T11:19:00.000-03:00</published><updated>2025-08-16T11:19:00.179-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Atualizações de Frameworks"/><category scheme="http://www.blogger.com/atom/ns#" term="Ecossistema Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java 24"/><category scheme="http://www.blogger.com/atom/ns#" term="Java 25"/><category scheme="http://www.blogger.com/atom/ns#" term="Modernização Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Novidades Agosto 2025"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Boot 4"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Framework 7"/><category scheme="http://www.blogger.com/atom/ns#" term="Tendências Java"/><title type='text'>Principais Novidades do Ecossistema Java: Agosto 2025</title><content type='html'>&lt;meta charset=&quot;UTF-8&quot;&gt;&lt;/meta&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;Principais Novidades do Ecossistema Java: Agosto 2025&lt;/h1&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Agosto tem sido marcado por anúncios importantes no universo Java, especialmente com os lançamentos e milestones de Spring Framework 7 e Spring Boot 4 e o anúncio oficial do Java 25 como próxima versão LTS. Essas novidades representam mudanças profundas para quem desenvolve aplicações modernas em Java, trazendo recursos de resiliência, modularidade e integração com os padrões mais atuais do mercado. Neste post, vamos destacar os principais acontecimentos, sugerir tópicos para estudo e detalhar as principais.&lt;/span&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;Lista dos Tópicos da Semana&lt;/span&gt;&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Java 25: Lançamento oficial da versão LTS&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;span style=&quot;font-size: large;&quot;&gt;O Java 25 chega à maturidade com data de lançamento prevista para 16 de setembro de 2025, consolidando-se como uma versão de suporte de longo prazo repleta de inovações para a comunidade.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Spring Framework 7 &amp;amp; Spring Boot 4:&lt;br /&gt;&lt;/b&gt;Novas versões trazem arquitetura modular, resiliência nativa, APIs modernizadas e integração aprimorada com o ecossistema Java.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;h3&gt;Java 25: O Novo LTS está Chegando&lt;/h3&gt;&lt;div&gt;&lt;b&gt;O que mudou?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O Java 25 chega como versão LTS em 16 de setembro de 2025, após um ciclo de release candidates em agosto.&lt;/div&gt;&lt;div&gt;Traz pelo menos 18 novos recursos, desde melhorias no JDK Flight Recorder (monitoramento e criação de perfil), API para codificações PEM, otimizações de desempenho em String e avanços em criptografia.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Por que é relevante?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Por ser LTS, terá suporte estendido da Oracle (mínimo de 5 anos).&lt;/li&gt;&lt;li&gt;Foco em estabilidade, performance, segurança e usabilidade.&lt;/li&gt;&lt;li&gt;Possibilita modernização de aplicações e adoção segura pelas empresas.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Principais melhorias e recursos&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Perfil de tempo de CPU no Linux via JFR.&lt;/li&gt;&lt;li&gt;Codificação/decodificação PEM para objetos criptográficos.&lt;/li&gt;&lt;li&gt;Otimização da função String::hashCode para apps que usam muitas strings como chave.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Links para saber mais&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/projects/jdk/25/&quot; target=&quot;_blank&quot;&gt;OpenJDK JDK 25 Release&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.infoq.com/news/2025/08/java-news-roundup-aug04-2025/&quot; target=&quot;_blank&quot;&gt;Detalhes InfoQ Java News&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.dio.me/articles/jdk-25-uma-versao-lts-com-inovacoes-para-desenvolvedores-java-21fd4fc28a67&quot; target=&quot;_blank&quot;&gt;DIO.me — JDK 25 LTS&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Spring Framework 7 &amp;amp; Spring Boot 4&lt;/h3&gt;&lt;div&gt;&lt;b&gt;Novidades mais relevantes e o que mudou&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Spring Framework 7: foco em resiliência (@Retryable e @ConcurrencyLimit nativos), JMS Client fluente, mensagem unificada, novo suporte para Hibernate ORM 7/JPA 3.2, melhor integração com Ecossistema Java (Kotlin 2.2, Jakarta EE 11, GraalVM 24), Jackson 3.x e null safety via JSpecify.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Spring Boot 4: código modular, dependências em Maven Central, novo metadata para propriedades, relatório SSL melhorado, múltiplos TaskDecorator automáticos e auto configuração do JMS Client.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Por que é relevante?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Permite construção de microserviços mais robustos e modernos.&lt;/li&gt;&lt;li&gt;Aumenta a produtividade em projetos enterprise e facilita a migração de versões antigas.&lt;/li&gt;&lt;li&gt;Integra-se com as tendências atuais de Cloud Native e programação reativa.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Principais melhorias&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Resiliência nativa para métodos críticos.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;API de JMS mais legível, modelo builder.&lt;/li&gt;&lt;li&gt;Arquitetura modular para as dependências.&lt;/li&gt;&lt;li&gt;Frequentemente publicada em Maven Central, agilizando CI/CD.&lt;/li&gt;&lt;li&gt;Compatibilidade com as últimas versões de frameworks e linguagens parceiros.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Links para saber mais&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/&quot; target=&quot;_blank&quot;&gt;Blog Foojay.io — Preparing for Spring Framework 7 and Spring Boot 4&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-7.0-Release-Notes&quot; target=&quot;_blank&quot;&gt;Spring Framework 7 Release Notes&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide&quot; target=&quot;_blank&quot;&gt;Spring Boot 4 Migration Guide&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Conclusão&lt;/h2&gt;&lt;div&gt;Agosto de 2025 marca uma evolução relevante para quem trabalha com o ecossistema Java. O lançamento do Java 25 como LTS e a chegada de Spring Framework 7 e Spring Boot 4 reforçam o compromisso da comunidade com inovação, segurança e produtividade. Fique atento às datas, teste os recursos novos e compartilhe sua opinião: comente abaixo o que mais te chamou atenção ou envie sugestões de pauta!&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Referências&lt;/h2&gt;&lt;div&gt;&lt;a href=&quot;https://foojay.io/today/preparing-for-spring-framework-7-and-spring-boot-4/&quot; target=&quot;_blank&quot;&gt;Foojay.io — Preparing for Spring Framework 7 and Spring Boot 4&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/projects/jdk/25/&quot; target=&quot;_blank&quot;&gt;OpenJDK — JDK 25 Release Schedule&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.dio.me/articles/jdk-25-uma-versao-lts-com-inovacoes-para-desenvolvedores-java-21fd4fc28a67&quot; target=&quot;_blank&quot;&gt;DIO.me — JDK 25: Uma Versão LTS com Inovações para Desenvolvedores Java&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.infoq.com/news/2025/08/java-news-roundup-aug04-2025/&quot; target=&quot;_blank&quot;&gt;InfoQ — Java News Roundup August 2025&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://spring.io/blog/2025/07/17/spring-framework-7-0-0-M7-available-now&quot; target=&quot;_blank&quot;&gt;Spring Framework 7.0.0 M7 — Release Notes&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/8005320663148721541/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2025/08/principais-novidades-do-ecossistema.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/8005320663148721541'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/8005320663148721541'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2025/08/principais-novidades-do-ecossistema.html' title='Principais Novidades do Ecossistema Java: Agosto 2025'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-2943047064651861519</id><published>2025-05-07T21:41:00.001-03:00</published><updated>2025-05-07T21:41:18.024-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2025"/><category scheme="http://www.blogger.com/atom/ns#" term="30 anos"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="GraalVM"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java25"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaEE"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaME"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaSE"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK 25"/><category scheme="http://www.blogger.com/atom/ns#" term="JVM"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Plataforma"/><category scheme="http://www.blogger.com/atom/ns#" term="Programador"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Boot"/><category scheme="http://www.blogger.com/atom/ns#" term="SpringBoot"/><title type='text'>Java 30 anos</title><content type='html'>&lt;meta charset=&quot;UTF-8&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;width=device-width, initial-scale=1&quot; name=&quot;viewport&quot;&gt;&lt;/meta&gt; &lt;!--Título da página/post--&gt; &lt;title&gt;Java 30 anos | Guia do Java&lt;/title&gt; &lt;!--Descrição SEO--&gt; &lt;meta content=&quot;Em maio de 2025, a linguagem Java completa 30 anos desde seu lançamento oficial pela Sun Microsystems, marcando três décadas de inovação, evolução e onipresença no desenvolvimento de software mundial&quot; name=&quot;description&quot;&gt;&lt;/meta&gt; &lt;!--Palavras-chave--&gt; &lt;meta content=&quot;Java, JDK 25, Spring Framework, OpenJDK, Project Loom, GraalVM, Jakarta EE, MicroProfile, Cloud-Native, Segurança Java, JDConf, Tendências Java 2025, Guia do Java, Atualizações Java&quot; name=&quot;keywords&quot;&gt;&lt;/meta&gt; &lt;!--Autor--&gt; &lt;meta content=&quot;Guia do Java&quot; name=&quot;author&quot;&gt;&lt;/meta&gt; &lt;!--Data de publicação e atualização--&gt; &lt;meta content=&quot;2025-05-07T05:39:00-03:00&quot; property=&quot;article:published_time&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;2025-04-24T05:39:00-03:00&quot; property=&quot;article:modified_time&quot;&gt;&lt;/meta&gt; &lt;!--Open Graph para Facebook, LinkedIn etc--&gt; &lt;meta content=&quot;article&quot; property=&quot;og:type&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Java 30 anos | Guia do Java&quot; property=&quot;og:title&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Em maio de 2025, a linguagem Java completa 30 anos desde seu lançamento oficial pela Sun Microsystems, marcando três décadas de inovação, evolução e onipresença no desenvolvimento de software mundial&quot; property=&quot;og:description&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;https://www.guiadojava.com.br/2025/05/java-30-anos.html&quot; property=&quot;og:url&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;https://lh7-rt.googleusercontent.com/docsz/AD_4nXfdenKaXtr2E9bGU-DxLHjste6-5BmOM2xaw9wMImJKJ_Czb0H3q26xgY5w_RkFZhyRVskfrk4tZXYch9LDmNw5EOZdK7wOT774NL8R0t0ZZKggLgSehwTtZPjwSZFTWhzDo3UR?key=hpH7aAsuTmHE1mXqOjkOfBwH&quot; property=&quot;og:image&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Guia do Java&quot; property=&quot;og:site_name&quot;&gt;&lt;/meta&gt; &lt;!--Twitter Card--&gt; &lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Java 30 anos&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;https://lh7-rt.googleusercontent.com/docsz/AD_4nXfdenKaXtr2E9bGU-DxLHjste6-5BmOM2xaw9wMImJKJ_Czb0H3q26xgY5w_RkFZhyRVskfrk4tZXYch9LDmNw5EOZdK7wOT774NL8R0t0ZZKggLgSehwTtZPjwSZFTWhzDo3UR?key=hpH7aAsuTmHE1mXqOjkOfBwH&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt; &lt;!--Canonical (importante para SEO em Blogger)--&gt; &lt;link href=&quot;https://www.guiadojava.com.br/2025/05/java-30-anos.html&quot; rel=&quot;canonical&quot;&gt;&lt;/link&gt; &lt;!--Favicon--&gt; &lt;link href=&quot;https://www.guiadojava.com.br/favicon.ico&quot; rel=&quot;icon&quot; type=&quot;image/x-icon&quot;&gt;&lt;/link&gt; &lt;!--Robots--&gt; &lt;meta content=&quot;index, follow&quot; name=&quot;robots&quot;&gt;&lt;/meta&gt;

&lt;span id=&quot;docs-internal-guid-fc7f1719-7fff-78ce-2a17-57e6971c9ee7&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;img height=&quot;479&quot; src=&quot;https://lh7-rt.googleusercontent.com/docsz/AD_4nXfdenKaXtr2E9bGU-DxLHjste6-5BmOM2xaw9wMImJKJ_Czb0H3q26xgY5w_RkFZhyRVskfrk4tZXYch9LDmNw5EOZdK7wOT774NL8R0t0ZZKggLgSehwTtZPjwSZFTWhzDo3UR?key=hpH7aAsuTmHE1mXqOjkOfBwH&quot; style=&quot;font-family: Arial, sans-serif; margin-left: 0px; margin-top: 0px; white-space-collapse: preserve;&quot; width=&quot;718&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java 30 anos&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Em maio de 2025, a linguagem Java completa 30 anos desde seu lançamento oficial pela Sun Microsystems, marcando três décadas de inovação, evolução e onipresença no desenvolvimento de software mundial. De sua origem como projeto &quot;Green&quot; na Sun, passando por sua adoção massiva como linguagem empresarial, até seu papel atual em cloud computing, microsserviços e inteligência artificial, o Java não apenas sobreviveu às intensas mudanças na indústria de tecnologia, mas se reinventou continuamente. Este marco de 30 anos celebra uma tecnologia que revolucionou a forma como desenvolvemos software, estabelecendo o paradigma &quot;Write Once, Run Anywhere&quot; que influenciou gerações de programadores e continua relevante hoje com sua sólida comunidade, rico ecossistema de frameworks, e constante evolução tecnológica.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Do Oak ao Java: Os Primórdios da Linguagem (1989-1995)&lt;/span&gt;&lt;/h1&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Embora tenha 30 anos, o início ocorreu ainda na década de 80. Em 1989, James Gosling, então engenheiro da Sun Microsystems, criou uma linguagem chamada &quot;Oak&quot; (Carvalho), nome inspirado na árvore que podia ser vista da janela de seu escritório. Nesta época em que a internet ainda engatinhava e a necessidade por linguagens multiplataforma era crescente.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; font-size: large; height: 236px; overflow: hidden; width: 235px;&quot;&gt;&lt;img height=&quot;219&quot; src=&quot;https://lh7-rt.googleusercontent.com/docsz/AD_4nXcqWW7fZz8SvodiGRkaRH5uPRWO7S6Uh-fD5yi7135QJHoHWzqwvemUUPCuORKFBnOoFxVYdkBj_DbpM9XMRWodjLDGdrA3GrSsxdwV6Obpoi1k3Ewds4_X6771VyYOSeH14s5oOg=w218-h219?key=hpH7aAsuTmHE1mXqOjkOfBwH&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;218&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O desenvolvimento mais formal começou em 1991, quando Mike Sheridan, Patrick Naughton e James Gosling iniciaram o &quot;Projeto Green&quot; na Sun Microsystems. A ideia inicial era criar uma tecnologia para programação de dispositivos inteligentes, como eletrodomésticos - algo revolucionário para a época.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O nascimento do &quot;Star7&quot;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Em setembro de 1992, a equipe fez a primeira demonstração da nova plataforma, incluindo o sistema operacional Green, a linguagem Oak, as bibliotecas e o hardware. Eles apresentaram o &quot;Star7&quot;, um dispositivo PDA com interface gráfica e um assistente inteligente chamado &quot;Duke&quot; - que posteriormente se tornaria o mascote oficial do Java.&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;384&quot; src=&quot;https://www.youtube.com/embed/1CsTH9S79qI&quot; width=&quot;461&quot; youtube-src-id=&quot;1CsTH9S79qI&quot;&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;No entanto, o mercado de dispositivos eletrônicos inteligentes não decolou como esperado, e a equipe precisou reavaliar a direção do projeto. Foi quando perceberam o potencial de sua tecnologia para a internet, que estava começando a crescer exponencialmente.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;De Oak para Java&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Em 1994, após uma pesquisa de marca revelar que &quot;Oak&quot; já era uma marca registrada pela Oak Technology, a linguagem foi renomeada para &quot;Java&quot;. Há várias histórias sobre a origem deste nome, mas a mais conhecida é que foi escolhida durante uma sessão de brainstorming enquanto os desenvolvedores tomavam café (java, em gíria americana).&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Finalmente, em 23 de maio de 1995, a Sun Microsystems anunciou oficialmente a linguagem de programação Java ao mundo, em uma conferência de imprensa &lt;/span&gt;&lt;a href=&quot;https://dayintechhistory.com/dith/23-1995-sun-released-java-programming-mysql-released-rdbms/&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: black; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;5&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;. Este é considerado o nascimento oficial do Java como produto.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Os Primeiros Anos: Estabelecendo as Bases (1996-2000)&lt;/span&gt;&lt;/h1&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O primeiro lançamento estável, JDK 1.0.2, chegou em 23 de janeiro de 1996, trazendo apenas 8 pacotes Java básicos: java.applet, java.awt, java.awt.image, java.awt.peer, java.io, java.lang, java.net e java.util. Estes pacotes formaram a base inicial do que viria a se tornar um dos ecossistemas mais robustos de desenvolvimento.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A popularização através dos applets&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Um dos fatores que impulsionou a popularidade inicial do Java foram os &quot;applets&quot; - pequenos programas que podiam ser executados dentro de navegadores web. Isso permitiu que páginas da internet tivessem funcionalidades dinâmicas em uma época em que o HTML era predominantemente estático.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A evolução acelerada&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O ritmo de evolução foi impressionante nos primeiros anos:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 6pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;1997: JDK 1.1 introduziu inner classes, JavaBeans e a API de Reflection, melhorando o tratamento de eventos e internacionalização.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;1998: Java 2 (J2SE 1.2) trouxe uma grande reestruturação com a divisão em três edições principais: Java SE (Standard Edition), Java EE (Enterprise Edition) e Java ME (Micro Edition). Também foram introduzidos o Swing GUI toolkit e o framework de coleções.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2000: J2SE 1.3 adicionou a Java Sound API e JNDI (Java Naming and Directory Interface).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A Maturidade Empresarial: Java nas Corporações (2001-2009)&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Durante a primeira década dos anos 2000, o Java se estabeleceu firmemente como a linguagem preferida para o desenvolvimento empresarial.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;J2EE: Dominando o Mercado Corporativo&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O Java 2 Enterprise Edition (J2EE, posteriormente Java EE) proporcionou uma plataforma robusta para o desenvolvimento de aplicações corporativas escaláveis e seguras. Esta plataforma incluía tecnologias como Servlets, JSP, EJB e JMS, que se tornaram fundamentais para o desenvolvimento de sistemas empresariais.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;As Grandes Evoluções da Linguagem&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 6pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2002: J2SE 1.4 trouxe assertions, API de Logging e suporte nativo a expressões regulares.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2004: J2SE 5.0 representou uma das maiores atualizações da linguagem, introduzindo generics, annotations, enumerações, autoboxing/unboxing e o enhanced for loop.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2006: Java SE 6 focou em melhorias de desempenho e introduziu a API do Compilador Java e API de Scripting.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O Surgimento do Spring Framework&lt;/span&gt;&lt;/h1&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Em 2002, Rod Johnson lançou o livro &quot;Expert One-on-One J2EE Design and Development&quot;, que trazia ideias revolucionárias sobre como desenvolver aplicações Java corporativas de forma mais simples e elegante. Essas ideias se materializam no Spring Framework, cuja primeira versão oficial (1.0) foi lançada em março de 2004. O Spring se tornaria um dos frameworks mais importantes do ecossistema Java, oferecendo alternativas mais leves e produtivas ao J2EE tradicional.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A Aquisição pela Oracle&lt;/span&gt;&lt;/h1&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Em 2009, um marco importante na história do Java ocorreu quando a Oracle Corporation adquiriu a Sun Microsystems por aproximadamente 7,4 bilhões de dólares, assumindo assim o controle da plataforma Java. Essa transição gerou inicialmente muita incerteza na comunidade sobre o futuro da linguagem.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A Era Oracle: Evolução e Modernização (2010-2018)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Sob a gestão da Oracle, o Java continuou sua evolução, enfrentando novos desafios como a adaptação à computação em nuvem e às necessidades de desenvolvimento mobile.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Modernização da Linguagem&lt;/span&gt;&lt;/h1&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 6pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2011: Java SE 7 introduziu o try-with-resources, o operador diamond, strings em switch e a nova API NIO.2.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2014: Java SE 8 trouxe uma das maiores revoluções na linguagem com a introdução de expressões lambda, interfaces funcionais, streams e a nova API de Data/Hora. Esta versão é considerada por muitos como o ponto de virada para um Java mais moderno e funcional.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 3pt; margin-top: 18pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Novos Ciclos de Lançamento&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Em 2017, a Oracle anunciou uma mudança significativa no ciclo de lançamento do Java, passando para atualizações semestrais (a cada seis meses) a partir do Java 9, com versões LTS (Long-Term Support) a cada três anos. Este modelo visava permitir a introdução mais rápida de novidades sem comprometer a estabilidade para usuários empresariais.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A Transição do Java EE&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-left: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Também em 2017, a Oracle anunciou que transferiria o Java EE para a Eclipse Foundation. Após a transferência, devido a questões de marca registrada, a plataforma foi renomeada para Jakarta EE em 2019, iniciando um novo capítulo para o desenvolvimento empresarial em Java.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java na Era Moderna: Inovação Contínua (2019-2025)&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Os últimos anos têm sido marcados por inovações significativas que mantêm o Java relevante em um cenário tecnológico em rápida evolução.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Project Loom e Virtual Threads&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A partir de 2021, o Project Loom introduziu o conceito de threads virtuais, permitindo a criação de milhões de threads leves que revolucionaram o modelo de concorrência em Java. Em 2024, houve avanços significativos com threads virtuais sem &quot;pinning&quot;, melhorando ainda mais o desempenho e a escalabilidade.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;GraalVM: Compilação Nativa e Multilinguagem&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O GraalVM, cuja primeira versão pronta para produção foi lançada em maio de 2019, trouxe novas possibilidades para o ecossistema Java, incluindo compilação ahead-of-time para melhor inicialização e menor consumo de recursos, além de interoperabilidade entre diferentes linguagens de programação.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Lançamentos Recentes e Futuros&lt;/span&gt;&lt;/h1&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 6pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2021 (setembro): Java 17 LTS, trazendo estabilidade e recursos como sealed classes.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2023 (setembro): Java 21 LTS, com melhorias em virtual threads e pattern matching.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2024 (setembro): Java 23 (planejado).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2025 (março): Java 24 (planejado).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Roboto, sans-serif; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;&quot;&gt;2025 (setembro): Java 25 LTS (planejado) - coincidindo com o 30º aniversário do Java.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O Impacto do Java no Desenvolvimento de Software&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Ao longo destes 30 anos, o Java transformou fundamentalmente o desenvolvimento de software em vários aspectos:&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 16pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&quot;Write Once, Run Anywhere&quot;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O lema &quot;Escreva uma vez, execute em qualquer lugar&quot; não foi apenas um slogan, mas uma realidade que revolucionou o desenvolvimento de software. A portabilidade oferecida pela Máquina Virtual Java (JVM) permitiu que desenvolvedores escrevessem código independente de plataforma, economizando tempo e recursos significativos.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 3pt; margin-top: 18pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Influência em Outras Linguagens&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O design do Java influenciou muitas outras linguagens de programação como C#, Kotlin e Scala. Sua abordagem orientada a objetos, gerenciamento automático de memória e sistema de tipos estáticos se tornaram padrões da indústria.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O Futuro do Java: Para Onde Caminha a Plataforma&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Olhando para o futuro, o Java continua se adaptando e evoluindo para enfrentar os desafios modernos do desenvolvimento de software:&lt;/span&gt;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 4pt; margin-top: 16pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #434343; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Melhorando a Produtividade dos Desenvolvedores&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A tendência de simplificar a sintaxe sem sacrificar a segurança de tipos continua, com recursos como pattern matching, records e inferência de tipos tornando o código mais conciso e expressivo.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 3pt; margin-top: 18pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Otimizando para Cloud e Microsserviços&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Com projetos como Loom (threads virtuais), GraalVM (compilação nativa) e melhorias contínuas no tempo de inicialização e consumo de memória, o Java está se adaptando bem ao ambiente de nuvem e arquiteturas de microsserviços.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 3pt; margin-top: 18pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;color: #666666; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Integração com IA e Machine Learning&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O ecossistema Java está expandindo para facilitar o desenvolvimento de aplicações de IA e Machine Learning, com bibliotecas e frameworks como DeepLearning4J e integração com tecnologias como TensorFlow.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 3pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Sustentabilidade e Comunidade&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A transição de partes do ecossistema para governança de fundações abertas, como a Eclipse Foundation (Jakarta EE) e a fundação OpenJDK, garante que o Java continue sendo uma plataforma aberta e dirigida pela comunidade.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 12pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Conclusão: Celebrando 30 Anos e Olhando para o Futuro&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Enquanto celebramos os 30 anos do Java em 2025, é impressionante refletir sobre como uma linguagem criada inicialmente para dispositivos embarcados evoluiu para se tornar a espinha dorsal do desenvolvimento empresarial e uma força motriz na inovação tecnológica.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O Java provou ser mais do que apenas uma linguagem de programação – é uma plataforma completa, um ecossistema vibrante e uma comunidade global de desenvolvedores apaixonados. Sua capacidade de evoluir e se adaptar às mudanças na indústria, mantendo a compatibilidade com versões anteriores, é uma das razões principais para sua longevidade.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Para desenvolvedores novatos, o Java continua sendo uma excelente primeira linguagem para aprender, oferecendo conceitos fundamentais de programação em um ecossistema maduro com amplas oportunidades de emprego. Para veteranos, a plataforma continua trazendo novidades empolgantes que mantêm o desenvolvimento interessante e produtivo.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Que venham mais 30 anos de inovação do Java! E você, qual sua memória favorita com Java? Compartilhe nos comentários abaixo e continue acompanhando o Guia do Java para mais conteúdos sobre esta incrível plataforma!&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Linha do tempo&lt;/span&gt;&lt;/h1&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;61&quot;&gt;&lt;/col&gt;&lt;col width=&quot;208&quot;&gt;&lt;/col&gt;&lt;col width=&quot;449&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt; text-align: center;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Ano&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt; text-align: center;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Versão/Evento&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt; text-align: center;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Principais Características&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;1989&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Criação do Oak&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;James Gosling desenvolve a linguagem inicial na Sun&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;1991&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Projeto Green&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Início do desenvolvimento formal&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;1992&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Demonstração do Star7&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Primeira demonstração pública da tecnologia&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;1994&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Renomeação para Java&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Oak se torna Java após questões de trademark&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;1995&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Lançamento oficial&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Sun anuncia Java em 23 de maio&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;1996&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;JDK 1.0&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Primeiro lançamento estável&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;1997&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;JDK 1.1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Inner classes, JavaBeans, Reflection&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;1998&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;J2SE 1.2 (Playground)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Divisão em SE, EE e ME; Swing; Collections&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2000&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;J2SE 1.3 (Kestrel)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java Sound API, JNDI&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2002&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;J2SE 1.4 (Merlin)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Assertions, Logging, Regex&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2004&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;J2SE 5.0 (Tiger)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Generics, Annotations, Enums, Autoboxing&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2006&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 6 (Mustang)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Melhorias de desempenho, Compiler API&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2011&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 7 (Dolphin)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Try-with-resources, Diamond operator, NIO.2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2014&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 8&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Lambdas, Streams, Date/Time API&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2017&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 9&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Modularização (Project Jigsaw), JShell&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2018&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 10&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;var para inferência de tipo local&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2018&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 11 (LTS)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;HTTP Client, remoção de Java EE, CORBA e JavaFX&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2019&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 12&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Switch Expressions (preview)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2019&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 13&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Text Blocks (preview)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2020&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 14&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Records (preview), Pattern Matching (preview)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2020&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 15&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Sealed Classes (preview), ZGC aprimorado&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2021&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 16&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Records e Pattern Matching estáveis&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2021&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 17 (LTS)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Sealed classes, Pattern Matching (preview)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2022&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 18&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;UTF-8 por padrão, melhorias em Simple Web Server&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2022&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 19&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Virtual Threads (preview), Pattern Matching para switch&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2023&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 20&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Continuação de Virtual Threads e Pattern Matching&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2023&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 21 (LTS)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Virtual threads estáveis, sequenced collections&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2024&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 22&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Novos recursos incrementais (ciclo semestral)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2024&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 23&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Novos recursos incrementais (ciclo semestral)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2025&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 24&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Novos recursos incrementais (ciclo semestral)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 30.75pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;2025&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Java SE 25 (LTS)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #000000 1pt; border-color: rgb(0, 0, 0); border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-style: solid; border-top: solid #000000 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 6pt; vertical-align: middle;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 2.05715; margin-bottom: 12pt; margin-top: 12pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Próximo lançamento LTS, 30 anos de Java&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;meta charset=&quot;UTF-8&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;width=device-width, initial-scale=1&quot; name=&quot;viewport&quot;&gt;&lt;/meta&gt; &lt;!--Título da página/post--&gt; &lt;title&gt;Principais Novidades e Tendências de Abril de 2025 | Guia do Java&lt;/title&gt; &lt;!--Descrição SEO--&gt; &lt;meta content=&quot;Resumo das principais novidades do universo Java em abril de 2025: JDK 25, atualizações críticas de segurança, Spring Framework 7, tendências como Project Loom, GraalVM, cloud-native, integração com IA e destaques de eventos como JDConf e Jakarta EE 11.&quot; name=&quot;description&quot;&gt;&lt;/meta&gt; &lt;!--Palavras-chave--&gt; &lt;meta content=&quot;Java, JDK 25, Spring Framework, OpenJDK, Project Loom, GraalVM, Jakarta EE, MicroProfile, Cloud-Native, Segurança Java, JDConf, Tendências Java 2025, Guia do Java, Atualizações Java&quot; name=&quot;keywords&quot;&gt;&lt;/meta&gt; &lt;!--Autor--&gt; &lt;meta content=&quot;Guia do Java&quot; name=&quot;author&quot;&gt;&lt;/meta&gt; &lt;!--Data de publicação e atualização--&gt; &lt;meta content=&quot;2025-04-24T05:39:00-03:00&quot; property=&quot;article:published_time&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;2025-04-24T05:39:00-03:00&quot; property=&quot;article:modified_time&quot;&gt;&lt;/meta&gt; &lt;!--Open Graph para Facebook, LinkedIn etc--&gt; &lt;meta content=&quot;article&quot; property=&quot;og:type&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Principais Novidades e Tendências de Abril de 2025 | Guia do Java&quot; property=&quot;og:title&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Confira os lançamentos, tendências e eventos que marcaram o ecossistema Java em abril de 2025: JDK 25, Spring 7, atualizações de segurança, Project Loom, GraalVM, cloud-native, integração com IA e mais.&quot; property=&quot;og:description&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;https://www.guiadojava.com.br/2025/04/novidades-java-abril-2025.html&quot; property=&quot;og:url&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhiHcZ2sUdER-KUpp5LEN_9U-YP0goNqphE0wzmQJ368TNwe0yEkTOcuJZJa5f1ouIXj3mhvpnKhH3UAzPqGp9eU2EXix7hM3sUeChTP6KV-q7QZoM1YnbTOzc-_fmObe0A2aXOy8nUNdUCFBWz2DX92pVZxR-OvR3A3ILWt8oG8atYbVdTW2SK09WdYw3/s1536/Guia-Java_2025,%2004_24.png&quot; property=&quot;og:image&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Guia do Java&quot; property=&quot;og:site_name&quot;&gt;&lt;/meta&gt; &lt;!--Twitter Card--&gt; &lt;meta content=&quot;summary_large_image&quot; name=&quot;a&quot; twitter:card=&quot;&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Principais Novidades e Tendências de Abril de 2025 | Guia do Java&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;Resumo mensal: JDK 25, Spring 7, segurança, Project Loom, GraalVM, cloud-native, IA e eventos do ecossistema Java em abril de 2025.&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhiHcZ2sUdER-KUpp5LEN_9U-YP0goNqphE0wzmQJ368TNwe0yEkTOcuJZJa5f1ouIXj3mhvpnKhH3UAzPqGp9eU2EXix7hM3sUeChTP6KV-q7QZoM1YnbTOzc-_fmObe0A2aXOy8nUNdUCFBWz2DX92pVZxR-OvR3A3ILWt8oG8atYbVdTW2SK09WdYw3/s1536/Guia-Java_2025,%2004_24.png&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt; &lt;meta content=&quot;@guiadojava&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt; &lt;!--Canonical (importante para SEO em Blogger)--&gt; &lt;link href=&quot;https://www.guiadojava.com.br/2025/04/novidades-java-abril-2025.html&quot; rel=&quot;canonical&quot;&gt;&lt;/link&gt; &lt;!--Favicon--&gt; &lt;link href=&quot;https://www.guiadojava.com.br/favicon.ico&quot; rel=&quot;icon&quot; type=&quot;image/x-icon&quot;&gt;&lt;/link&gt; &lt;!--Robots--&gt; &lt;meta content=&quot;index, follow&quot; name=&quot;robots&quot;&gt;&lt;/meta&gt;


&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/2943047064651861519/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2025/05/java-30-anos.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/2943047064651861519'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/2943047064651861519'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2025/05/java-30-anos.html' title='Java 30 anos'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfdenKaXtr2E9bGU-DxLHjste6-5BmOM2xaw9wMImJKJ_Czb0H3q26xgY5w_RkFZhyRVskfrk4tZXYch9LDmNw5EOZdK7wOT774NL8R0t0ZZKggLgSehwTtZPjwSZFTWhzDo3UR=s72-c?key=hpH7aAsuTmHE1mXqOjkOfBwH" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-6962170578253200309</id><published>2025-04-24T05:46:00.006-03:00</published><updated>2025-04-24T05:48:59.366-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud-Native"/><category scheme="http://www.blogger.com/atom/ns#" term="GraalVM"/><category scheme="http://www.blogger.com/atom/ns#" term="Jakarta EE"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK 25"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Loom"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Boot"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Framework"/><title type='text'>Principais Novidades e Tendências de Abril de 2025</title><content type='html'>&lt;meta charset=&quot;UTF-8&quot;&gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt; &lt;!-- Título da página/post --&gt; &lt;title&gt;Principais Novidades e Tendências de Abril de 2025 | Guia do Java&lt;/title&gt; &lt;!-- Descrição SEO --&gt; &lt;meta name=&quot;description&quot; content=&quot;Resumo das principais novidades do universo Java em abril de 2025: JDK 25, atualizações críticas de segurança, Spring Framework 7, tendências como Project Loom, GraalVM, cloud-native, integração com IA e destaques de eventos como JDConf e Jakarta EE 11.&quot;&gt; &lt;!-- Palavras-chave --&gt; &lt;meta name=&quot;keywords&quot; content=&quot;Java, JDK 25, Spring Framework, OpenJDK, Project Loom, GraalVM, Jakarta EE, MicroProfile, Cloud-Native, Segurança Java, JDConf, Tendências Java 2025, Guia do Java, Atualizações Java&quot;&gt; &lt;!-- Autor --&gt; &lt;meta name=&quot;author&quot; content=&quot;Guia do Java&quot;&gt; &lt;!-- Data de publicação e atualização --&gt; &lt;meta property=&quot;article:published_time&quot; content=&quot;2025-04-24T05:39:00-03:00&quot;&gt; &lt;meta property=&quot;article:modified_time&quot; content=&quot;2025-04-24T05:39:00-03:00&quot;&gt; &lt;!-- Open Graph para Facebook, LinkedIn etc --&gt; &lt;meta property=&quot;og:type&quot; content=&quot;article&quot;&gt; &lt;meta property=&quot;og:title&quot; content=&quot;Principais Novidades e Tendências de Abril de 2025 | Guia do Java&quot;&gt; &lt;meta property=&quot;og:description&quot; content=&quot;Confira os lançamentos, tendências e eventos que marcaram o ecossistema Java em abril de 2025: JDK 25, Spring 7, atualizações de segurança, Project Loom, GraalVM, cloud-native, integração com IA e mais.&quot;&gt; &lt;meta property=&quot;og:url&quot; content=&quot;https://www.guiadojava.com.br/2025/04/novidades-java-abril-2025.html&quot;&gt; &lt;meta property=&quot;og:image&quot; content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhiHcZ2sUdER-KUpp5LEN_9U-YP0goNqphE0wzmQJ368TNwe0yEkTOcuJZJa5f1ouIXj3mhvpnKhH3UAzPqGp9eU2EXix7hM3sUeChTP6KV-q7QZoM1YnbTOzc-_fmObe0A2aXOy8nUNdUCFBWz2DX92pVZxR-OvR3A3ILWt8oG8atYbVdTW2SK09WdYw3/s1536/Guia-Java_2025,%2004_24.png&quot;&gt; &lt;meta property=&quot;og:site_name&quot; content=&quot;Guia do Java&quot;&gt; &lt;!-- Twitter Card --&gt; &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot;&gt; &lt;meta name=&quot;twitter:title&quot; content=&quot;Principais Novidades e Tendências de Abril de 2025 | Guia do Java&quot;&gt; &lt;meta name=&quot;twitter:description&quot; content=&quot;Resumo mensal: JDK 25, Spring 7, segurança, Project Loom, GraalVM, cloud-native, IA e eventos do ecossistema Java em abril de 2025.&quot;&gt; &lt;meta name=&quot;twitter:image&quot; content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhiHcZ2sUdER-KUpp5LEN_9U-YP0goNqphE0wzmQJ368TNwe0yEkTOcuJZJa5f1ouIXj3mhvpnKhH3UAzPqGp9eU2EXix7hM3sUeChTP6KV-q7QZoM1YnbTOzc-_fmObe0A2aXOy8nUNdUCFBWz2DX92pVZxR-OvR3A3ILWt8oG8atYbVdTW2SK09WdYw3/s1536/Guia-Java_2025,%2004_24.png&quot;&gt; &lt;meta name=&quot;twitter:site&quot; content=&quot;@guiadojava&quot;&gt; &lt;!-- Canonical (importante para SEO em Blogger) --&gt; &lt;link rel=&quot;canonical&quot; href=&quot;https://www.guiadojava.com.br/2025/04/novidades-java-abril-2025.html&quot;&gt; &lt;!-- Favicon --&gt; &lt;link rel=&quot;icon&quot; href=&quot;https://www.guiadojava.com.br/favicon.ico&quot; type=&quot;image/x-icon&quot;&gt; &lt;!-- Robots --&gt; &lt;meta name=&quot;robots&quot; content=&quot;index, follow&quot;&gt;


&lt;h1 style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhiHcZ2sUdER-KUpp5LEN_9U-YP0goNqphE0wzmQJ368TNwe0yEkTOcuJZJa5f1ouIXj3mhvpnKhH3UAzPqGp9eU2EXix7hM3sUeChTP6KV-q7QZoM1YnbTOzc-_fmObe0A2aXOy8nUNdUCFBWz2DX92pVZxR-OvR3A3ILWt8oG8atYbVdTW2SK09WdYw3/s1536/Guia-Java_2025,%2004_24.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;427&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhiHcZ2sUdER-KUpp5LEN_9U-YP0goNqphE0wzmQJ368TNwe0yEkTOcuJZJa5f1ouIXj3mhvpnKhH3UAzPqGp9eU2EXix7hM3sUeChTP6KV-q7QZoM1YnbTOzc-_fmObe0A2aXOy8nUNdUCFBWz2DX92pVZxR-OvR3A3ILWt8oG8atYbVdTW2SK09WdYw3/w640-h427/Guia-Java_2025,%2004_24.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/h1&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;Principais Novidades e Tendências de Abril de 2025&lt;/strong&gt;&lt;/h1&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;prose text-pretty dark:prose-invert inline leading-normal break-words min-w-0 [word-break:break-word]&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Manter-se atualizado é essencial para qualquer desenvolvedor Java, especialmente em um ecossistema tão dinâmico e inovador. Abril de 2025 foi marcado por lançamentos importantes, tendências emergentes e eventos que moldam o futuro da plataforma. Confira o resumo do mês, com links para as fontes originais.&lt;/div&gt;&lt;span class=&quot;mt-md block&quot;&gt;&lt;/span&gt;&lt;h2 class=&quot;mb-2 mt-6 text-lg font-[500] first:mt-0&quot; id=&quot;destaques-do-ms&quot;&gt;Destaques do Mês&lt;/h2&gt;
&lt;ul class=&quot;marker:text-textOff list-disc&quot;&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;strong&gt;JDK 25: Cronograma Oficial e Novidades&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;strong&gt;Atualizações Críticas de Segurança no OpenJDK&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;strong&gt;Spring Framework 7.0.0 M4 e Spring Boot 4&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;strong&gt;Tendências: Project Loom, GraalVM, Java Cloud-Native e Integração com IA&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;strong&gt;Eventos e Comunidades: JDConf 2025, Jakarta EE 11 e mais&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class=&quot;mb-2 mt-6 text-lg font-[500] first:mt-0&quot; id=&quot;resumo-das-principais-notcias&quot;&gt;Resumo das Principais Notícias&lt;/h2&gt;
&lt;h2 class=&quot;mb-xs mt-5 text-base font-[525] first:mt-0&quot;&gt;JDK 25: Cronograma e Recursos&lt;/h2&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;O cronograma do JDK 25 foi oficialmente divulgado, com a General Availability (GA) prevista para 16 de setembro de 2025. As fases de rampdown e release candidates ocorrem entre junho e agosto. Entre os recursos em destaque estão melhorias de performance, novos recursos de linguagem (como Module Import Declarations e Instance Main Methods) e avanços em estabilidade. A recomendação é que desenvolvedores testem as early-access builds e reportem bugs&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul class=&quot;marker:text-textOff list-disc&quot;&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://openjdk.org/projects/jdk/25/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Release notes e cronograma JDK 25&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&quot;mb-xs mt-5 text-base font-[525] first:mt-0&quot;&gt;Atualizações e Patches Críticos no OpenJDK&lt;/h2&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;Abril trouxe o tradicional Critical Patch Update (CPU) para múltiplas versões do JDK: 8u451, 11.0.27, 17.0.15, 21.0.7 e 24.0.1. Esses updates corrigem vulnerabilidades e bugs, sendo essenciais para manter ambientes seguros e estáveis. Distribuições como Oracle, BellSoft (Liberica) e Microsoft Build of OpenJDK acompanharam os lançamentos&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul class=&quot;marker:text-textOff list-disc&quot;&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://www.oracle.com/java/technologies/javase/24-0-1-relnotes.html&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Notas de release Oracle CPU Abril 2025&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://devblogs.microsoft.com/java/java-openjdk-april-2025-patch-security-update/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Microsoft Build of OpenJDK Patch Abril 2025&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&quot;mb-xs mt-5 text-base font-[525] first:mt-0&quot;&gt;Spring Framework 7.0.0 M4 e Ecossistema Spring&lt;/h2&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;O Spring Framework 7.0.0 alcançou sua quarta milestone, trazendo melhorias em documentação, upgrades de dependências e novos recursos como suporte aprimorado a Optional e APIs para manipulação de bytecode Java. O Spring for GraphQL 1.4.0 RC também foi lançado, focando em observabilidade e melhorias em operações reativas. O ecossistema Spring segue como referência em produtividade e inovação para aplicações Java modernas&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul class=&quot;marker:text-textOff list-disc&quot;&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://github.com/spring-projects/spring-framework/releases&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Release notes Spring Framework 7.0.0 M4&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&quot;mb-xs mt-5 text-base font-[525] first:mt-0&quot;&gt;Tendências Emergentes em Java&lt;/h2&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;Abril confirmou a adoção massiva de tendências como:&lt;/p&gt;
&lt;ul class=&quot;marker:text-textOff list-disc&quot;&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Project Loom e Virtual Threads:&lt;/strong&gt; Simplificação da concorrência e escalabilidade para aplicações de alta performance&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;GraalVM e Native Images:&lt;/strong&gt; Compilação ahead-of-time para aplicações leves e rápidas, ideais para cloud e serverless&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Cloud-Native Java:&lt;/strong&gt; Jakarta EE 11 e MicroProfile 7 avançam como padrões para microservices e integração com Kubernetes&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Integração com IA:&lt;/strong&gt; Frameworks como DeepLearning4J e Tribuo tornam Java mais relevante para machine learning em produção&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Programação Reativa:&lt;/strong&gt; Frameworks como Project Reactor e Akka ganham espaço para aplicações responsivas e escaláveis&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&quot;mb-xs mt-5 text-base font-[525] first:mt-0&quot;&gt;Eventos e Comunidades&lt;/h2&gt;
&lt;ul class=&quot;marker:text-textOff list-disc&quot;&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;JDConf 2025:&lt;/strong&gt; Evento virtual da Microsoft reuniu novidades sobre Java Cloud-Native, observabilidade, Project Loom, GraalVM e práticas modernas de desenvolvimento. As sessões destacaram desafios e soluções para Java em ambientes cloud e serverless&lt;span class=&quot;whitespace-nowrap&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Jakarta EE 11:&lt;/strong&gt; O roadmap avança com milestones e release candidates, consolidando o padrão para aplicações corporativas cloud-native.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 class=&quot;mb-2 mt-6 text-lg font-[500] first:mt-0&quot; id=&quot;concluso&quot;&gt;Conclusão&lt;/h2&gt;
&lt;p class=&quot;my-0&quot; style=&quot;text-align: justify;&quot;&gt;O mês de abril de 2025 reforçou o Java como uma plataforma inovadora, segura e pronta para os desafios do futuro. Fique atento aos próximos lançamentos, participe das comunidades e contribua para o ecossistema! Deixe seus comentários, compartilhe este resumo e sugira pautas para as próximas edições.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 class=&quot;mb-xs mt-5 text-base font-[525] first:mt-0&quot;&gt;Referências&lt;/h2&gt;
&lt;ul class=&quot;marker:text-textOff list-disc&quot;&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://www.infoq.com/news/2025/04/java-news-roundup-apr14-2025/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;InfoQ Java News Roundup - 21/04/2025&lt;/a&gt;&lt;a aria-label=&quot;JDK 25 Schedule, Spring 7.0-M4, Payara Platform, JobRunr 7.5, Jox ...&quot; class=&quot;citation ml-xs inline&quot; data-state=&quot;closed&quot; href=&quot;https://www.infoq.com/news/2025/04/java-news-roundup-apr14-2025/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;relative select-none align-middle undefined -top-px default font-sans text-base text-textMain dark:text-textMainDark selection:bg-super/50 selection:text-textMain dark:selection:bg-superDuper/10 dark:selection:text-superDark&quot;&gt;1&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://docs.oracle.com/iaas/releasenotes/java-management/jdk-cpu-april.htm&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Oracle Critical Patch Update Abril 2025&lt;/a&gt;&lt;a aria-label=&quot;Oracle Critical Patch Update (CPU) April 2025 for Oracle Java SE&quot; class=&quot;citation ml-xs inline&quot; data-state=&quot;closed&quot; href=&quot;https://docs.oracle.com/iaas/releasenotes/java-management/jdk-cpu-april.htm&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;relative select-none align-middle undefined -top-px default font-sans text-base text-textMain dark:text-textMainDark selection:bg-super/50 selection:text-textMain dark:selection:bg-superDuper/10 dark:selection:text-superDark&quot;&gt;9&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://devblogs.microsoft.com/java/java-openjdk-april-2025-patch-security-update/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Microsoft Build of OpenJDK Patch Abril 2025&lt;/a&gt;&lt;a aria-label=&quot;Java OpenJDK April 2025 Patch &amp;amp; Security Update&quot; class=&quot;citation ml-xs inline&quot; data-state=&quot;closed&quot; href=&quot;https://devblogs.microsoft.com/java/java-openjdk-april-2025-patch-security-update/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;relative select-none align-middle undefined -top-px default font-sans text-base text-textMain dark:text-textMainDark selection:bg-super/50 selection:text-textMain dark:selection:bg-superDuper/10 dark:selection:text-superDark&quot;&gt;7&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://openjdk.org/projects/jdk/25/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;JDK 25 - OpenJDK&lt;/a&gt;&lt;a aria-label=&quot;JDK 25 - OpenJDK&quot; class=&quot;citation ml-xs inline&quot; data-state=&quot;closed&quot; href=&quot;https://openjdk.org/projects/jdk/25/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;relative select-none align-middle undefined -top-px default font-sans text-base text-textMain dark:text-textMainDark selection:bg-super/50 selection:text-textMain dark:selection:bg-superDuper/10 dark:selection:text-superDark&quot;&gt;5&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://blog.miraclesoft.com/10-emerging-java-trends-to-watch-out-for-in-2025/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;10 tendências Java para 2025 – Miracle Software&lt;/a&gt;&lt;a aria-label=&quot;10 Emerging Java Trends to Watch Out for in 2025 – Blog | Miracle Software Systems&quot; class=&quot;citation ml-xs inline&quot; data-state=&quot;closed&quot; href=&quot;https://blog.miraclesoft.com/10-emerging-java-trends-to-watch-out-for-in-2025/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;relative select-none align-middle undefined -top-px default font-sans text-base text-textMain dark:text-textMainDark selection:bg-super/50 selection:text-textMain dark:selection:bg-superDuper/10 dark:selection:text-superDark&quot;&gt;6&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://jdconf.com/agenda.html&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;JDConf 2025 Agenda&lt;/a&gt;&lt;a aria-label=&quot;Agenda - Microsoft JDConf 2025&quot; class=&quot;citation ml-xs inline&quot; data-state=&quot;closed&quot; href=&quot;https://jdconf.com/agenda.html&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;relative select-none align-middle undefined -top-px default font-sans text-base text-textMain dark:text-textMainDark selection:bg-super/50 selection:text-textMain dark:selection:bg-superDuper/10 dark:selection:text-superDark&quot;&gt;4&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://github.com/spring-projects/spring-framework/releases&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Spring Framework 7.0.0 M4 Release Notes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p class=&quot;my-0&quot;&gt;&lt;a class=&quot;break-word hover:text-super hover:decoration-super dark:hover:text-superDark dark:hover:decoration-superDark underline decoration-from-font underline-offset-1 transition-all duration-300&quot; href=&quot;https://www.infoq.com/news/2025/04/java-news-roundup-apr07-2025/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Jakarta EE 11 Roadmap&lt;/a&gt;&lt;a aria-label=&quot;Java News Roundup: WildFly 36, Spring Milestones, Betas for Open ...&quot; class=&quot;citation ml-xs inline&quot; data-state=&quot;closed&quot; href=&quot;https://www.infoq.com/news/2025/04/java-news-roundup-apr07-2025/&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;relative select-none align-middle undefined -top-px default font-sans text-base text-textMain dark:text-textMainDark selection:bg-super/50 selection:text-textMain dark:selection:bg-superDuper/10 dark:selection:text-superDark&quot;&gt;8&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/6962170578253200309/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2025/04/principais-novidades-e-tendencias-2025-04.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/6962170578253200309'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/6962170578253200309'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2025/04/principais-novidades-e-tendencias-2025-04.html' title='Principais Novidades e Tendências de Abril de 2025'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhiHcZ2sUdER-KUpp5LEN_9U-YP0goNqphE0wzmQJ368TNwe0yEkTOcuJZJa5f1ouIXj3mhvpnKhH3UAzPqGp9eU2EXix7hM3sUeChTP6KV-q7QZoM1YnbTOzc-_fmObe0A2aXOy8nUNdUCFBWz2DX92pVZxR-OvR3A3ILWt8oG8atYbVdTW2SK09WdYw3/s72-w640-h427-c/Guia-Java_2025,%2004_24.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-7140425919332549455</id><published>2025-02-16T19:59:00.001-03:00</published><updated>2025-02-16T20:00:57.585-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Criptografia"/><category scheme="http://www.blogger.com/atom/ns#" term="DSA"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java21"/><category scheme="http://www.blogger.com/atom/ns#" term="Java24"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK24"/><category scheme="http://www.blogger.com/atom/ns#" term="KDF"/><category scheme="http://www.blogger.com/atom/ns#" term="ML-KEM"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="RFC-9180"/><title type='text'>Segurança do Java resiste a computação quântica?</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; property=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Segurança do Java resiste a computação quântica?&quot; property=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Potenciais ameaças a segurança representadas por computadores quânticos e como os aplicativos Java podem ajudar a resistir a essas ameaças&quot; property=&quot;og:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; property=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Segurança do Java resiste a computação quântica?&quot; property=&quot;og:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_fltd9dea9tIDQo9Fzqjwt1EmUakazT1MxgzbS2QcUHIFx1mAPlXpGObD04H9Jpbjcsnnju9T5CiLUrymMi-cvAwqJ4CyAQDT1_w9jf3SGLYIM7PkMnOBPaapwalL5z7-Ai1-FxPu0vtDmPhyphenhyphen9Oa0SoSZ5A7j1mWXc3zMAmfvP47_69Vaq9gjCHIsABos/s2048/Gemini_Generated_Image_vkhpddvkhpddvkhp.jpeg&quot; property=&quot;og:image&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_fltd9dea9tIDQo9Fzqjwt1EmUakazT1MxgzbS2QcUHIFx1mAPlXpGObD04H9Jpbjcsnnju9T5CiLUrymMi-cvAwqJ4CyAQDT1_w9jf3SGLYIM7PkMnOBPaapwalL5z7-Ai1-FxPu0vtDmPhyphenhyphen9Oa0SoSZ5A7j1mWXc3zMAmfvP47_69Vaq9gjCHIsABos/s2048/Gemini_Generated_Image_vkhpddvkhpddvkhp.jpeg&quot; property=&quot;twitter:image&quot;&gt;&lt;/meta&gt;


&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_fltd9dea9tIDQo9Fzqjwt1EmUakazT1MxgzbS2QcUHIFx1mAPlXpGObD04H9Jpbjcsnnju9T5CiLUrymMi-cvAwqJ4CyAQDT1_w9jf3SGLYIM7PkMnOBPaapwalL5z7-Ai1-FxPu0vtDmPhyphenhyphen9Oa0SoSZ5A7j1mWXc3zMAmfvP47_69Vaq9gjCHIsABos/s2048/Gemini_Generated_Image_vkhpddvkhpddvkhp.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_fltd9dea9tIDQo9Fzqjwt1EmUakazT1MxgzbS2QcUHIFx1mAPlXpGObD04H9Jpbjcsnnju9T5CiLUrymMi-cvAwqJ4CyAQDT1_w9jf3SGLYIM7PkMnOBPaapwalL5z7-Ai1-FxPu0vtDmPhyphenhyphen9Oa0SoSZ5A7j1mWXc3zMAmfvP47_69Vaq9gjCHIsABos/w400-h400/Gemini_Generated_Image_vkhpddvkhpddvkhp.jpeg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;Potenciais ameaças à segurança representadas por computadores quânticos e como os aplicativos Java podem ajudar a resistir a essas ameaças&lt;/h1&gt;&lt;div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Os&lt;/span&gt;&lt;span style=&quot;font-size: 18.72px; font-weight: 400;&quot;&gt; computadores quânticos têm o potencial de quebrar os algoritmos criptográficos que protegem dados e comunicações. Isso ocorre porque eles podem resolver certos problemas matemáticos muito mais rápido do que os computadores clássicos. Isso representa uma ameaça à segurança de dados e comunicações, pois pode permitir que invasores decifrem informações confidenciais.&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 18.72px;&quot;&gt;Para lidar com essa ameaça, os aplicativos Java podem usar a API&lt;b&gt; Key Derivation Function&lt;/b&gt; (KDF), o &lt;b&gt;Module-Lattice-Based Key Encapsulation Mechanism&lt;/b&gt; (ML-KEM) e o &lt;b&gt;Module-Lattice-Based Digital Signature Algorithm&lt;/b&gt; (DSA). Essas APIs, algoritmos e padrões como a Criptografia de Chave Pública Híbrida &lt;a href=&quot;https://datatracker.ietf.org/doc/rfc9180/&quot; target=&quot;_blank&quot;&gt;RFC 9180&lt;/a&gt; são áreas em desenvolvimento e direções potenciais de soluções mais amplas resistentes ao Quantum&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: 18.72px;&quot;&gt;Também é importante se atualizar para soluções de segurança resistentes a quantum o mais rápido possível. Isso ocorre porque os invasores podem potencialmente roubar dados agora e descriptografá-los mais tarde, quando os computadores quânticos se tornarem mais amplamente disponíveis.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 18.72px; text-align: left;&quot;&gt;No &lt;/span&gt;&lt;b style=&quot;font-size: 18.72px; text-align: left;&quot;&gt;JDK 21&lt;/b&gt;&lt;span style=&quot;font-size: 18.72px; text-align: left;&quot;&gt; foi impleme&lt;/span&gt;&lt;span style=&quot;font-size: 18.72px; text-align: left;&quot;&gt;ntado a &lt;/span&gt;&lt;a href=&quot;https://openjdk.org/jeps/452&quot; style=&quot;font-size: 18.72px; text-align: left;&quot; target=&quot;_blank&quot;&gt;KEN&amp;nbsp; API&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 18.72px;&quot;&gt;Para o &lt;b&gt;JDK 24 &lt;/b&gt;(disponível em 18/03/2025) foram implementadas:&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://openjdk.org/jeps/478&quot; style=&quot;font-size: 18.72px;&quot; target=&quot;_blank&quot;&gt;JEP 478&lt;/a&gt;&lt;span style=&quot;font-size: 18.72px;&quot;&gt;: Key Derivation Function API (Preview)&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://openjdk.org/jeps/496&quot; style=&quot;font-size: 18.72px;&quot; target=&quot;_blank&quot;&gt;JEP 496&lt;/a&gt;&lt;span style=&quot;font-size: 18.72px;&quot;&gt;: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://openjdk.org/jeps/497&quot; style=&quot;font-size: 18.72px;&quot; target=&quot;_blank&quot;&gt;JEP 497:&lt;/a&gt;&lt;span style=&quot;font-size: 18.72px;&quot;&gt; Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;Para saber mais&lt;/h2&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Em Inglês:&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;HPKE: Standardizing public-key encryption:&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://blog.cloudflare.com/hybrid-public-key-encryption/&quot; target=&quot;_blank&quot;&gt;https://blog.cloudflare.com/hybrid-public-key-encryption/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;NIST Post Quantum Encryption Standards:&lt;/b&gt; &lt;a href=&quot;https://www.nist.gov/news-events/news/2022/07/nist-announces-first-four-quantum-resistant-cryptographic-algorithms&quot; target=&quot;_blank&quot;&gt;https://www.nist.gov/news-events/news/2022/07/nist-announces-first-four-quantum-resistant-cryptographic-algorithms&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Cloud Security Alliance:&lt;/b&gt; h&lt;a href=&quot;ttps://cloudsecurityalliance.org/&quot; target=&quot;_blank&quot;&gt;ttps://cloudsecurityalliance.org/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div&gt;&lt;h2&gt;Conclusão&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Os computadores quânticos são uma tecnologia nova e empolgante, mas também representam uma ameaça à segurança de nossos dados e comunicações. Ao usar aplicativos Java e atualizar para soluções de segurança resistentes a quantum, podemos ajudar a nos proteger dessas ameaças.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Espero que esta postagem do blog tenha sido útil. Se você tiver alguma dúvida, sinta-se à vontade para deixar um comentário abaixo.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Referências&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Post-quantum_cryptography&quot; target=&quot;_blank&quot;&gt;Quantum-Resistant Cryptography&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://docs.oracle.com/en/java/javase/21/security/index.html&quot; target=&quot;_blank&quot;&gt;Java Security&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b style=&quot;font-size: large;&quot;&gt;Inside Java Newscast:&lt;/b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://youtu.be/4k23rwIdJas&quot; style=&quot;font-size: large;&quot; target=&quot;_blank&quot;&gt;https://youtu.be/4k23rwIdJas&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot;&gt;&lt;img src=&quot;https://lh7-us.googleusercontent.com/aH3ZzHNBWziP-L4KXIPAkDRG6Cbgb1ar__QMkUH-fiYn_6fVOrR2sp9P2GTTa06uBqy8gCnlWjLDXyKJVRcp7ulreGUh2-tY9dugqFVwk_ezeA7HNiGVB3h8RHwDN8D76G82Qy1VjlxHWi51ZxfVKpY&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/7140425919332549455/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2025/02/seguranca-do-java-resiste-quantum.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7140425919332549455'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7140425919332549455'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2025/02/seguranca-do-java-resiste-quantum.html' title='Segurança do Java resiste a computação quântica?'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_fltd9dea9tIDQo9Fzqjwt1EmUakazT1MxgzbS2QcUHIFx1mAPlXpGObD04H9Jpbjcsnnju9T5CiLUrymMi-cvAwqJ4CyAQDT1_w9jf3SGLYIM7PkMnOBPaapwalL5z7-Ai1-FxPu0vtDmPhyphenhyphen9Oa0SoSZ5A7j1mWXc3zMAmfvP47_69Vaq9gjCHIsABos/s72-w400-h400-c/Gemini_Generated_Image_vkhpddvkhpddvkhp.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-4599059904201537016</id><published>2025-02-09T12:03:00.001-03:00</published><updated>2025-02-09T12:03:57.891-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2024"/><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="BigData"/><category scheme="http://www.blogger.com/atom/ns#" term="bytecode"/><category scheme="http://www.blogger.com/atom/ns#" term="Carreira"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="GraalVM"/><category scheme="http://www.blogger.com/atom/ns#" term="Guia"/><category scheme="http://www.blogger.com/atom/ns#" term="instanceof"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK24"/><category scheme="http://www.blogger.com/atom/ns#" term="JIT"/><category scheme="http://www.blogger.com/atom/ns#" term="kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="Lambda"/><category scheme="http://www.blogger.com/atom/ns#" term="Plataforma"/><category scheme="http://www.blogger.com/atom/ns#" term="Sealed"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><category scheme="http://www.blogger.com/atom/ns#" term="SpringBoot"/><title type='text'>O que esperar do ecossistema Java em 2025</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; property=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;O que esperar do ecossistema Java para 2025&quot; property=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Em 2025, o ecossistema Java está pronto para o crescimento e evolução contínuos, impulsionados por diversas tendências importantes&quot; property=&quot;og:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; property=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;O que esperar do ecossistema Java para 2025&quot; property=&quot;og:description&quot;&gt;&lt;/meta&gt;
&lt;meta property=&quot;og:image&quot; content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZgO3bF2pcwvR-uyjinrDUIsOiASCiu9AmSmDfXoTJM3VRlqjTar5tBCvplQqycFrRaxGw5TgARrPd6y_M2y0PQOg9zviFl8BKcgusSuz2uBGKjQfq6bfxlvqT1rSkPgYx9wewKR935-v-lNogHlfiaaEQuGPqLbwTpbDz9tH_w-Jmhqf8YrHn2VaUjHUN/s2048/java_2025.jpeg&quot;/&gt;
&lt;meta property=&quot;twitter:image&quot; content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZgO3bF2pcwvR-uyjinrDUIsOiASCiu9AmSmDfXoTJM3VRlqjTar5tBCvplQqycFrRaxGw5TgARrPd6y_M2y0PQOg9zviFl8BKcgusSuz2uBGKjQfq6bfxlvqT1rSkPgYx9wewKR935-v-lNogHlfiaaEQuGPqLbwTpbDz9tH_w-Jmhqf8YrHn2VaUjHUN/s2048/java_2025.jpeg&quot;/&gt;


&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZgO3bF2pcwvR-uyjinrDUIsOiASCiu9AmSmDfXoTJM3VRlqjTar5tBCvplQqycFrRaxGw5TgARrPd6y_M2y0PQOg9zviFl8BKcgusSuz2uBGKjQfq6bfxlvqT1rSkPgYx9wewKR935-v-lNogHlfiaaEQuGPqLbwTpbDz9tH_w-Jmhqf8YrHn2VaUjHUN/s2048/java_2025.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZgO3bF2pcwvR-uyjinrDUIsOiASCiu9AmSmDfXoTJM3VRlqjTar5tBCvplQqycFrRaxGw5TgARrPd6y_M2y0PQOg9zviFl8BKcgusSuz2uBGKjQfq6bfxlvqT1rSkPgYx9wewKR935-v-lNogHlfiaaEQuGPqLbwTpbDz9tH_w-Jmhqf8YrHn2VaUjHUN/w400-h400/java_2025.jpeg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h1 style=&quot;text-align: justify;&quot;&gt;Em 2025, o ecossistema Java está pronto para o crescimento e evolução contínuos, impulsionados por diversas tendências importantes&lt;/h1&gt;&lt;div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Lançamento do Java 24&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O projeto &lt;a href=&quot;https://openjdk.org/&quot; target=&quot;_blank&quot;&gt;OpenJDK&lt;/a&gt; que mantém a linguagem Java e a JVM/JDK adotou a cadência de releases a cada 6 meses. Sempre em Março e Setembro.&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Programado para março de 2025, o &lt;b&gt;&lt;a href=&quot;https://openjdk.org/projects/jdk/24/&quot; target=&quot;_blank&quot;&gt;Java 24&lt;/a&gt;&lt;/b&gt; apresenta melhorias significativas:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;JEP 483: Ahead-of-Time Class Loading &amp;amp; Linking:&lt;/b&gt;&amp;nbsp;É um novo recurso do JDK 24 que visa melhorar o tempo de inicialização de aplicativos Java armazenando definições de classe e vinculando informações em um cache AOT (head-of-time).&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Compact Object Headers -&amp;nbsp;&lt;b&gt;JEP 470&lt;/b&gt;:&lt;/b&gt; reduz a sobrecarga de memória, melhorando o desempenho para aplicativos de grande escala.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Threads virtuais:&lt;/b&gt; simplifica a programação simultânea, permitindo o manuseio eficiente de vários threads.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Pattern Matching:&lt;/b&gt; melhora a legibilidade do código e reduz o boilerplate, tornando o Java mais amigável ao desenvolvedor.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Scoped Values (Fourth Preview) - JEP 487:&lt;/b&gt;&amp;nbsp;Valores com escopo oferecem uma alternativa para variáveis ​​locais de thread, permitindo o compartilhamento de dados imutáveis ​​dentro de partes específicas de um programa. Essa abordagem aumenta a confiabilidade e a manutenibilidade em código concorrente ao limitar o tempo de vida e o escopo de dados compartilhados.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Primitive Types in Patterns, instanceof, and switch (Second Preview) - JEP 488:&lt;/b&gt;&amp;nbsp;Este recurso estende a correspondência de padrões para suportar tipos primitivos em todos os contextos de padrões, incluindo instruções&amp;nbsp;&lt;i&gt;instanceof&lt;/i&gt;&amp;nbsp;e&amp;nbsp;&lt;i&gt;switch&lt;/i&gt;. Ele simplifica o código reduzindo boilerplate e eliminando casts inseguros.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Vector API (Ninth Incubator) - JEP 489:&lt;/b&gt;&amp;nbsp;A Vector API&amp;nbsp;permite que os desenvolvedores escrevam cálculos vetoriais que são compilados em tempo de execução para instruções vetoriais ideais em arquiteturas de CPU suportadas, melhorando o desempenho de operações paralelas de dados.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Synchronize Virtual Threads without Pinning - JEP 491:&lt;/b&gt;&amp;nbsp;Melhorias em threads virtuais permitem que elas montem e desmontem threads de plataforma mesmo dentro de métodos sincronizados. Essa melhoria previne problemas de escalabilidade ao evitar a fixação de threads virtuais em threads de plataforma durante a sincronização.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Flexible Constructor Bodies (Third Preview) - JEP 492:&lt;/b&gt;&amp;nbsp;Esse recurso permite instruções antes de chamadas do construtor para super(...) ou this(...), permitindo validação de entrada e computação antes da inicialização da superclasse, resultando em um código mais conciso e sustentável.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Module Import Declarations (Second Preview) - JEP 494:&lt;/b&gt;&amp;nbsp;As declarações de importação de módulos permitem a importação implícita de todos os pacotes exportados por um módulo, simplificando a reutilização de bibliotecas modulares e reduzindo a verbosidade de múltiplas importações de pacotes sob demanda.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Simple Source Files and Instance Main Methods (Fourth Preview) - JEP 495:&lt;/b&gt;&amp;nbsp;Destinado a iniciantes, esse recurso permite escrever programas simples sem declarações de classe e permite métodos main de instância, simplificando o processo de aprendizado e reduzindo o código clichê.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Structured Concurrency (Fourth Preview) - JEP 499:&lt;/b&gt;&amp;nbsp;A simultaneidade estruturada melhora a confiabilidade e a observabilidade do código simultâneo gerenciando o ciclo de vida dos threads de maneira estruturada, garantindo que todas as subtarefas dentro de uma tarefa pai sejam concluídas ou canceladas juntas.&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Esses desenvolvimentos refletem o compromisso contínuo do Java em evoluir de maneiras que melhorem a clareza, a segurança e o desempenho do código, mantendo a linguagem robusta e moderna para os desenvolvedores. Alem disso, a plataforma Java é preparada para os seguintes cenários/desafios:&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;1. Desenvolvimento nativo para nuvem&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Arquitetura de microsserviços:&lt;/b&gt; Java continua sendo uma escolha popular para construir microsserviços, com frameworks como Spring Boot e Micronaut fornecendo suporte robusto para essa arquitetura.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Computação sem servidor:&lt;/b&gt; Java está sendo cada vez mais usado para funções sem servidor em plataformas como AWS Lambda e Google Cloud Functions, permitindo que desenvolvedores criem e implantem aplicativos escaláveis ​​sem gerenciar servidores.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Conteinerização:&lt;/b&gt; Aplicativos Java estão cada vez mais sendo conteinerizados usando Docker e implantados em plataformas como Kubernetes, aumentando a portabilidade e a escalabilidade&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;h2&gt;2. Desempenho e eficiência&lt;/h2&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Project Loom:&lt;/b&gt; Espera-se que a introdução de threads virtuais no Project Loom revolucione a programação simultânea em Java, permitindo que os desenvolvedores escrevam aplicativos altamente escaláveis ​​e responsivos com o mínimo de esforço.&lt;/li&gt;&lt;li&gt;&lt;b&gt;GraalVM:&lt;/b&gt; Esta JVM de alto desempenho para Java e outras linguagens permite a geração de imagens nativas, resultando em tempos de inicialização mais rápidos e menor consumo de memória para aplicativos Java.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;3. Recursos de linguagem moderna&lt;/h2&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Records:&lt;/b&gt; introduzidos no Java 14, os &quot;registros&quot; fornecem uma sintaxe concisa para criar classes de dados imutáveis, reduzindo o código boilerplate e melhorando a legibilidade do código.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Classes seladas:&lt;/b&gt; este recurso, introduzido no Java 15, permite que os desenvolvedores restrinjam quais classes podem estender ou implementar uma determinada classe ou interface, aumentando a segurança do tipo e a manutenibilidade.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pattern Matching for instanceof:&lt;/b&gt; simplifica a verificação de tipos permitindo que você extraia valores de objetos dentro da própria verificação instanceof.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Encapsulamento forte por padrão&lt;/b&gt;: fortalece ainda mais o sistema de módulos, dificultando o acesso às APIs internas dos módulos, melhorando a segurança e a manutenibilidade.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Foreign Function &amp;amp; Memory API:&lt;/b&gt; fornece uma maneira mais eficiente e segura de interagir com código nativo e memória em comparação com o antigo JNI (Java Native Interface).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;4. Big Data e Machine Learning&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Java continua sendo uma escolha popular para processamento e análise de big data, com frameworks como Apache Hadoop e Spark fornecendo ferramentas poderosas para lidar com grandes conjuntos de dados.&lt;/div&gt;&lt;div&gt;A integração de Java com frameworks de machine learning como TensorFlow e PyTorch está crescendo, permitindo que desenvolvedores criem aplicativos inteligentes usando Java.&lt;/div&gt;&lt;div&gt;&lt;h2&gt;5. Comunidade e ecossistema fortes&lt;/h2&gt;&lt;div&gt;A comunidade Java continua vibrante e ativa, com vários projetos de código aberto, conferências e grupos de usuários fornecendo recursos valiosos e suporte para desenvolvedores.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;O vasto ecossistema de bibliotecas e frameworks Java continua a crescer, fornecendo aos desenvolvedores uma ampla gama de ferramentas para construir uma variedade de aplicativos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;Conclusão&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;No geral, o ecossistema Java está bem posicionado para o sucesso contínuo em 2025 e além, graças à sua base sólida, comunidade ativa e evolução contínua para atender às demandas do desenvolvimento de software moderno.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Referências&lt;/h2&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/projects/jdk/24/&quot; target=&quot;_blank&quot;&gt;https://openjdk.org/projects/jdk/24/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://bell-sw.com/blog/an-overview-of-jdk-24-features/&quot; target=&quot;_blank&quot;&gt;https://bell-sw.com/blog/an-overview-of-jdk-24-features/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://dev.to/limuss/the-latest-trends-frameworks-and-libraries-in-java-2024-2025-2ej0&quot; target=&quot;_blank&quot;&gt;https://dev.to/limuss/the-latest-trends-frameworks-and-libraries-in-java-2024-2025-2ej0&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogs.oracle.com/java/post/the-arrival-of-java-23&quot; target=&quot;_blank&quot;&gt;https://blogs.oracle.com/java/post/the-arrival-of-java-23&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot;&gt;&lt;img src=&quot;https://lh7-us.googleusercontent.com/aH3ZzHNBWziP-L4KXIPAkDRG6Cbgb1ar__QMkUH-fiYn_6fVOrR2sp9P2GTTa06uBqy8gCnlWjLDXyKJVRcp7ulreGUh2-tY9dugqFVwk_ezeA7HNiGVB3h8RHwDN8D76G82Qy1VjlxHWi51ZxfVKpY&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/4599059904201537016/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2025/02/o-que-esperar-do-ecossistema-em-2025.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4599059904201537016'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4599059904201537016'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2025/02/o-que-esperar-do-ecossistema-em-2025.html' title='O que esperar do ecossistema Java em 2025'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZgO3bF2pcwvR-uyjinrDUIsOiASCiu9AmSmDfXoTJM3VRlqjTar5tBCvplQqycFrRaxGw5TgARrPd6y_M2y0PQOg9zviFl8BKcgusSuz2uBGKjQfq6bfxlvqT1rSkPgYx9wewKR935-v-lNogHlfiaaEQuGPqLbwTpbDz9tH_w-Jmhqf8YrHn2VaUjHUN/s72-w400-h400-c/java_2025.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-4865209510022443642</id><published>2024-12-24T01:14:00.002-03:00</published><updated>2024-12-24T01:17:51.164-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2024"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="retrospectiva"/><title type='text'>Retrospectiva do Ecossistema Java 2024</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiKfP8ruOtYvrAisbI3DjbbKkM6m3WLWMP2f8Y6dLotH60OHLYtDiO9uaD1-hzlD6ZN7t_gcHaTulY3ER4OVp6gPIK-VXfFtVpyLjCZsgZUMO9Pu9A0xi43tDdpoSxcxwjDZ1bkFnGem9AWfcpdw8ZuiZB3nDENLzPd8Hy4nEwCakkkOiXkpPcxvlwb9Rq/s1024/DALL%C2%B7E%202024-12-22%2010.25.49%20-%20A%20minimalist%20image%20featuring%20the%20Java%20logo%20and%20the%20text%20&#39;2024&#39;%20on%20a%20background%20adorned%20with%20small,%20subtle,%20steaming%20coffee%20cup%20icons.%20The%20coffee%20cups%20.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1024&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiKfP8ruOtYvrAisbI3DjbbKkM6m3WLWMP2f8Y6dLotH60OHLYtDiO9uaD1-hzlD6ZN7t_gcHaTulY3ER4OVp6gPIK-VXfFtVpyLjCZsgZUMO9Pu9A0xi43tDdpoSxcxwjDZ1bkFnGem9AWfcpdw8ZuiZB3nDENLzPd8Hy4nEwCakkkOiXkpPcxvlwb9Rq/s320/DALL%C2%B7E%202024-12-22%2010.25.49%20-%20A%20minimalist%20image%20featuring%20the%20Java%20logo%20and%20the%20text%20&#39;2024&#39;%20on%20a%20background%20adorned%20with%20small,%20subtle,%20steaming%20coffee%20cup%20icons.%20The%20coffee%20cups%20.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O ano de 2024 foi marcante para o ecossistema Java, consolidando sua posição como uma das principais linguagens de programação no desenvolvimento de aplicações modernas. Com atualizações significativas, adoção crescente de novas versões e discussões relevantes na comunidade, o Java demonstrou sua capacidade de evolução contínua para atender às demandas tecnológicas atuais.&lt;/div&gt;&lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;&lt;div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;Principais Notícias de 2024&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Adoção acelerada do Java 21&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Em setembro de 2023, foi lançado o Java 21, trazendo melhorias notáveis, como threads virtuais e bibliotecas aprimoradas. A adoção desta versão foi significativamente mais rápida em comparação com lançamentos anteriores. Nos seis meses subsequentes ao lançamento, 1,4% das aplicações monitoradas já utilizavam o Java 21, um aumento de 287% em relação ao mesmo período após o lançamento do Java 17. Além disso, o Java 17, lançado anteriormente, viu sua adoção crescer para 35% das aplicações, refletindo um aumento de quase 300% em um ano.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Alguns dos recursos relevantes foram:&lt;/b&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Threads Virtuais&lt;/b&gt; (Projeto Loom): Simplificaram a programação concorrente, permitindo lidar com milhões de threads leves com baixo impacto de desempenho.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Scoped Value&lt;/b&gt;s: Avançaram a gestão de dados compartilhados entre threads, tornando os sistemas concorrentes mais simples e eficientes.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Melhorias no Garbage Collector&lt;/b&gt;: O ZGC e G1 GC receberam ajustes que reduziram pausas e melhoraram a eficiência em ambientes de grande escala.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Desafios de Performance e Atualizações&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Uma pesquisa realizada pela &lt;a href=&quot;https://bell-sw.com/blog/Java-Developer-Survey-2024/&quot; target=&quot;_blank&quot;&gt;BellSoft&lt;/a&gt; revelou que 73% dos desenvolvedores acreditam que o desempenho das aplicações Java em suas empresas pode ser melhorado. Apesar das versões mais recentes, muitos ainda utilizam o Java 8 e 11 em produção. A pesquisa também destacou que 21% dos entrevistados não priorizam a migração para versões mais novas devido à falta de urgência percebida pelos gestores de negócios.&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;O Papel das Versões Não-TLS no Ciclo de Inovação do Java&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;As versões não-TLS, lançadas a cada seis meses, são fundamentais para o avanço do Java. Elas introduzem novos recursos e experimentos, permitindo feedback direto da comunidade antes de sua inclusão definitiva nas versões TLS. Em 2024, tivemos dois lançamentos significativos: Java 22 (março de 2024) e Java 23 (setembro de 2024). Apesar de não terem suporte estendido, essas versões são amplamente utilizadas em ambientes de teste e desenvolvimento para avaliar e experimentar as mais recentes inovações.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Principais JEPs (Java Enhancement Proposals) Liberados em 2024:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;Threads Virtuais&lt;/b&gt; como Recurso PadrãoVersão: Consolidado no Java 21, evoluções nas versões não-TLS.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Objetivo&lt;/b&gt;: Simplificar a programação concorrente no Java, permitindo milhares de threads leves com impacto mínimo no desempenho.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Impacto&lt;/b&gt;: Melhoria significativa em servidores e aplicações de alta carga.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Projeto Valhalla&lt;/b&gt;: Primitive Classes (JEP 401)Versão: Introduzido como prévia em Java 22.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Objetivo&lt;/b&gt;: Fornecer uma forma de criar classes que se comportam como tipos primitivos, reduzindo overhead de memória e melhorando a performance.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Impacto&lt;/b&gt;: Um marco para aplicações que exigem alta eficiência, como processamento financeiro e jogos.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;String Templates:&lt;/b&gt; Prévia em Java 22 e continuada no Java 23.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Objetivo&lt;/b&gt;: Introduzir interpolação de strings, simplificando a construção de strings dinâmicas.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Impacto&lt;/b&gt;: Reduz o uso de APIs externas como String.format() e bibliotecas de template.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Introdução ao nullability&lt;/b&gt; para melhor segurança: Primeira preview no Java 23.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Objetivo&lt;/b&gt;: Fornecer uma maneira padrão de expressar e verificar o uso de valores null no código.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Impacto&lt;/b&gt;: Reduz erros relacionados a NullPointerException, uma das exceções mais comuns no Java.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Projeto Loom:&lt;/b&gt; Scoped Values: Introduzido no Java 22.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Objetivo&lt;/b&gt;: Facilitar o compartilhamento de dados entre threads de forma eficiente e segura.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Impacto&lt;/b&gt;: Simplificação de práticas de programação para ambientes concorrentes e paralelos.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Compact Object Headers&lt;/b&gt; (Projeto Lilliput): Testado no Java 22.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Objetivo&lt;/b&gt;: Reduzir o tamanho dos cabeçalhos de objetos na JVM.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Impacto&lt;/b&gt;: Melhor utilização de memória em aplicações de grande escala.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Atualizações no Garbage Collector&lt;/b&gt;: Melhorias em G1 e ZGC no Java 23.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Objetivo: Reduzir pausas de coleta de lixo e melhorar a eficiência em sistemas com grande quantidade de memória.&lt;/li&gt;&lt;li&gt;Impacto: Melhor desempenho em aplicações críticas, como bancos de dados e sistemas de análise em tempo real.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;Tendências Emergentes&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O uso de ferramentas de inteligência artificial para auxiliar na escrita de código ganhou destaque, com 18% dos desenvolvedores adotando essas tecnologias. Além disso, a conscientização sobre a &quot;Green Java&quot; tornou-se um foco importante, refletindo a preocupação com a eficiência energética e sustentabilidade no desenvolvimento de software.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;A IBM apresentou avanços significativos com o watsonx Code Assistant para aplicativos corporativos Java, previsto para outubro de 2024. Essa ferramenta de IA auxilia na geração de código, aumentando a eficiência e precisão no desenvolvimento de aplicações Java.&lt;/span&gt;&lt;br style=&quot;text-align: start;&quot; /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Computação Sem Servidor&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A computação sem servidor (serverless) ganhou destaque no desenvolvimento Java, com a popularidade de plataformas como AWS Lambda e Azure Functions. Essa abordagem permite que os desenvolvedores construam e implantem aplicações de maneira mais rápida e eficiente, sem a necessidade de gerenciar a infraestrutura subjacente.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Referências:&lt;/h2&gt;&lt;div&gt;&lt;a href=&quot;https://www.oracle.com/br/news/announcement/oracle-releases-java-23-2024-09-17/&quot; target=&quot;_blank&quot;&gt;https://www.oracle.com/br/news/announcement/oracle-releases-java-23-2024-09-17/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://newrelic.com/resources/report/2024-state-of-the-java-ecosystem&quot; target=&quot;_blank&quot;&gt;https://newrelic.com/resources/report/2024-state-of-the-java-ecosystem&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://bell-sw.com/blog/Java-Developer-Survey-2024/&quot; target=&quot;_blank&quot;&gt;https://bell-sw.com/blog/Java-Developer-Survey-2024/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot;&gt;&lt;img src=&quot;https://lh7-us.googleusercontent.com/aH3ZzHNBWziP-L4KXIPAkDRG6Cbgb1ar__QMkUH-fiYn_6fVOrR2sp9P2GTTa06uBqy8gCnlWjLDXyKJVRcp7ulreGUh2-tY9dugqFVwk_ezeA7HNiGVB3h8RHwDN8D76G82Qy1VjlxHWi51ZxfVKpY&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/4865209510022443642/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2024/12/retrospectiva-do-ecossistema-java-2024.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4865209510022443642'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4865209510022443642'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2024/12/retrospectiva-do-ecossistema-java-2024.html' title='Retrospectiva do Ecossistema Java 2024'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiKfP8ruOtYvrAisbI3DjbbKkM6m3WLWMP2f8Y6dLotH60OHLYtDiO9uaD1-hzlD6ZN7t_gcHaTulY3ER4OVp6gPIK-VXfFtVpyLjCZsgZUMO9Pu9A0xi43tDdpoSxcxwjDZ1bkFnGem9AWfcpdw8ZuiZB3nDENLzPd8Hy4nEwCakkkOiXkpPcxvlwb9Rq/s72-c/DALL%C2%B7E%202024-12-22%2010.25.49%20-%20A%20minimalist%20image%20featuring%20the%20Java%20logo%20and%20the%20text%20&#39;2024&#39;%20on%20a%20background%20adorned%20with%20small,%20subtle,%20steaming%20coffee%20cup%20icons.%20The%20coffee%20cups%20.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-4968048645678153551</id><published>2024-05-31T11:55:00.002-03:00</published><updated>2024-05-31T11:57:02.411-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2024"/><category scheme="http://www.blogger.com/atom/ns#" term="Javadoc"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK23"/><category scheme="http://www.blogger.com/atom/ns#" term="Markdown"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><title type='text'>Java aprimora a documentação com suporte Markdown</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Javadoc com suporte Markdown&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java aprimora a documentação com suporte Markdown&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh7-us.googleusercontent.com/docsz/AD_4nXcBmRcMBtXe3wLH1C7Jh1XiYyQ8QAADgnOwynqofMg0bIvHcJjoUuZVkr-ynLxbfPZGJs-QKfpqNDOgjcL0k-R9o4In4rQAbxoHAOOYV_YBgIbbJUePEQ1WgEXsppOFYhMQaSgwGHHWLqOUYbnNfKLLfXOt?key=8_bXg7rqZbW6xNDNKP9img&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;span id=&quot;docs-internal-guid-a350243a-7fff-bbb4-4ae2-e2f038e9f39d&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 217px; overflow: hidden; width: 354px;&quot;&gt;&lt;img height=&quot;217&quot; src=&quot;https://lh7-us.googleusercontent.com/docsz/AD_4nXcBmRcMBtXe3wLH1C7Jh1XiYyQ8QAADgnOwynqofMg0bIvHcJjoUuZVkr-ynLxbfPZGJs-QKfpqNDOgjcL0k-R9o4In4rQAbxoHAOOYV_YBgIbbJUePEQ1WgEXsppOFYhMQaSgwGHHWLqOUYbnNfKLLfXOt?key=8_bXg7rqZbW6xNDNKP9img&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;354&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Permite que os comentários da documentação do JavaDoc sejam escritos em Markdown, em vez de apenas em uma mistura de HTML e JavaDoc @-tags.&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;a href=&quot;https://openjdk.org/jeps/467&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;color: #1155cc; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;JEP 467, Markdown Documentation Comments&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;, foi promovido para ser liberado no &lt;/span&gt;&lt;a href=&quot;https://openjdk.org/projects/jdk/23/&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;color: #1155cc; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;JDK 23&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Objetivos da JEP&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Tornar os comentários da documentação da API mais fáceis de escrever e ler no formato de origem, introduzindo a capacidade de usar a sintaxe Markdown nos comentários da documentação, juntamente com elementos HTML e tags JavaDoc.&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Estende a &lt;/span&gt;&lt;a href=&quot;https://docs.oracle.com/en/java/javase/22/docs/api/jdk.compiler/module-summary.html#CompilerTreeAPI&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;color: #1155cc; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;API Compiler Tree&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; para permitir que outras ferramentas que analisam comentários de documentação manipulem o conteúdo Markdown nesses comentários.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Não&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; é o objetivo desta JEP, permitir a conversão automatizada de comentários de documentação existentes para a sintaxe Markdown.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Motivação&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Os comentários da documentação Java tradicionalmente usam tags HTML e JavaDoc, uma escolha prática em 1995, mas desde então se tornou menos conveniente. HTML é prolixo e difícil de escrever à mão, especialmente para desenvolvedores que talvez não estejam familiarizados com ele. Tags JavaDoc embutidas, como {@link} e {@code}, são complicadas e muitas vezes exigem documentação de referência para uso adequado.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Markdown, por outro lado, é uma linguagem de marcação leve e fácil de ler e escrever. Ele oferece suporte a estruturas de documentos simples, como parágrafos, listas, texto estilizado e links, tornando-o um substituto adequado para HTML em comentários de documentação. Além disso, o Markdown permite a inclusão de HTML para construções que não suportam diretamente, proporcionando flexibilidade e reduzindo a complexidade.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Como exemplo do uso de Markdown em um comentário de documentação, considere o comentário para &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;java.lang.Object.hashCode&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/**&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * Returns a hash code value for the object. This method is&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * supported for the benefit of hash tables such as those provided by                                                                       &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * {@link java.util.HashMap}.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;lt;p&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * The general contract of {@code hashCode} is:&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;lt;ul&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;lt;li&amp;gt;Whenever it is invoked on the same object more than once during&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; an execution of a Java application, the {@code hashCode} method&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; must consistently return the same integer, provided no information&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; used in {@code equals} comparisons on the object is modified.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; This integer need not remain consistent from one execution of an&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; application to another execution of the same application.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;lt;li&amp;gt;If two objects are equal according to the {@link&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; #equals(Object) equals} method, then calling the {@code&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; hashCode} method on each of the two objects must produce the&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; same integer result.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;lt;li&amp;gt;It is &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; required that if two objects are unequal&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; according to the {@link #equals(Object) equals} method, then&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; calling the {@code hashCode} method on each of the two objects&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; must produce distinct integer results.&amp;nbsp; However, the programmer&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; should be aware that producing distinct integer results for&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;nbsp; &amp;nbsp; unequal objects may improve the performance of hash tables.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * &amp;lt;/ul&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; *&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * @implSpec&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * As far as is reasonably practical, the {@code hashCode} method defined&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * by class {@code Object} returns distinct integers for distinct objects.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; *&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * @return&amp;nbsp; a hash code value for this object.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * @see &amp;nbsp; &amp;nbsp; java.lang.Object#equals(java.lang.Object)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; * @see &amp;nbsp; &amp;nbsp; java.lang.System#identityHashCode&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; */&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Este comentário pode ser escrito em Markdown da seguinte forma:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// Returns a hash code value for the object. This method is&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// supported for the benefit of hash tables such as those provided by                                                                        &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// [java.util.HashMap].&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;///&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// The general contract of `hashCode` is:&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;///&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; - Whenever it is invoked on the same object more than once during&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; an execution of a Java application, the `hashCode` method&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; must consistently return the same integer, provided no information&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; used in `equals` comparisons on the object is modified.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; This integer need not remain consistent from one execution of an&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; application to another execution of the same application.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; - If two objects are equal according to the&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; [equals][#equals(Object)] method, then calling the&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; `hashCode` method on each of the two objects must produce the&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; same integer result.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; - It is _not_ required that if two objects are unequal&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; according to the [equals][#equals(Object)] method, then&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; calling the `hashCode` method on each of the two objects&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; must produce distinct integer results.&amp;nbsp; However, the programmer&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; should be aware that producing distinct integer results for&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// &amp;nbsp; &amp;nbsp; unequal objects may improve the performance of hash tables.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;///&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// @implSpec&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// As far as is reasonably practical, the `hashCode` method defined&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// by class `Object` returns distinct integers for distinct objects.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;///&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// @return&amp;nbsp; a hash code value for this object.&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// @see &amp;nbsp; &amp;nbsp; java.lang.Object#equals(java.lang.Object)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/// @see &amp;nbsp; &amp;nbsp; java.lang.System#identityHashCode&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Principais diferenças a serem observadas:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O uso de Markdown é indicado por uma nova forma de comentário de documentação em que cada linha começa com &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;///&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; em vez da sintaxe tradicional &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;/** ... */&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O elemento HTML &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; não é obrigatório; uma linha em branco indica uma quebra de parágrafo.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Os elementos HTML &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; e &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;lt;li&amp;gt;&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; são substituídos por marcadores de lista com marcadores Markdown, usando &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;-&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; para indicar o início de cada item na lista.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O elemento HTML &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;lt;em&amp;gt;&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; é substituído por sublinhados (&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;_&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;) para indicar a alteração da fonte.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;As instâncias da tag {&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;@code ...&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;} são substituídas por crases (`&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;...&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;`) para indicar a fonte monoespaçada.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Instâncias de {&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;@link ...&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;} para vincular a outros elementos do programa são substituídas por formas estendidas de links de referência Markdown.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Instâncias de tags de bloco, como &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;@implSpec&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;, &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;@return&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; e &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;@see&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;, geralmente não são afetadas, exceto que o conteúdo dessas tags agora também está em Markdown, por exemplo, aqui nos crases do conteúdo da tag &lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;@implSpec&lt;/span&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-size: large; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A imagem abaixo compara as duas versões:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; overflow: hidden; width: 1402px;&quot;&gt;&lt;img span=&quot;&quot; src=&quot;https://lh7-us.googleusercontent.com/docsz/AD_4nXfmpMXhRGhTaveID20dK05DWMJfII-fQq0pYS5Y0OAbxQfyG2Jal0gApD6uLjovZ4virVU9zGGGLx5QoLrvxIr4sMAyg5epEgRK0YDBb7RTh-C2CUhcnVACBXcY5fAedqwT0m22OlmAnwne0iq58FfUzW0P=s16000?key=8_bXg7rqZbW6xNDNKP9img&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;background-color: transparent; font-size: 15pt; white-space-collapse: preserve;&quot;&gt;&lt;div&gt;&lt;span&gt;&lt;span style=&quot;background-color: transparent; font-size: 15pt; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: transparent; font-size: 15pt; white-space-collapse: preserve;&quot;&gt;Referências:&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.infoq.com/news/2024/05/jep467-markdown-in-javadoc/&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;https://www.infoq.com/news/2024/05/jep467-markdown-in-javadoc/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://openjdk.org/jeps/467&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span face=&quot;Verdana, sans-serif&quot; style=&quot;background-color: transparent; color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;https://openjdk.org/jeps/467&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot;&gt;&lt;img src=&quot;https://lh7-us.googleusercontent.com/aH3ZzHNBWziP-L4KXIPAkDRG6Cbgb1ar__QMkUH-fiYn_6fVOrR2sp9P2GTTa06uBqy8gCnlWjLDXyKJVRcp7ulreGUh2-tY9dugqFVwk_ezeA7HNiGVB3h8RHwDN8D76G82Qy1VjlxHWi51ZxfVKpY&quot; /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/4968048645678153551/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2024/05/java-aprimora-documentacao-com-suporte.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4968048645678153551'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4968048645678153551'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2024/05/java-aprimora-documentacao-com-suporte.html' title='Java aprimora a documentação com suporte Markdown'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh7-us.googleusercontent.com/docsz/AD_4nXcBmRcMBtXe3wLH1C7Jh1XiYyQ8QAADgnOwynqofMg0bIvHcJjoUuZVkr-ynLxbfPZGJs-QKfpqNDOgjcL0k-R9o4In4rQAbxoHAOOYV_YBgIbbJUePEQ1WgEXsppOFYhMQaSgwGHHWLqOUYbnNfKLLfXOt=s72-c?key=8_bXg7rqZbW6xNDNKP9img" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-1742469593906039445</id><published>2024-03-17T10:12:00.002-03:00</published><updated>2024-03-17T10:12:20.768-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2024"/><category scheme="http://www.blogger.com/atom/ns#" term="java22"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK22"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><title type='text'>Java 22</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java 22&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java 22 vem aí!&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiZp2Z1sK_-XGu9wdhJegp21d_BEzdy63bTWflKoPqdAg_fx3Zdh-E77urkHjiylv4a9wBmj2L_VahR5SLQzVyLWKHQUmtS04MKRw4g_fV8Z4puitT1WIZJlivza9yYqmpVz_Y5meSY9AYHuy3jKlqhHWfUvtSs3rgUVdMh2iNvDpO_Q-asIzhfU5JX1Rwc&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;


&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiZp2Z1sK_-XGu9wdhJegp21d_BEzdy63bTWflKoPqdAg_fx3Zdh-E77urkHjiylv4a9wBmj2L_VahR5SLQzVyLWKHQUmtS04MKRw4g_fV8Z4puitT1WIZJlivza9yYqmpVz_Y5meSY9AYHuy3jKlqhHWfUvtSs3rgUVdMh2iNvDpO_Q-asIzhfU5JX1Rwc&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;960&quot; data-original-width=&quot;1920&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiZp2Z1sK_-XGu9wdhJegp21d_BEzdy63bTWflKoPqdAg_fx3Zdh-E77urkHjiylv4a9wBmj2L_VahR5SLQzVyLWKHQUmtS04MKRw4g_fV8Z4puitT1WIZJlivza9yYqmpVz_Y5meSY9AYHuy3jKlqhHWfUvtSs3rgUVdMh2iNvDpO_Q-asIzhfU5JX1Rwc=w640-h320&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h1 style=&quot;text-align: justify;&quot;&gt;Java 22 vem aí!&lt;/h1&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O JDK 22 está chegando, sendo lançado em 19 de março. Podemos acompanhar a live de lançamento aqui&amp;nbsp;&lt;a href=&quot;https://www.youtube.com/watch?v=AjjAZsnRXtE&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=AjjAZsnRXtE&lt;/a&gt; a partir das 14 horas (horário de Brasilia)&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;No total, são 12 features (JEPs) a serem liberadas no JDK 22. Classificadas em final features e preview features. 4 final features, 7 preview features e 1 feature incubada. Além de inúmeros bugs corrigidos e pequenas outras novas features. O release notes pode ser acessado &lt;a href=&quot;https://jdk.java.net/22/release-notes&quot; target=&quot;_blank&quot;&gt;aqui&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Final Features&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://openjdk.org/jeps/423&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;423:&lt;/b&gt;&lt;span style=&quot;font-weight: bold; white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&lt;a href=&quot;https://openjdk.org/jeps/423&quot; target=&quot;_blank&quot;&gt;Region Pinning for G1&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Reduzir a latência implementando a fixação de região no G1, para que a coleta de lixo não precise ser desativada durante regiões críticas da Java Native Interface (JNI). Aborda problemas de travamento de threads porque foram referenciados por objetos usados pelo código nativo. Com esta alteração, o G1 manterá os objetos nativos na região onde residem enquanto continua a executar o coletor de lixo.&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://openjdk.org/jeps/454&quot; target=&quot;_blank&quot;&gt;454:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Foreign Function &amp;amp; Memory API&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Uma API que permite que programas Java chamem bibliotecas nativas e processem dados nativos sem a fragilidade e o perigo de JNI. Atualmente, os desenvolvedores Java ainda enfrentam obstáculos significativos no acesso a um tipo importante de recurso não-Java: código e dados na mesma máquina que a JVM, mas fora da JVM.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/projects/jdk/22/&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;456:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Unnamed Variables &amp;amp; Patterns&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Melhorar a linguagem de programação Java com variáveis ​​e padrões sem nome, que podem ser usados ​​quando declarações de variáveis ​​ou padrões aninhados são necessários, mas nunca usados. Ambos são indicados pelo caractere de sublinhado, _. Um exemplo de uso de variáveis ​​sem nome:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Luxi Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;static int count(Iterable&amp;lt;Order&amp;gt; orders) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Luxi Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int total = 0;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Luxi Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (Order _ : orders) // Unnamed variable&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Luxi Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;total++;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Luxi Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return total;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: &amp;quot;DejaVu Sans Mono&amp;quot;, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;Luxi Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;a href=&quot;https://openjdk.org/jeps/458&quot; target=&quot;_blank&quot;&gt;458:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Launch Multi-File Source-Code Programs&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Aprimora o inicializador de aplicativos Java para poder executar um programa fornecido como vários arquivos de código-fonte Java. Isso tornará a transição de programas pequenos para programas maiores mais gradual, permitindo que os desenvolvedores escolham se e quando se dar ao trabalho de configurar uma ferramenta de compilação. Este é um recurso que já existe desde o Java 11 (&lt;a href=&quot;https://openjdk.org/jeps/330&quot; target=&quot;_blank&quot;&gt;JEP 330&lt;/a&gt;) e esta JEP realizou melhorias.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;&lt;br /&gt;Preview Features&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/jeps/447&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;447:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Statements before super(...) (Preview)&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Permitir que instruções sejam criadas antes da chamada a super() dentro de construtores.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Atualmente, para garantir que os construtores sejam executados de cima para baixo, a linguagem Java exige que, no corpo de um construtor, qualquer invocação explícita de outro construtor apareça como a primeira instrução; se nenhuma invocação explícita do construtor for fornecida, uma será injetada pelo compilador.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Às vezes precisamos validar um argumento que é passado para um construtor de superclasse. Podemos validar o argumento após o fato, mas isso significa potencialmente fazer um trabalho desnecessário. Este é um exemplo do problema que esta JEP quer resolver.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/jeps/457&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;457:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Class-File API (Preview)&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Fornece uma API para processar arquivos de classe que rastreie o formato de arquivo de classe definido pela especificação da Java Virtual Machine.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Permite que os componentes do JDK migrem para a API padrão e, eventualmente, remova a cópia interna do JDK da biblioteca ASM de terceiros.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/jeps/459&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;459:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;String Templates (Second Preview)&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Os modelos de string foram originalmente propostos como um recurso de visualização pelo &lt;a href=&quot;https://openjdk.org/jeps/430&quot; target=&quot;_blank&quot;&gt;JEP 430&lt;/a&gt; no JDK 21. Propomos aqui uma segunda visualização para obter experiência e feedback adicionais. Exceto por uma alteração técnica nos tipos de expressões do modelo, não há alterações em relação à primeira visualização.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href=&quot;https://openjdk.org/jeps/460&quot; target=&quot;_blank&quot;&gt;460:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Vector API (Seventh Incubator)&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Este JEP propõe reincubar a API no JDK 22, com pequenas melhorias na API em relação ao JDK 21. A implementação inclui correções de bugs e melhorias de desempenho. Incluímos as seguintes alterações notáveis:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Suporta acesso vetorial com MemorySegments da heap que são apoiados por uma matriz de qualquer tipo de elemento primitivo. Anteriormente, o acesso era limitado MemorySegments da heap apoiado por uma matriz de bytes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href=&quot;https://openjdk.org/jeps/461&quot; target=&quot;_blank&quot;&gt;461:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Stream Gatherers (Preview)&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Aprimora a API Stream para oferecer suporte a operações intermediárias personalizadas. Isso permitirá que pipelines de fluxo transformem dados de maneiras que não são facilmente alcançáveis ​​com as operações intermediárias atuais. Esta é uma API de visualização.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/jeps/462&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;462:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Structured Concurrency (Second Preview)&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Simplifica a programação simultânea introduzindo uma API para simultaneidade estruturada. A simultaneidade estruturada trata grupos de tarefas relacionadas executadas em diferentes threads como uma única unidade de trabalho, simplificando assim o tratamento e cancelamento de erros, melhorando a confiabilidade e aprimorando a observabilidade. Esta é uma API de visualização.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;a href=&quot;https://openjdk.org/jeps/463&quot; target=&quot;_blank&quot;&gt;463:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Implicitly Declared Classes and Instance Main Methods (Second Preview)&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Evoluir a linguagem Java para que os alunos possam escrever seus primeiros programas sem a necessidade de compreender os recursos da linguagem projetada para programas grandes. Longe de usar um dialeto separado da linguagem, os alunos podem escrever declarações simplificadas para programas de classe única e, em seguida, expandir seus programas para usar recursos mais avançados à medida que suas habilidades aumentam. Este é um recurso de visualização do idioma.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://openjdk.org/jeps/464&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;464:&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;Scoped Values (Second Preview)&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Introduz valores com escopo definido, que permitem o compartilhamento gerenciado de dados imutáveis tanto com quadros filhos na mesma thread quanto com threads filhas. Os valores com escopo definido são mais fáceis de raciocinar do que variáveis locais de thread e têm menores custos de espaço e tempo, especialmente quando usados em combinação com Virtual Threads e Structured Concurrency. Esta é uma API de visualização.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Um Scoped Values é um contêiner de objeto que permite que um valor de dados seja compartilhado de forma segura e eficiente por um método com seus chamados diretos e indiretos dentro da mesma thread e com threads filhas, sem recorrer a parâmetros de método. É uma variável do tipo ScopedValue. Normalmente, ele é declarado como um campo estático final e sua acessibilidade é definida como privada para que não possa ser acessado diretamente pelo código em outras classes.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Referências&lt;/h3&gt;&lt;br /&gt;&lt;a href=&quot;https://openjdk.org/projects/jdk/22/&quot;&gt;https://openjdk.org/projects/jdk/22/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=T64dUc0wIZ0&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=T64dUc0wIZ0&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot;&gt;&lt;img src=&quot;https://lh7-us.googleusercontent.com/aH3ZzHNBWziP-L4KXIPAkDRG6Cbgb1ar__QMkUH-fiYn_6fVOrR2sp9P2GTTa06uBqy8gCnlWjLDXyKJVRcp7ulreGUh2-tY9dugqFVwk_ezeA7HNiGVB3h8RHwDN8D76G82Qy1VjlxHWi51ZxfVKpY&quot; /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/1742469593906039445/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2024/03/java-22.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/1742469593906039445'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/1742469593906039445'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2024/03/java-22.html' title='Java 22'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiZp2Z1sK_-XGu9wdhJegp21d_BEzdy63bTWflKoPqdAg_fx3Zdh-E77urkHjiylv4a9wBmj2L_VahR5SLQzVyLWKHQUmtS04MKRw4g_fV8Z4puitT1WIZJlivza9yYqmpVz_Y5meSY9AYHuy3jKlqhHWfUvtSs3rgUVdMh2iNvDpO_Q-asIzhfU5JX1Rwc=s72-w640-h320-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-1909941590613857570</id><published>2024-02-24T18:10:00.004-03:00</published><updated>2024-02-24T18:20:07.464-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRaC"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java 21"/><category scheme="http://www.blogger.com/atom/ns#" term="JIT"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><title type='text'>Introdução ao projeto OpenJDK CRaC</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Introdução ao projeto OpenJDK CRaC&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Projeto OpenJDK CRaC: reduzindo drasticamente o tempo de inicialização de aplicativos Java&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh7-us.googleusercontent.com/Ue6kp9T6BOlX1iobehsN2QzYHcIj2BCS0yzcw_e4R3iaatMJJZ18CqgvYvi869zppzmJZpjeg-NPd7tubuC-mwmmITzToiGf9OcvoIFnBN5bYwqYMlZQv9ukLDyN0OJpNOxkjau1KkpCMb9DcVkMRYsjzA=s16000&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;
&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span id=&quot;docs-internal-guid-ff589244-7fff-3a0e-a9db-e0522bbb7812&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;img src=&quot;https://lh7-us.googleusercontent.com/Ue6kp9T6BOlX1iobehsN2QzYHcIj2BCS0yzcw_e4R3iaatMJJZ18CqgvYvi869zppzmJZpjeg-NPd7tubuC-mwmmITzToiGf9OcvoIFnBN5bYwqYMlZQv9ukLDyN0OJpNOxkjau1KkpCMb9DcVkMRYsjzA=s16000&quot; /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/h1&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;Projeto OpenJDK CRaC: reduzindo drasticamente o tempo de inicialização de aplicativos Java&lt;/h1&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 15pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;
&lt;/span&gt;Um pouco de história&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;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 (&lt;i&gt;&lt;b&gt;write once, run anywhere&lt;/b&gt;&lt;/i&gt;)&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 342px; overflow: hidden; width: 556px;&quot;&gt;&lt;img height=&quot;394&quot; src=&quot;https://lh7-us.googleusercontent.com/mSP-KPAuNFFPoBhhrp7uxIrJZIhA4yH19MGtJpiNPtU-mlSpqW_8Gj3ppEdfb_luySSGI3UfxwRak87iejqkhwMgj88K3RF9-__jhHeyn8mkvn2K5sexd5YOPQ_HUlXDunUzD1h7MjcPvXZRV1e_wbw=w640-h394&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Desafios da inicialização de aplicativos na JVM&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;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.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;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 aplicativo, mas levam tempo para serem concluídas. Por fim, a JVM precisa aquecer o aplicativo, o que envolve analisar o código e determinar quais partes do aplicativo devem ser otimizadas.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Esse processo pode levar muito tempo e afetar a velocidade de inicialização. Esses desafios de inicialização são especialmente problemáticos para aplicativos que precisam ser iniciados rapidamente ou executados em ambientes de contêiner, onde várias JVMs podem competir por recursos limitados. Para cada réplica do aplicativo, o mesmo processo será repetido.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 362px; overflow: hidden; width: 696px;&quot;&gt;&lt;img height=&quot;362&quot; src=&quot;https://lh7-us.googleusercontent.com/xfK9rWwNrvXwNqJPzGSqv5M_yVwCGy8K2FrK2Yl_QYKVVTDIdOQMVENZ3xdVgT7CXMd1cFSpu8wmLNM9VZHXH9zQ1idLyrQLryKbWQF0sshMyFtEyS6JVLRRgvEZOXC2Z9MeZsZOjWTH3jq1MouF9sM&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;696&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Fonte: &lt;/span&gt;&lt;a href=&quot;https://pt.slideshare.net/SimonRitter/java-on-crac&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;https://pt.slideshare.net/SimonRitter/java-on-crac&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;O mecanismo de execução&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Depois que o bytecode é carregado na memória, ele é processado pelo mecanismo de execução da &lt;b&gt;JVM&lt;/b&gt;. O mecanismo de execução consiste em vários componentes, incluindo o interpretador, o compilador &lt;b&gt;C1 JIT &lt;/b&gt;e o compilador &lt;b&gt;C2 JIT.&lt;/b&gt; O interpretador pega o bytecode linha por linha e o interpreta em instruções da &lt;b&gt;CPU&lt;/b&gt;. A JVM observa o código e traça o perfil de sua execução, contando com que frequência os métodos são chamados. Se um método for chamado com frequência, ele será colocado no compilador C1 JIT, que o compila rapidamente, sem muitas otimizações, para reduzir o tempo de inicialização. A JVM continua a criar o perfil do código e, se um método for chamado com ainda mais frequência, ele será colocado no compilador C2 JIT, que pode produzir código altamente otimizado e de alto desempenho. Essa combinação de interpretadores e compiladores JIT permite que a JVM otimize o código à medida que ele é executado, resultando em uma execução mais rápida.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 377px; overflow: hidden; width: 667px;&quot;&gt;&lt;img height=&quot;377&quot; src=&quot;https://lh7-us.googleusercontent.com/D9xwoDz_GIGQL0DK1Z9XB8hM-0YfclkJyJ3iK_FjdQzvl7lBkN7GeElLsp5VhqaNJqKhUolU_rrCEWuUcVWaJ9a9-LRzP6TR0USF6LetVxnJorD5z8JaevhIKA1XVpLFdYNV9q5zZ8NrCT1zU1FQnG4&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;667&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;OpenJDK CRaC: uma solução para a inicialização rápida de aplicativos na JVM&lt;/h3&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O &lt;b&gt;Coordinated Restore and Checkpoint&lt;/b&gt;, ou &lt;b&gt;CRaC&lt;/b&gt;, é uma solução que visa melhorar o tempo de inicialização da JVM. O CRaC permite pausar e restaurar um aplicativo baseado em JVM, eliminando a necessidade de interpretação, compilação e otimização durante a inicialização. Em vez disso, você pode criar um ponto de verificação do seu aplicativo em seu estado totalmente otimizado e começar a partir desse ponto, reduzindo significativamente o tempo que leva para o seu aplicativo atingir o desempenho total.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Essa solução foi desenvolvida para permitir que aplicativos na JVM sejam iniciados mais rapidamente, reduzindo o tempo necessário para carregar e inicializar classes, bem como para realizar otimizações JIT.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Como funciona&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O &lt;b&gt;CRaC&lt;/b&gt; é baseado em um recurso do &lt;b&gt;Linux&lt;/b&gt; chamado &lt;b&gt;CRIU&lt;/b&gt;, um projeto para implementar funcionalidade de checkpoint/restore para Linux.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Checkpoint/Restore In Userspace, ou CRIU&lt;/b&gt; é um software Linux criado em 2013. Ele pode congelar um contêiner em execução (ou um aplicativo individual) e verificar seu estado no disco. Os dados salvos podem ser usados para restaurar o aplicativo e executá-lo exatamente como estava durante o congelamento.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;CRaC&lt;/b&gt; só funciona no sistema operacional Linux no momento porque a implementação do OpenJDK depende deste recurso&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O &lt;b&gt;CRaC&lt;/b&gt; exige que todos os arquivos e conexões de rede sejam fechados antes de tirar um snapshot e após restaurá-lo. É por isso que o CRaC requer suporte no tempo de execução Java e no framework. A API CRaC também permite que aplicativos Java atuem antes de um snapshot ser obtido e depois de restaurado. Os aplicativos podem obter um snapshot por meio de uma chamada de API CRaC ou com o utilitário Java jcmd. Um OpenJDK com suporte ao CRaC carrega um snapshot com a opção de linha de comando &lt;b&gt;-XX:CRaCRestoreFrom&lt;/b&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O CRaC funciona tirando uma foto (&lt;b&gt;snapshot&lt;/b&gt;) do estado do seu aplicativo, incluindo a memória JVM e os recursos que ele está usando, e armazenando-o em &lt;b&gt;arquivos&lt;/b&gt;. Essa foto, ou ponto de verificação, pode então ser usada para restaurar seu aplicativo ao estado anterior. Ao restaurar a partir de um ponto de verificação, a JVM é essencialmente iniciada de onde parou, ignorando as fases de interpretação, compilação e otimização. Isso permite que seu aplicativo atinja desempenho total quase instantaneamente.&lt;/div&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 185px; overflow: hidden; width: 693px;&quot;&gt;&lt;img height=&quot;185&quot; src=&quot;https://lh7-us.googleusercontent.com/MoqT2WJwN3U3CiSk-XTUkQpofPaS3DJ7JkG753iUm9lDvjmQinB1eS0Bz37F8NGyrtC9GTFJFHIbSuThwBfg-2glnxknGbvlDPWqDanbeSIZSYdwZnfjAGoBbW9r9UBSYifKChTUhaBkB4C6atJ83I4&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;693&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;Fonte: &lt;a href=&quot;https://pt.slideshare.net/SimonRitter/java-on-crac&quot;&gt;https://pt.slideshare.net/SimonRitter/java-on-crac&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Distribuições da OpenJDK com CRaC&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O projeto CRaC foi aceito no OpenJDK em agosto de 2021, o que significa sua importância para o futuro do Java. Porém ainda está longe de ser incluído no projeto principal.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Algumas distribuições JDK, incluindo &lt;b&gt;Azul Zulu JDK&lt;/b&gt; e &lt;b&gt;BellSoft Liberica JDK &lt;/b&gt;já oferecem suporte CRaC integrado. Frameworks como Micronaut, Quarkus e Spring já integraram suporte CRaC.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline;&quot;&gt;Utilização de outras linguagens na JVM&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O OpenJDK CRaC também permite que aplicativos escritos em outras linguagens, como Kotlin, sejam executados na JVM com a mesma rapidez e eficiência.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline;&quot;&gt;Benefícios&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Os benchmarks mostram que o CRaC pode reduzir os tempos de inicialização em &lt;b&gt;90% ou mais&lt;/b&gt;, levando a tempos de resposta de serviço mais rápidos e melhor desempenho.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Os aplicativos atingem o desempenho máximo muito mais rapidamente após serem restaurados, melhorando ainda mais a capacidade de resposta resultando em melhor utilização de recursos: Menos CPU e memória são usadas durante as inicializações, liberando recursos para outras tarefas.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Existem vários benefícios em usar o CRaC para melhorar o tempo de inicialização da JVM:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Tempo rápido para desempenho total:&lt;/b&gt; ao iniciar seu aplicativo a partir de um ponto de verificação, você pode obter desempenho total quase instantaneamente, sem esperar pela interpretação, compilação e otimização.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Eliminação de sobrecarga de interpretação e compilação:&lt;/b&gt; com o CRaC, você pode ignorar as fases de interpretação e compilação durante a inicialização, reduzindo o tempo que leva para seu aplicativo ficar totalmente otimizado.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Capacidade de resposta aprimorada:&lt;/b&gt; ao reduzir o tempo de inicialização da JVM, seu aplicativo pode responder mais rapidamente, proporcionando uma melhor experiência ao usuário.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Economia de custos:&lt;/b&gt; com tempos de inicialização mais rápidos, você pode reduzir o número de nós de alta potência necessários em sua infraestrutura de nuvem, resultando em economia de custos.&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 369px; overflow: hidden; width: 642px;&quot;&gt;&lt;img height=&quot;369&quot; src=&quot;https://lh7-us.googleusercontent.com/rbgFd3jGElkm2OUKdSh-8h1EWRwrfXaOQJ2qxcWB9aWb7MCW0Rj0o7xjocfM0j9Zva-wn7c6lBhPoGxzrabOnBxKtbLQCRNYya1H_LbUMAgV3HdNHJ0iVKfsCTj-91K7jg8PSk9a2aTUJ8RIVBkLPFM&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;Comparativo de aplicações iniciadas sem o CRaC e com o CRaC&lt;br /&gt;Fonte: &lt;a href=&quot;https://pt.slideshare.net/SimonRitter/java-on-crac&quot;&gt;https://pt.slideshare.net/SimonRitter/java-on-crac&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Na prática&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Nesta prova de conceito, temos uma aplicação &lt;b&gt;Spring Boot 3.2&lt;/b&gt; rodando com a &lt;b&gt;Azul Zulu JDK 21&lt;/b&gt;. E para que possamos testar em Sistemas Operacionais como &lt;b&gt;Mac&lt;/b&gt; e &lt;b&gt;Windows&lt;/b&gt;, vamos utilizar o &lt;b&gt;Docker&lt;/b&gt; para simular um ambiente &lt;b&gt;Linux&lt;/b&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;O código fonte da aplicação está disponível em &lt;a href=&quot;https://github.com/sandrogiacom/crac-demo&quot;&gt;https://github.com/sandrogiacom/crac-demo&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O &lt;b&gt;CRaC&lt;/b&gt; exige que todos os arquivos e conexões de rede sejam fechados antes de tirar um snapshot e reabri-lo após restaurá-lo. É por isso que o CRaC requer suporte no tempo de execução Java e no framework. A API CRaC também permite que os aplicativos Java atuem antes de um snapshot ser obtido e depois de restaurado. Os aplicativos podem obter um snapshot por meio de uma chamada de API CRaC ou com o utilitário Java &lt;b&gt;jcmd&lt;/b&gt;. O Azul OpenJDK carrega um snapshot com a opção de linha de comando &lt;b&gt;-XX:CRaCRestoreFrom&lt;/b&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para inicializar a aplicação, é necessário informar o parametro &lt;b&gt;-XX:CRaCCheckpointTo=$PATH&lt;/b&gt; onde o $PATH é o local no disco onde a JDK irá utilizar para gravar os arquivos para posteriormente restaurar. Ex:&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;java -XX:CRaCCheckpointTo=cr -jar demo.jar&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 299px; overflow: hidden; width: 718px;&quot;&gt;&lt;img height=&quot;299&quot; src=&quot;https://lh7-us.googleusercontent.com/V194I3JVeoXuwBGrbBFfyy9YafSvJVrLglBTl_GspU5_8B7WTrjNdKHLtjfCGe_2m0okOi47eEQY_C163DQuj1_qnyM8xx1Lv7jJNmly65xvsfExoAjVCEDceccOr8NwCfLrInnWs5EcsbWoLMom00w&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;718&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;Com a aplicação em execução, basta obter um snapshot através do comando:&amp;nbsp;&lt;div&gt;&lt;b&gt;jcmd demo.jar JDK.checkpoint&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Para fazer isso, abra um novo terminal, entre no container e execute o checkpoint:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;Entrando no container em execução&lt;/b&gt;: docker exec -it demo_crac /bin/bash&lt;/li&gt;&lt;li&gt;&lt;b&gt;Obtendo o checkpoint:&lt;/b&gt; jcmd demo.jar JDK.checkpoint&lt;/li&gt;&lt;/ol&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 103px; overflow: hidden; width: 470px;&quot;&gt;&lt;img height=&quot;103&quot; src=&quot;https://lh7-us.googleusercontent.com/jcsc-AqpX4wZF95acZAZTwZcfEzexAWTPE8-nbjo70kOkf8YYw5rL-gTuzI04vYcQ3NZcqkdUIAyiKISBYV8fKMm4S0C-PY73z83S2ghJuB4-tyHoXnqfsbGn6XxW025yPVJINPzSkJIK9OJGTP_ws0&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;470&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 119px; overflow: hidden; width: 540px;&quot;&gt;&lt;img height=&quot;119&quot; src=&quot;https://lh7-us.googleusercontent.com/4EMT8BBxc-gbQt_XIlriB7cFRtPlHIiuqgzmT2Z8PJwn2uZ2PAnV_2Fdbd8z4vHk4ULelH3pRDdvIdraQD7N5oIjBU7YlaV23swPg7HTXgHKFi5nPArrUq9sLSWgo311o8zL8nKYSpUM7MZ2YMDnmEI&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;540&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Neste momento serão gerados vários arquivos no local indicado na variável &lt;b&gt;$PATH.&lt;/b&gt; A aplicação será interrompida após um &lt;b&gt;snapshot&lt;/b&gt; ser executado com sucesso.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para restaurar a aplicação a partir de um snapshot, execute o seguinte comando: java -XX:CRaCRestoreFrom=$PATH.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Ex:&lt;b&gt; ​​java -XX:CRaCRestoreFrom=cr&lt;/b&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Verdana,sans-serif&quot; style=&quot;background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 148px; overflow: hidden; width: 718px;&quot;&gt;&lt;img height=&quot;148&quot; src=&quot;https://lh7-us.googleusercontent.com/T3MFOjxAZ8b4L3ts9rv4ZB8_54Exn3oG17sHlQ41ms1hIcs-OYNiXIAV95rbmzWblR0ST0D268ug4JuDiniLiAzgWd-hd8svMbkGpyZPoTx-0TgjhP70nzOP0L0lCGwBafGOdRocaR5CNdNyv2Ztd7Y&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;718&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;Aplicação inicializada a partir de um snapshot em &lt;b&gt;59 milisegundos&lt;br /&gt;&lt;/b&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Conclusão:&lt;/h3&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;CRaC apresenta uma abordagem inovadora para superar gargalos de inicialização de JVM, oferecendo lançamentos mais rápidos sem sacrificar o desempenho. Sua adequação depende das características específicas da aplicação e de considerações técnicas. Os desenvolvedores interessados em otimizar os tempos de inicialização de microsserviços devem acompanhar de perto o desenvolvimento do CRaC e avaliar seu potencial para suas necessidades específicas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;h3&gt;Referências&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/CRaC/docs&quot;&gt;https://github.com/CRaC/docs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://youtu.be/Vy1EbB2kBBs&quot;&gt;[VDCLUJ22] Gerrit Grunwald - What the CRaC Superfast JVM startup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://bell-sw.com/blog/how-to-use-crac-with-java-applications/&quot;&gt;https://bell-sw.com/blog/how-to-use-crac-with-java-applications/&lt;/a&gt;&lt;/h3&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;font-size: 11pt; white-space-collapse: preserve;&quot; target=&quot;_blank&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh7-us.googleusercontent.com/aH3ZzHNBWziP-L4KXIPAkDRG6Cbgb1ar__QMkUH-fiYn_6fVOrR2sp9P2GTTa06uBqy8gCnlWjLDXyKJVRcp7ulreGUh2-tY9dugqFVwk_ezeA7HNiGVB3h8RHwDN8D76G82Qy1VjlxHWi51ZxfVKpY&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;div&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/1909941590613857570/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2024/02/introducao-ao-projeto-openjdk-crac.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/1909941590613857570'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/1909941590613857570'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2024/02/introducao-ao-projeto-openjdk-crac.html' title='Introdução ao projeto OpenJDK CRaC'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh7-us.googleusercontent.com/Ue6kp9T6BOlX1iobehsN2QzYHcIj2BCS0yzcw_e4R3iaatMJJZ18CqgvYvi869zppzmJZpjeg-NPd7tubuC-mwmmITzToiGf9OcvoIFnBN5bYwqYMlZQv9ukLDyN0OJpNOxkjau1KkpCMb9DcVkMRYsjzA=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-8935029055330337500</id><published>2023-12-26T18:19:00.008-03:00</published><updated>2023-12-26T18:29:45.828-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2023"/><category scheme="http://www.blogger.com/atom/ns#" term="GraalVM"/><category scheme="http://www.blogger.com/atom/ns#" term="Java 21"/><category scheme="http://www.blogger.com/atom/ns#" term="Java Champions"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="LTS"/><category scheme="http://www.blogger.com/atom/ns#" term="Mironaut"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Quarkus"/><category scheme="http://www.blogger.com/atom/ns#" term="retrospectiva"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'></title><content type='html'>&lt;div class=&quot;separator&quot;&gt;&lt;p style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&amp;nbsp;&lt;img height=&quot;268&quot; src=&quot;https://lh7-us.googleusercontent.com/Fbcm1W-mRdqCFnyix_Nu9p6oySp_5EqOYaPEn5bAUcnKIsOnZz9KZxb63vlEFz9eZf1C_pxWrCP10GYadGZ-siS6mfausFfGohn7J8avnnEthu64LtvPKEKN8EUqFZeiFEUD5ZNwDExFEnt-g6dk5zE=w320-h268&quot; style=&quot;font-family: Arial, sans-serif; font-size: 11pt; margin-left: 0px; margin-top: 0px; text-align: center; white-space-collapse: preserve;&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;&lt;/div&gt;&lt;span id=&quot;docs-internal-guid-9c0592a5-7fff-8d90-3ee4-94c242ce9f03&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 26pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Retrospectiva 2023&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;2023 foi um ano interessante para o ecossistema Java. Relembrando que o Java foi lançado a quase &lt;b&gt;30 anos&lt;/b&gt;, e desde então, o grande desafio sempre foi a questão da performance, manter a estabilidade e retrocompatibilidade. 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. O famoso slogam (&lt;i&gt;&lt;b&gt;write once, run anywhere&lt;/b&gt;&lt;/i&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;Muitos acreditam que o peso desta responsabilidade impede que o Java inove com a velocidade que a comunidade espera. Uma vez que outras linguagens acabam liberando recursos importantes antes do Java. Isso vem mudando desde o lançamento do novo modelo de release a cada seis meses. Atualmente temos dois lançamentos anuais, sendo o primeiro em &lt;b&gt;março&lt;/b&gt; e outro em &lt;b&gt;setembro&lt;/b&gt;. Uma versão de longo suporte (&lt;b&gt;LTS&lt;/b&gt;) a cada três anos. Isto proporciona que a indústria experimente novos recursos, frameworks se atualizem para a próxima versão LTS, tal como o &lt;b&gt;JDK 21&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Foi preciso fazer esta breve introdução para podermos falar das grandes entregas do ecossistema &lt;b&gt;Java em 2023&lt;/b&gt;. Java ainda é relevante na comunidade e vai conseguir continuar evoluindo para os próximos anos?&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Leia o texto abaixo e tire suas conclusões. Comentários são bem vindos!&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;white-space-collapse: preserve;&quot;&gt;Novos Java Champions&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 115px; overflow: hidden; width: 98px;&quot;&gt;&lt;img height=&quot;115&quot; src=&quot;https://lh7-us.googleusercontent.com/GRlLT3djR3VutUFHkEvw7fMZUXcy__yLYVbIKhaz8NpsPhNqoo3aun5GUM0ySmUv0a7QekERV-LXuDsuVeUoZW38OQ91aSAb4cwJ5QVcZuXjHM_QiB132jepuyWDhXAMRp0Y0ARPo0hCIkbDa6VvQM0&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;98&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Este ano, &lt;/span&gt;&lt;a href=&quot;https://javachampions.org/members.html&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;18 novos membros&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; entraram para o time, destacando os brasileiros &lt;/span&gt;&lt;a href=&quot;https://twitter.com/eliasnogueira&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Elias Nogueira&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;e&lt;/span&gt;&lt;a href=&quot;https://twitter.com/prof_isidro&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; Francisco (Professor) Isidro&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Parabéns!!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;JDK 21&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Este ano (&lt;b&gt;2023&lt;/b&gt;) foram lançadas duas versões, &lt;b&gt;20&lt;/b&gt; e &lt;b&gt;21&lt;/b&gt;, sendo que a 21 é a mais importante por se tratar de uma versão de &lt;b&gt;longo suporte&lt;/b&gt; e por ter entregado features relevantes como &lt;a href=&quot;https://openjdk.org/jeps/444&quot; target=&quot;_blank&quot;&gt;Virtual Threads&lt;/a&gt;, &lt;a href=&quot;https://openjdk.org/jeps/431&quot; target=&quot;_blank&quot;&gt;Sequenced Collections&lt;/a&gt;, &lt;a href=&quot;https://openjdk.org/jeps/441&quot; target=&quot;_blank&quot;&gt;Pattern Matching for switch&lt;/a&gt;, &lt;a href=&quot;https://openjdk.org/jeps/440&quot; target=&quot;_blank&quot;&gt;Record Patterns&lt;/a&gt;,  &lt;a href=&quot;https://openjdk.org/jeps/430&quot; target=&quot;_blank&quot;&gt;String Templates (Preview)&lt;/a&gt; e &lt;a href=&quot;https://openjdk.org/jeps/439&quot; target=&quot;_blank&quot;&gt;Generational ZGC&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;JVM Language Summit 2023

&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;O JVM Language Summit é uma colaboração técnica aberta entre designers de linguagens, escritores de compiladores, construtores de ferramentas, engenheiros de runtime e arquitetos da VM. Compartilham experiências como criadores de JVM e de linguagens de programação para JVM. Também participam desenvolvedores não-JVM e tecnologias semelhantes para participar ou falar sobre seu runtime, VM ou sua linguagem favorita. A JVM LS 2023 aconteceu no início de agosto de 2023 em Santa Clara – CA.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;a href=&quot;https://youtube.com/playlist?list=PLX8CzqL3ArzW90jKUCf4H6xCKpStxsOzp&amp;amp;si=VZNyGMlKXgSYl2sA&quot;&gt;Neste link&lt;/a&gt; pode-se acompanhar as palestras.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; text-align: justify; white-space-collapse: preserve;&quot;&gt;Projeto CRaC&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Coordinated Restore at Checkpoint (CRaC) é um projeto que promete um mecanismo do tipo checkpoint/restore. Ele permite fechar arquivos e conexões, despejar o cache antes do ponto de verificação e reabrir/recuperar tudo quando o aplicativo for restaurado a partir da imagem. Pode ser comparado como o hibernar do seu computador. Isto significa que quando a aplicação for reiniciada, ela estará disponível quase que imediatamente.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;É possível utilizar uma versão específica do OpenJDK com o CRaC inclusa. A azul disponibiliza no OpenJDK 17. &lt;a href=&quot;https://www.azul.com/products/components/crac/&quot;&gt;https://www.azul.com/products/components/crac/&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;GraalVM&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Em 2023, o GraalVM Community Edition se alinhou com a cadência de lançamento do JDK de seis meses. Haverá dois lançamentos de recursos por ano para oferecer suporte à versão mais recente do JDK. Um novo lançamento de recurso substitui todos os lançamentos anteriores. As versões do GraalVM são nomeadas de acordo com a versão do JDK que fornecem, por exemplo, GraalVM para JDK 21.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A GraalVM para Java 21 também passa a ter uma nova licença (GFTC). O GFTC destina-se a permitir o uso por qualquer usuário, incluindo uso comercial e de produção. A redistribuição é permitida desde que não seja mediante pagamento de taxa.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Spring Boot, Quarkus e Micronaut

&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;a href=&quot;https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now/&quot;&gt;Spring boot 3.2&lt;/a&gt; lançado em novembro de 2023 traz como as principais novidades:&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Suporte para Virtual Threads&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Suporte inicial para  JVM Checkpoint Restore (Project CRaC)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Melhorias para Observabilidade&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Atualmente está na versão 3.2.1&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://pt.quarkus.io/blog/quarkus-3-0-final-released/&quot;&gt;Quarkus 3.0&lt;/a&gt; lançado em abril de 2023, é baseado no Jakarta EE 10 e, não é a única mudança. Esta versão vem repleta de novos recursos e melhorias que foram implementadas nesta versão.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O Quarkus 3.0 agora possui uma nova Dev UI que é mais extensível e fácil de usar. Ele também tem uma aparência nova e muito melhorada.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O Eclipse MicroProfile 6.0 se alinha ao Jakarta EE 10 Core Profile e substitui o MicroProfile OpenTracing pela MicroProfile Telemetry.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;ul&gt;&lt;li&gt;Hibernate ORM 6&lt;/li&gt;&lt;li&gt;Suporte para Maven 3.9 e Gradle 8&lt;/li&gt;&lt;li&gt;Atualmente está na versão 3.6.4&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;a href=&quot;https://micronaut.io/2023/07/14/micronaut-framework-4-0-0-released/&quot;&gt;Micronaut 4.0&lt;/a&gt; lançado em julho de 2023.&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Foi atualizado para a ter como baseline o Java 17, kotlin 1.8 e groovy 4.0&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Atualmente está na versão 4.2.2&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Oracle VS Code Extension

&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;A extensão Oracle Java Platform traz desenvolvimento Java completo (editar-compilar-depurar e ciclo de teste) para projetos Maven e Gradle para VSCode. Bem como outros recursos.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h1 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h3 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;The Java Playground&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;O Java Playground é uma ferramenta online simples que ajuda você a explorar os recursos da linguagem Java. Nenhuma configuração necessária, digite seu trecho Java e execute-o! O Java Playground atualmente é executado no Oracle JDK - Java 21 com recursos de visualização habilitados.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://dev.java/playground/&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;https://dev.java/playground/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h1 style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;
&lt;/span&gt;&lt;/h1&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;O Java 8 ainda é dominante?&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Segundo o levantamento da newrelic, mais de 56% dos aplicativos agora usam Java 11 em produção (contra 48% em 2022 e 11% em 2020). Java 8 vem em segundo lugar, com quase 33% dos aplicativos usando-o na produção (contra 46% em 2022).&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Embora o Java 11 tenha mantido o primeiro lugar por dois anos consecutivos, a taxa de adoção do Java 17 excedeu em muito o que o mundo dos desenvolvedores viu quando o Java 11 foi introduzido. Mais de 9% dos aplicativos agora usam Java 17 em produção (contra menos de 1% em 2022), representando uma taxa de crescimento de 430% em um ano. Demorou anos para que o Java 11 chegasse perto desse nível.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://newrelic.com/resources/report/2023-state-of-the-java-ecosystem&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;https://newrelic.com/resources/report/2023-state-of-the-java-ecosystem&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;Já na pesquisa da jetbrains, o Java 8 ainda é o mais utilizado em produção:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://www.jetbrains.com/lp/devecosystem-2023/java/#java_versions&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;https://www.jetbrains.com/lp/devecosystem-2023/java/#java_versions&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3 style=&quot;line-height: 1.9872; margin-bottom: 3pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style=&quot;line-height: 1.9872; margin-bottom: 3pt; margin-top: 20pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Arial, sans-serif&quot; style=&quot;font-size: 20pt; white-space-collapse: preserve;&quot;&gt;Referências&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;line-height: 1.9872; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://youtu.be/NxpHg_GzpnY&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: x-large;&quot;&gt;https://youtu.be/NxpHg_GzpnY&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style=&quot;line-height: 1.9872; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; target=&quot;_blank&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh7-us.googleusercontent.com/aH3ZzHNBWziP-L4KXIPAkDRG6Cbgb1ar__QMkUH-fiYn_6fVOrR2sp9P2GTTa06uBqy8gCnlWjLDXyKJVRcp7ulreGUh2-tY9dugqFVwk_ezeA7HNiGVB3h8RHwDN8D76G82Qy1VjlxHWi51ZxfVKpY&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/8935029055330337500/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2023/12/retrospectiva-2023-2023-foi-um-ano.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/8935029055330337500'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/8935029055330337500'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2023/12/retrospectiva-2023-2023-foi-um-ano.html' title=''/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh7-us.googleusercontent.com/Fbcm1W-mRdqCFnyix_Nu9p6oySp_5EqOYaPEn5bAUcnKIsOnZz9KZxb63vlEFz9eZf1C_pxWrCP10GYadGZ-siS6mfausFfGohn7J8avnnEthu64LtvPKEKN8EUqFZeiFEUD5ZNwDExFEnt-g6dk5zE=s72-w320-h268-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-4923104062838847474</id><published>2023-10-08T18:41:00.004-03:00</published><updated>2023-10-08T18:47:11.032-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java 21"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><title type='text'>Java 21 não é versão LTS</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java 21 não é versão LTS&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java 21 não é uma versão com suporte de longo prazo porque não é algo que possa obter suporte de longo prazo.&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE1lmsnGPtB_HYWgB4qceC-emJHqkX6fzzkNJk0-gJb4HOF_rJyK0BdKFWab54k7dbUfWFSVUDv45zr2Iy1k2yl6jCbYq0DQS-Ya6mYA0Y2YvIrQmeU9ibYidp9SrmvbMltqbWfcMTiOm8uBXip1vggrd3tewlLX5mmPGxG1PIdULQTcaZRWoEhc82Gcrx/s320/java21ia.png&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;span id=&quot;docs-internal-guid-fd70f012-7fff-665a-74de-12facfb836da&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE1lmsnGPtB_HYWgB4qceC-emJHqkX6fzzkNJk0-gJb4HOF_rJyK0BdKFWab54k7dbUfWFSVUDv45zr2Iy1k2yl6jCbYq0DQS-Ya6mYA0Y2YvIrQmeU9ibYidp9SrmvbMltqbWfcMTiOm8uBXip1vggrd3tewlLX5mmPGxG1PIdULQTcaZRWoEhc82Gcrx/s375/java21ia.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;338&quot; data-original-width=&quot;375&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE1lmsnGPtB_HYWgB4qceC-emJHqkX6fzzkNJk0-gJb4HOF_rJyK0BdKFWab54k7dbUfWFSVUDv45zr2Iy1k2yl6jCbYq0DQS-Ya6mYA0Y2YvIrQmeU9ibYidp9SrmvbMltqbWfcMTiOm8uBXip1vggrd3tewlLX5mmPGxG1PIdULQTcaZRWoEhc82Gcrx/s320/java21ia.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;Se você é do mundo Java, deve saber que o Java 21 foi lançado no dia &lt;a href=&quot;https://openjdk.org/projects/jdk/21/&quot; target=&quot;_blank&quot;&gt;19/09/2023&lt;/a&gt; e até um tempo antes, não se sabia se a versão iria ser uma versão de longo suporte ou não.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;O fato é que projeto Java (OpenJDK) não oferece uma versão com longo suporte (LTS), assim como aconteceu com o Java 11 e 17. Mas como assim?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;Quem oferece o suporte de longo prazo com atualizações de segurança são os fornecedores que geram suas próprias distribuições. &lt;a href=&quot;https://www.oracle.com/java/technologies/downloads/&quot; target=&quot;_blank&quot;&gt;Oracle JDK&lt;/a&gt; por exemplo. Além de muitas outras como Microsoft, Azul, Adoptium, Amazon, IBM, RedHat que são algumas das principais.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;Para entender melhor, vamos separar o Java do JDK, OpenJDK dos seus fornecedores, manutenção e de suporte para entender melhor como tudo isso funciona.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;b&gt;Java 21&lt;/b&gt; na verdade é um atalho para o termo: J&lt;b&gt;ava Platform Standard Edition 21. &lt;/b&gt;Mas você não pode fazer nada com isso pois não é nem código, nem um binário que você possa instalar. Ela é um conjunto de especificações que definem a linguagem, sua API, uma máquina virtual e mais algumas coisas.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;b&gt;Java Development Kit (JDK)&lt;/b&gt; é o que recebe novos commits e essa é a base de código que contém a implementação da especificação do Java 21 por exemplo. Este código por sua vez, é desenvolvido pela OpenJDK e seus códigos fontes podem ser encontrados no &lt;a href=&quot;https://github.com/openjdk/jdk21&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;. E a partir de que a versão 21 é lançada, o repositório é arquivado e muda o foco para manutenções em outro &lt;a href=&quot;https://github.com/openjdk/jdk21u&quot; target=&quot;_blank&quot;&gt;repositório&lt;/a&gt;, onde a comunidade mantém as atualizações para fornecer após o lançamento.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;b&gt;Manutenção e Suporte&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial; font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;Desde que a cadência de lançamento de seis meses foi implementada, Rob McKenna da Oracle, líder do projeto de atualizações do JDK, é o mantenedor de cada jdk$VERSIONu durante os primeiros seis meses. Depois disso ele deixa este cargo e começa a trabalhar na jdk$VERSION+1u e oferece a liderança do projeto &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 18.6667px; white-space-collapse: preserve;&quot;&gt;jdk$VERSIONu para outro membro confiável da comunidade que queira manter.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: helvetica; font-size: large;&quot;&gt;Para algumas versões, como 11, 17 e provavelmente 21, isso acontece e o fork continua com correções contínuas. Mas não há garantias de que isso aconteça, pois não existe nenhum período de tempo definido contratualmente para para manter as atualizações. Para outras versões, o fork é fechado e ninguém mais pode atuar em atualizações.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;background-color: white; color: #252525; font-size: 18px; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;background-color: white; color: #252525; font-family: helvetica; font-size: 18px; text-align: left;&quot;&gt;&lt;b&gt;Manutenção&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;background-color: white; color: #252525; font-family: helvetica; font-size: 18px; text-align: left;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;Manter uma versão JDK dá muito trabalho e, portanto, requer uma quantidade considerável de tempo de algumas pessoas. Existem pessoas que utilizam o seu tempo livre para fazer isso e a maioria das contribuições vêm de grandes empresas.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;Mas por que uma grande empresa investiria recursos valiosos na manutenção de um fork antigo de atualizações do JDK?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;Existem muitas razões pelas quais uma empresa, mas a principal é porque lucram com uma versão do JDK bem mantida. Seja rodando na própria cloud, distribuem software que dependem do JDK ou oferecem suporte do Java para seus clientes.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;b&gt;Suporte&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;E por causa deste suporte é que empresas oferecem o &quot;suporte a longo prazo&quot;, então resumindo:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;O OpenJDK manterá o JDK 21, a implementação de referência da plataforma Java SE 21 por pelo menos seis meses, mas provavelmente por alguns anos nas versões mais utilizadas. Os fornecedores, por outro lado, construirão seus próprios JDKs a partir da base de código da OpenJDK. Eles podem disponibilizá-los gratuitamente e também podem oferecer um suporte comercial.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;b&gt;Comunidade&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;Mas então se as empresas é que definem quanto tempo vão dar de suporte e em qual versão, como temos sempre uma versão LTS e um tempo determinado?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;É aí que entra a colaboração da comunidade, pois como a maior parte do código da JDK é trabalhada por todos os envolvidos, acabam optando pelas mesmas versões e prazos.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;Por mais que as maiores empresas em torno do JDK sejam concorrentes diretas, existe um nível de coordenação e cooperação para elevar o Java a este nível de qualidade e organização.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;b&gt;Referência&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525; font-family: helvetica;&quot;&gt;Espero que tenham gostado e se preferirem ver a explicação direto no Nicolai Parlog da Oracle, é só dar play no vídeo abaixo:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 18px; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;384&quot; src=&quot;https://www.youtube.com/embed/3bfR22iv8Pc&quot; width=&quot;461&quot; youtube-src-id=&quot;3bfR22iv8Pc&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;span face=&quot;Roboto, arial, sans-serif&quot; style=&quot;color: #252525;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;span id=&quot;docs-internal-guid-7415375f-7fff-10a5-0a3d-279219bf8e89&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.656; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/U668llIYrYpJtwK80V9Q7wiomO1op3ZBGGXAne2mKqhC2nhjfnqL98sfNysuIT_GmG5YeOXiY6TZVizTaV4nGHpTo3gvpFrazKk0n0bPvJOSaZIFYuWU0lx32QqA2MTaVsizjYLFS_4tFGPYEzZKR-UUSXQHv-bJ1tSPvUFnX6rKB0dfAruzADGFZbLdqg&quot; style=&quot;cursor: move; margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/4923104062838847474/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2023/10/java-21-nao-e-versao-lts.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4923104062838847474'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4923104062838847474'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2023/10/java-21-nao-e-versao-lts.html' title='Java 21 não é versão LTS'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE1lmsnGPtB_HYWgB4qceC-emJHqkX6fzzkNJk0-gJb4HOF_rJyK0BdKFWab54k7dbUfWFSVUDv45zr2Iy1k2yl6jCbYq0DQS-Ya6mYA0Y2YvIrQmeU9ibYidp9SrmvbMltqbWfcMTiOm8uBXip1vggrd3tewlLX5mmPGxG1PIdULQTcaZRWoEhc82Gcrx/s72-c/java21ia.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-5563246939379068755</id><published>2023-07-10T21:32:00.004-03:00</published><updated>2023-07-10T21:34:39.741-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="instancio"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="junit"/><category scheme="http://www.blogger.com/atom/ns#" term="testes"/><title type='text'>Conheça o instancio</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Conheça o instancio&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;ma biblioteca Java para automatizar a configuração de dados em testes de unidade.&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh3.googleusercontent.com/NRmvYo8WD6qEHBpVLGrznXjR7zG_B5TwWF8QqxLManEi5RagN-254DazpD_wccKDaKrNwzg4OXbGH72r0_Qoduiq_HVp2v3YzdkEr_Immr4HZ3rEnpgE1Qqx9RSN-0p05M8M_EczZNTL4gBcvEC6qpM&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;p&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; white-space-collapse: preserve;&quot;&gt;Uma biblioteca Java para automatizar a configuração de dados em testes de unidade.&lt;/span&gt;&lt;/p&gt;&lt;span id=&quot;docs-internal-guid-fd70f012-7fff-665a-74de-12facfb836da&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 188px; overflow: hidden; width: 233px;&quot;&gt;&lt;img height=&quot;188&quot; src=&quot;https://lh3.googleusercontent.com/NRmvYo8WD6qEHBpVLGrznXjR7zG_B5TwWF8QqxLManEi5RagN-254DazpD_wccKDaKrNwzg4OXbGH72r0_Qoduiq_HVp2v3YzdkEr_Immr4HZ3rEnpgE1Qqx9RSN-0p05M8M_EczZNTL4gBcvEC6qpM&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;233&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Neste post, vou apresentar a biblioteca instancio (&lt;a href=&quot;http://www.instancio.org&quot; target=&quot;_blank&quot;&gt;www.instancio.org&lt;/a&gt;), uma ferramenta poderosa para facilitar a criação de testes unitários em Java. A biblioteca instancio permite instanciar objetos complexos com apenas uma linha de código, evitando a necessidade de escrever construtores, setters ou builders. Além disso, a biblioteca instancio é compatível com o Junit, o framework mais popular para testes unitários em Java.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Para ilustrar o uso da biblioteca instancio, vou usar um exemplo de um sistema de escola que oferece cursos aos alunos. O sistema possui as classes Curso, Aluno, Plrofessor e Matricula, que representam os conceitos do domínio. Cada classe possui vários atributos e métodos, que não serão detalhados aqui por questão de simplicidade. O objetivo é testar o método matricularAluno da classe Curso, que recebe um objeto Aluno e cria uma nova Matricula associada ao curso e ao aluno.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Sem a biblioteca instancio, para criar um objeto Curso e um objeto Aluno para o teste, seria necessário escrever algo como:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span id=&quot;docs-internal-guid-aa6ac43a-7fff-b7a7-97c0-9759e1696e93&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Curso curso = &lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;new&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; Curso();&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;curso.setId(1);&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;curso.setNome(&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&quot;Java Básico&quot;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;);&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;curso.setCargaHoraria(40);&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;curso.setPreco(500.0);&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Aluno aluno = &lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;new&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; Aluno();&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;aluno.setId(1);&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;aluno.setNome(&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&quot;João&quot;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;);&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;aluno.setEmail(&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&quot;joao@gmail.com&quot;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;);&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;aluno.setTelefone(&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&quot;999999999&quot;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;);                                                                                                &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;span&gt;&lt;span id=&quot;docs-internal-guid-6dd8d908-7fff-f598-7e0a-bd3e39c4ee58&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Com a biblioteca instancio, basta escrever:
&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span id=&quot;docs-internal-guid-62b021da-7fff-3c4c-2c53-cd69a3f429fe&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Curso curso = Instancio.instance(Curso.class);&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Aluno aluno = Instancio.instance(Aluno.class);&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A biblioteca instancio se encarrega de gerar valores aleatórios e válidos para os atributos das classes, seguindo algumas regras simples. Por exemplo, se o atributo é do tipo String, a biblioteca gera uma string alfanumérica; se o atributo é do tipo int, a biblioteca gera um número inteiro; se o atributo é do tipo boolean, a biblioteca gera um valor verdadeiro ou falso; e assim por diante. A biblioteca também suporta atributos que são outras classes, listas, enums ou interfaces.&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Casos de teste&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; text-align: justify; white-space-collapse: preserve;&quot;&gt;Bons testes devem cobrir todos os ramos da lógica condicional. Isso nos dá mais confiança em nosso código e, muitas vezes, revela problemas que podemos ter esquecido. Embora nosso serviço seja muito simples, ele ainda apresenta alguns cenários que precisam ser cobertos.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; text-align: justify; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span id=&quot;docs-internal-guid-72769132-7fff-26a5-12ab-68297058d258&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Depois de criar os objetos Curso e Aluno com a biblioteca instancio, basta chamar o método matricularAluno e verificar se o resultado é o esperado. Para isso, podemos usar o Junit e as suas asserções. O teste ficaria assim:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span id=&quot;docs-internal-guid-21d4391f-7fff-9916-50c7-12476d1da593&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #4c81c9; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;@Test&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;public&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;void&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #0048ab; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;testMatricularAluno&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;() {&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;// Arrange&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; Curso curso = Instancio.instance(Curso.class);&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; Aluno aluno = Instancio.instance(Aluno.class);&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;// Act&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; Matricula matricula = curso.matricularAluno(aluno);&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #738191; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;// Assert&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; assertNotNull(matricula);&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; assertEquals(curso, matricula.getCurso());&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&amp;nbsp; assertEquals(aluno, matricula.getAluno());&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span id=&quot;docs-internal-guid-75453ecc-7fff-b748-589f-2602ec916a48&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Como podemos ver, a biblioteca instancio simplifica bastante a criação de testes unitários em Java, reduzindo a quantidade de código necessário e aumentando a legibilidade dos testes. A biblioteca instancio é gratuita e open source, e pode ser baixada no site &lt;a href=&quot;http://www.instancio.org&quot; target=&quot;_blank&quot;&gt;www.instancio.org&lt;/a&gt;. Recomendo que você experimente a biblioteca instancio e veja como ela pode melhorar a qualidade dos seus testes unitários.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Configurando o projeto&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;span id=&quot;docs-internal-guid-e7828811-7fff-2eec-f44d-13a4c6d6ccd2&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Para usar a biblioteca instancio, você só precisa adicionar a dependência no seu projeto. Neste caso, estou utilizando maven:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;dependency&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;groupId&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;org.instancio&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;groupId&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;artifactId&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;instancio-core&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;artifactId&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;version&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;2.16.1&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;version&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;scope&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;test&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;scope&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;dependency&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span id=&quot;docs-internal-guid-00bb2141-7fff-0e38-667a-50b3176b1ac7&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;A biblioteca instancio também suporta tipos genéricos, classes record e sealed, arrays e streams. Você pode criar coleções de objetos usando o método `ofList`:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;List&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Aluno&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; alunos = Instancio.ofList(Aluno.class).size(10).create();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span id=&quot;docs-internal-guid-b61af278-7fff-0d66-e7e7-12d93fce3998&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span id=&quot;docs-internal-guid-b84eef48-7fff-7f99-6689-6162871032e2&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Ou criar tipos genéricos usando o `TypeToken`:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span id=&quot;docs-internal-guid-4d5a82ea-7fff-b1ba-fe06-a4b7d818dfdf&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Pair&amp;lt;List&amp;lt;Foo&amp;gt;, List&amp;lt;Bar&amp;gt;&amp;gt; pairOfLists = Instancio.create(&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;new&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; TypeToken&amp;lt;Pair&amp;lt;List&amp;lt;Foo&amp;gt;, List&amp;lt;Bar&amp;gt;&amp;gt;&amp;gt;() {});&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Como personalizar os valores gerados&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span id=&quot;docs-internal-guid-89394179-7fff-3507-d2c3-429814bd4a2c&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Se você precisar personalizar os valores gerados pela biblioteca instancio, você pode usar vários métodos da API para isso. Por exemplo, você pode usar o método `generate` para definir um gerador customizado para um campo específico:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span id=&quot;docs-internal-guid-55eccfbe-7fff-c8cf-5e2e-af4a43fbf580&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Pessoa pessoa = Instancio.of(Pessoa.class)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.generate(field(Pessoa::getDataNascimento), gen -&amp;gt; gen.temporal().localDate().past())&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.create();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span id=&quot;docs-internal-guid-e12c5db9-7fff-bcdb-da11-542cf706093d&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Esse código cria um objeto `Pessoa` com o campo `dataNascimento` gerado usando o gerador `gen.temporal().localDate().past()`, que retorna uma data passada aleatória.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Você também pode usar o método `set` para definir um valor fixo para um campo:&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;span id=&quot;docs-internal-guid-d36cf5d8-7fff-6676-11f1-fefc0cbb2637&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Pessoa pessoa = Instancio.of(Pessoa.class)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.set(field(Pessoa::getNome), &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #0048ab; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&quot;João&quot;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;)&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.create();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span id=&quot;docs-internal-guid-f1e74176-7fff-e017-de40-4a1f57a534b2&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Esse código cria um objeto `Person` com o campo `firstName` definido como &quot;João&quot;.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Outro método útil é o `supply`, que permite fornecer um valor dinâmico para um campo usando um `Supplier`:&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span id=&quot;docs-internal-guid-7a8ef1b3-7fff-a353-046a-95e4562953ef&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Pessoa pessoa = Instancio.of(Pessoa.class)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.supply(all(LocalDate.class), () -&amp;gt; LocalDate.now())&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.create();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span id=&quot;docs-internal-guid-651fdf67-7fff-5655-5ffb-b4a2d7c322ee&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Esse código cria um objeto `Pessoa` com todos os campos do tipo `LocalDate` definidos como o momento atual.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Além disso, você pode usar o método `onComplete` para executar uma ação após a criação do objeto:&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Pessoa pessoa = Instancio.of(Pessoa.class)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;  .onComplete(all(Pessoa.class), (Pessoa p) -&amp;gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;  p.setNome(p.getGenero() == Genero.MASCULINO ? &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #0048ab; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&quot;João&quot;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt; : &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #0048ab; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&quot;Maria&quot;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;))&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.create();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span id=&quot;docs-internal-guid-2902bdc0-7fff-f3d7-b13d-2143cfcdb2bd&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Esse código cria um objeto `Pessoa` e depois define o campo `nome` de acordo com o campo `genero`.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;span&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;h3 style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; text-align: -webkit-left; vertical-align: baseline; white-space-collapse: collapse;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Como criar modelos reutilizáveis de objetos&lt;/span&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;span id=&quot;docs-internal-guid-7415375f-7fff-10a5-0a3d-279219bf8e89&quot; style=&quot;font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify; white-space-collapse: preserve;&quot;&gt;&lt;span id=&quot;docs-internal-guid-91f38011-7fff-6d61-8911-b3b7995abf51&quot;&gt;Se você precisar criar vários objetos com características semelhantes, você pode usar o conceito de modelos (Models) da biblioteca instancio. Um modelo é uma forma de definir um template de objeto que pode ser reutilizado em diferentes testes.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify; white-space-collapse: preserve;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Por exemplo, se você quiser criar objetos da classe `Pessoa` que representam membros da família Simpson, você pode criar um modelo assim:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;font-size: 14pt; margin-left: 0pt; white-space-collapse: preserve;&quot;&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;docs-internal-guid-2443b786-7fff-e615-7dbd-74c8bc5dbbc3&quot;&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 29.4504pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Model&amp;lt;Aluno&amp;gt; simpsons = Instancio.of(Aluno.class)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.set(field(Aluno::getSobrenome), &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #0048ab; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&quot;Simpson&quot;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.set(field(Endereco::getCidade), &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #0048ab; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&quot;Springfield&quot;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;)&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.generate(field(Aluno::getDataNascimento), gen -&amp;gt; gen.temporal().localDate().past())&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;.toModel();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id=&quot;docs-internal-guid-6aca740f-7fff-a8df-0495-ced06d52f7e1&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Esse modelo define que todos os objetos `Aluno` criados a partir dele terão o sobrenome &quot;Simpson&quot;, a cidade &quot;Springfield&quot; e uma idade entre 40 e 50 anos.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Depois, você pode criar objetos específicos usando esse modelo:&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 14pt; margin-left: 0pt; white-space-collapse: preserve;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Aluno homer = Instancio.of(simpsons)&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.set(field(Aluno::getNome), &lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&quot;Homer&quot;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;)&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.set(all(Genero.class), Genero.MASCULINO)&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.create();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; white-space-collapse: preserve;&quot;&gt;&lt;span id=&quot;docs-internal-guid-4129acad-7fff-85e8-f655-8a42ea2dc209&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 14pt; margin-left: 0pt; white-space-collapse: preserve;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Aluno marge = Instancio.of(simpsons)&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.set(field(Aluno::getNome), &lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #0048ab; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&quot;Marge&quot;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;)&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.set(all(Genero.class), Genero.FEMININO)&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas,sans-serif&quot; style=&quot;background-color: #eaeef3; color: #00193a; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;.create();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Esses códigos criam objetos `Aluno` que representam o Homer e a Marge, usando os valores definidos no modelo e sobrescrevendo os valores específicos de cada um.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; text-align: -webkit-left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Principais recursos da biblioteca instancio&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;A biblioteca instancio possui vários recursos interessantes que facilitam a geração de dados de teste. Alguns deles são:&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;Dados totalmente reproduzíveis em caso de falha nos testes. A biblioteca instancio usa uma semente (seed) para gerar os dados aleatórios, que pode ser especificada ou obtida pelo usuário. Assim, é possível reproduzir os mesmos dados que causaram a falha e corrigir o problema.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Suporte para anotações de validação de beans. A biblioteca instancio pode gerar dados que respeitam as anotações de validação de beans, como `@NotNull`, `@Size`, `@Email`, etc. Isso evita que os testes falhem por causa de dados inválidos.&lt;/li&gt;&lt;li&gt;Opções flexíveis de configuração. A biblioteca instancio permite configurar vários aspectos do comportamento da geração de dados, como o modo estrito ou leniente, a profundidade máxima, o mapeamento de subtipos, etc. Essas configurações podem ser feitas programaticamente ou usando um arquivo de propriedades.&lt;/li&gt;&lt;li&gt;Integração com JUnit Jupiter. A biblioteca instancio oferece uma extensão para JUnit Jupiter que facilita a reprodução de testes falhos, a injeção de configurações e a geração de argumentos para testes parametrizados.&lt;/li&gt;&lt;li&gt;Interface de provedor de serviço (SPI). A biblioteca instancio permite que o usuário crie e registre suas próprias implementações de interfaces como `GeneratorProvider`, `TypeResolver` e `TypeInstantiator`, para customizar ainda mais a geração de dados.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 14pt; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; white-space-collapse: preserve;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; text-align: -webkit-left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;Conclusão&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;Neste post, apresentei a biblioteca instancio, uma ferramenta poderosa para gerar dados de teste em Java. Mostrei como usar sua API simples e flexível para criar objetos totalmente populados com dados aleatórios, personalizar os valores gerados e criar modelos reutilizáveis de objetos. Eu também listei alguns dos principais recursos da biblioteca, que tornam a geração de dados mais fácil e confiável.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;Se você se interessou pela biblioteca instancio, você pode acessar o site&lt;/span&gt;&lt;span style=&quot;color: black; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: none; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;https://www.blogger.com/blog/post/edit/6448280182389226496/5563246939379068755#&quot;&gt; &lt;/a&gt;&lt;a href=&quot;https://www.instancio.org/user-guide&quot; target=&quot;_blank&quot;&gt;https://www.instancio.org/user-guide&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt; para ver mais detalhes sobre sua documentação, exemplos e artigos. Você também pode contribuir com o projeto no GitHub:&lt;/span&gt;&lt;a href=&quot;https://www.blogger.com/blog/post/edit/6448280182389226496/5563246939379068755#&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: black; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt; https://github.com/instancio/instancio&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;E como sempre, um exemplo de utilização no meu GitHub:&lt;/span&gt;&lt;span style=&quot;color: black; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: none; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;https://www.blogger.com/blog/post/edit/6448280182389226496/5563246939379068755#&quot;&gt; &lt;/a&gt;&lt;a href=&quot;https://github.com/sandrogiacom/school-test&quot; target=&quot;_blank&quot;&gt;https://github.com/sandrogiacom/school-test&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;Espero que você tenha gostado deste post e que a biblioteca instancio possa te ajudar a escrever testes melhores e mais concisos em Java. Até a próxima!&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Referências:&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; orphans: 2; text-align: center; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; widows: 2;&quot;&gt;&lt;span id=&quot;docs-internal-guid-4237f195-7fff-a11a-bb54-93fc6b11121a&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;-webkit-text-stroke-width: 0px; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: left; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;a href=&quot;https://www.instancio.org/getting-started/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;https://www.instancio.org/getting-started/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;-webkit-text-stroke-width: 0px; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: left; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;a href=&quot;https://www.baeldung.com/java-test-data-instancio&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;&quot;&gt;https://www.baeldung.com/java-test-data-instancio&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style=&quot;-webkit-text-stroke-width: 0px; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; text-align: left; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; text-align: left;&quot;&gt;&lt;/span&gt;&lt;span id=&quot;docs-internal-guid-2bd62336-7fff-3c3e-2cc4-b4f01563fae4&quot; style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.656; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/U668llIYrYpJtwK80V9Q7wiomO1op3ZBGGXAne2mKqhC2nhjfnqL98sfNysuIT_GmG5YeOXiY6TZVizTaV4nGHpTo3gvpFrazKk0n0bPvJOSaZIFYuWU0lx32QqA2MTaVsizjYLFS_4tFGPYEzZKR-UUSXQHv-bJ1tSPvUFnX6rKB0dfAruzADGFZbLdqg&quot; style=&quot;cursor: move; margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;font-family: Arial; line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 14pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/5563246939379068755/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2023/07/conheca-o-instancio.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/5563246939379068755'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/5563246939379068755'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2023/07/conheca-o-instancio.html' title='Conheça o instancio'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/NRmvYo8WD6qEHBpVLGrznXjR7zG_B5TwWF8QqxLManEi5RagN-254DazpD_wccKDaKrNwzg4OXbGH72r0_Qoduiq_HVp2v3YzdkEr_Immr4HZ3rEnpgE1Qqx9RSN-0p05M8M_EczZNTL4gBcvEC6qpM=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-604440822293470638</id><published>2023-02-01T20:57:00.008-03:00</published><updated>2023-02-01T21:12:14.827-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Heroku"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Nuvem"/><title type='text'>Conhecendo o serviço fly.io - Parte 1</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Conhecendo o serviço fly.io - Parte 1&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Fly.io é uma plataforma de hospedagem em nuvem que fornece aos desenvolvedores um ambiente simplificado&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEfgeJJ4XBhTetN7eyO00r-yx0ktQc_sEZQu0_4LYWk6OrRnVCz5i47fjwpluVdKFI5OGmCw5thgBBscl-GzbRKNQL2T77WLfQtVXwgJJWEoneQymOC0v5SDEeUYr6JWk9F5iL0Exgna7ufR28qzNp9fltgYkPsE61Vn3FEFejhM6JolrfEWNcw3QZyQ/w400-h267/free-cloud-computing.png&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;


&lt;span id=&quot;docs-internal-guid-1de36d3c-7fff-4290-fbcf-060a7c3fb888&quot;&gt;&lt;div class=&quot;separator&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;420&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEfgeJJ4XBhTetN7eyO00r-yx0ktQc_sEZQu0_4LYWk6OrRnVCz5i47fjwpluVdKFI5OGmCw5thgBBscl-GzbRKNQL2T77WLfQtVXwgJJWEoneQymOC0v5SDEeUYr6JWk9F5iL0Exgna7ufR28qzNp9fltgYkPsE61Vn3FEFejhM6JolrfEWNcw3QZyQ/s16000/free-cloud-computing.png&quot; /&gt;&lt;/div&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.56; margin-bottom: 6pt; margin-right: 8pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: Arial; font-size: 23pt; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.56; margin-bottom: 6pt; margin-right: 8pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: Arial; font-size: 23pt; white-space: pre-wrap;&quot;&gt;Conhecendo o serviço fly.io - Parte 1&lt;/span&gt;&lt;/h1&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.56; margin-bottom: 6pt; margin-right: 8pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://fly.io/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Fly.io&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;é uma plataforma de hospedagem em nuvem que fornece aos desenvolvedores um ambiente simplificado e altamente otimizado para hospedar seus aplicativos e sites. Ele oferece uma variedade de benefícios, incluindo maior desempenho, escalabilidade e segurança, tornando-o a escolha ideal para desenvolvedores que desejam criar e iniciar seus aplicativos de maneira rápida e fácil.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Isto aqui não é um patrocínio da plataforma&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, mas apenas uma ajuda para quem está procurando alguma hospedagem gratuita tal como era o &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Heroku&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;No momento da escrita deste post, a plataforma não tem suporte ao &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, porém é possível realizar um deploy utilizando uma imagem &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Docker&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, onde vou demonstrar nos próximos posts. Abaixo pode-se conferir a lista de linguagens suportadas:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://fly.io/docs/languages-and-frameworks/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://fly.io/docs/languages-and-frameworks/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 16pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Arial; font-size: 15pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Alguns dos principais recursos que Fly.io incluem:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Global CDN&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: Fly.io utiliza uma rede global de entrega de conteúdo (CDN) rápida e eficiente para fornecer conteúdo de forma rápida e confiável para usuários em todo o mundo.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Escalabilidade&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: Com o Fly.io, você pode facilmente escalar ou reduzir seu aplicativo conforme necessário, sem ter que se preocupar com os detalhes técnicos do gerenciamento de infraestrutura.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Integração fácil&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: Fly.io integra-se facilmente com ferramentas e serviços populares, como GitHub, GitLab e Jenkins, para que você possa começar de forma rápida e fácil.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Otimização de desempenho&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: Fly.io otimiza o desempenho do seu aplicativo, utilizando cache e outras técnicas para melhorar os tempos de resposta e reduzir a carga do servidor.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Segurança&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: Fly.io leva a segurança a sério e fornece uma variedade de recursos e ferramentas para ajudar a manter seus aplicativos e dados seguros, incluindo criptografia, certificados Secure Socket Layer (SSL) e muito mais.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 16pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Arial; font-size: 15pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Quanto custa?&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O custo do Fly.io varia de acordo com os serviços e recursos específicos exigidos pelo usuário. O Fly.io opera em um modelo de preços conforme uso (pay-as-you-go), em que os usuários são cobrados com base no uso da plataforma. Isso inclui fatores como a quantidade de tráfego, o número de funções sem servidor e a quantidade de armazenamento usado.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O Fly.io fornece uma calculadora de custos em seu site, permitindo que os usuários estimem o custo de seu uso. Também é possível receber um orçamento da equipe Fly.io entrando em contato diretamente com eles.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;É importante observar que o Fly.io oferece uma avaliação gratuita para novos usuários, permitindo que eles testem a plataforma e seus recursos antes de se comprometer com um plano pago. Isso oferece uma oportunidade para os usuários avaliarem a plataforma e determinarem se ela atende às suas necessidades.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 16pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Arial; font-size: 15pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Recursos gratuitos&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Recursos incluídos gratuitamente em todos os planos:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Até 3 VMs de CPU compartilhada de 1x 256 MB*&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Armazenamento de volume persistente de 3 GB (total)&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Transferência de dados de saída de 160 GB&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;*Total de 3 VMs entre Aplicativos e Máquinas&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Não existe até o momento uma regra de tempo para utilizar os recursos gratuitos. Lembrando que para fazer o seu primeiro deploy, é necessário um cadastro e um &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;cartão de crédito&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; válido&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Referências:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://fly.io/docs/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://fly.io/docs/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://fly.io/docs/about/pricing/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://fly.io/docs/about/pricing/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;span id=&quot;docs-internal-guid-2bd62336-7fff-3c3e-2cc4-b4f01563fae4&quot;&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/U668llIYrYpJtwK80V9Q7wiomO1op3ZBGGXAne2mKqhC2nhjfnqL98sfNysuIT_GmG5YeOXiY6TZVizTaV4nGHpTo3gvpFrazKk0n0bPvJOSaZIFYuWU0lx32QqA2MTaVsizjYLFS_4tFGPYEzZKR-UUSXQHv-bJ1tSPvUFnX6rKB0dfAruzADGFZbLdqg&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/604440822293470638/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2023/02/conhecendo-o-servico-flyio-parte-1.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/604440822293470638'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/604440822293470638'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2023/02/conhecendo-o-servico-flyio-parte-1.html' title='Conhecendo o serviço fly.io - Parte 1'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEfgeJJ4XBhTetN7eyO00r-yx0ktQc_sEZQu0_4LYWk6OrRnVCz5i47fjwpluVdKFI5OGmCw5thgBBscl-GzbRKNQL2T77WLfQtVXwgJJWEoneQymOC0v5SDEeUYr6JWk9F5iL0Exgna7ufR28qzNp9fltgYkPsE61Vn3FEFejhM6JolrfEWNcw3QZyQ/s72-c/free-cloud-computing.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-3638712870893207421</id><published>2023-01-29T18:15:00.003-03:00</published><updated>2023-01-29T18:23:10.985-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Lambda"/><title type='text'>AWS Lambda kickstarts Java functions</title><content type='html'>&lt;meta content=&quot;summary_large_image&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;AWS Lambda kickstarts Java functions&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;O AWS Lambda SnapStart reduz o tempo de inicialização do Java iniciando as funções antecipadamente&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh3.googleusercontent.com/Uhn-89rrXP3wo1JDreC4Y0X3dYQQIHFQEfyK3auOrGwLa0M4B0jGMjAjNH1m4CR6-jI2HOVwqYnmtqgXONnhDdOmrRpXQlBR5PFwOR91LhD19N1YM7NIWrKc2I-unAvvbUgvc7NtQr3Mgd8PC8kOz-FLR6v-A1LyFJjoPsjV5htD4aaOeqexiOtO3yvx5g&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span id=&quot;docs-internal-guid-2bd62336-7fff-3c3e-2cc4-b4f01563fae4&quot;&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.56; margin-bottom: 6pt; margin-right: 8pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: Arial; font-size: 23pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;AWS Lambda kickstarts Java functions&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 190px; overflow: hidden; width: 212px;&quot;&gt;&lt;img height=&quot;190&quot; src=&quot;https://lh3.googleusercontent.com/Uhn-89rrXP3wo1JDreC4Y0X3dYQQIHFQEfyK3auOrGwLa0M4B0jGMjAjNH1m4CR6-jI2HOVwqYnmtqgXONnhDdOmrRpXQlBR5PFwOR91LhD19N1YM7NIWrKc2I-unAvvbUgvc7NtQr3Mgd8PC8kOz-FLR6v-A1LyFJjoPsjV5htD4aaOeqexiOtO3yvx5g&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;212&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O AWS Lambda SnapStart reduz o tempo de inicialização do Java iniciando as funções antecipadamente e armazenando em cache uma foto (snapshot) do ambiente de execução já inicializado.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A AWS revelou o AWS Lambda SnapStart para Java, uma otimização de desempenho destinada a facilitar a criação de aplicativos Java responsivos e escaláveis usando o AWS Lambda, o serviço de computação sem servidor e orientado a eventos na nuvem da Amazon.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Apresentado em 28 de novembro de 2022, o AWS Lambda SnapStart para Java melhora os tempos de inicialização iniciando o código de uma função antecipadamente (ahead of time), obtendo um acesso instantâneo ao ambiente de execução inicializado e armazenando-o em cache. Quando a função é invocada e dimensionada, o SnapStart retoma novos ambientes de execução a partir do instantâneo armazenado em cache, em vez de precisar inicializá-los do zero, melhorando assim a latência de inicialização, disse a AWS.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Elaborando seu raciocínio para o serviço, a AWS disse que, para aplicativos sensíveis à latência, nos quais os usuários desejam oferecer suporte a rajadas imprevisíveis de tráfego, longas latências de inicialização podem afetar negativamente a experiência do usuário. O AWS Lambda SnapStart é ideal para aplicativos como microsserviços interativos, processamento de dados ou APIs síncronas.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os usuários podem ativar o Lambda SnapStart para funções Lambda novas ou existentes baseadas em Java em execução no Amazon Corretto 11 por meio da API AWS Lambda, Console de gerenciamento da AWS, AWS Command Line Interface e outros recursos da AWS.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O Lambda SnapStart está disponível nas seguintes regiões da AWS: Leste dos EUA (Ohio), Leste dos EUA (N. da Virgínia), Oeste dos EUA (Oregon), Ásia-Pacífico (Cingapura), Ásia-Pacífico (Tóquio), Ásia-Pacífico (Sydney), Europa (Frankfurt), Europa (Irlanda) e Europa (Estocolmo).&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Referências:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://www.infoworld.com/article/3681549/aws-lambda-kickstarts-java-functions.html&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://www.infoworld.com/article/3681549/aws-lambda-kickstarts-java-functions.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/pt/about-aws/whats-new/2022/11/aws-lambda-snapstart-java-functions/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://aws.amazon.com/pt/about-aws/whats-new/2022/11/aws-lambda-snapstart-java-functions/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9872; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/pt/blogs/aws/new-accelerate-your-lambda-functions-with-lambda-snapstart/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://aws.amazon.com/pt/blogs/aws/new-accelerate-your-lambda-functions-with-lambda-snapstart/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/U668llIYrYpJtwK80V9Q7wiomO1op3ZBGGXAne2mKqhC2nhjfnqL98sfNysuIT_GmG5YeOXiY6TZVizTaV4nGHpTo3gvpFrazKk0n0bPvJOSaZIFYuWU0lx32QqA2MTaVsizjYLFS_4tFGPYEzZKR-UUSXQHv-bJ1tSPvUFnX6rKB0dfAruzADGFZbLdqg&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/3638712870893207421/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2023/01/aws-lambda-kickstarts-java-functions.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/3638712870893207421'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/3638712870893207421'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2023/01/aws-lambda-kickstarts-java-functions.html' title='AWS Lambda kickstarts Java functions'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/Uhn-89rrXP3wo1JDreC4Y0X3dYQQIHFQEfyK3auOrGwLa0M4B0jGMjAjNH1m4CR6-jI2HOVwqYnmtqgXONnhDdOmrRpXQlBR5PFwOR91LhD19N1YM7NIWrKc2I-unAvvbUgvc7NtQr3Mgd8PC8kOz-FLR6v-A1LyFJjoPsjV5htD4aaOeqexiOtO3yvx5g=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-712215323736325133</id><published>2023-01-01T12:00:00.001-03:00</published><updated>2023-01-01T12:00:00.181-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adoptium"/><category scheme="http://www.blogger.com/atom/ns#" term="EMT4J"/><category scheme="http://www.blogger.com/atom/ns#" term="Java11"/><category scheme="http://www.blogger.com/atom/ns#" term="Java17"/><category scheme="http://www.blogger.com/atom/ns#" term="Java8"/><category scheme="http://www.blogger.com/atom/ns#" term="migrate"/><title type='text'>Eclipse Migration Toolkit for Java</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;span style=&quot;font-family: Arial; font-size: 26pt; white-space: pre-wrap;&quot;&gt;Eclipse Migration Toolkit for Java (EMT4J) simplifica a atualização de aplicativos Java&lt;/span&gt;&lt;/p&gt;&lt;span id=&quot;docs-internal-guid-9d080097-7fff-5d73-1c3c-707cfa4d9a66&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A Adoptium &lt;/span&gt;&lt;a href=&quot;https://adoptium.net/blog/2022/12/emt4j-an-easier-upgrade-for-java-applications&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apresentou&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; o Eclipse Migration Toolkit for Java (EMT4J), um &lt;/span&gt;&lt;a href=&quot;https://projects.eclipse.org/projects/adoptium.emt4j&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;projeto Eclipse&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; de software livre capaz de analisar e atualizar aplicativos do Java 8 para o Java 11 e do Java 11 para o Java 17. O EMT4J suportará a atualização para futuras versões LTS.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;As organizações aconselham manter o Java runtime atualizado para obter segurança e melhorias funcionais. Enquanto isso, as versões Java Long Term Support (LTS) serão lançadas a cada dois anos e projetos como o &lt;/span&gt;&lt;a href=&quot;https://www.infoq.com/news/2022/11/spring-6-spring-boot-3-launch/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Spring Framework 6&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; agora requerem o Java 17. Infelizmente, a adoção de novas versões Java é relativamente lenta. Por exemplo, em 2022, quatro anos após seu lançamento, o Java 11 foi &lt;/span&gt;&lt;a href=&quot;https://newrelic.com/resources/report/2022-state-of-java-ecosystem&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;usado&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; por menos de 49% dos aplicativos Java.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Atualizar um aplicativo para uma nova versão do Java significa que os desenvolvedores precisam resolver todos os problemas introduzidos pelas alterações e remoções dentro do Java. Isso inclui funcionalidades como a remoção dos pacotes Nashorn, J2EE e Java, uma alteração nas APIs e acesso aos componentes internos do Java que se tornaram mais restritos.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O EMT4J oferece um plugin Maven (&lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j/issues/13&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ainda não disponível &lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;na central Maven), agente Java e solução de linha de comando para analisar incompatibilidades de projetos com novas versões Java e a saída é gravada nos formatos &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;TXT, JSON&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ou &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;HTML&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Para demonstrar o EMT4J, considere o seguinte aplicativo de exemplo que faz uma chamada para o método &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Thread.stop()&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; que foi removido no Java 11:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Thread thread = &lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Thread();&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;thread.stop();&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Depois de clonar o &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;repositório&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Git e &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j#how-to-build&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;configurar&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; as cadeias de ferramentas Maven para JDK 8 e JDK 11, o projeto pode ser construído com:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;mvn clean &lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;package&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; -Prelease&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.7999999999999998; margin-bottom: 6pt; margin-top: 6pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Isso resulta em um arquivo&lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; .zip&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; no diretório &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;emt4j-assembly/target&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; que pode ser extraído. Dentro do diretório extraído, a análise pode ser iniciada. Por exemplo, na &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j#use-the-command-line-toolstatically-scan&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;linha de comando&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;java -cp &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;lib/analysis/*&quot;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; org.eclipse.emt4j.analysis.AnalysisMain -f 8 -t 17 &lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; -o java8to17.html /home/user/application/classes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Isso analisa os arquivos de classe no diretório especificado e exibe possíveis problemas ao atualizar do Java 8 para o Java 17 no arquivo &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;java8to17.html&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. Alternativamente, os scripts &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.bat&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ou &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.sh&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; no diretório bin do arquivo extraído podem ser usados para iniciar a análise da linha de comando. O arquivo &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j#use-the-command-line-toolstatically-scan&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;README&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; descreve todas as opções disponíveis para analisar classes e arquivos JAR.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O arquivo HTML resultante exibe a descrição, resolução e localização do problema:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1.1 Removed API Back to Content&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1.1.1 Description&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Many of these APIs were deprecated in previous releases and &lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; have been replaced by newer APIs.&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1.1.2 How to fix&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;See corresponding JavaDoc.&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1.1.3 Issues Context&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Location: file:/home/user/application/classes/App.class, &lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; Target: java.lang.Thread.stop()V&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Como alternativa, o &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j#use-the-emt4j-agent&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;agente EMT4J&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; pode ser usado ao iniciar um aplicativo Java ou o &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j#use-it-as-maven-plugin&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;plugin Maven&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ao criar o projeto.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O projeto contém conjuntos de regras para atualização de &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j/blob/master/emt4j-common/src/main/resources/default/rule/8to11/rule.xml&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java 8 para 11&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; e de &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j/blob/master/emt4j-common/src/main/resources/default/rule/11to17/rule.xml&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java 11 para 17&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. Por exemplo, a regra de &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j/blob/master/emt4j-common/src/main/resources/default/rule/8to11/rule.xml&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;API interna&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; do JDK é usada para verificar se um aplicativo usa os componentes internos do JDK:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; desc=&quot;JDK internal API&quot; type=&quot;reference-class&quot; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; match-type=&quot;by-package&quot; class-package-file=&quot;jdk_internals.cfg&quot;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; result-code=&quot;JDK_INTERNAL&quot; must-contain-in-bytecode=&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; sub-result-code=&quot;@{subResultCode}&quot; priority=&quot;p4&quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;support-modes&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;mode&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;agent&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;mode&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;mode&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;mode&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;support-modes&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;modos de suporte (modes)&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; indicam se a regra pode ser usada com o modo de &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;agente(agent)&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; e/ou por meio da análise estática, modo de &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;classe(class)&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, com a linha de comando ou plugin Maven. Os pacotes de recursos de tradução são vinculados por meio do&lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; resultado do código&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, neste caso, JDK_INTERNAL, que mapeia para os arquivos de tradução &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;JDK_INTERNAL.properties&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; e &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;JDK_INTERNAL_zh.properties&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; dentro do diretório &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;emt4j-common/src/main/resources/default/i18n.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O EMT4J verifica o aplicativo em busca de pacotes e classes como &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;sun.nio&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; e &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;sun.reflect&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; definidos no arquivo de pacote de classe &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;jdk_internals.cfg&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; no diretório &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;emt4j-common/src/main/resources/default/rule/8to11/data/&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A classe de referência do tipo de regra real está localizada dentro do diretório &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;emt4j-common/src/main/java/org/eclipse/emt4j/common/rule/impl&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, pois a regra interna do JDK possui &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;modes&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;agent&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;e &lt;/span&gt;&lt;span style=&quot;background-color: #d0e0e3; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;color: #4c81c9; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;@RuleImpl&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(type = &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;reference-class&quot;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ReferenceClassRule&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;extends&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #0048ab; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ExecutableRule&lt;/span&gt;&lt;span style=&quot;color: #00193a; font-family: Consolas, sans-serif; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;As regras existentes podem oferecer inspiração para adicionar regras personalizadas seguindo as instruções no arquivo &lt;/span&gt;&lt;a href=&quot;https://github.com/adoptium/emt4j#add-a-new-rule&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;README&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9871999999999999; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Fontes (Em Inglês):&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.9871999999999999; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://www.infoq.com/news/2022/12/eclipse-migration-toolkit-java&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 12pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://www.infoq.com/news/2022/12/eclipse-migration-toolkit-java&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/l5LSXKs8gt_UQvfvWDfgZ7iiyvh3PnJM2p9uBnpF0Awv3itDOxSqWFvw_l5m5Jf40XEyu402HrR508p2yVN1lINbn_kSdNHtIgcxLWYn_NPe8QMRoKScvrbMxLomcrETpSdsfqVcTY8MM6wxDuPkFEH7bkmsL5elHoZvM1SoEauwmOKeHti3bqQVn6BGVw&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/712215323736325133/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2023/01/eclipse-migration-toolkit-for-java.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/712215323736325133'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/712215323736325133'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2023/01/eclipse-migration-toolkit-for-java.html' title='Eclipse Migration Toolkit for Java'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/l5LSXKs8gt_UQvfvWDfgZ7iiyvh3PnJM2p9uBnpF0Awv3itDOxSqWFvw_l5m5Jf40XEyu402HrR508p2yVN1lINbn_kSdNHtIgcxLWYn_NPe8QMRoKScvrbMxLomcrETpSdsfqVcTY8MM6wxDuPkFEH7bkmsL5elHoZvM1SoEauwmOKeHti3bqQVn6BGVw=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-9152254267041171728</id><published>2022-09-10T10:32:00.000-03:00</published><updated>2022-09-10T10:32:59.957-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Guia"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java18"/><category scheme="http://www.blogger.com/atom/ns#" term="Java8"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="JVM"/><category scheme="http://www.blogger.com/atom/ns#" term="LTS"/><category scheme="http://www.blogger.com/atom/ns#" term="match"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="OracleJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="pattern"/><category scheme="http://www.blogger.com/atom/ns#" term="Records"/><category scheme="http://www.blogger.com/atom/ns#" term="Sealed"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><title type='text'>O suporte de longo prazo e o que o LTS significa para o ecossistema Java</title><content type='html'>&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;O suporte de longo prazo e o que o LTS significa para o ecossistema Java&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;


&lt;h1&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8NqKuwH4wvXN4mBfAnxWGtKvP8pDvgOkJqvilx_M29J_oRPaVThuyuFhg8LTQydEQt6I9H0DrIyfN6TPbc1_uJTVMW_72kTFD130TvgpuNFZ3cwu1QiMeKQMC1yuk-KcWOg_xZJQMx_hS6WattUEQCtU9PMPSlGyU3qMjTR_V8cYR2DHPdbGolfeYQA&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img data-original-height=&quot;435&quot; data-original-width=&quot;975&quot; height=&quot;286&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8NqKuwH4wvXN4mBfAnxWGtKvP8pDvgOkJqvilx_M29J_oRPaVThuyuFhg8LTQydEQt6I9H0DrIyfN6TPbc1_uJTVMW_72kTFD130TvgpuNFZ3cwu1QiMeKQMC1yuk-KcWOg_xZJQMx_hS6WattUEQCtU9PMPSlGyU3qMjTR_V8cYR2DHPdbGolfeYQA=w640-h286&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/h1&gt;&lt;h1&gt;A arte do suporte de longo prazo e o que o LTS significa para o ecossistema Java&lt;/h1&gt;

&lt;h2&gt;Aqui está o que o Java 17 tem em comum com o Java 11 e o Java 8.&lt;/h2&gt;

&lt;p&gt;Em junho de 2018, há pouco mais de três anos, a Oracle e outros participantes do ecossistema Java anunciaram uma mudança no modelo de cadência de lançamento para Java SE.&lt;/p&gt;

&lt;p&gt;Em vez de ter um lançamento principal planejado a cada dois ou quatro anos (que geralmente se torna de três a quatro anos), um novo modelo de lançamento de recursos de seis meses seria usado: a cada três anos, um lançamento seria designado como &lt;strong&gt;Long-Term Support (LTS)&lt;/strong&gt; e receba apenas atualizações trimestrais de segurança, estabilidade e desempenho. Esse padrão foi emprestado descaradamente do modelo de lançamento do Mozilla Firefox, mas o ajustou para ficar mais alinhado com os requisitos de uma plataforma de desenvolvimento.&lt;/p&gt;

&lt;p&gt;A primeira versão do Java lançada sob esse modelo foi o Java SE 11.&lt;/p&gt;

&lt;p&gt;O lançamento do Java SE 17, o segundo lançamento do LTS sob o novo modelo, é iminente, e este artigo fornecerá uma atualização sobre como os lançamentos do Java SE funcionam. Também oferecerei alguns comentários sobre o que funcionou bem nos últimos três anos e quais refinamentos adicionais você deve esperar daqui para frente.&lt;/p&gt;

&lt;p&gt;[Em 14 de setembro de 2021, a &lt;a href=&quot;https://blogs.oracle.com/java/post/moving-the-jdk-to-a-two-year-lts-cadence&quot;&gt;Oracle propôs mudar&lt;/a&gt; a cadência dos lançamentos do JDK LTS de três em três anos para dois em dois anos. Se aceito, isso significa que a próxima versão do JDK LTS após o JDK 17 será o JDK 21, em vez do JDK 23. —Ed.]&lt;/p&gt;

&lt;h2&gt;O modelo de lançamento de recursos de seis meses&lt;/h2&gt;

&lt;p&gt;No modelo de lançamento de recursos, os desenvolvedores da plataforma Java podem trabalhar em recursos e lançá-los em qualquer período de seis meses, mas somente quando os recursos estiverem prontos. Compare isso com o antigo modelo de lançamento principal legado, onde os desenvolvedores da plataforma Java sentiram uma enorme pressão para empurrar recursos para um lançamento; caso contrário, teriam que esperar vários anos pelo próximo ciclo.&lt;/p&gt;

&lt;p&gt;Enquanto isso, os desenvolvedores de aplicativos agora desfrutam de uma cadência constante de recursos pequenos em uma linha do tempo previsível. Isso é muito melhor do que ter desenvolvedores Java tentando consumir centenas de alterações de uma só vez a cada poucos anos.&lt;/p&gt;

&lt;p&gt;Tem funcionado? Três anos no novo modelo, pesquisas com desenvolvedores mostram que entre um quarto e meio dos desenvolvedores usam a versão Java mais recente de seis meses como sua versão do dia-a-dia. Metade deles disse ter aplicativos em produção na versão mais recente.&lt;/p&gt;

&lt;p&gt;E o resto?&lt;/p&gt;

&lt;p&gt;É bem entendido e esperado que nem todos os desenvolvedores ou organizações queiram consumir lançamentos de recursos em uma cadência de seis meses. Organizações mais conservadoras, especialmente, querem solidificar uma pilha de desenvolvimento em torno de uma única versão e não assumir riscos associados à introdução de novos recursos. É aqui que as versões&lt;strong&gt; Java LTS&lt;/strong&gt; entram em jogo.&lt;/p&gt;

&lt;h2&gt;LTS se concentra na estabilidade&lt;/h2&gt;

&lt;p&gt;As versões Java LTS, como&lt;strong&gt; Java 11 e Java 17&lt;/strong&gt;, são semelhantes às versões de suporte estendido do Firefox. As atualizações da Oracle para as versões Java LTS fornecem apenas melhorias de estabilidade, segurança e desempenho, não novos recursos. Isso reduz o risco de que uma atualização possa interromper a interação com uma ferramenta ou biblioteca. As organizações podem contar com lançamentos Java LTS disponíveis por pelo menos oito anos, proporcionando tempo suficiente para que as cadeias de ferramentas se solidifiquem e para que os desenvolvedores façam a transição para outro LTS vários anos depois.&lt;/p&gt;

&lt;p&gt;O modelo LTS permite que os provedores de tecnologia se concentrem em versões específicas no suporte de longo prazo de seus produtos. Afinal, seria impraticável esperar que provedores de plataforma e cadeias de ferramentas fornecessem vários anos de suporte a cada lançamento de recurso de seis meses. Muito rapidamente haveria dezenas de versões precisando de suporte, bem como uma base de usuários fragmentada que seria impraticável de gerenciar.&lt;/p&gt;

&lt;p&gt;O momento ideal para versões que recebem o tratamento LTS é subjetivo. Historicamente, se você olhar para trás, do Java 1.2 ao Java 8, havia três a quatro anos entre os principais lançamentos. O novo modelo de lançamento de recursos tem três anos entre o Java 11 e o Java 17. Para organizações muito conservadoras, esse intervalo de três anos é ideal, mas à medida que mais desenvolvedores usam ferramentas e técnicas modernas, há uma demanda crescente para que a Oracle ofereça versões Java LTS em um ciclo mais curto, talvez a cada dois anos.&lt;/p&gt;

&lt;p&gt;Sejamos claros: cada provedor de binários da plataforma Java oferece seus próprios cronogramas e ofertas de suporte. O padrão na Oracle é que haverá oito anos de suporte para uma versão Java SE LTS. Para o&lt;strong&gt; Java 8&lt;/strong&gt;, o &lt;strong&gt;LTS &lt;/strong&gt;já foi estendido até pelo menos &lt;strong&gt;2030&lt;/strong&gt;, o que significa que esta versão terá pelo menos 16 anos de suporte quando for finalmente aposentada!&lt;/p&gt;

&lt;p&gt;Enquanto isso, versões como Java 7 e Java 11 provavelmente não terão extensões de suporte. As extensões são baseadas simplesmente na adoção e se as organizações que fornecem os respectivos binários consideram valioso continuar oferecendo suporte (comercial).&lt;/p&gt;

&lt;h2&gt;Conclusão&lt;/h2&gt;&lt;p&gt;
As versões LTS atuais do Java são Java 7, Java 8, Java 11 e&amp;nbsp; 17. Java 11 e Java 17 foram lançados sob a nova cadência de lançamento de recursos e com exatamente três anos de diferença; Java 7 e Java 8 são do modelo de versão principal legado. O suporte ainda é o mesmo, com cada versão LTS do Java recebendo apenas atualizações de desempenho, estabilidade e segurança.&lt;/p&gt;

&lt;p&gt;A Oracle pretende oferecer suporte às versões Java LTS da seguinte forma:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Java 7 até 2022&lt;/li&gt;
	&lt;li&gt;Java 8 até pelo menos 2030&lt;/li&gt;
	&lt;li&gt;Java 11 até 2026&lt;/li&gt;
	&lt;li&gt;Java 17 até pelo menos 2029&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Oracle quer que desenvolvedores e organizações tenham o melhor dos dois mundos: somente você pode decidir se faz sentido acompanhar os lançamentos de seis meses e digerir novos recursos regularmente ou implantar em uma versão LTS específica por um longo período . As organizações, é claro, podem misturar e combinar sua abordagem, por exemplo, mantendo a cadência de seis meses durante o desenvolvimento, mas bloqueando uma versão LTS quando o código estiver em produção.&lt;/p&gt;

&lt;h3 style=&quot;text-align: left;&quot;&gt;Referências&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://blogs.oracle.com/javamagazine/post/java-long-term-support-lts?_x_tr_sl=pt&amp;amp;_x_tr_tl=en&amp;amp;_x_tr_hl=pt-BR&amp;amp;_x_tr_pto=wapp&quot;&gt;https://blogs.oracle.com/javamagazine/post/java-long-term-support-lts?_x_tr_sl=pt&amp;amp;_x_tr_tl=en&amp;amp;_x_tr_hl=pt-BR&amp;amp;_x_tr_pto=wapp&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh5.googleusercontent.com/lmoqvd5N1g7Y5CMit4420jWQwgwr-jvTtfcBLR8p5lFVRkJvfBYmhIkEjIyn3RkVIKsvEFnubDsK-XEGdWsSCgPkJ-PW3kL45qwKF5r2imYQQJWKyXWfQZQu9INuZ4P1RmNEkzlNsA_apRuKilI6MugOt6tFL1TBIa1unXQtQgi9GRNKfcJlTd0i8A&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/9152254267041171728/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/09/o-suporte-de-longo-prazo-e-o-que-o-lts.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/9152254267041171728'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/9152254267041171728'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/09/o-suporte-de-longo-prazo-e-o-que-o-lts.html' title='O suporte de longo prazo e o que o LTS significa para o ecossistema Java'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEj8NqKuwH4wvXN4mBfAnxWGtKvP8pDvgOkJqvilx_M29J_oRPaVThuyuFhg8LTQydEQt6I9H0DrIyfN6TPbc1_uJTVMW_72kTFD130TvgpuNFZ3cwu1QiMeKQMC1yuk-KcWOg_xZJQMx_hS6WattUEQCtU9PMPSlGyU3qMjTR_V8cYR2DHPdbGolfeYQA=s72-w640-h286-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-7391217989320432732</id><published>2022-09-09T01:30:00.006-03:00</published><updated>2022-09-09T01:46:35.700-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Guia"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java18"/><category scheme="http://www.blogger.com/atom/ns#" term="Java8"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="JVM"/><category scheme="http://www.blogger.com/atom/ns#" term="match"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="OracleJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="pattern"/><category scheme="http://www.blogger.com/atom/ns#" term="Records"/><category scheme="http://www.blogger.com/atom/ns#" term="Sealed"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><title type='text'>Java 8 ao 18: Mudanças mais importantes na plataforma Java</title><content type='html'>&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java 8 ao 18: Mudanças mais importantes na plataforma Java&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh5.googleusercontent.com/smdEPyaGBXZshp6iSdZ22j9aiddt9hljF3eguXLncPAIXn16w_SiKp5iVcwJ0W20_2riOttHp9qBoMtJvh-Yksmg3Hq92RhYKKdC0cjOWy9DAm7m3UrbCDMtTsMdgXx11LE4JjmZusKuED74mAfCK3wIj0hDfNjbYt4GV_DLhy23Z8OTYfF62Zknbg&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 32pt; margin-right: 20pt; margin-top: 12pt; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 202px; overflow: hidden; width: 300px;&quot;&gt;&lt;img height=&quot;202&quot; src=&quot;https://lh5.googleusercontent.com/smdEPyaGBXZshp6iSdZ22j9aiddt9hljF3eguXLncPAIXn16w_SiKp5iVcwJ0W20_2riOttHp9qBoMtJvh-Yksmg3Hq92RhYKKdC0cjOWy9DAm7m3UrbCDMtTsMdgXx11LE4JjmZusKuED74mAfCK3wIj0hDfNjbYt4GV_DLhy23Z8OTYfF62Zknbg&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;300&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Vamos rever muitas das mudanças mais importantes na plataforma Java que aconteceram entre a versão 8 (2014) e 18 (2022)&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;O Java 8 foi lançado em março de 2014 e o Java 18 em março de 2022. São 8 anos de progresso, 203 JEPs (JDK Enhancement Proposals ), entre essas duas versões. Neste post, revisaremos as mudanças mais importantes e discutiremos os benefícios e desafios da adoção de versões mais recentes do JDK para novos aplicativos e para os mais antigos compilados com versões mais antigas.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Desde a versão 9, o Java tem novos recursos a cada 6 meses e é muito difícil acompanhar essas novas mudanças. A maioria das informações na internet descreve as mudanças entre as duas últimas versões do Java. No entanto, se você estiver em uma situação semelhante à minha, não está usando uma das versões mais recentes do Java, mas uma das várias versões anteriores (Geralmente 8 ou 11 que são as versões de suporte estendido).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Então é útil saber quais novos recursos foram adicionados desde a versão que você usa agora, ou entre as versões que você usa agora e aquela que você deseja começar a usar em seguida. Portanto, compilei uma tabela com todos os novos recursos adicionados desde o Java 8 para cada nova versão do Java.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Abaixo você encontra tabelas para:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level=&quot;1&quot; style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Novos recursos da linguagem Java – adições à linguagem Java ou APIs&lt;/span&gt;&lt;/li&gt;
&lt;li aria-level=&quot;1&quot; style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Novas ferramentas e recursos no OpenJDK – adições fora da linguagem, como ferramentas de linha de comando ou melhorias na JVM&lt;/span&gt;&lt;/li&gt;
&lt;li aria-level=&quot;1&quot; style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Recursos e APIs obsoletos/removidos&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Observe que não inclui todos os novos recursos e adições de API, apenas aqueles que são úteis para a maioria dos desenvolvedores, para manter a lista curta.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Este artigo não é sobre como escolher a versão Java certa para você usar. Mas vou pelo menos resumir todas as versões do Java desde o Java 8 e para sua conveniência:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level=&quot;1&quot; style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java 8 – versão LTS (Long Term Support), última versão LTS antes do JPMS (módulos) serem introduzidos no Java 9&lt;/span&gt;&lt;/li&gt;
&lt;li aria-level=&quot;1&quot; style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java 11 – versão LTS&lt;/span&gt;&lt;/li&gt;
&lt;li aria-level=&quot;1&quot; style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java 17 – versão LTS, a versão LTS mais recente até março de 2023&lt;/span&gt;&lt;/li&gt;
&lt;li aria-level=&quot;1&quot; style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java 18 – versão não LTS, a versão mais recente em março de 2022&lt;/span&gt;&lt;/li&gt;
&lt;li aria-level=&quot;1&quot; style=&quot;font-weight: 400;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Todas as outras versões Java – versões não LTS&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Na maioria dos casos, você deve usar apenas versões LTS em produção. Isso é, a menos que você tenha necessidades específicas para usar o maior e a mais recente versão e esteja disposto a atualizar para uma nova versão do Java a cada 6 meses. Para saber mais sobre as versões do Java LTS, você pode ler &lt;/span&gt;&lt;a href=&quot;https://blogs.oracle.com/javamagazine/post/java-long-term-support-lts&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;A arte do suporte de longo prazo e o que o LTS significa para o ecossistema Java da Oracle&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (Em Inglês).&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Novos recursos da linguagem Java desde o Java 8&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;height: 100%; margin-left: auto; margin-right: auto; width: 100%;&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 64px;&quot;&gt;
&lt;td style=&quot;height: 64px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 64px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;strong&gt;Desde&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 64px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;strong&gt;Preview desde&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 194px;&quot;&gt;
&lt;td style=&quot;height: 194px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/408&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Simple Web Server &lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;(a.k.a &lt;/span&gt;&lt;a href=&quot;https://docs.oracle.com/en/java/javase/18/docs/api/jdk.httpserver/com/sun/net/httpserver/SimpleFileServer.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;com.sun.net.httpserver.SimpleFileServer&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;Java API:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;SimpleFileServer.createFileServer(new InetSocketAddress(9000), path, logLevel).start();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;Cmd Line: jwebserver -p 9000&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 194px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;18&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 194px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 128px;&quot;&gt;
&lt;td style=&quot;height: 128px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/413&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Code Snippets in Java API Documentation&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;{@snippet : lines of code} instead of &amp;lt;pre&amp;gt;{@code lines of code }&amp;lt;/pre&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 128px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;18&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 128px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 96px;&quot;&gt;
&lt;td style=&quot;height: 96px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/400&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;UTF-8 by Default&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; – em vez do charset definido pelo sistema..&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Rode &lt;/span&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;javac -encoding UTF-8&lt;/span&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; com JDK 8-17 para verificar problemas de codificação de código Java.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 96px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;18&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 96px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 118px;&quot;&gt;
&lt;td style=&quot;height: 118px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/415&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Context-Specific Deserialization Filters&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; – Permitir que os aplicativos configurem filtros de desserialização, especifique um padrão por meio de uma propriedade do sistema ou uma fábrica de filtros por meio de uma propriedade do sistema ou por meio de ObjectInputFilter.Config&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 118px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;17&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 118px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 454px;&quot;&gt;
&lt;td style=&quot;height: 454px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/420&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Pattern Matching for switch&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; – como instanceof para switch; switch é uma expressão e pode ser atribuída:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;String result = switch (o) {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; case null -&amp;gt; null;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;&amp;nbsp;&amp;nbsp;case 0 -&amp;gt; throw new RuntimeException(&quot;Cannot be 0&quot;); // Special cases&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;&amp;nbsp;&amp;nbsp;case Integer i &amp;amp;&amp;amp; i &amp;gt; 0 -&amp;gt; &quot;Positive number&quot;;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;&amp;nbsp;&amp;nbsp;case Integer i -&amp;gt; &quot;Negative number&quot;; // 0 and &amp;nbsp; positive numbers handled by above rules&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;&amp;nbsp;&amp;nbsp;case String s -&amp;gt; s;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;&amp;nbsp;&amp;nbsp;case Point p -&amp;gt; p.toString();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;&amp;nbsp;&amp;nbsp;case int[] ia -&amp;gt; &quot;Array length&quot; + ia.length;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;&amp;nbsp;&amp;nbsp;default -&amp;gt; &quot;Something else&quot;;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 454px; width: 81.1094px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 454px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;17&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/419&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Foreign Function &amp;amp; Memory API&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (uma alternativa ao JNI)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;16&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 64px;&quot;&gt;
&lt;td style=&quot;height: 64px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/417&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Vector API&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; – Cálculos expressos que compilam para instruções de hardware ideais&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 64px; width: 81.1094px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 64px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;16&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 128px;&quot;&gt;
&lt;td style=&quot;height: 128px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/409&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Sealed classes&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (herança apenas para classes permitidas):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;public abstract sealed class Shape permits Circle, Rectangle, Square {...}&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 128px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;17&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 128px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;15&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 128px;&quot;&gt;
&lt;td style=&quot;height: 128px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/395&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Record type&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; – classes de dados com métodos getters, construtores, equals, hashCode e toString implícitos:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;record Point(int x, int y) { }&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 128px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;16&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 128px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 207px;&quot;&gt;
&lt;td style=&quot;height: 207px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Membros estáticos em classes internas (parte do JEP &lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/395&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Record type&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;new Object() {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;static record MyData(String data) {};&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;public static final int CONSTANT = 1;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;};&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 207px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;16&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 207px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;16&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 110px;&quot;&gt;
&lt;td style=&quot;height: 110px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/394&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Pattern Matching for instanceof&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;if (x instanceOf String s) { String a = s; }&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 110px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;16&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 110px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 207px;&quot;&gt;
&lt;td style=&quot;height: 207px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/378&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Text blocks&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;String query = &quot;&quot;&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;SELECT &quot;EMP_ID&quot;, &quot;LAST_NAME&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;FROM &quot;EMPLOYEE_TB&quot;;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 207px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;15&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 207px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;13&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Novos métodos de String (&lt;/span&gt;&lt;a href=&quot;https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/String.html#formatted(java.lang.Object...)&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;formatted&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;, stripIndent, translateEscapes)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;15&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 207px;&quot;&gt;
&lt;td style=&quot;height: 207px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/361&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Switch expressions&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;boolean isWeekend = switch (day) {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;case SATURDAY, SUNDAY -&amp;gt; true;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;default -&amp;gt; false;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;};&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 207px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 207px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;12&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://www.baeldung.com/java12-string-api&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Novos métodos de String&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (indent, transform)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;12&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/text/CompactNumberFormat.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;CompactNumberFormat class&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;12&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://4comprehension.com/java-11-string-api-updates/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Novos métodos de String&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (repeat, isBlank, strip, lines)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 110px;&quot;&gt;
&lt;td style=&quot;height: 110px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/323&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;var type allowed in Lambda Parameters&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;(@NonNull var x) -&amp;gt; process(x)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 110px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 110px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpClient.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;New HTTP client API&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/332&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;TLS v1.3&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; – suporte para uma nova versão do protocolo SSL/TLS&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 110px;&quot;&gt;
&lt;td style=&quot;height: 110px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/286&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;var type allowed for local variables&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;var length = str.length();&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 110px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;10&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 110px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://dev.to/ajiteshtiwari/java-9-flow-api-4e38&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Flow API (reactive streams)&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/261&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java Platform Module System (modules)&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 110px;&quot;&gt;
&lt;td style=&quot;height: 110px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/269&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Collection factory methods&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: courier; font-weight: 400;&quot;&gt;List.of(a, b, c); Set.of(d, e, f, g); Map.of(k1, v1, k2, v2);&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 110px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 110px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 64px;&quot;&gt;
&lt;td style=&quot;height: 64px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://www.javatpoint.com/java-9-stream-api-improvement&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Stream API improvements&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (takeWhile, dropWhile, ofNullable, iterate with condition)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 64px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 64px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/javase/9/docs/api/java/awt/image/MultiResolutionImage.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Multi-Resolution Image API&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/259&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Stack-Walking API&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 64px;&quot;&gt;
&lt;td style=&quot;height: 64px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/102&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Process API updates&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (informações detalhadas sobre processos, por ex. ID, onExit, destroy)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 64px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 64px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://grokonez.com/java/java-9/java-9-completablefuture-api-improvements-delay-timeout-support&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;new methods in CompletableFuture API&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (delay, timeout)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://www.javatpoint.com/java-9-interface-private-methods&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Interface private methods&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/277&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;since and forRemoval in @Deprecated&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://www.javatpoint.com/java-default-methods&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Interface Default and Static Methods&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Method References&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Optional class&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Lambda expressions&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Functional interfaces&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Stream API&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://jcp.org/en/jsr/detail?id=335&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Effectively Final Variables&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/120&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Repeating Annotations&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 46px;&quot;&gt;
&lt;td style=&quot;height: 46px; width: 491.734px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://jcp.org/en/jsr/detail?id=310&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;New Date Time API&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 81.1094px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;height: 46px; width: 92.1562px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;New JDK tools and features since OpenJDK 8&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto; width: 100%;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;strong&gt;Tool / feature&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;strong&gt;Desde&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;
&lt;p&gt;&lt;strong&gt;Preview desde&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/343&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Packaging Tool&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/318&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Epsilon (no-op) GC&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/317&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Experimental Java-Based JIT Compiler&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (Graal VM)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;10&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/379&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Shenandoah GC&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;15&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;12&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.oracle.com/en/java/javase/15/gctuning/z-garbage-collector.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Z GC&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/377&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;JEP 377&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;15&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/358&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Helpful NullPointerExceptions&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/330&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Launching Java files as scripts&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/328&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Flight recorder&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (data collection framework for troubleshooting)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8146115&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Docker Container Support:&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;-XX:-UseContainerSupport&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;10,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8u191&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8186248&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Flexible heap size selection&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;-XX:MaxRAMPercentage&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;10,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8u191&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/310&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Application Class-Data Sharing&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (CDS)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;10&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/282&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;jlink&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; – custom JRE image, subset of JRE&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/222&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;JShell (Java REPL)&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; – run Java commands interactively&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/238&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Multi-Release JAR Files&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 478.234px;&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/254&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Compact Strings&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 53.5625px;&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 125.203px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Deprecated/removed features and APIs:&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Feature / API&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Depreciado desde&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Removido desde&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/421&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Deprecate Finalization for Removal&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (finalize() and similar methods)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;18&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/411&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Deprecate the Security Manager for Removal&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;17&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/390&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Constructors of primitive wrapper classes&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (e.g. new Integer(1))&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;16&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/366&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;ParallelScavenge + SerialOld GC Combination&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/289&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Applet API&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/398&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Deprecated For Removal&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; in Java 17)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/407&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;RMI Activation&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;15&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;17&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/403&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Strongly Encapsulate JDK Internals&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (except sun.misc.Unsafe and some more)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;– internal JDK classes won’t be available anymore&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;17&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/335&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Nashorn JavaScript Engine&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;15&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/381&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Solaris and SPARC Ports&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;15&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;CMS GC&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/367&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Pack200 Tools and API&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;14&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://www.infoworld.com/article/3305073/removed-from-jdk-11-javafx-11-arrives-as-a-standalone-module.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java FX&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (moved to &lt;/span&gt;&lt;a href=&quot;https://openjfx.io/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;OpenJFX&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://www.oracle.com/java/technologies/javase/11-relnote-issues.html&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java Web Start&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (was only in Oracle JDK)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/320&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java EE and CORBA modules&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt; (JAX-WS, JAXB, JAF, Common Annotations, CORBA, JTA)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Look here to find &lt;/span&gt;&lt;a href=&quot;https://stackoverflow.com/questions/48204141/replacements-for-deprecated-jpms-modules-with-java-ee-apis&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;replacements for the removed modules&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;11&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/313&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;javah&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://openjdk.java.net/jeps/313&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Native-Header Generator&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;10&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/241&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;jhat Heap Visualizer&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/231&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Launch-Time JRE Version Selection&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/220#Removed:-rt-jar-and-tools-jar&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;rt.jar and tools.jar&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/220#Removed:-The-extension-mechanism&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;The extension mechanism (java.ext.dirs property)&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href=&quot;http://openjdk.java.net/jeps/214&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Rarely-Used GC Combinations&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;span&gt;Para mais detalhes, o catálogo &lt;/span&gt;&lt;a href=&quot;https://javaalmanac.io/&quot;&gt;&lt;span&gt;javaalmanac.io/&lt;/span&gt;&lt;/a&gt;&lt;span&gt; é muito útil para navegar pelas mudanças em Java ao longo de todo o seu histórico. Ele pode fornecer diferenças completas de APIs entre versões Java selecionadas, por exemplo, entre Java 8 e Java 11. Muito útil se você está pensando em migrar para uma versão específica do Java.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Fontes (Em Inglês):&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-18/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;A categorized list of all Java and JVM features since JDK 8 to 18 - Advanced Web Machinery&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://inside.java/2022/08/29/java-8-to-18/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;Java 8 to 18: most important changes in the java platform&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ondro.inginea.eu/index.php/new-features-in-java-versions-since-java-8/&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;New features between Java 8 and Java 18 - .Lost in Coding&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 3pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh5.googleusercontent.com/lmoqvd5N1g7Y5CMit4420jWQwgwr-jvTtfcBLR8p5lFVRkJvfBYmhIkEjIyn3RkVIKsvEFnubDsK-XEGdWsSCgPkJ-PW3kL45qwKF5r2imYQQJWKyXWfQZQu9INuZ4P1RmNEkzlNsA_apRuKilI6MugOt6tFL1TBIa1unXQtQgi9GRNKfcJlTd0i8A&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/7391217989320432732/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/09/java-8-ao-18-mudancas-mais-importantes.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7391217989320432732'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7391217989320432732'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/09/java-8-ao-18-mudancas-mais-importantes.html' title='Java 8 ao 18: Mudanças mais importantes na plataforma Java'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/smdEPyaGBXZshp6iSdZ22j9aiddt9hljF3eguXLncPAIXn16w_SiKp5iVcwJ0W20_2riOttHp9qBoMtJvh-Yksmg3Hq92RhYKKdC0cjOWy9DAm7m3UrbCDMtTsMdgXx11LE4JjmZusKuED74mAfCK3wIj0hDfNjbYt4GV_DLhy23Z8OTYfF62Zknbg=s72-c" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-4853505925420385794</id><published>2022-07-05T22:08:00.005-03:00</published><updated>2022-07-05T22:11:19.647-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AOT"/><category scheme="http://www.blogger.com/atom/ns#" term="JIT"/><category scheme="http://www.blogger.com/atom/ns#" term="Leyden"/><category scheme="http://www.blogger.com/atom/ns#" term="Micronaut"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Quarkus"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><category scheme="http://www.blogger.com/atom/ns#" term="SpringBoot"/><title type='text'>Projeto Leyden atrasa o compilador OpenJDK AOT e otimiza o compilador JIT em vez disso</title><content type='html'>&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Projeto Leyden atrasa&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaMmKqkgLyDcBGNlr58OQaUsYj4z6kQpPsJdRqc9ksB-CADLi52tzhn5fsVkGnFJBg4Aj5Xmrcl10PIdOpCFyDW0CqMbWgraVvcBeYd7suTflRHRTZjVSqV_3hR6uDOx7YAIfNHfcxPm0MBgP-AeNOlJtme5bm2CC3Tfy06rybMlzgZnmYh7TmfAHkDQ/s16000/62c167e3bc842d00efff119a0ae38939.webp&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span id=&quot;docs-internal-guid-a10f6685-7fff-15d4-656a-478095d7a842&quot;&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaMmKqkgLyDcBGNlr58OQaUsYj4z6kQpPsJdRqc9ksB-CADLi52tzhn5fsVkGnFJBg4Aj5Xmrcl10PIdOpCFyDW0CqMbWgraVvcBeYd7suTflRHRTZjVSqV_3hR6uDOx7YAIfNHfcxPm0MBgP-AeNOlJtme5bm2CC3Tfy06rybMlzgZnmYh7TmfAHkDQ/s640/62c167e3bc842d00efff119a0ae38939.webp&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;360&quot; data-original-width=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaMmKqkgLyDcBGNlr58OQaUsYj4z6kQpPsJdRqc9ksB-CADLi52tzhn5fsVkGnFJBg4Aj5Xmrcl10PIdOpCFyDW0CqMbWgraVvcBeYd7suTflRHRTZjVSqV_3hR6uDOx7YAIfNHfcxPm0MBgP-AeNOlJtme5bm2CC3Tfy06rybMlzgZnmYh7TmfAHkDQ/s16000/62c167e3bc842d00efff119a0ae38939.webp&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;Projeto Leyden atrasa o compilador OpenJDK AOT e otimiza o compilador JIT em vez disso&lt;/span&gt;&lt;/h1&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O objetivo do &lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/projects/leyden/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Projeto Leyden&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; é &quot;resolver os pontos problemáticos de longo prazo do tempo de inicialização lenta do Java, do tempo lento para o desempenho máximo&quot;. Ele queria chegar lá &quot;introduzindo um conceito de imagens estáticas&quot; no OpenJDK. Imagens estáticas resultam da &lt;/span&gt;&lt;a href=&quot;https://www-infoq-com.translate.goog/articles/native-compilations-boosts-java/?_x_tr_sl=en&amp;amp;_x_tr_tl=pt&amp;amp;_x_tr_hl=pt-BR&amp;amp;_x_tr_pto=wapp&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;compilação Ahead-of-Time (AOT) para executáveis ​​nativos&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; . 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 &quot; &lt;/span&gt;&lt;a href=&quot;https://mail.openjdk.java.net/pipermail/leyden-dev/2022-May/000001.html&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;otimizações resultantes quase certamente serão mais fracas&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &quot; 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.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O projeto Graal tem origem no Oracle Labs e não faz parte do OpenJDK. Sua &lt;/span&gt;&lt;a href=&quot;https://www-infoq-com.translate.goog/articles/native-java-graalvm?_x_tr_sl=en&amp;amp;_x_tr_tl=pt&amp;amp;_x_tr_hl=pt-BR&amp;amp;_x_tr_pto=wapp&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;imagem nativa GraalVM&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; é um compilador Java AOT que produz executáveis ​​nativos hoje. Eles têm &lt;/span&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=EpcovUvQ-XA&amp;amp;t=179s&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;quatro vantagens&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; sobre o compilador JIT do Java: inicialização rápida, menor uso de memória e CPU, menos vulnerabilidades de segurança e tamanhos de arquivo menores.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Mas essas conquistas têm um custo: o GraalVM Native Image impõe uma suposição chamada de mundo fechado em aplicativos Java que elimina toda uma categoria de aplicativos Java. Por quê? Porque Java é uma linguagem dinâmica e dá aos aplicativos muito poder em tempo de execução, como reflexões, carregamento de classes ou até mesmo construção de classes. E alguns desses recursos &lt;/span&gt;&lt;a href=&quot;https://www-infoq-com.translate.goog/articles/native-java-aligning/?_x_tr_sl=en&amp;amp;_x_tr_tl=pt&amp;amp;_x_tr_hl=pt-BR&amp;amp;_x_tr_pto=wapp&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;não funcionam no mundo fechado&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; do GraalVM Native Image. É por isso que o Projeto Leyden agora quer &quot;explorar um espectro de restrições, mais fracas do que a restrição do mundo fechado, e descobrir quais otimizações elas permitem&quot;. Ainda assim, Leyden &quot;provavelmente [...] produzirá imagens totalmente estáticas&quot;, embora apenas &quot;a longo prazo&quot;.&lt;/span&gt;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O OpenJDK já tentou a compilação AOT&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O Project Leyden é a segunda tentativa do OpenJDK de compilação AOT. O primeiro esforço foi com a jaotc na JEP 295, Ahead-of-Time Compilation, entregue no JDK 9 em setembro de 2017. Assim como o GraalVM Native Image, utilizou o projeto Graal. Ao contrário do GraalVM Native Image, era altamente impopular: quando a Oracle &lt;/span&gt;&lt;a href=&quot;https://bugs.openjdk.java.net/browse/JDK-8255616&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;removeu o&amp;nbsp; jaotc de suas compilações Java 16&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; , &quot;ninguém reclamou&quot;, a Oracle observou secamente com JEP 410, Remove the Experimental AOT e JIT Compiler, entregue no JDK 17.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O Projeto Leyden teve uma história incomum para um projeto OpenJDK. O arquiteto da linguagem Java Mark Reinhold o propôs em abril de 2020, seguido pelo OpenJDK que o aprovou como projeto em junho de 2020. Mas o projeto não mostrou nenhum progresso visível nos dois anos entre essa aprovação e a criação de sua lista de discussão em maio de 2022. Isso é porque o projeto está apenas começando, focando &lt;/span&gt;&lt;a href=&quot;https://mail.openjdk.org/pipermail/leyden-dev/2022-May/000000.html&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot; mais em conceitos do que em código &quot; agora&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. Reinhold afirmou que componentes como o HotSpot JVM, o compilador C2, o compartilhamento de dados de classe de aplicativo (CDS) e a ferramenta&amp;nbsp; jlink de vinculação&quot; são alvos de otimização. Notavelmente ausente dessa lista foi o &lt;/span&gt;&lt;a href=&quot;https://youtu.be/0evEs_3yaEI&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;CRaC&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, um projeto OpenJDK que reduz o tempo de inicialização carregando o estado do aplicativo Java do disco.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Um cálculo no verso do envelope mostra as datas de entrega possíveis. As versões LTS agora têm uma importância desproporcional no Java. Ben Evans, da empresa de monitoramento New Relic, anunciou na Devoxx UK 2022 que &quot; &lt;/span&gt;&lt;a href=&quot;https://youtu.be/SYO-LmA647E?t=186&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;nenhuma versão não LTS já ultrapassou 1% de participação de mercado&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &quot;. Isso mostra que os desenvolvedores Java convencionais migram apenas de uma versão Java LTS para outra versão LTS.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Como o Projeto Leyden está em andamento, poucos resultados estarão prontos para produção em setembro de 2023 para o JDK 21, o &lt;/span&gt;&lt;a href=&quot;https://www.infoq.com/news/2021/10/oracle-java-two-year-lts&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;próximo lançamento do LTS&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; . Portanto, os desenvolvedores Java convencionais provavelmente verão apenas os primeiros resultados do Project Leyden com o lançamento do LTS depois disso, JDK 25, em setembro de 2025. Com base nessa suposição, o Project Leyden entregaria, no mínimo, a compilação AOT para executáveis ​​nativos com o JDK 29 em setembro de 2027.&lt;/span&gt;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Spring Boot reage ao projeto Leyden&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Pelo menos alguns dos recursos considerados para o Projeto Leyden, como jlink ou CRaC, exigem suporte à estrutura do aplicativo para funcionar melhor. É por isso que a InfoQ entrou em contato com os desenvolvedores que representam Spring Boot, Quarkus e Micronaut para sua reação inicial ao anúncio do Project Leyden.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O líder do projeto Spring Framework, Juergen Hoeller, aprova o Projeto Leyden:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O Projeto Leyden é uma iniciativa promissora alinhada com a direção geral que estamos tomando no Spring Framework 6 e Spring Boot 3.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Hoeller também adota o CRaC para o Spring:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os snapshots de heap CRaC podem se tornar uma opção comum para melhorar o tempo de inicialização de aplicativos baseados em Spring. Tirando o snapshot bem no final da fase de inicialização do aplicativo, dificilmente haveria qualquer arquivo aberto ou recursos de rede nesse ponto, de acordo com as expectativas do CRaC. O Spring ainda redefine seus caches comuns no final de uma atualização de contexto de aplicativo, limpando metadados relacionados à inicialização antes de repovoar dinamicamente os caches com metadados relacionados a solicitações. Em termos de contexto de aplicação reagindo especificamente a um evento de snapshot ou melhorando a &quot;snapsafety&quot; de componentes comuns, certamente tentaremos capacitar os primeiros adotantes na medida do tecnicamente viável em nossa linha Spring Framework 6.x.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Hoeller acha que o Spring dará suporte jlink ao Java Platform Module System (JPMS) em breve:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os marcos atuais do Spring Framework 6.0 ainda não incluem descritores de informações de módulo. Isso está no roteiro para o milestone M6 em setembro, reavaliando a prontidão do sistema de módulos do ecossistema de terceiros à medida que avançamos para nossa fase de candidatos à versão 6.0. Com o Project Leyden potencialmente transformando jlink em uma ferramenta mais poderosa e versátil, pretendemos nos preparar não apenas para jlink&#39;s as capacidades atuais, mas também para sua evolução futura.&lt;/span&gt;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Quarkus reage ao projeto Leyden&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O cofundador e co-líder da Quarkus, Jason Greene, comentou sobre o Projeto Leyden:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Estamos muito empolgados com o objetivo do projeto Leyden de revisar a especificação da linguagem Java para oferecer melhor suporte a imagens estáticas, compilação nativa e outras tecnologias, como checkpointing JVM. Além disso, ficamos felizes em ver o mundo fechado remanescente como uma provável meta de longo prazo para o projeto.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Greene adota o CRaC para Quarkus:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O suporte inicial para o projeto de pesquisa CRaC foi recentemente contribuído para o projeto Quarkus pelo líder CRaC. Como o Quarkus realiza a otimização do tempo de compilação, independentemente do tipo de destino do tempo de execução, você ainda vê economias consideráveis ​​ao executar no OpenJDK, não apenas no GraalVM. Adicionar uma abordagem de ponto de verificação, como CRaC, em cima do OpenJDK otimiza ainda mais o tempo de inicialização. Não traz economia de memória semelhante às imagens nativas, mas é uma opção futura interessante para aplicativos que preferem ou exigem execução de JVM.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;No entanto, Greene está mais relutante em relação jlink ao JPMS em Quarkus:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A partir de hoje, jlink só traz benefícios para a sobrecarga de armazenamento de um aplicativo baseado em JVM (a sobrecarga de memória e o tempo de inicialização são essencialmente os mesmos sem ela). No entanto, a prática comum em um contêiner ou aplicativo Kubernetes é sobrepor uma imagem de base JVM padrão, o que já traz mais economia do que alternar todos os aplicativos para jlink (já que cada um agruparia sua própria JVM aparada). No caso de uma imagem nativa, os elementos refinados da JVM são compilados na imagem, então jlink não é útil neste cenário também. Da mesma forma, com o JPMS, o Quarkus já tem a noção de modularidade por meio de extensões do Quarkus, permitindo que você reduza seu conjunto de dependências apenas para o que você precisa. A abordagem adotada pelo Quarkus é compatível com o classpath simples e plano que a maioria do ecossistema Java e as ferramentas de compilação preferem hoje. Do lado do custo, mudar para um modelo de módulo JPMS puro conforme jlink necessário (sem módulos automáticos) significaria uma mudança radical não apenas no Quarkus, mas em muitas das bibliotecas nas quais o Quarkus se baseia. Antes de considerar uma mudança, gostaríamos de ver esses fatores se equilibrarem melhor.&lt;/span&gt;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Micronaut reage ao Projeto Leyden&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Sergio del Amo Caballero, engenheiro de software principal da Object Computing, Inc. (OCI), não tinha uma declaração oficial do Micronaut Framework sobre o Projeto Leyden. Mas ele apontou para um &lt;/span&gt;&lt;a href=&quot;https://github.com/micronaut-projects/micronaut-core/issues/7601&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;problema recente do GitHub&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; para adicionar suporte CRaC no Micronaut.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Caballero também compartilhou um &lt;/span&gt;&lt;a href=&quot;https://youtube.com/clip/UgkxyPlY-jWrPCWnBdf-EeKd6iMklqp8a7df&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;clipe&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; do YouTube de julho de 2020 com o criador do Micronaut, Graeme Rocher, comentando sobre o JPMS: o Micronaut suporta JPMS e publica arquivos de informações do módulo, mas precisa &quot;equilibrar isso com o suporte ao Java 8&quot;. O JPMS foi adicionado no Java 9, mas o Micronaut 3.5, a versão atual, ainda roda no Java 8.&lt;/span&gt;&lt;/p&gt;&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Conclusão&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span style=&quot;color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Até agora, o OpenJDK não abordou &quot;os pontos problemáticos de longo prazo do tempo de inicialização lento do Java, do tempo lento para o desempenho máximo&quot;. Primeiro, seu jaotc compilador AOT não conseguiu ganhar força e foi aposentado. Então o Projeto Leyden começou a padronizar a compilação nativa em Java, mas ficou parado por dois anos.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Agora que o Project Leyen mudou para otimizar a compilação JIT, as coisas estão melhorando: tanto o Spring quanto o Quarkus adotam o CRaC para reduzir o tempo de inicialização. Mas quando se trata de tamanhos de aplicativos Java menores, apenas a Micronaut adere à sugestão do Projeto Leyden de usar o JPMS. O Spring planeja oferecer suporte ao JPMS na versão 6 até o final de 2022, embora o ecossistema Spring não possa. E a Quarkus atualmente não tem planos de adicionar o JPMS.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os resultados, na forma de JEPs, do Projeto Leyden podem alcançar os principais desenvolvedores Java até o final de 2025, no mínimo. Portanto, pelo menos até então, a combinação do compilador GraalVM Native Image AOT com uma estrutura como Quarkus, Micronaut ou o próximo Spring Boot 3 continua sendo a melhor opção para evitar &quot;tempo de inicialização lento do Java, tempo lento para desempenho máximo e grande área de cobertura .&quot;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: black; font-family: Arial; font-size: medium; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;Fonte:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; color: #1155cc; font-family: Arial; font-size: medium; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;a href=&quot;https://www.infoq.com/news/2022/06/project-leyden-delays-aot/&quot; target=&quot;_blank&quot;&gt;https://www.infoworld.com/article/3652336/java-19-may-be-quite-ambitious.amp.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt; text-align: left;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-align: justify; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/VxP2607dFc-7Emb_ghVxeoLcCSaselkkn3gy0_wjbUlJnRWSrX3e-W7kxg_f4xSjiurgOz-yOCKxXcgNoTj7tUllGg3bwS6wx1Uhpb-07YpVdx-FuOFwcdEueZHdM8yOJHaZqbod&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/4853505925420385794/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/07/projeto-leyden-atrasa-o-compilador.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4853505925420385794'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/4853505925420385794'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/07/projeto-leyden-atrasa-o-compilador.html' title='Projeto Leyden atrasa o compilador OpenJDK AOT e otimiza o compilador JIT em vez disso'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaMmKqkgLyDcBGNlr58OQaUsYj4z6kQpPsJdRqc9ksB-CADLi52tzhn5fsVkGnFJBg4Aj5Xmrcl10PIdOpCFyDW0CqMbWgraVvcBeYd7suTflRHRTZjVSqV_3hR6uDOx7YAIfNHfcxPm0MBgP-AeNOlJtme5bm2CC3Tfy06rybMlzgZnmYh7TmfAHkDQ/s72-c/62c167e3bc842d00efff119a0ae38939.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-3568748157427447940</id><published>2022-06-02T21:00:00.019-03:00</published><updated>2022-06-03T07:37:32.748-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Guia"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="java19"/><title type='text'>Java 19 pode ser grande</title><content type='html'>&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java 19 pode ser grande&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgcuiI8akBB-Xn61UXCtBPWF4gmY6gA3plzHePRVXiI2A1ivxINRyNnKA_P-N6Plltf-xRsuhZlUAeWRHlmFc5zXedFcuozCuZsEzUpDcB48xrePTf0_QhSrntjSzRkzHmcLEPfHJtZIdTid85rHZCBzBoWiweZlYcmFyvjkc_90Im-y6F9u0tnozsDNg=w640-h428&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgcuiI8akBB-Xn61UXCtBPWF4gmY6gA3plzHePRVXiI2A1ivxINRyNnKA_P-N6Plltf-xRsuhZlUAeWRHlmFc5zXedFcuozCuZsEzUpDcB48xrePTf0_QhSrntjSzRkzHmcLEPfHJtZIdTid85rHZCBzBoWiweZlYcmFyvjkc_90Im-y6F9u0tnozsDNg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;4912&quot; data-original-width=&quot;7360&quot; height=&quot;428&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgcuiI8akBB-Xn61UXCtBPWF4gmY6gA3plzHePRVXiI2A1ivxINRyNnKA_P-N6Plltf-xRsuhZlUAeWRHlmFc5zXedFcuozCuZsEzUpDcB48xrePTf0_QhSrntjSzRkzHmcLEPfHJtZIdTid85rHZCBzBoWiweZlYcmFyvjkc_90Im-y6F9u0tnozsDNg=w640-h428&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java 19 pode ser grande&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;A próxima versão do Java padrão parece pronta para incluir uma API de memória e função estrangeira&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Arial; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #222222; font-family: Arial; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;Foreign function and memory API&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Arial; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;), uma API de vetor (&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Arial; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;A vector API&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Arial; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;, correspondência de padrões para expressões de switch (&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Arial; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;Pattern matching for switch expressions&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Arial; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;), genéricos universais (&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Arial; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;Universal generics&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Arial; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;) e muito mais.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b id=&quot;docs-internal-guid-1c004fbf-7fff-a9ac-5f53-5a10548c2b53&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Com o lançamento&amp;nbsp; do&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/projects/jdk/18/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt; Java 18&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;, o&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/projects/jdk/19/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;Java 19&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;está começando a tomar forma. A próxima versão do Java padrão está definida para avançar &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;com uma API para interoperar com o código fora do tempo de execução do Java, a primeira de &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;muitas propostas potenciais que podem abranger recursos que variam de genéricos universais a &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;uma porta RISC-V.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;A proposta para o Java 19 agora flutuando na comunidade OpenJDK é uma função estrangeira e&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; API de memória (&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: #222222; font-family: Arial; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Foreign function and memory API&lt;/span&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;), que permitiria que programas Java façam interoperação com código e dados fora do tempo &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;de execução Java. O recurso será visualizado no Java Development Kit (JDK) 19, que deve chegar&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; em setembro.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Identificada como J&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/424&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;EP (JDK Enhancement Proposal) 424&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;, a função externa e a API de memória invocariam o código fora da JVM acessando a memória externa. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Essa API foi apresentada em um estágio de incubadora no JDK 17 e será reincubada no JDK 18, &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;que está programado para ser lançado em 22 de março. Para o JDK 19, a API passaria para um&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; estágio de visualização, incorporando refinamentos com base no feedback. O JDK 19 será uma &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;versão de curto prazo do Java com suporte por apenas seis meses.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Outra possibilidade de inclusão no JDK 19 é um&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/426&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;vetor API&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;, que está sendo incubado pela terceira vez no JDK 18. Uma quarta incubação foi proposta. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Essa API expressaria cálculos vetoriais que compilam em tempo de execução para instruções&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; vetoriais ideais.&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/jeps/427&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;A correspondência de padrões para expressões e instruções switch&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;, que está passando por uma terceira visualização no JDK 19, é outra possibilidade.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;No geral, o Java este ano está programado para continuar a evolução de quatro iniciativas,&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; disse a Oracle. Isso inclui o&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/projects/valhalla&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;Projeto Valhalla&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;, para incubar recursos avançados de linguagem e JVM;&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/projects/panama&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;Projeto Panamá&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;, para interligar código nativo e JVM;&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/projects/loom&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;Projeto Loom&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;, para melhorar a concorrência; e o&lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/projects/amber&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;Projeto Amber&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;, para explorar e incubar recursos de linguagem Java menores e orientados à produtividade.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Os seguintes recursos, que são objeto de JEPs ou rascunhos de JEPs não direcionados a uma &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;versão específica do Java, podem muito bem chegar ao Java 19:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;ul style=&quot;margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;&quot;&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Uma prévia dos genéricos universais, da Valhalla. Entregues por meio de três JEPs, os &lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;genéricos universais unificariam o tratamento de tipos de referência e primitivos no código &lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;genérico, permitindo que as variáveis ​​de tipo Java abrangessem os dois tipos de tipos.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Uma visualização de objetos de valor, também um aprimoramento do Valhalla, fornecendo &lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;instâncias de classe que possuem apenas campos de instância final e não possuem identidade &lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;de objeto. Classes de valor sem identidade seriam declaradas.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Uma visualização de padrões de registro, para desconstruir valores de registro. Isso faz parte &lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;do Projeto Amber.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Fixação de região para o coletor de lixo G1, para reduzir a latência implementando a fixação&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; de região para G1 para que a coleta de lixo não precise ser desabilitada durante regiões &lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;críticas JNI (Java Native Interface).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Uma porta Linux do JDK para RISC-V, uma arquitetura de conjunto de instruções de código &lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li aria-level=&quot;1&quot; dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;p dir=&quot;ltr&quot; role=&quot;presentation&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;aberto e isenta de royalties.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Alguns desses recursos, se não terminarem no JDK 19, podem acabar em uma versão subsequente, &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;como o JDK 20, que chegaria em março de 2023, com base na cadência de lançamento de&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt; seis meses do Java padrão. Outros podem escorregar para uma versão ainda posterior ou &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;talvez nunca fazer o corte para estar em Java.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;Fonte:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.656; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; background-color: transparent; color: #1155cc; font-family: Arial; font-size: medium; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;a href=&quot;https://www.infoworld.com/article/3652336/java-19-may-be-quite-ambitious.amp.html&quot; target=&quot;_blank&quot;&gt;https://www.infoworld.com/article/3652336/java-19-may-be-quite-ambitious.amp.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-align: justify; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/VxP2607dFc-7Emb_ghVxeoLcCSaselkkn3gy0_wjbUlJnRWSrX3e-W7kxg_f4xSjiurgOz-yOCKxXcgNoTj7tUllGg3bwS6wx1Uhpb-07YpVdx-FuOFwcdEueZHdM8yOJHaZqbod&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/3568748157427447940/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/06/java-19-pode-ser-grande.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/3568748157427447940'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/3568748157427447940'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/06/java-19-pode-ser-grande.html' title='Java 19 pode ser grande'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgcuiI8akBB-Xn61UXCtBPWF4gmY6gA3plzHePRVXiI2A1ivxINRyNnKA_P-N6Plltf-xRsuhZlUAeWRHlmFc5zXedFcuozCuZsEzUpDcB48xrePTf0_QhSrntjSzRkzHmcLEPfHJtZIdTid85rHZCBzBoWiweZlYcmFyvjkc_90Im-y6F9u0tnozsDNg=s72-w640-h428-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-7511110700850409402</id><published>2022-05-30T12:07:00.002-03:00</published><updated>2022-05-30T12:15:48.215-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AdoptOpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="GC"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java11"/><category scheme="http://www.blogger.com/atom/ns#" term="newrelic"/><title type='text'>Relatório do Estado do Ecossistema Java da New Relic - 2022</title><content type='html'>&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java 11 é o novo padrão!&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Relatório do Estado do Ecossistema Java da New Relic - 2022&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh4.googleusercontent.com/Ypl-YVaT8uhO1FzgRYeeBgJX_sxlZjWxMjHGFPQi_7RjYMojcIUa15yiEsMcpJT_GLi50IdOFGaiXRWnVA7ZD5wFHMH7JCnYNdKXtxoCY-xXFX7p1wc8Tmm7iYmCZO8iNjjWslFeP0OKVTy0pw&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Relatório do Estado do Ecossistema Java da New Relic&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span id=&quot;docs-internal-guid-25ff86e0-7fff-447d-508d-6abd84b95f19&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Uma visão aprofundada de uma das linguagens de programação mais populares&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A &lt;/span&gt;&lt;a href=&quot;https://newrelic.com/&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #1155cc; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;New Relic&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; publicou recentemente um novo relatório sobre o Estado do Ecossistema Java usando dados coletados em janeiro de 2022 de milhões de aplicativos anônimos que forneceram dados de desempenho.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java 11 é o novo padrão&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; white-space: pre-wrap;&quot;&gt;De acordo com o relatório, o Java 11 é o novo padrão para ambiente de produção, pois a adoção subiu de 11% em 2020 para 48% em 2022, avançando para o Java 8, um segundo próximo a 46%. Outras versões LTS do Java são muito distantes e seu uso é apenas uma pequena fração.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A imagem abaixo mostra o uso de versões Java:

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;img height=&quot;402&quot; src=&quot;https://lh4.googleusercontent.com/Ypl-YVaT8uhO1FzgRYeeBgJX_sxlZjWxMjHGFPQi_7RjYMojcIUa15yiEsMcpJT_GLi50IdOFGaiXRWnVA7ZD5wFHMH7JCnYNdKXtxoCY-xXFX7p1wc8Tmm7iYmCZO8iNjjWslFeP0OKVTy0pw&quot; style=&quot;color: #252525; font-family: Roboto, sans-serif; font-size: 13.5pt; margin-left: 0px; margin-top: 0px; white-space: pre-wrap;&quot; width=&quot;652&quot; /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; white-space: pre-wrap;&quot;&gt;O Java 17 não subiu nas paradas, mas nos poucos meses desde seu lançamento, já ultrapassou os lançamentos Java 6, Java 10 e Java 16.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O suporte para Java 7 está terminando em 2022 e, no entanto, 1,71% dos aplicativos ainda o utilizam em produção. Enquanto isso, o Java 6 não é mais suportado, mas 0,27% dos aplicativos o estão usando. A maioria dos aplicativos que estão usando Java 6 e Java 7 são aplicativos legados que não foram atualizados.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 396px; overflow: hidden; width: 649px;&quot;&gt;&lt;img height=&quot;396&quot; src=&quot;https://lh6.googleusercontent.com/XCjPmT9LB4tks1TkTRKYQhajSwE1t6JtyPREWq8u_QD1gSwtF3YhuTqaQeiql3yjOODgjOKzA81SShqLz5VL7sigD9CoT3d0kAPnPKw-zF0SHtH90WWSNWlhx_3_T9jK7wV9fCfjGTH4rGFB8w&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;649&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; white-space: pre-wrap;&quot;&gt;Java 14 é a versão não LTS mais popular

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A partir do Java 9, o padrão de lançamento da plataforma mudou. A cada seis meses uma nova versão do Java era disponibilizada, mas essas versões só eram suportadas até o próximo lançamento. A intenção era disponibilizar novos recursos com mais frequência.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 377px; overflow: hidden; width: 701px;&quot;&gt;&lt;img height=&quot;377&quot; src=&quot;https://lh6.googleusercontent.com/8n8IkFUJ7wuvDdEghXxhTs7CLoP9W-4Q-pFDyLXjnm7juFYDWFd58adtliHjVkmqtohdJ-hh51SBZ4X9U_c0H2-mMW7kvWh7G4lS8O6a6YOx5Mz0ULbjE00sV3Y3fmQoxMWB84kbYM1pF9XAjg&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;701&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; white-space: pre-wrap;&quot;&gt;
A popularidade da Oracle está diminuindo, a Amazon está em ascensão
&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Nos últimos anos, houve mudanças na origem das distribuições do Java Developer Kit (JDK) em uso. Onde muitos desenvolvedores costumavam obter seu JDK da Oracle, o código aberto do Java no projeto OpenJDK rendeu muitas opções.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A tabela a seguir mostra o afastamento dos binários da Oracle após o licenciamento mais restritivo de sua distribuição JDK 11 (antes de retornar a uma postura mais aberta com o Java 17). Em 2020, a Oracle foi o fornecedor mais popular, compreendendo cerca de 75% do mercado Java. Enquanto eles mantêm o primeiro lugar, sua participação é metade do que era. A Amazon subiu drasticamente para 22% do mercado (acima dos 2,18% em 2020).&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 332px; overflow: hidden; width: 718px;&quot;&gt;&lt;img height=&quot;332&quot; src=&quot;https://lh6.googleusercontent.com/oGKdSlf-h6_TOut6GZGUdYUMF73TbpQ7V2_WwQZZkDd2egfVvnnahTI058oDvWsSLCzlAPilRwtne9tmOrRj5Fti9NPc-7ujd6gDTtFn104q6vGu-C634fyzdDQtTdpFTKfKGLlbqHnFEvHJCQ&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;718&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; white-space: pre-wrap;&quot;&gt;Os contêineres estão rodando ao nosso redor

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; white-space: pre-wrap;&quot;&gt;Os aplicativos de conteinerização tornaram-se extremamente populares, e os dados de aplicativos Java da New Relic confirmam essa tendência. Mais de 70% dos aplicativos Java que se reportam à New Relic o fazem a partir de um contêiner.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Configurações de computação em contêineres
&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os contêineres afetam como as pessoas alocam recursos de computação e memória. Por exemplo, os dados da New Relic mostram uma porcentagem muito maior de aplicativos executados com menos de quatro núcleos quando em containers.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span id=&quot;docs-internal-guid-5f9dd045-7fff-1efe-e0a6-08a63bc09054&quot;&gt;&lt;span style=&quot;font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 279px; overflow: hidden; width: 718px;&quot;&gt;&lt;img height=&quot;279&quot; src=&quot;https://lh6.googleusercontent.com/Rm_9peN90dxlxYIIYLW556EqKlS-NxdvNxKcPTel5E2PMAv8KaLbj-8YVktz7nFHFkn4osiZQ527hH3xsNu5-i8sGeVOjlDosCBx2x7kk6qnf_yrazUb-Vu-7TSa3mXJYpr1r47VtKqwX6quww&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;718&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O desejo de executar menor faz muito sentido em ambientes de nuvem onde as pessoas geralmente implantam contêineres. Mas essa tendência pode apresentar problemas inesperados para alguns aplicativos. Em particular, muitos dos benefícios simultâneos do coletor de lixo G1 padrão em máquinas virtuais Java (JVMs) recentes desaparecem quando executados com menos de dois núcleos. Todas essas instâncias de núcleo único também podem estar usando o coletor serial - e pagando o custo de desempenho disso - mas muitos provavelmente nem sabem disso.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Configurações de memória em contêineres&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Tendências semelhantes surgem ao comparar configurações de memória, com tendência a instâncias menores em contêineres. Os dados da New Relic mostram que apenas cerca de 80% dos aplicativos em contêiner solicitam explicitamente um limite superior na memória JVM por meio dos sinalizadores -Xmx ou -XX:MaxRAMPercentage. Os recursos de reconhecimento de contêiner na JVM, desde a versão 9, significam que isso provavelmente não é um problema de segurança para esses aplicativos como costumava ser, desde que a JVM seja o único processo em execução em cada contêiner.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span id=&quot;docs-internal-guid-f8cea698-7fff-6034-bc1f-d63bf180cf40&quot;&gt;&lt;span style=&quot;font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 253px; overflow: hidden; width: 718px;&quot;&gt;&lt;img height=&quot;253&quot; src=&quot;https://lh6.googleusercontent.com/_CSylgLRLkr8Rs4VFAzibutrxcNQmo-hU7bLAN44kSCGDFhddxsrO3d1mT9JmXqJiUUlSW1VSxjJZjG4nS_Ve3WynioWWk4xv3njOF6ypbSF95_m4Et76u1H54QeVAWT0hXjLKmebjRkw_-glw&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;718&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Garbage in, garbage out&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Dada a sua função central no desempenho da JVM, a coleta de lixo (GC) continua sendo um tópico de muita discussão na comunidade.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os dados da New Relic mostram mudanças distintas no uso do coletor de lixo após o Java 8. Isso não é surpreendente, considerando os padrões atualizados e o maior desempenho disponível com o coletor G1 no Java 11 e posterior.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;G1 é o favorito claro para aqueles que deixaram o Java 8 para trás. Outros coletores experimentais que surgiram após o Java 8 (ZGC e Shenandoah) ainda mostram um uso pequeno em sistemas de produção, mas isso é esperado, pois nenhum deles atingiu o status de pronto para produção até recentemente.&lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 483px; overflow: hidden; width: 718px;&quot;&gt;&lt;img height=&quot;483&quot; src=&quot;https://lh5.googleusercontent.com/dCN4HLHshMpvjlpFEDoemrffS37n9uVUCxLUjldht_9Xmk5vf04ltGfcRTj6max75ge0iSHR8XeLQw-S6nXfm6WCGEDI-TB5du5dNpqjLqq3A3j97eOeyZBVbB23slOQns6znb1amoAGTObjEw&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;718&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;G1 é o favorito para aqueles que deixaram o Java 8 para trás. Outros coletores experimentais que surgiram após o Java 8 (ZGC e Shenandoah) ainda mostram um uso pequeno em sistemas de produção, mas isso é esperado, pois nenhum deles atingiu o status de pronto para produção até recentemente.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Sobre a New Relic&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A New Relic é uma empresa que desenvolve uma das principais plataformas de observabilidade fornecendo aos desenvolvedores métricas, eventos, logs e rastreamentos.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A versão completa do relatório de 2022 está disponível no site da &lt;/span&gt;&lt;a href=&quot;https://newrelic.com/resources/report/2022-state-of-java-ecosystem&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #1155cc; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;New Relic&lt;/span&gt;&lt;/a&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Roboto,sans-serif&quot; style=&quot;color: #252525; font-size: 13.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;font-size: medium; text-align: justify; text-decoration-line: none; white-space: normal;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/VxP2607dFc-7Emb_ghVxeoLcCSaselkkn3gy0_wjbUlJnRWSrX3e-W7kxg_f4xSjiurgOz-yOCKxXcgNoTj7tUllGg3bwS6wx1Uhpb-07YpVdx-FuOFwcdEueZHdM8yOJHaZqbod&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/7511110700850409402/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/05/relatorio-do-estado-do-ecossistema-java.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7511110700850409402'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7511110700850409402'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/05/relatorio-do-estado-do-ecossistema-java.html' title='Relatório do Estado do Ecossistema Java da New Relic - 2022'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/Ypl-YVaT8uhO1FzgRYeeBgJX_sxlZjWxMjHGFPQi_7RjYMojcIUa15yiEsMcpJT_GLi50IdOFGaiXRWnVA7ZD5wFHMH7JCnYNdKXtxoCY-xXFX7p1wc8Tmm7iYmCZO8iNjjWslFeP0OKVTy0pw=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-585281181819005518</id><published>2022-05-28T21:28:00.008-03:00</published><updated>2022-05-28T21:35:50.010-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="BigData"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Games"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Jogos"/><category scheme="http://www.blogger.com/atom/ns#" term="Nuvem"/><category scheme="http://www.blogger.com/atom/ns#" term="Web"/><title type='text'>Java ainda é relevante?</title><content type='html'>&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java ainda é relevante?&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh5.googleusercontent.com/ouWFOaPOonAwkZT8emrTh--Ro4bmMBeidT3Q6_d_9Ut0rKqc-pPZ42Aqez72mH6zx_p2w-iboMJpvBhh3WpbLRDnEutGAPOiLHI2Rl0cLH6opwQtEZm7U1ajhb4L6ytV5L2tJI32sPSn_07Bvg&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;p&gt;&amp;nbsp;&lt;img height=&quot;320&quot; src=&quot;https://lh5.googleusercontent.com/ouWFOaPOonAwkZT8emrTh--Ro4bmMBeidT3Q6_d_9Ut0rKqc-pPZ42Aqez72mH6zx_p2w-iboMJpvBhh3WpbLRDnEutGAPOiLHI2Rl0cLH6opwQtEZm7U1ajhb4L6ytV5L2tJI32sPSn_07Bvg&quot; style=&quot;font-family: Arial; font-size: 11pt; margin-left: 0px; margin-top: 0px; white-space: pre-wrap;&quot; width=&quot;718&quot; /&gt;&lt;/p&gt;&lt;span id=&quot;docs-internal-guid-cff9ac1e-7fff-bdff-0f1f-c781ba6c7df5&quot;&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java ainda é relevante?&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Esta é uma tradução/adaptação do artigo original em &lt;/span&gt;&lt;a href=&quot;https://dzone.com/articles/is-java-still-relevant-in-2021-1?edition=731513&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;inglês&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java é amplamente usado de diferentes maneiras, especialmente por plataformas populares que você pode usar com frequência, como Twitter, Google, Amazon, Spotify e YouTube.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java ainda é comumente usado em nossa vida diária de diferentes maneiras. Ele toca todos os campos de desenvolvimento de software e é usado por plataformas populares que você pode usar com frequência, como Twitter, Google, Amazon, Spotify e YouTube. Com esse amplo uso, a conclusão é simples — Java veio para ficar e continuará atraindo muitos desenvolvedores por muito tempo.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Quando a tecnologia existe há anos, é provável que pareça irrelevante, não competitiva e até se torne obsoleta para algumas pessoas. Não é o caso de Java, que completa 26 anos este ano.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java não é coisa do passado — ainda está muito na moda, algo que continua a surpreender aqueles que continuam apegados à ideia de que Java é antiquado. Mesmo estatísticas e estudos recentes mostram que Java ainda está entre as linguagens de programação mais exigidas, usadas e amadas. Mas o que ainda faz com que essa tecnologia um pouco antiga permaneça competitiva? Leia para saber mais.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Novos ciclos de lançamento o colocam em demanda por um longo tempo&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Inicialmente, novas versões do Java eram lançadas uma vez por ano – algo que prejudicava alguns desenvolvedores. Isso mudou em 2018, quando foi decidido que as novas versões serão lançadas em pequenas iterações. O novo ciclo agora coloca a comunidade Java na vanguarda da inovação, pois permite que novos recursos sejam adicionados rapidamente, testados e relançados.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Desenvolvedores Java em todo o mundo continuam a crescer&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Após 26 anos de existência – Java ainda está indo bem – os programadores que o conhecem ainda estão em alta demanda. Eles continuarão sendo procurados por muito tempo, já que mais de 90% das empresas da &lt;a href=&quot;https://blogs.oracle.com/oracleuniversity/post/why-does-java-remain-so-popular&quot; target=&quot;_blank&quot;&gt;Fortune 500&lt;/a&gt; ainda dependem do Java para seus projetos de desenvolvimento.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Globalmente, existem mais de &lt;a href=&quot;https://www.daxx.com/blog/development-trends/number-software-developers-world&quot; target=&quot;_blank&quot;&gt;8 milhões de desenvolvedores Java&lt;/a&gt;. Isso significa que existe uma grande força de trabalho, tornando mais fácil para as empresas encontrar e contratar programadores Java qualificados. De acordo com o Indeed, o salário médio anual de um desenvolvedor java é de &lt;a href=&quot;https://www.indeed.com/career/java-developer/salaries&quot; target=&quot;_blank&quot;&gt;US$ 102.597 nos Estados Unidos, mais um bônus em dinheiro de US$ 5.000 por ano.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java acompanha os tempos&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Apesar de ser uma tecnologia madura, Java continua indo bem. Atualmente, é a segunda linguagem de programação mais popular de acordo com o &lt;a href=&quot;https://www.tiobe.com/tiobe-index/&quot; target=&quot;_blank&quot;&gt;índice do TIOBE&lt;/a&gt;. A tabela abaixo exibe as dez primeiras linguagens de programação populares de acordo com este índice.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;89&quot;&gt;&lt;/col&gt;&lt;col width=&quot;92&quot;&gt;&lt;/col&gt;&lt;col width=&quot;194&quot;&gt;&lt;/col&gt;&lt;col width=&quot;142&quot;&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Julho 2021&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Julho 2020&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Linguagem de Programação&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Classificações&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;C&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;11.62%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;11.17%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Python&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;10.95%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;C++&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;8.01%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;C#&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4.83%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;6&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;6&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Visual Basic&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4.50%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;7&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;7&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;JavaScript&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2.71%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;8&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;PHP&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2.58%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;9&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Assembly Language&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2.40%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 35.25pt;&quot;&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;10&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;10&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;SQL&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: solid #cccccc 0.75pt; border-color: rgb(204, 204, 204); border-left: solid #cccccc 0.75pt; border-right: solid #cccccc 0.75pt; border-style: solid; border-top: solid #cccccc 0.75pt; border-width: 0.75pt; overflow-wrap: break-word; overflow: hidden; padding: 4pt 8pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 19pt; margin-top: 12pt;&quot;&gt;&lt;span style=&quot;font-family: Georgia; font-size: 10.5pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1.53%&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Além disso, o Java está acompanhando a inovação tecnológica e as tendências de software. Algo que aqueles que estão dizendo &quot;Java está morrendo&quot; e &quot;programadores java não estão mais em demanda&quot; estão ignorando ao defender uma mudança para outras linguagens. Felizmente, estatísticas e fatos continuam a provar a ampla aplicação do Java em diferentes projetos hoje.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O uso diário de Java em várias áreas de desenvolvimento de software, big data, inteligência artificial, blockchain, mobile, Internet das coisas e desenvolvimento web também é prova de que o Java veio para ficar. &lt;a href=&quot;https://outreach.eclipse.foundation/download-the-eclipse-iot-developer-survey-results&quot; target=&quot;_blank&quot;&gt;O IoT Developer Survey&lt;/a&gt; deixa claro que os programadores de produtos de software incorporados para dispositivos IoT optam pelo Java. A principal razão por trás disso é a independência da plataforma e a natureza de alta portabilidade da linguagem Java. Como o Java é executado na Java Virtual Machine (JVM), os desenvolvedores conseguem mover códigos Java para quaisquer dispositivos, pacotes de software ou chips com a JVM pré-instalada.&lt;/span&gt;&lt;/p&gt;&lt;h1 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Você deve escolher Java para seu próximo projeto?&lt;/span&gt;&lt;/h1&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Se você ainda está cético em relação ao Java hoje, os exemplos a seguir demonstram as áreas críticas em que ele é usado.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Aplicativos Java baseados na Web&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java quando emparelhado com Servlets, Struts, JavaServer Page, Hibernate, Spring, JavaServer Face e servidores web como Resin, servidor web Apache HTTP e Apache Tomcat é usado no design de aplicativos web. Usando essas tecnologias, você pode criar qualquer aplicativo baseado na web.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os aplicativos de comércio eletrônico também são desenvolvidos usando Java quando combinados com plataformas de comércio eletrônico de código aberto, como Broadleaf. E com o COVID-19 acelerando o comércio eletrônico e a transformação digital, a demanda por mais aplicativos de comércio eletrônico sem dúvida aumentará, criando espaço para mais desenvolvedores Java.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Uma das aplicações web significativas construídas em Java é o Gmail do Google.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Como criar aplicativos Android&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Embora existam outras maneiras de desenvolver aplicativos Android, a maioria deles é escrita em Java usando a API Android do Google. Java Micro Edition é a estrutura usada para projetar aplicativos executados em smartphones e feature phones. Além disso, Java é compatível com Kotlin e Android Studio.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os seguintes aplicativos populares de Java no Android mostram claramente que o desenvolvimento de aplicativos Android continuará sendo principalmente Java.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Twitter&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Spotify&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;CashApp, anteriormente conhecido como Square Cash&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Sinal&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Sistemas Embarcados&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os sistemas embarcados estão em toda parte. De nossos smartphones e computadores a TVs e sistemas de motor, você os encontrará executando funções dedicadas para sistemas maiores. Esses sistemas usam Java para desenvolvimento. Na verdade, Java foi propositalmente projetado para desenvolver sistemas embarcados. Aplicações comuns incluem:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Cartões inteligentes&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Cartões SIM em nossos telefones&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Medidores de utilidade&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Televisão&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Discos Blu-ray.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Todos esses são dispositivos dos quais dependemos todos os dias de uma forma ou de outra. Isso significa que o mundo precisa de desenvolvedores Java para que esses e mais produtos sejam criados e mantidos.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Tecnologias de Big Data&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;As tecnologias de big data são um dos tópicos mais em voga no mundo atual. Todas essas tecnologias, incluindo Apache Hadoop, Apache Mahout e Apache, usam Java de uma forma ou de outra. Portanto, dominar Java é uma vantagem se estiver interessado em big data.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Aplicativo baseado em nuvem&lt;/span&gt;&lt;/h2&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java também se encaixa perfeitamente na computação em nuvem. Ele ajuda a desenvolver aplicativos usados em infraestrutura como serviço, plataforma como serviço e software como serviço. A nuvem Oracle Java é um excelente exemplo de ferramenta de desenvolvimento em nuvem que ajuda a projetar e configurar servidores Oracle. Agora, considerando que a &lt;a href=&quot;https://www2.deloitte.com/us/en/insights/industry/technology/why-organizations-are-moving-to-the-cloud.html&quot; target=&quot;_blank&quot;&gt;nuvem continua sendo um alvo crítico&lt;/a&gt; para empresas que buscam continuidade de negócios, maior escalabilidade e eficiência de custos, o mesmo acontecerá com a demanda por desenvolvedores Java para ajudar a realizar essa transição.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Aplicativos de jogos&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Jogos Android não podem ser construídos sem Java. Eles são feitos com Java como linguagem principal porque suporta a Dalvik Virtual Machine que roda na plataforma Android. Java também suporta jMonkeyEngine, um motor 3D robusto com capacidade para criar jogos 3D.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Com a epidemia &lt;a href=&quot;https://www.businessofapps.com/insights/mobile-gaming-industry-statistics-and-trends-for-2021/&quot; target=&quot;_blank&quot;&gt;impulsionando o crescimento da indústria de jogos para dispositivos móveis&lt;/a&gt; em 2020, você pode esperar que a demanda seja muito maior, divertida e imersiva em 2021.&lt;/span&gt;&lt;/p&gt;&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Ferramentas de software&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;As ferramentas de software ajudam os programadores a desenvolver, analisar, depurar, manter e dar suporte a outros programas. A maioria dos programadores confia em Java para escrever e construir ferramentas de software. Eclipse, NetBeans IDE e IntelliJ IDEA são algumas das ferramentas de software comumente usadas pelos desenvolvedores. O suporte dos desenvolvedores Java será fundamental para manter a funcionalidade dessas ferramentas este ano e além.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Referências

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Artigo original em &lt;/span&gt;&lt;a href=&quot;https://dzone.com/articles/is-java-still-relevant-in-2021-1?edition=731513&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;inglês&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-size: medium; text-decoration-line: none; white-space: normal;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/VxP2607dFc-7Emb_ghVxeoLcCSaselkkn3gy0_wjbUlJnRWSrX3e-W7kxg_f4xSjiurgOz-yOCKxXcgNoTj7tUllGg3bwS6wx1Uhpb-07YpVdx-FuOFwcdEueZHdM8yOJHaZqbod&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/585281181819005518/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/05/java-ainda-e-relevante.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/585281181819005518'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/585281181819005518'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/05/java-ainda-e-relevante.html' title='Java ainda é relevante?'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/ouWFOaPOonAwkZT8emrTh--Ro4bmMBeidT3Q6_d_9Ut0rKqc-pPZ42Aqez72mH6zx_p2w-iboMJpvBhh3WpbLRDnEutGAPOiLHI2Rl0cLH6opwQtEZm7U1ajhb4L6ytV5L2tJI32sPSn_07Bvg=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-5280648447975122800</id><published>2022-03-02T10:14:00.002-03:00</published><updated>2022-05-30T12:14:14.224-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bytecode"/><category scheme="http://www.blogger.com/atom/ns#" term="Compilation"/><category scheme="http://www.blogger.com/atom/ns#" term="Compilação"/><category scheme="http://www.blogger.com/atom/ns#" term="Guia"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="JIT"/><category scheme="http://www.blogger.com/atom/ns#" term="JVM"/><category scheme="http://www.blogger.com/atom/ns#" term="Programador"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><title type='text'>Uma questão de interpretação: de bytecodes a código de máquina na JVM</title><content type='html'>&lt;div class=&quot;separator&quot;&gt;&lt;p style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&amp;nbsp;&lt;img src=&quot;https://lh6.googleusercontent.com/EHC0jLBs9i15RpNsFseoQ4-LHE15HSKopJElv-fgl23HtR8mzgP3r55D8Vhnlyp2uYbld1rgbg4YhP0sT4tBiB6rmsNQDtpSvzFf6HVTZYEPoRhRAiqsgOvoD5XkiGKEnDQI8AnG=s16000&quot; style=&quot;font-family: Arial; font-size: 11pt; margin-left: 0px; margin-top: 0px; text-align: center; white-space: pre-wrap;&quot; /&gt;&lt;/p&gt;&lt;/div&gt;&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;De bytecodes a código de máquina na JVM&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Uma questão de interpretação: de bytecodes a código de máquina na JVM&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh6.googleusercontent.com/EHC0jLBs9i15RpNsFseoQ4-LHE15HSKopJElv-fgl23HtR8mzgP3r55D8Vhnlyp2uYbld1rgbg4YhP0sT4tBiB6rmsNQDtpSvzFf6HVTZYEPoRhRAiqsgOvoD5XkiGKEnDQI8AnG=s16000&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;span id=&quot;docs-internal-guid-6e25cde3-7fff-00ae-6f76-81f4c5f9d8b1&quot;&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Uma questão de interpretação: de bytecodes a código de máquina na JVM&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
Esta é uma tradução/adaptação do artigo original em &lt;/span&gt;&lt;a href=&quot;https://www.azul.com/blog/a-matter-of-interpretation-from-bytecodes-to-machine-code-in-the-jvm/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;inglês&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;No &lt;/span&gt;&lt;a href=&quot;https://www.guiadojava.com.br/2022/02/compreendendo-compilacao-java.html&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;primeiro artigo desta série&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, 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.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Antes de nos aprofundarmos na compilação just-in-time (JIT), vamos ver como a JVM começa a executar bytecodes usando um interpretador.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;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 chamada de sistema operacional ou instruções de código de máquina necessárias para executar a ação do bytecode.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Declarar assim parece simples, mas há uma quantidade considerável de trabalho envolvido.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Vamos voltar ao programa de exemplo do post anterior que soma os números de um a dez (vamos deixar de imprimir o resultado para manter o código o mais simples possível).&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #0048ab; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Sum&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;static&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;void&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #0048ab; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;main&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(String[] args) {&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;int&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; sum = 0;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; (&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;int&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; i = 1; i &amp;lt;= 10; i++) {&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; sum += i;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; System.out.println(sum);&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O arquivo de classe compilado contém os seguintes bytecodes (produzidos com javap -c).

&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; Code:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0: iconst_0&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1: istore_1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2: iconst_1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3: istore_2&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4: iload_2&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5: bipush&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7: if_icmpgt &amp;nbsp; &amp;nbsp; 20&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10: iload_1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;11: iload_2&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;12: iadd&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;13: istore_1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;14: iinc&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2, 1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;17: goto&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;20: return&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Isso mostra que há 14 bytecodes a serem executados (A contagem de 20 inclui os operandos dos bytecodes). Como temos um loop, as nove instruções das posições 4 a 17 serão executadas dez vezes. Uma vez que incluímos as três instruções extras necessárias para sair do loop (posições 4 a 7), temos um total de 98 bytecodes para interpretar.
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
Aqui, então, é uma questão interessante. Se executarmos este aplicativo, quantos bytecodes serão executados?

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Para determinar isso, precisamos de uma compilação especial da JVM que forneça um nível de observabilidade maior do que o padrão. Não vou entrar em todos os detalhes de como fazer isso, mas você precisa configurar um ambiente de compilação OpenJDK usando os sinalizadores -with-debug-level=slowdebug e -with-native-debug-symbols=external. Isso fornece uma variedade de opções -XX adicionais que podem ser usadas ao iniciar a JVM. Também direi que usei o &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;jlink&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; para gerar um runtime que incluía apenas o módulo java.base, pois é tudo o que precisamos para executar a aplicação.
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
Se executarmos nosso aplicativo com java -XX:+CountBytecodes Sum, obteremos o seguinte:

&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;359058 bytecodes executed in 0.4s (0.904MHz)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
A sério! Os 98 bytecodes esperados se transformaram em quase 360 mil!
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
O que é ainda mais confuso é que você obtém três resultados diferentes se executar o aplicativo três vezes. Tanto para os autômatos finitos determinísticos que aprendi na universidade.
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
O que está acontecendo?
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
A primeira coisa a ser observada para descobrir isso é executar o aplicativo com a opção -verbose:class. Isso fornecerá informações sobre o carregamento de classe à medida que a JVM é executada. Uma simples contagem da saída revela que 412 classes estão sendo carregadas, 409 das quais são carregadas antes da nossa classe Sum. Embora não seja necessário que uma classe seja inicializada assim que for carregada (conforme definido na Especificação JVM), neste caso, todas são. Como você pode imaginar, muitas classes requerem inicialização complexa, instanciando objetos e chamando métodos. Tudo isso resulta (como podemos ver) na execução de muitos milhares de bytecodes.
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
Demorei um pouco para descobrir por que o número de bytecodes executados varia para diferentes execuções. Embora o código que está sendo executado não esteja mudando (e, portanto, determinístico), o caminho percorrido pelo código pode ser diferente. Por exemplo, mesmo algo tão simples como o valor da hora atual pode resultar em uma ramificação diferente sendo obtida em uma instrução if.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Vamos voltar ao assunto real do post, que é como a JVM interpreta cada um desses muitos bytecodes. Como há muitas maneiras possíveis de fazer isso, discutiremos a implementação da &lt;/span&gt;&lt;a href=&quot;https://github.com/openjdk/jdk17/tree/master/src/hotspot&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Hotspot JVM&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; no &lt;/span&gt;&lt;a href=&quot;https://openjdk.java.net/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;OpenJDK&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;No JDK 1.0, o interpretador, como o restante da JVM, foi escrito em C e consistia em um loop while infinito. Dentro do loop havia uma instrução switch gigante, que incluía um case para cada instrução de bytecode. O loop while inicia a execução de bytecodes para um método e, quando o método retorna, sai do loop por meio de uma pausa.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Arial; font-size: 15pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O interpretador C++&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O interpretador evoluiu no JDK 1.2 (suspeito, embora não possa confirmar isso) com a mudança para o &lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/HotSpot_(virtual_machine)&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Hotspot JVM&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. Às vezes chamado de C++Interpreter, ele ainda usa uma enorme instrução switch, mas faz alterações para melhorar a eficiência. Por exemplo, várias funções foram incorporadas para aproveitar os recursos específicos da plataforma.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Embora o C++Interpreter ainda esteja incluído no código-fonte do OpenJDK, ele não é construído e incluído na JVM por padrão. Nesse caso, o princípio Highlander é válido e pode haver apenas um (intérprete). A única compilação que faz uso disso é a de montagem zero.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Arial; font-size: 15pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O intérprete de modelos&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O interpretador usado no OpenJDK por padrão é o &lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Interpreter_(computing)#Template_Interpreter&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;interpretador de modelo&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; (este tem sido o padrão desde, acredito, JDK 1.4, embora, novamente, eu não tenha confirmado isso). O uso de instruções case codificadas para implementar a funcionalidade de cada bytecode limita as otimizações que podem ser exploradas para uma determinada plataforma. Veremos isso mais quando analisarmos as vantagens e desvantagens da compilação AOT e JIT posteriormente nesta série.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;O interpretador de modelo constrói o código do interpretador para cada bytecode quando a JVM é inicializada. Como o nome sugere, cada bytecode tem um template. A JVM pode determinar os detalhes precisos da microarquitetura em que está sendo executada e usar esse conhecimento para gerar código otimizado para cada bytecode. Esses pedaços de código são chamados de &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;codelets&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. Em vez de usar uma instrução switch, o interpretador de modelo usa uma tabela de distribuição com pontos de entrada para cada codelet gerado.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Você pode obter mais informações sobre o que o interpretador de modelo faz usando as opções de linha de comando -XX:+UnlockDiagnosticVMOptions -XX:+PrintInterpreter. Executando isso na minha compilação do JDK 17 com nosso aplicativo simples mostrou:

&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Interpreter&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;code size&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = &amp;nbsp; &amp;nbsp; 66K bytes&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;total space&amp;nbsp; &amp;nbsp; &amp;nbsp; = &amp;nbsp; &amp;nbsp; 66K bytes&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;wasted space &amp;nbsp; &amp;nbsp; =&amp;nbsp; &amp;nbsp; &amp;nbsp; 0K bytes&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;# of codelets&amp;nbsp; &amp;nbsp; =&amp;nbsp; &amp;nbsp; 275&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;avg codelet size =&amp;nbsp; &amp;nbsp; 246 bytes&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
Como você pode ver, o interpretador de modelo gera 275 codelets, que é mais do que o número de bytecodes no conjunto de instruções da JVM. Um exame mais atento mostra que, além das instruções de bytecode, há um conjunto de &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;codelets &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;para otimizar determinadas operações. Por exemplo, existem &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;codelets &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;para lidar com coisas como funções matemáticas padrão (sin, cos, tan, etc.)

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Há também uma série de &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;codelets &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;de atalho. Quando um campo do objeto atual é carregado por meio da referência this, sempre resulta em dois bytecodes, aload_0 seguido de getfield. Essa combinação de bytecodes resulta no valor de this sendo empurrado para a pilha e imediatamente retirado novamente. Neste caso, a JVM fornece uma pseudo-instrução, &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;fast_agetfield&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, que elimina o push-pop redundante e reduz os dois bytecodes de uma operação muito comum para um. Outros codelets de atalho fazem coisas semelhantes para melhorar a eficiência de operações comuns de vários bytecodes.
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
Há também, um tanto bizarramente, quatro &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;codelets nofast &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;que estão relacionados ao uso do recurso de compartilhamento de dados de classe (CDS).
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
O tamanho médio dos codelets é de 246 bytes. Todos os &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;codelets &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;têm um tamanho múltiplo de 32 bytes, preenchendo com zeros quando necessário; muitos são apenas 96 bytes. Alguns, no entanto, são surpreendentemente grandes. Todo o branch se compara com zero bytecodes (ifeq, ifne, etc.), gera codelets (na minha máquina Windows com Core i7 de 9a geração) de 1376 bytes. (Eu não desmontei o código para tentar descobrir por que isso seria tão grande). Outra coisa curiosa é que o codelet para no-op é de 96 bytes!
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
O impacto deste modelo, abordagem de geração de código em tempo real, é substancial. Volker Simonis fez uma &lt;/span&gt;&lt;a href=&quot;https://web.archive.org/web/20090214031632/http://weblogs.java.net/blog/simonis/archive/2007/11/template_vs_cin.html&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;comparação de referência de ambos&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, e seus resultados mostraram que o interpretador de modelo era (em termos gerais) duas vezes mais rápido que o interpretador C++ mais simples.
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
Certamente, faria sentido armazenar em cache o código gerado pelo modelo para reduzir o tempo de inicialização da JVM? De maneira útil, podemos ver quanto tempo leva para gerar todos os codelets usando o sinalizador -Xlog:startuptime. Para nossa aplicação, os resultados na minha máquina são:

&lt;/span&gt;&lt;/p&gt;&lt;div align=&quot;left&quot; dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #eaeef3; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;java -Xlog:startuptime Sum&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.007s][info][startuptime] StubRoutines generation 1, 0.0002250 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.014s][info][startuptime] Genesis, 0.0069230 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.015s][info][startuptime] Interpreter generation, 0.0005353 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.015s][info][startuptime] StubRoutines generation 2, 0.0001260 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.015s][info][startuptime] MethodHandles adapters generation, 0.0000212 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.015s][info][startuptime] Start VMThread, 0.0002540 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.024s][info][startuptime] Initialize java.lang classes, 0.0082586 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.024s][info][startuptime] Initialize java.lang.invoke classes, 0.0001236 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.031s][info][startuptime] Initialize &lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;module&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; system, 0.0069481 secs&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span face=&quot;Consolas, sans-serif&quot; style=&quot;color: #00193a; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[0.032s][info][startuptime] Create VM, 0.0282268 secs&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;
A geração do interpretador levou apenas 0,5 ms, portanto, mesmo reduzindo isso para zero, não teria impacto perceptível no tempo de inicialização.
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
Lembro-me de quando o Java foi lançado e começou a se tornar popular. Um dos argumentos que as pessoas tinham contra a plataforma era que ela era muito lenta em comparação com as linguagens tradicionais compiladas estaticamente como C e C++. O que, naquela época, era. Como vimos, o interpretador só se preocupa com um único bytecode (ou possivelmente dois usando codelets de caminho rápido) por vez. Mesmo o uso de modelos não mudará esse fato. Um compilador estático analisa blocos maiores de código, como loops e métodos. Ele pode então otimizar o código gerado usando técnicas como desdobramento de loop e métodos incorporados. O intérprete nunca será capaz de igualar este nível de desempenho.
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
Para resolver isso sem sacrificar o “Write once, run anywhere”, Java adotou o uso de compilação adaptável just-in-time (JIT).
&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;
No próximo post desta série, veremos as ideias básicas da compilação JIT e examinaremos como a JVM decide quais métodos compilar e quando fazê-lo.

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Referências

&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Artigo original em &lt;/span&gt;&lt;a href=&quot;https://www.azul.com/blog/understanding-java-compilation-from-bytecodes-to-machine-code/?mkt_tok=NDI2LVFWRC0xMTQAAAGCU7VX-rkKhmBbmAbnwFmjfQ5a3FRJviihqwXB_lMUOyHb0YCiyZ6KqTLwX_hlniG_SrVX72qtIaUPe3OGZKWuFa2aydi2G19gPc_-Qysfjk7PX50&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;inglês&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-size: medium; text-decoration-line: none; white-space: normal;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/VxP2607dFc-7Emb_ghVxeoLcCSaselkkn3gy0_wjbUlJnRWSrX3e-W7kxg_f4xSjiurgOz-yOCKxXcgNoTj7tUllGg3bwS6wx1Uhpb-07YpVdx-FuOFwcdEueZHdM8yOJHaZqbod&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/5280648447975122800/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/03/uma-questao-de-interpretacao-de.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/5280648447975122800'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/5280648447975122800'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/03/uma-questao-de-interpretacao-de.html' title='Uma questão de interpretação: de bytecodes a código de máquina na JVM'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/EHC0jLBs9i15RpNsFseoQ4-LHE15HSKopJElv-fgl23HtR8mzgP3r55D8Vhnlyp2uYbld1rgbg4YhP0sT4tBiB6rmsNQDtpSvzFf6HVTZYEPoRhRAiqsgOvoD5XkiGKEnDQI8AnG=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-7719419426663102878</id><published>2022-02-22T20:35:00.008-03:00</published><updated>2022-02-22T20:35:58.364-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Carreira"/><category scheme="http://www.blogger.com/atom/ns#" term="Certificação"/><category scheme="http://www.blogger.com/atom/ns#" term="Guia"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Jornada"/><category scheme="http://www.blogger.com/atom/ns#" term="JVM"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Plataforma"/><category scheme="http://www.blogger.com/atom/ns#" term="Programador"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><title type='text'>Java é a linguagem de programação mais requisitada em 2022</title><content type='html'>&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java é a linguagem de programação mais requisitada em 2022&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Java é a linguagem de programação mais requisitada em 2022&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh5.googleusercontent.com/hSEnCWHy7P4WRIcdqf0qgrFFvxpafIPq-oBFxgNcqYYNQEhlvC97-BujoVKTpco701wd8Fqde24QB6Ov1bRqHpsMMAuXK8ilAPtVtqgpkGenwZiQGOL-qtxmxQjGdWeHdHowVSxz&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;

&lt;p&gt;&amp;nbsp;&lt;img height=&quot;348&quot; src=&quot;https://lh5.googleusercontent.com/hSEnCWHy7P4WRIcdqf0qgrFFvxpafIPq-oBFxgNcqYYNQEhlvC97-BujoVKTpco701wd8Fqde24QB6Ov1bRqHpsMMAuXK8ilAPtVtqgpkGenwZiQGOL-qtxmxQjGdWeHdHowVSxz&quot; style=&quot;font-family: Arial; font-size: 11pt; margin-left: 0px; margin-top: 0px; text-align: center; white-space: pre-wrap;&quot; width=&quot;718&quot; /&gt;&lt;/p&gt;&lt;span id=&quot;docs-internal-guid-1d249a30-7fff-03d1-fdd2-e0ff9427e7f6&quot;&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java é a linguagem de programação mais requisitada em 2022: Relatório&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os cargos mais procurados no ano de 2022 são desenvolvedores &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java, JavaScript e SQL&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, de acordo com um relatório da &lt;/span&gt;&lt;a href=&quot;https://resources.mettl.com/research/technical-skills-trends-2022/&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Mercer|Mettl&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Além de desenvolvedores Java, JavaScript e SQL, a demanda por desenvolvedores full-stack que podem trabalhar em front-end e back-end está crescendo rapidamente.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;A Mercer|Mettl lançou recentemente seu “Relatório de Habilidades e Tendências Tecnológicas 2022”. Ele apresenta insights cruciais sobre habilidades e funções que devem estar em demanda do setor de tecnologia em breve. A base do relatório são os dados coletados de mais de 2 milhões de avaliações feitas em 2019-2021 pela Mercer|Mettl.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;No cenário atual, o cenário de negócios está passando por uma transformação devido ao processo de &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;digitalização&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. Consequentemente, as habilidades tecnológicas estão em constante evolução. O relatório mapeia essa mudança e apresenta descobertas críticas sobre os conjuntos de habilidades que são esperados de perfis específicos de trabalho de tecnologia nos próximos dias.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Arial; font-size: 15pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Função de trabalho mais requisitados em 2022&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Os desenvolvedores de &lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Java&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;, JavaScript e SQL são as funções mais procuradas em 2022, graças à enorme adoção dessas linguagens em várias organizações, revela o relatório. Além disso, o DevOps se tornou uma das funções de destaque a serem contratadas em todos os setores devido à maior ênfase na segurança de rede, rápida adoção de sistemas em nuvem e metodologias ágeis.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Habilidades de front-end como JS, HTML e CSS continuam a liderar os gráficos. No entanto, Angular, jQuery, React e Bootstrap também ganharam importância. Habilidades de back-end, como estruturas Java, C# e .NET, continuam a ganhar destaque. No entanto, Python, APIs REST, Spring e Hibernate continuam sendo opções quentes.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;No lançamento do relatório, Siddhartha Gupta, CEO da Mercer|Mettl, disse: “Nos últimos dois anos, organizações em todo o mundo perceberam a necessidade de adotar a tecnologia no centro de seus negócios. Empresas estabelecidas e startups estão usando extensivamente tecnologias como IA, ML, Blockchain e Ciências de Dados para se diferenciar. Essa revolta técnica levou a um crescimento exponencial na demanda por talentos tecnológicos de alta qualidade em várias habilidades. O relatório da MercerlMettl é um estudo das tecnologias que moldaram e moldarão o futuro de vários setores. Espero que o relatório guie os líderes do setor a definir abordagens inovadoras para contratação em 2022 e além.”&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Além dos desenvolvedores Java, JavaScript e SQL, a demanda por desenvolvedores Full-Stack que podem trabalhar em front-end e back-end está crescendo rapidamente. Além disso, quando se trata de habilidades de ciência de dados – SQL, AWS e Azure ganharam importância devido à importância estratégica da análise de dados e ao aumento do uso de sistemas em nuvem. Python, que é amplamente utilizado em programação web, automação, visualização de dados e ciência de dados, tornou-se uma das linguagens mais populares.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Referências&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Artigo original em &lt;/span&gt;&lt;a href=&quot;https://www-dqindia-com.cdn.ampproject.org/v/s/www.dqindia.com/java-is-the-most-in-demand-job-role-in-2022-report/amp/?amp_js_v=a6&amp;amp;amp_gsa=1#referrer=https%3A%2F%2Fwww.google.com&amp;amp;amp_tf=From%20%251%24s&amp;amp;ampshare=https%3A%2F%2Fwww.dqindia.com%2Fjava-is-the-most-in-demand-job-role-in-2022-report%2F&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;inglês&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 89px; overflow: hidden; width: 200px;&quot;&gt;&lt;img height=&quot;89&quot; src=&quot;https://lh6.googleusercontent.com/VxP2607dFc-7Emb_ghVxeoLcCSaselkkn3gy0_wjbUlJnRWSrX3e-W7kxg_f4xSjiurgOz-yOCKxXcgNoTj7tUllGg3bwS6wx1Uhpb-07YpVdx-FuOFwcdEueZHdM8yOJHaZqbod&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/7719419426663102878/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/02/java-e-linguagem-de-programacao-mais.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7719419426663102878'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/7719419426663102878'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/02/java-e-linguagem-de-programacao-mais.html' title='Java é a linguagem de programação mais requisitada em 2022'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/hSEnCWHy7P4WRIcdqf0qgrFFvxpafIPq-oBFxgNcqYYNQEhlvC97-BujoVKTpco701wd8Fqde24QB6Ov1bRqHpsMMAuXK8ilAPtVtqgpkGenwZiQGOL-qtxmxQjGdWeHdHowVSxz=s72-c" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6448280182389226496.post-6693017362545502288</id><published>2022-02-18T21:32:00.021-03:00</published><updated>2022-02-19T18:37:12.977-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AdoptOpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Java18"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="JVM"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="OracleJDK"/><category scheme="http://www.blogger.com/atom/ns#" term="pattern"/><title type='text'>JDK 18: Os novos recursos do Java 18</title><content type='html'>&lt;meta content=&quot;summary&quot; name=&quot;twitter:card&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Os novos recursos do Java 18&quot; name=&quot;twitter:title&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;@sandrogiacom&quot; name=&quot;twitter:site&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;Os novos recursos do Java 18&quot; name=&quot;twitter:description&quot;&gt;&lt;/meta&gt;
&lt;meta content=&quot;https://lh5.googleusercontent.com/HmTvY_m2UWLEIqvXYOCCLS4kVUNomTy8jc9a5hVasWyFC3TcvRHoCmLjPIrMxoBXOWoeIJf3p6qz20GIzOTqVhDTDyPLRuS-I5PfgdOOuv60rztqOgGlPPoBXOp5mvpxtDj5XWnh&quot; name=&quot;twitter:image&quot;&gt;&lt;/meta&gt;
&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span style=&quot;border: none; display: inline-block; height: 425px; overflow: hidden; width: 718px;&quot;&gt;&lt;img height=&quot;425&quot; src=&quot;https://lh5.googleusercontent.com/HmTvY_m2UWLEIqvXYOCCLS4kVUNomTy8jc9a5hVasWyFC3TcvRHoCmLjPIrMxoBXOWoeIJf3p6qz20GIzOTqVhDTDyPLRuS-I5PfgdOOuv60rztqOgGlPPoBXOp5mvpxtDj5XWnh&quot; style=&quot;margin-left: 0px; margin-top: 0px;&quot; width=&quot;718&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Arial; font-size: 26pt; white-space: pre-wrap;&quot;&gt;
JDK 18: Os novos recursos do Java 18&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;Com o lançamento em março, o &lt;b&gt;Java 18&lt;/b&gt; incuba uma &lt;b&gt;API vetorial&lt;/b&gt;, disponibiliza o “pattern matching for switch statements” como preview feature, adota &lt;b&gt;UTF-8 &lt;/b&gt;como o conjunto de caracteres padrão e inclui um &lt;b&gt;servidor web&lt;/b&gt; simples. &lt;br /&gt;&lt;br /&gt;O Java Development Kit (JDK) 18 está programado para ser lançado em 22 de março de 2022. A nova versão do Java padrão terá nove novos recursos, com o conjunto de recursos congelado em 9 de dezembro. &lt;br /&gt;&lt;br /&gt;O &lt;b&gt;JDK 18&lt;/b&gt; passou para um estágio de release candidate, após duas fases de rampdown realizadas entre dezembro e fevereiro. Um segundo release candidate está previsto para 24 de fevereiro. As atualizações do Java padrão são lançadas a cada seis meses, com a versão mais recente, &lt;a href=&quot;https://www.guiadojava.com.br/2021/09/java-17.html&quot;&gt;JDK 17&lt;/a&gt;, chegando em setembro de 2021.&lt;/span&gt;&lt;p style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;A página &lt;a href=&quot;https://openjdk.java.net/projects/jdk/18/&quot;&gt;OpenJDK&lt;/a&gt; lista os seguintes recursos como direcionados oficialmente ao JDK 18: uma interface de provedor de serviços, um servidor web simples, uma terceira incubação da API vetorial, trechos de código, uma reimplementação do core reflexão, um conjunto de caracteres UTF-8, uma segunda versão preview de uma função estrangeira e API de memória, uma segunda preview de correspondência de padrões para instruções switch (pattern matching for switch statements) e a descontinuação do finalization, que foi a última adição.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Enquanto o &lt;a href=&quot;https://www.guiadojava.com.br/2021/09/java-17.html&quot;&gt;JDK 17&lt;/a&gt; foi uma versão de suporte de longo prazo (LTS) que recebeu pelo menos oito anos de suporte da Oracle, o JDK 18 será uma versão de recurso de curto prazo com suporte por seis meses. As compilações de acesso antecipado do JDK 18 podem ser encontradas para Linux, Windows e MacOS em &lt;a href=&quot;https://jdk.java.net/18/&quot;&gt;java.net&lt;/a&gt;.&lt;/span&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 13pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 16pt; margin-top: 0pt;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span style=&quot;font-size: 15pt;&quot;&gt;As especificidades das propostas do JDK 18 incluem:&lt;/span&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;1 - &lt;a href=&quot;http://openjdk.java.net/jeps/421&quot;&gt;Deprecate finalization for removal&lt;/a&gt; para remoção em uma versão futura. O Finalizer tem falhas que causam problemas significativos do mundo real em segurança, desempenho, confiabilidade e capacidade de manutenção. Ele também tem um modelo de programação difícil. A finalização está habilitada por padrão por enquanto, mas pode ser desabilitada para facilitar os testes iniciais. Ele será desabilitado por padrão em uma versão de recurso e removido completamente em uma versão posterior. A proposta exige uma opção de linha de comando para desativar a finalização e a descontinuação de todos os finalizadores e métodos de finalização na API Java padrão. Os objetivos da proposta incluem ajudar os desenvolvedores a entender os perigos da finalização, preparar os desenvolvedores para sua eventual remoção e fornecer ferramentas simples para ajudar a detectar a dependência da finalização. Introduzida no Java 1.0, a finalização visava ajudar a evitar vazamentos de recursos. Uma classe pode declarar um finalizador — o método protected void finalize() — cujo corpo libera qualquer recurso subjacente. O coletor de lixo agendará o finalizador de um objeto inacessível para ser chamado antes de recuperar a memória do objeto; por sua vez, o método finalize pode executar ações como chamar o fechamento do objeto. Isso parece ser uma rede de segurança eficaz para evitar vazamentos de recursos, mas existem falhas, incluindo latência imprevisível, com um longo tempo decorrido entre quando um objeto se torna inacessível e quando seu finalizador é chamado; comportamento irrestrito, com código finalizador capaz de realizar qualquer ação, incluindo ressuscitar um objeto e torná-lo acessível novamente; o finalizador está sempre habilitado, sem mecanismo de registro explícito; e os finalizadores podem ser executados em threads não especificados em uma ordem arbitrária. Dados os problemas com a finalização, os desenvolvedores são aconselhados a usar técnicas alternativas para evitar vazamentos de recursos, ou seja, declarações try-with-resources e limpadores. (Consulte a Proposta de Aprimoramento do JDK 421 para obter detalhes.) &lt;br /&gt;&lt;br /&gt;2 - Para o &lt;a href=&quot;https://openjdk.java.net/jeps/418&quot;&gt;Internet-address resolution SPI&lt;/a&gt;, a proposta é definir um SPI para resolução de endereços de host e nome para que Inet.Address possa fazer uso de resolvedores diferentes do resolvedor interno da plataforma. As motivações para este esforço incluem uma melhor habilitação do &lt;a href=&quot;https://wiki.openjdk.java.net/display/loom/Main&quot;&gt;Project Loom&lt;/a&gt;, para concorrência e novos modelos de programação em Java, juntamente com a integração de novos protocolos de rede, customização e habilitação de testes. A proposta não envolve o desenvolvimento de um resolvedor alternativo para o JDK. &lt;br /&gt;&lt;br /&gt;3 - O segundo preview do (&lt;a href=&quot;http://openjdk.java.net/jeps/420&quot;&gt;pattern matching for switch&lt;/a&gt;), na qual a linguagem Java seria aprimorada com correspondência de padrões para expressões e instruções switch, juntamente com extensões para a linguagem de padrões. Isso foi visualizado no &lt;a href=&quot;https://www.guiadojava.com.br/2021/09/java-17.html&quot;&gt;JDK 17&lt;/a&gt;. Estendendo a correspondência de padrões para switch que permite que uma expressão seja testada em vários padrões, cada um com uma ação específica, de modo que consultas complexas orientadas a dados possam ser expressas de forma concisa e segura. &lt;br /&gt;&lt;br /&gt;4 - &lt;a href=&quot;https://openjdk.java.net/jeps/416&quot;&gt;A reimplementação do core de reflexão com identificadores de método&lt;/a&gt; reimplementaria lang.reflect.Method, Constructor e Field sobre os identificadores de método java.lang.invoke. Ter alças de método servindo como mecanismo subjacente para reflexão reduzirá os custos de manutenção e desenvolvimento das APIs java.lang.reflect e java.lang.invoke. &lt;br /&gt;&lt;br /&gt;5 - &lt;a href=&quot;https://openjdk.java.net/jeps/408&quot;&gt;Com a proposta de servidor web simples&lt;/a&gt;, uma ferramenta de linha de comando seria fornecida para iniciar um servidor web mínimo que serve apenas arquivos estáticos. Nenhuma funcionalidade semelhante a CGI ou servlet está disponível. A ferramenta será útil para prototipagem, codificação ad-hoc e testes, particularmente em contextos educacionais. Os objetivos do plano incluem oferecer um servidor de arquivos HTTP estático pronto para uso com configuração fácil e funcionalidade mínima, reduzindo a energia de ativação do desenvolvedor e tornando o JDK mais acessível e fornecendo uma implementação padrão por meio da linha de comando junto com uma pequena API para criação e personalização programática. Fornecer um servidor rico em recursos ou de nível comercial não é um objetivo da proposta. &lt;br /&gt;&lt;br /&gt;6 - Uma segunda preview de uma &lt;a href=&quot;https://openjdk.java.net/jeps/419&quot;&gt;API de função e memória externa&lt;/a&gt; (foreign function and memory API), na qual uma API é introduzida por meio da qual programas Java podem interoperar com código e dados fora do tempo de execução Java. Ao invocar funções externas – código fora da JVM – e ao acessar com segurança a memória externa – memória não gerenciada pela JVM – a API permite que programas Java chamem bibliotecas nativas e processem dados nativos sem a fragilidade e o perigo da JNI (Java Native Interface). A intenção é substituir o JNI por um modelo de desenvolvimento Java puro e superior. Essa API foi incubada no JDK 17. Para o JDK 18, refinamentos seriam incorporados, com base no feedback, como suporte para mais operadoras como Boolean e MemoryAddress em handles de var de acesso à memória e uma nova API para copiar arrays Java de e para a memória segmentos. &lt;br /&gt;&lt;br /&gt;7 - A &lt;a href=&quot;https://openjdk.java.net/jeps/417&quot;&gt;API vetorial&lt;/a&gt; (The vector API) seria incubada pela terceira vez no JDK 18, tendo sido incubada anteriormente no JDK 16 e JDK 17. Esta proposta expressaria computações vetoriais que compilam em tempo de execução instruções vetoriais ideais em arquiteturas de CPU suportadas, alcançando desempenho superior ao equivalente cálculos escalares. As operações vetoriais expressam um grau de paralelização, permitindo que mais trabalho seja feito em um único ciclo de CPU, produzindo melhorias significativas de desempenho. A API de vetor independente de plataforma visa fornecer uma maneira de escrever algoritmos complexos em Java, usando o auto vetorizador HotSpot existente, mas com um modelo de usuário que torna a vetorização mais previsível. O JDK 18 também adicionaria suporte para a plataforma &lt;a href=&quot;https://arxiv.org/pdf/1803.06185.pdf&quot;&gt;ARM Scalar Vector Extension&lt;/a&gt; e melhoraria o desempenho de operações vetoriais que aceitam máscaras em arquiteturas que suportam mascaramento em hardware. &lt;br /&gt;&lt;br /&gt;8 - &lt;a href=&quot;https://openjdk.java.net/jeps/400&quot;&gt;Specifying UTF-8 as the default charset of the standard Java APIs&lt;/a&gt;. UTF-8 é uma codificação de caracteres de largura variável para comunicação eletrônica e é considerado o conjunto de caracteres padrão da web. Charset é a codificação de caracteres capaz de codificar todos os caracteres na web. Por meio dessa alteração, as APIs que dependem do conjunto de caracteres padrão se comportaram de forma consistente em todas as implementações, sistemas operacionais, localidades e configurações. A proposta não se destina a definir novas APIs padrão Java ou específicas de JDK. Os proponentes da proposta esperam que os aplicativos em muitos ambientes não vejam nenhum impacto da escolha do Java pelo UTF-8, já que o MacOS, muitas distribuições Linux e muitos aplicativos de servidor já suportam UTF-8. No entanto, há risco em outros ambientes, sendo o mais óbvio que os aplicativos que dependem do conjunto de caracteres padrão se comportem incorretamente ao processar dados produzidos quando o conjunto de caracteres padrão não foi especificado. A corrupção de dados pode ocorrer silenciosamente. Espera-se que o principal impacto recaia sobre os usuários de sistemas Windows em localidades asiáticas e possivelmente em alguns ambientes de servidor na Ásia e em outras localidades. &lt;br /&gt;&lt;br /&gt;9 - &lt;a href=&quot;http://openjdk.java.net/jeps/413&quot;&gt;Code snippets in Java API documentation&lt;/a&gt;, envolvendo a introdução de uma tag @snippet para o Doclet padrão do JavaDoc, para simplificar a inclusão de código-fonte de exemplo na documentação da API. Entre os objetivos do plano está facilitar a validação de fragmentos de código-fonte, fornecendo acesso à API a esses fragmentos. Embora a correção seja de responsabilidade do autor, o suporte aprimorado em JavaDoc e ferramentas relacionadas pode torná-lo mais fácil de alcançar. Outros objetivos incluem habilitar estilos modernos, como realce de sintaxe, bem como a vinculação automática de nomes a declarações e habilitar melhor suporte de IDE para criar e editar trechos. A proposta observa que os autores da documentação da API geralmente incluem fragmentos de código-fonte nos comentários da documentação.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; text-align: left; white-space: pre;&quot;&gt;&lt;b&gt;
Referências
&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: black; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-align: justify; vertical-align: baseline;&quot;&gt;&lt;b&gt;
&lt;/b&gt;Artigo original em &lt;/span&gt;&lt;a href=&quot;https://www.infoworld.com/article/3630510/jdk-18-the-new-features-in-java-18.html&quot; style=&quot;text-align: justify; text-decoration-line: none;&quot;&gt;&lt;span style=&quot;-webkit-text-decoration-skip: none; color: #1155cc; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline;&quot;&gt;inglês&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: black; font-family: Arial; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-align: justify; vertical-align: baseline;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;&quot;&gt;&lt;a href=&quot;https://twitter.com/sandrogiacom&quot; style=&quot;text-align: left;&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://thepracticaldev.s3.amazonaws.com/i/gmrz82bjwhej1f1iqb1e.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Assine o feed de postagens&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.guiadojava.com.br/feeds/6693017362545502288/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='https://www.guiadojava.com.br/2022/02/jdk-18-os-novos-recursos-do-java-18.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/6693017362545502288'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6448280182389226496/posts/default/6693017362545502288'/><link rel='alternate' type='text/html' href='https://www.guiadojava.com.br/2022/02/jdk-18-os-novos-recursos-do-java-18.html' title='JDK 18: Os novos recursos do Java 18'/><author><name>Sandro Giacomozzi</name><uri>http://www.blogger.com/profile/05187741172180363171</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW5M1CwfELqfzDMMPw8swuVRkfVhwveY0q0i4P315_UvUtRdHs39DH3PRaVtoYoQ-GDUSgYH59xgFLM6zeMj4AmShwb1qIcS9jEoAmcvQRXvl-tpF4BvYz7D-jQIm0xw/s220/TDC+Floripa+2019-7-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/HmTvY_m2UWLEIqvXYOCCLS4kVUNomTy8jc9a5hVasWyFC3TcvRHoCmLjPIrMxoBXOWoeIJf3p6qz20GIzOTqVhDTDyPLRuS-I5PfgdOOuv60rztqOgGlPPoBXOp5mvpxtDj5XWnh=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry></feed>