<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vinicius Vieira dos Santos</title>
    <description>The latest articles on DEV Community by Vinicius Vieira dos Santos (@viniciusxyz).</description>
    <link>https://dev.to/viniciusxyz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F990521%2Fe12926c3-5acc-4b86-b3bf-66c05cd6fa1e.jpeg</url>
      <title>DEV Community: Vinicius Vieira dos Santos</title>
      <link>https://dev.to/viniciusxyz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/viniciusxyz"/>
    <language>en</language>
    <item>
      <title>[PT-BR] Graalvm: Configurando ambiente Windows para geração de imagens nativas</title>
      <dc:creator>Vinicius Vieira dos Santos</dc:creator>
      <pubDate>Sat, 29 Apr 2023 18:56:57 +0000</pubDate>
      <link>https://dev.to/viniciusxyz/graalvm-configurando-ambiente-windows-para-geracao-de-imagens-nativas-2hih</link>
      <guid>https://dev.to/viniciusxyz/graalvm-configurando-ambiente-windows-para-geracao-de-imagens-nativas-2hih</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Muitas empresas ainda definem o sistema operacional base de seus desenvolvedores como Windows, isso pode ter vários motivos, eu particularmente creio que seja por conta da facilidade de uso já que se trata do sistema operacional mais usado no mundo (&lt;a href="https://www.statista.com/statistics/268237/global-market-share-held-by-operating-systems-since-2009/#:~:text=Microsoft's%20Windows%20is%20the%20most,OS%20market%20in%20January%202023."&gt;dados&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Bom vamos diretamente ao que interessa, vou supor que estamos partindo de um ambiente limpo, ou seja uma máquina recém formatada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalando componentes necessários
&lt;/h2&gt;

&lt;p&gt;Para facilitar as instalações vamos usar o &lt;a href="https://chocolatey.org/"&gt;chocolatey&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instalando Java
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Todos os comandos devem ser executados no powershell em modo administrador&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;1- Instalando o chocolatey&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2- Instalando o Java&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;choco install graalvm-java17
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Instando a funcionalidade native-image
&lt;/h3&gt;

&lt;p&gt;1- Feche o powershell aberto anteriormente e abra um novo em modo administrador, isso é apenas para atualizar as variáveis de ambiente carregadas pelo powershell.&lt;/p&gt;

&lt;p&gt;2- Execute o comando de instalação abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gu.cmd install native-image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Instando as dependências de compilação com o Visual Studio Build Tools
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Relaxa não vamos instalar o Visual Studio IDE somente as bibliotecas que a compilação nativa precisa para funcionar ;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;1- Baixe o Visual Studio Build Tools &lt;a href="https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&amp;amp;rel=16"&gt;neste link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2- Abra o arquivo e aguarde o carregamento do programa&lt;/p&gt;

&lt;p&gt;3- Selecione os itens mostrados abaixos e clique em instalar&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tBDkd4UG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60tq3e49umn7k9cl7u4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tBDkd4UG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60tq3e49umn7k9cl7u4b.png" alt="Image description" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hora do teste !
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Nesse momento vale dar um aviso, toda e qualquer compilação nativa deve ser executada através do prompt X64 Native Tools, existem outras formas, mas essa é a mais simples&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Para nosso exemplo de compilação vamos usar &lt;a href="https://github.com/viniciusxyz/micronaut-graalvm-example"&gt;este projeto&lt;/a&gt; super simples, um serviço Micronaut que tem apenas um endpoint &lt;code&gt;GET /hello&lt;/code&gt; com um "Hello Native", nesse caso é uma aplicação Micronaut, porém poderia ser Quarkus, Spring Boot 3 ou qualquer outro framework compatível com compilação nativa.&lt;/p&gt;

&lt;p&gt;1- Abra seu prompt X64 Native Tools&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mZUboHSm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9sv5tgtnjlw030gt97su.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mZUboHSm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9sv5tgtnjlw030gt97su.png" alt="Image description" width="800" height="791"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2- Navegue para a pasta do seu projeto e execute o comando de compilação nativa que seu framework disponibiliza, no nosso caso o &lt;code&gt;mvnw package -Dpackaging=native-image&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cjlE0VtQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8kcx37kh78sahb1okh9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cjlE0VtQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8kcx37kh78sahb1okh9.gif" alt="Image description" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3- Após isso basta executar a aplicação e fazer a requisição &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MLaiI0KL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vh93s23dm9n6vh9zzhgw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MLaiI0KL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vh93s23dm9n6vh9zzhgw.gif" alt="Image description" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O objetivo desse artigo foi instruir como utilizar a GraalVM e fazer compilações nativas diretamente no Windows, sem precisar usar o WSL, máquinas virtuais ou outros auxiliares.&lt;/p&gt;

&lt;p&gt;Este foi meu primeiro artigo e embora existam outros mostrando o mesmo sempre que os via havia algo desatualizado ou instalavam o Visual Studio IDE inteiro o que é desnecessário. Sinta-se à vontade para opinar e para me avisar se algum ponto não ficou claro, deixarei essa página como algo de edição constante.&lt;/p&gt;

&lt;p&gt;Estou pensando em criar uma série sobre compilação nativa demonstrando as vantagens e desvantagens nesse processo, me avisem se tiverem interesse !&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
