<?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: Rodrigo</title>
    <description>The latest articles on DEV Community by Rodrigo (@eguadorodrigo).</description>
    <link>https://dev.to/eguadorodrigo</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%2F905397%2Ff4411e40-8876-4745-9597-ea766b93d2dd.jpg</url>
      <title>DEV Community: Rodrigo</title>
      <link>https://dev.to/eguadorodrigo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eguadorodrigo"/>
    <language>en</language>
    <item>
      <title>JVM - Java é Verboso Mesmo? Parte V</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Mon, 10 Jul 2023 22:07:34 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-v-3p7p</link>
      <guid>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-v-3p7p</guid>
      <description>&lt;p&gt;Isso aqui parece mais os filmes do Rocky Balboa...galera old school sabe do que to falando, né não? hehehe&lt;br&gt;
Faaaaaala dominadores do café, tudo bem com vocês?&lt;br&gt;
Sim, eu ando atribulado de coisa pra fazer, mas pra gente fechar esse ciclo e ir tocando assuntos novos, eu trouxe o artigo da vez - último da série - o qual nos fez vir até aqui destrinchando, entendendo o que é a JVM do Javinha das massas! &lt;br&gt;
Foi uma série muito legal de artigos que me deixaram bem feliz de ter feito e compartilhado com vocês! &amp;lt;3&lt;/p&gt;

&lt;p&gt;Perdeu algum? então segue o fio de todos os artigos desde o inicio:&lt;br&gt;
&lt;a href="https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-i-1fcc"&gt;Parte I&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-ii-a-saga-continua-nok"&gt;Parte II&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-iii-aquilo-que-ninguem-te-conta-ej9"&gt;Parte III&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-iv-nk0"&gt;Parte IV&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Então sem mais delongas... com vocês o motor de execução!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs0okd8hvdyp2l81ipctr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs0okd8hvdyp2l81ipctr.png" alt="Image description" width="577" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pensem nele como o motor de um carro, a gasolina é o Java em bytecode, ele entra, circula pelo motor, é injetado em seus componentes. Foi construido para fazer com que o resto da carroceria possa se movimentar, você já viu como um motor funciona, não? então fica aqui uma provocação pra entender como o combustível chega lá e é gerada a energia pra que isso aconteça! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intepretador&lt;/strong&gt;- É nessa área que o bytecode chega e é executada uma interpretação para a linguagem nativa do SO em que a JVM está instalada. Só que a problemática dessa área é: não há nenhum tratamento do que é executado dentro do interpretador, por tanto, fatalmente o mesmo trecho de código poderá ser executado inumeras vezes, pois o interpretador vai apenas converter o que chegar até ele, gerando assim uma perda de performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compilador Just In Time (JIT)&lt;/strong&gt; - Então neste contexto foi proposto o JIT, que é a próxima área do desenho, que busca mitigar esse problema que existe no interpretador para além de manter a performance desejada, ela possa em certos casos até ser melhorada.&lt;br&gt;
Em tempo de execução a JVM carrega os arquivos para a memória e é executado uma &lt;a href="https://pt.wikipedia.org/wiki/An%C3%A1lise_sem%C3%A2ntica" rel="noopener noreferrer"&gt;análise semântica&lt;/a&gt; para determinar quem melhor atende aquele trecho de código, nessa hora, pense em códigos repetidos, o JIT consegue entender que está sendo reexecutado um trecho e o mesmo não mais será jogado para o interpretador, ele ativa um conjunto de códigos nativos diretamente, sem ter que reexecutar o código no interpretador, melhorando assim o tempo no processamento do código que entra para a exeução.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gerador de código intermediário&lt;/strong&gt; - responsável por produzir um código intermediário no momento da execução do bytecode que precisará ser executado.&lt;br&gt;
&lt;strong&gt;Otimizador de código&lt;/strong&gt; - Responsável por captar o codigo acima e buscar fazer otimizações na sua execução.&lt;br&gt;
&lt;strong&gt;Gerador de código alvo&lt;/strong&gt; - Responsável por gerar o código fim baseado no sistema operacional onde a JVM se encontra, ou em outros termos, o código nativo.&lt;br&gt;
&lt;strong&gt;Perfil&lt;/strong&gt; - Responsável em buscar por pontos de possíveis execuções repetitivas para assim diminuir o trabalho da área do interpretador.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coletor de lixo&lt;/strong&gt; - É o responsável por retirar da memória referências que não possuem mais apontamento nenhum para o código em execução, ou seja, objetos mortos. Pode ser invocado dentro do código da seguinte maneira:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;System.gc()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ps: porém essa invocação não tem garantias de que será executada pela JVM.&lt;/p&gt;

&lt;p&gt;E por último, dentro da JMV ainda existem o JNI e o Native Method Libraries...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9k96778lqv6tf6gh7y0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9k96778lqv6tf6gh7y0.png" alt="Image description" width="288" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interface de método nativo (JNI)&lt;/strong&gt; - Área que fará a interface com a biblioteca de método nativo e disponibilizará para o motor de execução tudo o que precisar para que o código seja efetivamente executado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Biblioteca de método nativo&lt;/strong&gt; - Reside a coleção de bibliotecas nativas que são obrigatórias para o pleno funcionamento do motor de execução.&lt;/p&gt;

&lt;p&gt;Pessoal, queria agradecer muito quem chegou até aqui! Espero ter sido de alguma maneira útil para você e se tiver alguma dúvida ou sugestão, me manda aqui num comentário ou nas redes sociais.&lt;br&gt;
Um abraço fraterno e até a próxima!! &lt;/p&gt;

</description>
      <category>java</category>
      <category>jvm</category>
      <category>beginners</category>
    </item>
    <item>
      <title>JVM - Java é Verboso Mesmo? Parte IV</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Tue, 14 Feb 2023 00:11:25 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-iv-nk0</link>
      <guid>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-iv-nk0</guid>
      <description>&lt;p&gt;Fala dominadores (do Java, claro kkk)!&lt;br&gt;
Sem muita delonga, vamos continuar nosso papo sobre a JVM !!! #partiu&lt;/p&gt;

&lt;p&gt;Tivemos &lt;a href="https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-iii-aquilo-que-ninguem-te-conta-ej9"&gt;aqui&lt;/a&gt; o inicio das explicações da JVM e como ela procura trabalhar com o Java e hoje vamos dar seguimento a essa explicação.&lt;/p&gt;
&lt;h2&gt;
  
  
  O subsistema de área de pilha (Stack area)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfw21qpmbarwdhpxyyf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfw21qpmbarwdhpxyyf7.png" alt="Image description" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Área de método (Method area)
&lt;/h4&gt;

&lt;p&gt;Esta área na JVM é responsável por armazenar todos os métodos do escopo de uma classe, trazendo nosso exemplo da classe Programa, temos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class Programa{
    public static void main(String[] args){
        System.out.println("Hello Programa");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O escopo de classe é tudo que está depois do colchete "{" após a palavra Programa até o fechamento deste escopo com o outro colchete ao contrário "}", então na nossa classe, podemos notar que só existe a declaração de um método, o método main. Então, na área de método, para o nosso exemplo, será disponibilizado em memória o método main, beleza?&lt;br&gt;
Ah! vale lembrar que a área de método é um recurso compartilhado dentro da JVM e que só existe uma área por JVM, você não encontrará duas áreas de método dentro da mesma JVM, por tanto, fica ligado que neste exemplo, tinhamos apenas uma classe sendo enviada à JVM, um caso simples, mas há casos complexos onde a necessidade de analisar o que a JVM está recebendo é essencial pra entender se as classes estão fazendo a sua JVM trabalhar bem ou talvez um ajuste de código para otimizar o seu uso seja necessário, pois, dependemos de recursos de máquina, infraestrutura e sem um bom código infelizmente você precisará demandar muito mais poder de infra, memória, cpu, etc...&lt;/p&gt;

&lt;h4&gt;
  
  
  Área de empilhamento (Heap area)
&lt;/h4&gt;

&lt;p&gt;Nesta área ficarão armazenados &lt;em&gt;todos os objetos e suas instancias correspondentes&lt;/em&gt;. Importante lembrar que assim como a área anterior, a área de empilhamento (heap area) também é um recurso compartilhado que deve ser olhado com carinho, já que um código mal implementado por ocasionar estouro de pilha (que é quando não há mais espaço em memória para armazenar novos objetos, gerando exceções como &lt;em&gt;java.lang.OutOfMemoryError: Java heap space&lt;/em&gt;)&lt;/p&gt;

&lt;h4&gt;
  
  
  Área de dados em tempo de execução (Stack area)
&lt;/h4&gt;

&lt;p&gt;Nesta área, vamos arranhar a superfície do conceito de &lt;em&gt;Threads&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Threads - São criadas em decorrência de processos computacionais, por exemplo, quando um processo dentro de um computador precisa ser executado, aí nasce a thread. Toda vez que uma aplicação é aberta, é lançada uma thread dela mesma e a cada nova tarefa daquela aplicação, outra thread poderá ser criada...logo, quanto mais aplicações abertas você têm, mais sobrecarga você coloca sobre o processamento do seu equipamento.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Então como vimos acima, cada execução cria-se uma Thread e para cada execução alocada na memória damos o nome de Stack Frame. No Stack Frame todas as variáveis locais serão inicializadas, e também dizemos que é thread-safe, pois esse recurso, diferente dos anteriores não á um recurso compartilhado, ele é exclusivo daquela execução.&lt;br&gt;
Dentro do Stack Frame temos ainda três subcategorias:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local Variable Array (LVA) - Corresponde a quantas variáveis locais estão envolvidas e seus respectivos valores serão armazenados aqui, no nosso exemplo:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foni2xq1f3btn4je1pxrh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foni2xq1f3btn4je1pxrh.png" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na nossa classe, por ser simples, o método main pode ser representado por uma única referencia de LVA que pode ter de 0 até n entradas quando invocado;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operand Stack (OS) - É um recurso que entra em cena caso haja a necessidade de alguma operação intermediária para ser executada, o OS age como area de trabalho para realizar as operações demandadas.
Vamos alterar um pouco nossa classe para tentar exemplificar isso:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class Programa{
    public static void main(String[] args){
        System.out.println("Hello Programa");
        System.out.println("O resultado da soma é: " + soma(2,3));
    }

    public static int soma(int a, int b){
        return a + b;
    }

}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vejam que para que o segundo System.out.println seja possível, é necessário invocar um novo método que chamamos de &lt;em&gt;soma&lt;/em&gt;, essa seria uma tentativa de exemplificar quando o OS entra em ação devido a necessidade de uma operação extra!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frame Data (FD) - O frame data é o carinha que agiliza as coisas na execução, é como se fosse um assistente de execução, ele fica de olho no pool da Stack Frame e consegue linkar as referencias de forma a agilizar aquela execução através de ponteiros de classe, interface, campos ou métodos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  PC Registradores (PC Registers)
&lt;/h4&gt;

&lt;p&gt;Cada Thread terá seu próprio registrador que será responsável por armazenar o seu endereço, isso viabiliza a execução atual para ser realizada e prepara aquele endereço armazenado para a próxima execução que essa Thread necessitar fazer.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pilha de método nativo (Native method stacks)
&lt;/h4&gt;

&lt;p&gt;É uma pilha que guarda informações de métodos nativos para que quando houver uma nova execução (Thread), ela seja feita da maneira mais performática possível já tendo algumas informações (como métodos nativos) carregados e disponíveis para uso.&lt;/p&gt;

&lt;p&gt;E por hoje é isso dominadores, cada vez mais mergulhando no que o Java pode nos oferecer, você tá satisfeito em ser só usuário? Vem nos comentários e me diz, fico mega feliz quando vejo vocês por aqui, um abraço e até a próxima!&lt;/p&gt;

&lt;p&gt;Referências: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The JVM Architecture Explained - &lt;a href="https://dzone.com/articles/jvm-architecture-explained" rel="noopener noreferrer"&gt;https://dzone.com/articles/jvm-architecture-explained&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How JVM Works – JVM Architecture? - &lt;a href="https://www.geeksforgeeks.org/jvm-works-jvm-architecture/?ref=rp" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/jvm-works-jvm-architecture/?ref=rp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;What are Threads in Computer Processor or CPU? -  &lt;a href="https://www.geeksforgeeks.org/what-are-threads-in-computer-processor-or-cpu/?ref=gcse" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/what-are-threads-in-computer-processor-or-cpu/?ref=gcse&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Java Virtual Machine - &lt;a href="https://www.artima.com/insidejvm/ed2/jvm8.html" rel="noopener noreferrer"&gt;https://www.artima.com/insidejvm/ed2/jvm8.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>llm</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>JVM - Java é Verboso Mesmo? Parte III (já dizia Jack "vamos por partes")</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Fri, 27 Jan 2023 15:29:50 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-iii-aquilo-que-ninguem-te-conta-ej9</link>
      <guid>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-iii-aquilo-que-ninguem-te-conta-ej9</guid>
      <description>&lt;p&gt;Edição: Correção no título, quem disse a frase, foi o Jack, não o Jason. Obrigado ao colega Eduardo, que corrigiu a gafe lá no LinkedIn. 🤓&lt;/p&gt;

&lt;p&gt;Deêm uma boa olhada na imagem abaixo e processem a informação de que sim, a JVM é complexa, nem de longe é algo simples, até para que seja possível a portabilidade do código, foi pensado em como fazê-la de maneira que fosse capaz de executar comandos ao mesmo tempo que faz gestão de memória, melhoramento de processamento, entre outras funções e claro, tudo isso e mais um pouco, de forma independente do sistema operacional que ela esteja. Eu mesmo não conhecia algumas nuances de dentro desse universo, mas bora lá aprender juntos? #partiu&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxtpysqgyj3irwt9ww7j2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxtpysqgyj3irwt9ww7j2.png" alt="Imagem que descreve com agrupamentos três de retangulos principais as partes da JVM" width="800" height="677"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na &lt;a href="https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-ii-a-saga-continua-nok"&gt;parte dois&lt;/a&gt; chegamos a dizer a forma que a classe Programa era compilada e enviada para execução. Agora vamos ver os caminhos que uma classe pode percorrer dentro da JVM. Então vou tentar explicar cada camada como venho fazendo nos artigos, pois acho que tá sendo uma boa maneira de me expressar e fica bastante didática (ao meu ver, claro)&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Alô galera, deêm feedbacks!! assim eu sei se tá sendo legal (ou não) a experiência de vocês por aqui &amp;lt;3&lt;/em&gt;
&lt;/h4&gt;




&lt;p&gt;Spoiler: Uma classe enviada à JVM pode ter até 256 &lt;a href="https://javaalmanac.io/bytecode/opcodes/" rel="noopener noreferrer"&gt;opcodes&lt;/a&gt; possíveis em sua estrutura e seus &lt;a href="https://www.infoworld.com/article/2077233/bytecode-basics.html" rel="noopener noreferrer"&gt;operadores&lt;/a&gt; podem ser de 8 ou 16 bit. (Olha que artigo legal temos aqui! kkk)&lt;/p&gt;




&lt;p&gt;Dado o Spoiler, bora lá então! A galera quer ser dominadora do café, né? Então vamos explorar cada pedaço pra melhorar nossas habilidades e pra começar, na Java Virtual Machine têm-se três principais subsistemas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Subsistema de carregamento de classes&lt;/em&gt; (ClassLoader Subsystem)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Subsistema da área de pilha&lt;/em&gt; (Runtime Data Area)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Subsistema do motor de execução&lt;/em&gt; (Execution Engine)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tentei traduzir pro pt-BR pra que a galera vá entendendo em português, mas já consiga também fazer um paralelo com o inglês onde esse material é mais farto e detalhado.&lt;/p&gt;




&lt;h3&gt;
  
  
  Subsistema de carregamento de classes
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvdjgsr2nuh13d2t88n7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvdjgsr2nuh13d2t88n7.png" alt="Image description" width="800" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fazem parte desse subsistema: &lt;em&gt;Carregamento | Vinculação | Inicialização&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Carregamento (Loading)
&lt;/h4&gt;

&lt;p&gt;O carregamento performa afim de preparar a JVM para a execução e avalia os seguintes pontos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O caminho completo da classe invocada na execução e o caminho de seu parente imediato; O que quero dizer com isso é: imagine que nossa classe Programa esteja no caminho, por exemplo:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Desktop\projeto\Programa.java 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;O caminho completo é este mesmo exibido acima (em inglês &lt;em&gt;fully qualified name&lt;/em&gt;, também chamado de &lt;em&gt;FQN&lt;/em&gt; ), já o seu parente imediato é:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Desktop\projeto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Qual referência o Bytecode (.class) é relacionado: Se a uma classe, se a uma Inteface ou a um Enum:
No nosso exemplo, o arquivo Programa faz referência a uma Classe! &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;- Onde tu olhas pra ter tanta certeza disso, Rodrigo?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;...Olhem a assinatura da nossa classe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public Class Programa{
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Basta por hora entender que por ter escrito ali ao lado de Programa a palavra Class, isso indica qual a referência será vinculada ao nosso Bytecode, que neste caso, a referencia é à  Classe. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Informações dos modificadores, variáveis e métodos:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Modificadores: public, protected, default;&lt;/li&gt;
&lt;li&gt;Variaveis: qualquer variável encontrada na classe ou nos blocos de execução dela;&lt;/li&gt;
&lt;li&gt;Métodos: qualquer outro método que pode ser invocado dentro da classe, incluindo o método &lt;em&gt;main&lt;/em&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;E nesse contexto, o fluxo abaixo é realizado:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Inicializar o carregador de classes&lt;/em&gt; (BootStrap ClassLoader) - Que tem a responsabilidade de carregar as classes nativas para o classpath, ou seja, carrega os arquivos em memória a partir de onde está instalada a JVM no sistema operacional; E a biblioteca que se encarrega disso e terá a maior prioridade de todas nesta execução é a &lt;em&gt;rt.jar&lt;/em&gt; (Runtime do Java); Ex.: Todas as bibliotecas dentro de $JAVA_HOME/jre/lib serão inicializadas a começar pela rt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Extensor do carregador de classes&lt;/em&gt; (Extension ClassLoader) - Filha da Bootstrap e é responsável por carregar as demais bibliotecas da instalação a partir do caminho &lt;em&gt;lib/ext&lt;/em&gt;; Ex.: Todas as bibliotecas dentro de $JAVA_HOME/lib/ext também serão carregadas para a memória após a inicialização anterior;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Carregador de classe de aplicação&lt;/em&gt; (Application Class Loader ou System Class Loader) - Responsável por carregar os Bytecodes encontrados no diretório invocado na execução. Ex.: No nosso exemplo, será a classe Programa.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;_Usando a classe Programa como exemplo, vamos para a próximo fluxo...&lt;/p&gt;

&lt;h4&gt;
  
  
  Vinculação (Linking)
&lt;/h4&gt;

&lt;p&gt;Performa afim de avaliar o que será necessário da JVM para a execução.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verifica (Verifying) - Analisa a classe que entrou na JVM (Programa.class) e quais vinculações ela possui (se possui herança, se possui extensão, se há dependências de outras classes através de seus imports), caso haja falha, nessa verificação podemos encontrar a exceção &lt;em&gt;java.lang.VerifyError&lt;/em&gt; por exemplo;&lt;/li&gt;
&lt;li&gt;Prepara (Prepare) - Carrega a classe, fazendo a alocação de memória necessária e inicializando todas as referencias estáticas e seus valores padrões;&lt;/li&gt;
&lt;li&gt;Resolve (Resolve) - É o processo que reaplica as referências simbólicas aos tipos e suas referências diretas. Essa resolução é dada através da busca e localização da entidade na &lt;em&gt;área de método&lt;/em&gt;. Ex.: Nossa classe possui um &lt;em&gt;System.out.println&lt;/em&gt; que imprime saídas no prompt (ou terminal), mas essa referencia é de uma biblioteca a &lt;em&gt;System&lt;/em&gt; da biblioteca &lt;em&gt;java.lang&lt;/em&gt; e a &lt;em&gt;out&lt;/em&gt; (PrintStream) da &lt;em&gt;java.io&lt;/em&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Inicialização (Initialization)
&lt;/h4&gt;

&lt;p&gt;Nessa fase, já temos todas as variáveis estáticas definidas e seus valores padrões (caso tenham sido declarados), referencias de imports, se código referencia a uma Classe, uma Interface ou a um Enum. Então a inicialização se dá de cima para baixo, seguindo as nomenclaturas de pacotes, imports, definição de classe, definição de métodos, variáveis e modificadores;&lt;br&gt;
A JVM segue o princípio de Delegação-Hierarquia para carregar as classes. Isso significa que é uma sequencia definida pela classe que entra e suas relações com as classes nativas da JVM...&lt;br&gt;
Caso a JVM não consiga identificar essa relação com suas classes nativas, classes de extensão ou de aplicação, que foi o fluxo que explicamos acima, haverá uma exceção do tipo &lt;em&gt;java.lang.ClassNotFoundException&lt;/em&gt;, indicando que o código não possui referência de classe capaz de tratar aquela execução que entrou na JVM.&lt;/p&gt;

&lt;p&gt;Ufa! Hoje foi bastante detalhado, não foi? Mas por hora, como tá no título, vamos concordar com o Jason, porque o assunto é extenso e por isso, vamos por partes. hehehehehe&lt;br&gt;&lt;br&gt;
Espero que esteja gostando do conteúdo e se quiser me seguir, minhas redes estão aqui no meu perfil, fiquem a vontade!!&lt;/p&gt;

&lt;p&gt;Um grande abraço e até a próxima!&lt;/p&gt;

&lt;p&gt;Referências:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Como a JVM opera (em inglês) - &lt;a href="https://www.geeksforgeeks.org/jvm-works-jvm-architecture/?ref=lbp" rel="noopener noreferrer"&gt;https://www.geeksforgeeks.org/jvm-works-jvm-architecture/?ref=lbp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;A arquitetura da JVM (em inglês) - &lt;a href="https://dzone.com/articles/jvm-architecture-explained" rel="noopener noreferrer"&gt;https://dzone.com/articles/jvm-architecture-explained&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>networking</category>
      <category>network</category>
    </item>
    <item>
      <title>JVM - Java é Verboso Mesmo? Parte II (A saga continua...)</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Thu, 19 Jan 2023 23:10:18 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-ii-a-saga-continua-nok</link>
      <guid>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-ii-a-saga-continua-nok</guid>
      <description>&lt;p&gt;Fala Galera!&lt;br&gt;
Bom, voltando aos estudos, hoje vamos trazer pra vocês a parte dois do estudo que iniciamos sobre a JVM e vou confessar, que doidera, quer mergulhar nesse conteúdo comigo? Vamos nessa!&lt;br&gt;
No &lt;a href="https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-i-1fcc"&gt;artigo anterior&lt;/a&gt; falamos um pouco da JVM e agora vamos detalhar um pouco mais esse assunto...&lt;br&gt;
No artigo anterior, ao fim dele, tivemos o problema da nossa execução no terminal não funcionar e o abismo se abrir diante de nós, certo? certo. Só que não só de abismos vive o ser humano!! &lt;br&gt;
Nos sistemas operacionais, quando temos casos semelhantes a este, significa que falta alguma coisa pra que aquele comando seja aceito, então, lembram do primeiro desenho das camadas de uma aplicação? Se não, olhem &lt;a href="https://dev.to/eguadorodrigo/e-a-certificacao-hein-3p6a"&gt;aqui&lt;/a&gt;.&lt;br&gt;
A JVM fica guardada dentro de uma outra camada também conhecida como JRE, que por sua vez fica guardada dentro de outra camada que é a JDK, se tiver duvidas sobre o que é, revisita o link aí de cima que explico o que é cada camada.&lt;br&gt;
E até aqui não fizemos nada além de escrever &lt;em&gt;uma classe Java&lt;/em&gt; e como queremos ser desenvolvedores, né? então a JRE não é suficientemente capaz para apoiar a vida de um dev cabuloso do Java e por isso precisaremos do poder da JDK! &lt;br&gt;
Então por isso o sistema diz que "javac not found", ou seja, o sistema não encontrou o executável responsável pelo comando &lt;em&gt;javac&lt;/em&gt; que está contido na JDK. Claro, não fizemos a instalação de nada pra isso ser possível...ainda.&lt;br&gt;
Então queridona, queridão, veja como fazer a instalação do JDK no seu sistema e vamos continuar em frente!! :)&lt;br&gt;
Aqui, supondo que você já tenha uma JDK instalada no ambiente e o comando javac finalmente foi salvo o que será que você virá quando rodar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javac Programa.java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A resposta é um sonoro:  Nenhum Acontecimento Deliberadamente Aconteceu ou podemos dizer também: &lt;em&gt;N.A.D.A.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Calma!! Isso é bom, significa que sua classe Java COMPILOU!!! (uhull \o/)&lt;/p&gt;

&lt;p&gt;No diretório que sua classe está, aparecerá agora um arquivo chamado Programa.class que também já expliquei nos artigos anteriores quem que lê e trata dele. E é agora que a brincadeira de verdade começa... &lt;br&gt;
Antes de continuar, acho que aqui é legal deixar duas dicas bem importantes por causa desse momento:&lt;/p&gt;
&lt;h2&gt;
  
  
  Erros de Compilação Vs Erros de Execução
&lt;/h2&gt;

&lt;p&gt;Você então aprendeu a compilar uma classe .java para um Bytecode .class.&lt;br&gt;
Então, primeiramente: &lt;/p&gt;
&lt;h2&gt;
  
  
  Parabéns!! &amp;lt;3
&lt;/h2&gt;

&lt;p&gt;Dito isto, um conceito essencial dentro do Java é o de erros. &lt;br&gt;
Na certificação é comum haver um enunciado dizendo "Dado o código abaixo, diga se ele compila", "Qual das opções há erro de execução?" ou qualquer coisa semelhante... e saber esse conceito vai te ajudar bastante.&lt;br&gt;
Na prova ele tá perguntando é: Hey, essa classe ai, segue as semanticas da linguagem, está correta e se eu usar o comando de compilação vai dar bom? e caso não esteja, isso é o que dizemos ser &lt;em&gt;erros de compilação&lt;/em&gt;. Uma classe compilada está escrita de, maneira tal, a passar pelo compilador e obtermos o Bytecode dela.&lt;br&gt;
&lt;em&gt;Ah Rodrigo! e aquele erro de execução então? Eu não to executando o comando javac pra compilar? como é isso ai...?&lt;/em&gt;&lt;br&gt;
Os erros de execução são erros de lógica de escrita, quando você por descuido ou desconhecimento não cobre completamente um trecho do seu código e &lt;em&gt;durante a execução dele, isto é, após a classe já compilada&lt;/em&gt;, dá erro. A execução neste caso não é o do comando de compilação, mas sim de dentro da tua classe Java por quaisquer que sejam os motivos.&lt;/p&gt;

&lt;p&gt;Vejamos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class Programa {
    public static void main(String[] args) {
        System.out.println("Hello Programa!" + args[0]);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se fizermos essa alteração no nosso código a classe &lt;em&gt;compila&lt;/em&gt;? Siiiim. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ah cara, mas tá, eu sei que pra compilar usamos o &lt;em&gt;javac&lt;/em&gt;, mas tu comentou ai de executar, como que eu faço?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Bom, se você conseguiu compilar uma classe, a execução dela é bem simples, chamamos o famoso comando &lt;em&gt;java&lt;/em&gt;. Vamos ver ele usando o nosso exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java Programa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Diferente da compilação, não precisamos dizer agora que vamos executar uma classe .java ou usar o Bytecode .class, o comando java entende que onde ele é invocado, existe uma ou mais classes compiladas pra execução, ele passa a classe invocada (no nosso caso a Programa) e envia ela para quem? para a JRE que possui quem? A JVM, muito bem! &lt;br&gt;
O arquivo Programa.class então é recebido para a execução, porém neste momento...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out
of bounds for length 0
        at Programa.main(Programa.java:3)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E esse é um exemplo prático de um &lt;em&gt;erro de execução&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;- Rodrigo, mas que erro foi esse?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Essas, meus amigos, são as queridinhas Exceções ! Nesse exemplo, vemos a &lt;em&gt;ArrayIndexOutOfBoundsException&lt;/em&gt; uma das muitas exceções possíveis de serem lançadas durante uma execução.&lt;br&gt;
Ela está dizendo que em um dado Array, ou seja, numa lista de objetos, foi feita a tentativa de se obter um dado no índice 0, mas tal indice não existe e por isso a execução falha. &lt;/p&gt;

&lt;p&gt;Sacou a diferença?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* javac - comando de compilação (que pode gerar erros de compilação) 
* java - comando de execução (que pode gerar erros de execução) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por agora é isso pessoal, espero que estejam gostando da nossa jornada, se quiser tirar dúvidas, no meu perfil tem meu linktr com todas as minhas redes, sintam-se a vontade pra se conectarem comigo. Vamos juntos e até mais!! :)&lt;/p&gt;

</description>
      <category>security</category>
      <category>linux</category>
      <category>discuss</category>
    </item>
    <item>
      <title>JVM - Java é Verboso Mesmo? Parte I</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Mon, 09 Jan 2023 17:07:28 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-i-1fcc</link>
      <guid>https://dev.to/eguadorodrigo/jvm-java-e-verboso-mesmo-parte-i-1fcc</guid>
      <description>&lt;p&gt;A resposta de muitos devs mais seniores é: depende!&lt;br&gt;
O caminho até você se tornar capaz de deixar de ser um usuário da linguagem e passar a ser um criador dela não é um caminho simples ou pequeno e acima de tudo &lt;strong&gt;não haverá atalhos&lt;/strong&gt;; e isso vale para qualquer linguagem de programação...&lt;br&gt;
Por muito anos eu fui/sou usuário do Java, mas essa condição começou a me incomodar e a partir disso, eu tomei a decisão de dissecar o que eu puder dessa linguagem e assim, entender ela melhor, conseguir explicar conceitos aos que desejam entrar nesse universo que é o Java, aprender e juntos conseguirmos construir melhores produtos usando essa linguagem que está presente nos mais variados sistemas produtivos ao redor do globo.&lt;br&gt;
&lt;a href="https://dev.to/eguadorodrigo/e-a-certificacao-hein-3p6a"&gt;No artigo anterior&lt;/a&gt; falamos um pouco sobre o cenário macro - do que na minha visão é importante sabermos primeiro - antes de cair matando na linguagem sem nenhum preparo mínimo que seja...&lt;br&gt;
e hoje vamos falar um pouco do primeiro ponto: &lt;strong&gt;a JVM&lt;/strong&gt;.&lt;br&gt;
Na Alura, você encontra essas e outras explicações no curso &lt;a href="https://cursos.alura.com.br/course/java-primeiros-passos" rel="noopener noreferrer"&gt;Java Primeiros Passos&lt;/a&gt;, vamos lá?&lt;br&gt;
A JVM ou por seu nome completo Java Virtual Machine nasceu pela necessidade de haver um artifício comum entre os dispositivos da época e que pudesse - independente do dispositivo - se comunicar e fazer com que tais equipamentos operassem de forma a termos um único código fonte.&lt;br&gt;
Não vou entrar no detalhe da história e nomes dos responsáveis porque esse não é o foco, o foco aqui é apresentar de maneira mais didática possível o funcionamento do Java no dia-a-dia do usuário ou desenvolvedor, então bora seguir!&lt;/p&gt;

&lt;p&gt;Vamos então fazer um primeiro exemplo de código, que apenas imprime uma mensagem no terminal do usuário com o texto "Hello Programa".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class Programa{
    public static void main(String[] args){
        System.out.println("Hello Programa");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos ver esse diálogo&lt;br&gt;
&lt;em&gt;- O que você usa para escrever esse código, Rodrigo?&lt;/em&gt; &lt;br&gt;
&lt;em&gt;- Ah...qualquer editor de texto. Se tu usa Windows, o notepad, se usas o Linux, qualquer mousepad da vida, se tu usa o Mac (eu não sei o nome, não tenho Mac hehehe), mas você entendeu, né?! Desde que seja um editor de texto, tá valendo!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Show demais né? lembra que eu falei da necessidade de ser possível usar Java &lt;strong&gt;independente do dispositivo&lt;/strong&gt;? Então, sistemas operacionais também vai nessa pegada ai!! &lt;br&gt;
&lt;em&gt;- Então se eu escrevo um código num sistema ele vai valer pra outro?&lt;/em&gt; &lt;strong&gt;SIM&lt;/strong&gt;, graças a JVM isso é possível! E sendo assim, vamos dar uma olhada em como isso acontece por baixo dos panos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fscjyda6snmfvousg1hf1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fscjyda6snmfvousg1hf1.png" alt="Imagem com 4 retangulos mostrando a segregação da linguagem Java - Nome do arquivo, nome da classe, nome do método principal, código a ser executado. Abaixo dessa imagem, outro retangulo mostrando um código chamado Bytecode que representa o que será executado no que foi descrito anteriormente em linguagem que a JVM entenderá." width="575" height="1402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na imagem acima temos o nosso código fragmentado e particionado para exemplificar os pedaços que compõem o arquivo Programa.java e são eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nome do arquivo: Programa.java;&lt;/li&gt;
&lt;li&gt;Declaração de classe: public class Programa{};&lt;/li&gt;
&lt;li&gt;Declaração do ponto de entrada principal: public static void main(String[] args){}&lt;/li&gt;
&lt;li&gt;Trecho para execução: System.out.println("Hello Programa");&lt;/li&gt;
&lt;li&gt;Classe compilada: Programa.java ao ser compilada torna-se Programa.class&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ali vemos dois pedaços, um acima, que escrevemos e queremos executar, ou seja, a linguagem humana e abaixo a linguagem compilada ou Bytecode como é conhecida, que é a linguagem que a JVM entenderá para enviar em seguida aos dispositivos para quaisquer execuções que sejam possíveis dado o dispositivo alvo.&lt;/p&gt;

&lt;p&gt;Vamos em frente, num terminal qualquer você poderá executar o comando &lt;strong&gt;javac&lt;/strong&gt; para compilar seu arquivo e obter o Programa.class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javac Programa.java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas ao executar o comando acima, você pode topar como o seguinte problema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/bin/sh: javac: not found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e o desespero vir: &lt;em&gt;MAS O QUE HOUVE???? TÁ TUDO IGUAL AO QUE TU FEZ ALI EM CIMA, LINHA POR LINHA!!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;E pode ser que esteja mesmo, daí em algum momento pode surgir o questionamento:&lt;br&gt;
&lt;em&gt;- tá, mas então como eu executo esse código, bicho?&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;E essa resposta ficará para a parte dois desse artigo sobre a JVM, nos vemos lá, abraços!&lt;/p&gt;

&lt;p&gt;ps: pode mandar perguntas ou me seguir nas redes!! #VamoJunto&lt;/p&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>jvm</category>
    </item>
    <item>
      <title>E a certificação hein?</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Wed, 04 Jan 2023 16:33:35 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/e-a-certificacao-hein-3p6a</link>
      <guid>https://dev.to/eguadorodrigo/e-a-certificacao-hein-3p6a</guid>
      <description>&lt;p&gt;Olá pessoal, tudo bom?&lt;br&gt;
Antes de mais nada, feliz 2023! Que tudo de melhor aconteça com você &amp;lt;3&lt;br&gt;
Faz tempo que não venho por aqui, então peço desculpas, eu tô tentando me organizar pra melhorar meus estudos no Java e tenho feito bastante experimentos com conteúdos, podcast, código, cursos, aliando isso a jornada de trabalho e por isso a coisa tá meio devagar, mas parado, nunca!&lt;br&gt;
Pensando nisso, o que tô querendo executar agora por aqui é simples, tô iniciando uma leitura nova sobre o famigerado &lt;a href="https://education.oracle.com/pt_BR/cat%C3%A1logo-de-produtos-outrackpath-trackp_333/trackp_333" rel="noopener noreferrer"&gt;Oracle Certified Associate (OCA)&lt;/a&gt;, que é a certificação inicial pra quem quer se aprofundar no mundo Java, dito isso, a ideia é trazer essa leitura pra cá e trocarmos experiências sobre o meu modo de ver o que estudei, compartilhando com vocês essa visão, logo, vamos ter bastante pano pra manga, certo?! #Partiu rumo a certificação!&lt;br&gt;
Bom, o lance com a certificação (pra mim) é me condicionar a perseguir o que ela pede como requisito e usar esses requisitos como norte para aprender de forma mais direcionada sobre a linguagem Java (que é um universo bem grandão, fala ai?), mas isso pode valer pra qualquer outra certificação também, beleza?&lt;/p&gt;

&lt;h4&gt;
  
  
  Plano de estudo
&lt;/h4&gt;

&lt;p&gt;Aqui um material de apoio sobre plano de estudo produzido pela Zup, muito legal! recomendo a leitura: &lt;a href="https://www.zup.com.br/blog/plano-de-estudo-zup" rel="noopener noreferrer"&gt;https://www.zup.com.br/blog/plano-de-estudo-zup&lt;/a&gt;&lt;br&gt;
Você fazer um plano de estudo hoje é relativamente fácil, embora devemos ter uma cautela para não sair fazendo ele de qualquer forma. Então bora lá?&lt;/p&gt;

&lt;h4&gt;
  
  
  Teu direcionamento pra estudo, de onde vêm?
&lt;/h4&gt;

&lt;p&gt;Minha principal fonte de estudo hoje, bom...será da &lt;strong&gt;Alura&lt;/strong&gt;. &lt;a href="https://cursos.alura.com.br/formacao-certificacao-java" rel="noopener noreferrer"&gt;Aqui&lt;/a&gt; você será direcionado para a página da Formação Certificação Java, mas caso eu use as referências de algum outro material ao longo da jornada, fica tranquilo que eu também vou colocar as referências pra gente ir seguindo juntos a cada novo tópico, beleza? Ah! e esse texto aqui não será o final, ele vai ser orgânico pra sempre que possível, ele ir melhorando...&lt;/p&gt;

&lt;h4&gt;
  
  
  Por onde começo?
&lt;/h4&gt;

&lt;p&gt;Acho importante partimos do modelo conceitual pra depois a gente entender o que no detalhe o Java faz por debaixo de tudo. Hoje, se você fizer uma classe Java qualquer em um projeto, você sabe como ela se comporta e por onde ela vai até ser executada de fato? Vou te confessar que eu não, então vamos aprender juntos!?&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6af9gsdrpds4e8w0k1kv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6af9gsdrpds4e8w0k1kv.png" alt="Imagem que mostra vários círculos um dentro do outro, no total de seis e em cada um, uma descrição que será explicada a seguir" width="800" height="410"&gt;&lt;/a&gt;&lt;br&gt;
Fonte: &lt;a href="https://foojay.io/wp-content/uploads/2020/11/image2020-11-4_13-5-7.png" rel="noopener noreferrer"&gt;https://foojay.io/wp-content/uploads/2020/11/image2020-11-4_13-5-7.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Detalhando um pouco a imagem acima, no desenho vemos várias camadas e vou tentar explicar cada uma adiante no que a imagem descreve como &lt;strong&gt;hierarquia de uma aplicação Java e tempo de execução&lt;/strong&gt; - em tradução livre.&lt;br&gt;
Da camada mais interna à mais externa temos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JVM&lt;/strong&gt; - O núcleo da aplicação que é conhecida como Java Virtual Machine ou em tradução livre Máquina Virtual Java, ou simplemente pelo acrônimo JVM. 
É na JVM que acontece a mágica do Java que ficou conhecido pelo ditado Write Once Run Anywere ou com pelo acrônimo WORA. Em outros artigos vou detalhar melhor o que é a JVM no detalhe e como ela trabalha, mas por hora, ficamos com esse conceito. É pra ela que vai todas as classes Java e independente do sistema operacional, o código será executado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Java API libraries&lt;/strong&gt; - Nada mais são do que as bibliotecas básicas para que o ecossistema Java funcione de forma adequada; Ex.: java/javac/tools/applet e outras;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JRE o Runtime&lt;/strong&gt; - O runtime é a descrição do ambiente onde são concentradas as duas camadas anteriores (JVM + Java Lib) que são responsáveis pela de execução de um programa desenvolvido em Java. Então se você precisa executar um programa Java (um .jar da vida), por exemplo, da Receita Federal, você precisará ter um ambiente mínimamente preparado para essa execução e este ambiente é chamado de JRE runtime;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JDK&lt;/strong&gt; - Já o Java Development Kit ou JDK é o ferramental que todo desenvolvedor Java necessita. Essa camada é necessária para que o desenvolvedor seja capaz de criar suas próprias lógicas de programação, seja ela, a execução mais simples como uma soma de dois números, um hello world ou uma execução mais complexa como uma classe de controle (Controller) dentro de uma API;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apache etc. Open Source libraries&lt;/strong&gt; - É o que a gente conhece hoje como Framwork ou até mesmo uma biblioteca adicional para uma dada execução qualquer. Ex.: &lt;strong&gt;Spring Framework&lt;/strong&gt; ou a biblioteca para uso de logs na aplicação, o &lt;strong&gt;Log4J&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application&lt;/strong&gt; - É o produto final, um software, que foi desenvolvido e desenhado para cumprir um propósito. É muito comum dizermos que é o resultado de um desenvolvimento dado um cenário, seja ele uma pesquisa científica ou um fluxo de negócio dentro de uma empresa, por exemplo. E vejam, o produto pode ser uma biblioteca, um game, um app desktop, um web app, etc... Java é demais ☕&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deixo aqui um podcast que complementa o artigo acima: &lt;a href="https://open.spotify.com/episode/4hmVJDrRujimYx7BwqANl6?si=Kp_tHoFwTbyknwv1Z1X-9w" rel="noopener noreferrer"&gt;Podcast do Lambda3 - Ecossistema Java&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Teve dúvida? coloca aí nos comentários e vamos bater um papo! &lt;/p&gt;

&lt;p&gt;Abraços e até a próxima 🚀&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>[pt-BR] Será que isso é o básico? [parte III] - A API SOAP</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Wed, 31 Aug 2022 20:10:09 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/pt-br-sera-que-isso-e-o-basico-parte-iii-a-api-soap-4fg5</link>
      <guid>https://dev.to/eguadorodrigo/pt-br-sera-que-isso-e-o-basico-parte-iii-a-api-soap-4fg5</guid>
      <description>&lt;p&gt;Fala pessoALL,&lt;br&gt;
Tudo certinho? Espero que sim!&lt;br&gt;
Bom vamos continuar nosso papo sobre uns conceitos básicos que temos trazido? Vamos!&lt;br&gt;
Na &lt;a href="https://dev.to/eguadorodrigo/sera-que-isso-e-o-basico-parte-i-8pi"&gt;primeira publicação&lt;/a&gt; falamos um pouco da divisão que tem no universo do desenvolvimento de software. Já na &lt;a href="https://dev.to/eguadorodrigo/pt-br-sera-que-isso-e-o-basico-parte-ii-1gpk"&gt;segunda publicação&lt;/a&gt; trouxemos o conceito de APIs, o que são e pra que servem, vimos inclusive que há tipos diferentes de APIs e esse próximo texto vai se aprofundar exatamente nos tipos,então vamos lá!&lt;br&gt;
O SOAP de acordo com a &lt;a href="https://pt.m.wikipedia.org/wiki/SOAP" rel="noopener noreferrer"&gt;Wikipédia&lt;/a&gt; é: "um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída." e em tradução livre seria algo como &lt;strong&gt;P&lt;/strong&gt;rotocolo de &lt;strong&gt;A&lt;/strong&gt;cesso a &lt;strong&gt;O&lt;/strong&gt;bjeto &lt;strong&gt;S&lt;/strong&gt;imples, que tinha sua representação por meio de arquivos &lt;a href="https://pt.m.wikipedia.org/wiki/XML" rel="noopener noreferrer"&gt;XML&lt;/a&gt; que eram dispostos em servidores web, inicialmente de forma privada, mas com o advento da Internet este protocolo se popularizou bastante, foi tão disseminado que até hoje se encontra em servidores mundo afora, seja em ambiente produtivo ou em simuladores de APIs...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3p38auydg7aplmdu6kpg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3p38auydg7aplmdu6kpg.jpeg" alt="Página de fundo branco com código estruturado XML na cor vermelho e azul " width="502" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo de uma página XML que mostra a chamada de uma requisição de nome &lt;strong&gt;GetCDLStat&lt;/strong&gt; que repassa ao servidor os parâmetros  (&lt;strong&gt;year, fips e CSV&lt;/strong&gt;) e o &lt;strong&gt;GetCDLStatResponse&lt;/strong&gt; que é a resposta da requisição e dá como retorno uma URL que entrega um arquivo .CSV.&lt;/p&gt;

&lt;p&gt;E como é que essa comunicação era feita, Rodrigo? Bom, a imagem abaixo tenta esboçar esse cenário:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foz3cldavlb8yv9vwyno9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foz3cldavlb8yv9vwyno9.png" alt="Imagem que mostra por meio de figuras geométricas, linhas, setas e ícones, uma dada comunicação no padrão cliente-servidor do lado esquerdo há o cliente, acima o registry (internet/intranet) e do lado direito o servidor" width="625" height="491"&gt;&lt;/a&gt;&lt;br&gt;
No lado esquerdo temos um dado cliente o &lt;strong&gt;Service Requester&lt;/strong&gt;  (lembrando que cliente é quem pede algo, que solicita alguma informação, quem requisita alguma coisa). Neste exemplo temos o &lt;strong&gt;Service Broker&lt;/strong&gt;, que não vamos nos aprofundar, mas está aí para fazer uma especie de validação do que está sendo requisitado e se a requisição irá encontrar seu correspondente num dado servidor. Em seguida, há o &lt;strong&gt;Service Provider&lt;/strong&gt; que é o nosso servidor da informação, o provedor da informação, quem cede o dado ao requisitante, ou seja, ao cliente.&lt;br&gt;
Notem que entre o cliente e o servidor há o SOAP, mas que há outro carinha aí no meio da jogada, o famigerado &lt;strong&gt;WSDL&lt;/strong&gt;!&lt;br&gt;
Segundo a &lt;a href="https://www.ibm.com/docs/pt-br/integration-bus/10.0?topic=services-what-is-wsdl" rel="noopener noreferrer"&gt;IBM&lt;/a&gt;: "WSDL é uma notação XML para descrever um serviço da web. Uma definição WSDL indica a um cliente como compor uma solicitação de serviço da web e descreve a interface que é fornecida pelo provedor de serviços da web."&lt;br&gt;
Trocando em miúdos, é uma representação que te mostra quais informações estão disponíveis em um dado servidor e o que é preciso - pra você como cliente - enviar como informação, para obter do servidor uma resposta satisfatória à tua requisição. É o que chamamos hoje em dia de contrato.&lt;/p&gt;

&lt;p&gt;Bom galera, espero que tenham curtido esse conteúdo hein?&lt;br&gt;
E você, já mexeu com WSDL, com SOAP, conta aqui pra gente ! &lt;br&gt;
Ah! Conta também o que tu acharia interessante ver por aqui, me ajuda a criar esse conteúdo que é nosso, até o próximo protocolo pessoal,valeu demais!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>motivation</category>
    </item>
    <item>
      <title>[pt-BR] Será que isso é o básico? [parte II]</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Wed, 17 Aug 2022 04:07:00 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/pt-br-sera-que-isso-e-o-basico-parte-ii-1gpk</link>
      <guid>https://dev.to/eguadorodrigo/pt-br-sera-que-isso-e-o-basico-parte-ii-1gpk</guid>
      <description>&lt;p&gt;Faaaala galera, todos bem? Espero que sim! O texto de hoje vai ser um pouco mais extenso... &lt;br&gt;
No post &lt;a href="https://dev.to/eguadorodrigo/sera-que-isso-e-o-basico-parte-i-8pi"&gt;anterior&lt;/a&gt; a gente comentou sobre quem é você no rolê da firma, pontuando alguns dos perfis existentes dentro do desenvolvimento de software...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ogkvkdf7uc2i7g13cyr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ogkvkdf7uc2i7g13cyr.png" alt="Imagem mostrando traços em preto e branco que desenham um rosto com expressões de reprovação" width="679" height="452"&gt;&lt;/a&gt;&lt;br&gt;
"Ah Rodrigo, mas não tem só isso..." &lt;br&gt;
Verdade! eu disse que foi um apanhado bem específico da área onde eu atuo que é o desenvolvimento de software; mas existem várias descrições dentro da área de TI, do desenvolvimento ou fora dele, inclusive pra designar um mesmo cargo (haja sigla, em português, em inglês, uns bem auto descritivo, outros nem tanto).&lt;br&gt;
Mas ainda falando do texto anterior eu dei introdução a uma palavrinha - e vou puxar a sardinha pro meu universo, o Backend - que acho que é legal a gente detalhar um pouco hoje:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API - Application Programming Interface - O que é, como se reproduzem, o que comem? Calma... &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmc6zkwlims9xz9z5uecx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmc6zkwlims9xz9z5uecx.jpeg" alt="Imagem com fundo de uma mesa de madeira, com vários dispositivos como mouse, celular e computador. Acima disso vários círculos em branco ligados uns aos outros e no centro um círculo maior com o texto API nele" width="771" height="398"&gt;&lt;/a&gt;&lt;br&gt;
A interface de programação de aplicação (API do inglês) nada mais é do que uma maneira que se criou de permitir a comunicação entre sistemas, usando variados tipos de protocolos (galera de redes e de circuitos tão ligados, né?) , isso vem bastante herdado do conceito de redes de computadores, protocolos de comunicação, envio/recebimento de pacotes e como cada unidade computacional pode ser integrada a um conceito maior e construir um novo conjunto de serviços. &lt;br&gt;
Uma das primeiras interfaces visuais, foram as telas verdes com cursores de entrada de dados que piscavam numa tela que lembrava muito as TVs  de cubo que a gente ainda vê por ai, eu já tive uma dessas TVs e vocês? Hahaha&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkzeikrgkwcfccvyolro.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkzeikrgkwcfccvyolro.jpeg" alt="#pratodosverem imagem de um dos primeiros monitores criados, chamados monocromáticos. A imagem mostra um equipamento que sugere ser um computador pessoal, variando entre a cor branca e amarelo denotando o tempo de vida do equipamento é sua tela em letras verdes" width="651" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E com a evolução dos conceitos dentro da computação, as APIs hoje são representações abstratas de sistemas que produzem algum tipo de interface (meio que permite que execuções internas possam ser consumidas externamente) que perpetuam o conceito de envio/recebimento mas agora não apenas dos pacotes e não apenas por uma rede privada, mas agora também pela imensidão da Internet. Essa troca segue outro, o conceito de cliente/servidor, onde o que chamamos de &lt;em&gt;cliente&lt;/em&gt;, ou seja, outro sistema ou outra API que se deseja se comunicar com quem serve/disponibiliza a informação &lt;em&gt;o servidor&lt;/em&gt;. Essa comunicação tem por objetivo suprir um dado fluxo de negocio. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftyyq00cu6iz66nhgj650.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftyyq00cu6iz66nhgj650.jpeg" alt="Imagem de fundo branco mostrando mulher com feições de confusão" width="275" height="183"&gt;&lt;/a&gt;&lt;br&gt;
"Caramba Rodrigo, buguei aqui, como assim?" &lt;/p&gt;

&lt;p&gt;Vamos a um exemplo prático: Eu estou desenvolvendo uma API que precisa ter em uma das rotinas os dados de endereço dado um CEP qualquer. Neste instante eu posso fazer uma integração a outra API, por exemplo, a dos correios que possui detalhamento do endereço passando como parâmetro o CEP do lugar, neste momento eu posso criar esse mecanismo de integração entre as interfaces do cliente/servidor, pegando o CEP e usando para consumir a API dos correios e receber como resposta os detalhes do dado, como rua, cidade, estado, se a rua é uma avenida ou uma travessa... &lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl07202urxe7gukjxrfms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl07202urxe7gukjxrfms.png" alt="Imagem em fundo branco que exibe figuras geométricas ligadas entre si. A primeira representa um site ou sistema que está representado por um retângulo com um texto ao centro escrito " width="360" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deu pra entender melhor o conceito? &lt;br&gt;
Como esse tópico é um pouco mais extenso, pra fazermos um corte pra uma parte III, fica aqui algumas opções de protocolos de APIs que existem hoje por aí... &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API SOAP&lt;/li&gt;
&lt;li&gt;API REST&lt;/li&gt;
&lt;li&gt;API WEBSOCKET&lt;/li&gt;
&lt;li&gt;API RPC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na próxima podemos detalhar cada uma delas, beleza, que tal...? E você gostou desse conteúdo? Que tipos de APIs você já trabalhou, quais os desafios que encontrou, me conta aí nos comentários?!&lt;br&gt;
Até a próxima pessoal! &lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>motivation</category>
    </item>
    <item>
      <title>[pt-BR] Será que isso é o básico? [parte I]</title>
      <dc:creator>Rodrigo</dc:creator>
      <pubDate>Tue, 09 Aug 2022 19:01:00 +0000</pubDate>
      <link>https://dev.to/eguadorodrigo/sera-que-isso-e-o-basico-parte-i-8pi</link>
      <guid>https://dev.to/eguadorodrigo/sera-que-isso-e-o-basico-parte-i-8pi</guid>
      <description>&lt;p&gt;Fala pessoALL!&lt;br&gt;
Bem, nesta primeira empreitada sobre compartilhar conhecimento, vou tentar fazer uns apanhados sobre o que sei sobre programação. A pegada aqui vai tentar ser informal a principio pra todo mundo ir ficando a vontade e assim a gente ir crescendo juntos e se aprofundando nas teorias e práticas de programação.&lt;br&gt;
Me ajudem nessa? Aqui ninguém aprende nada só, então vamos juntos que vamos mais rápido!&lt;br&gt;
Não fiz um apanhado de tópicos pra trabalhar, vou então falar do teórico perfil de um dev no dia-a-dia...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qual linguagem te atrai?&lt;/strong&gt;&lt;br&gt;
Isso é legal já ter uma noção, pois isso direciona teu estudo, já que na nossa área os assuntos são infinitamente fragmentados, então aqui vai o primeiro toque: &lt;strong&gt;Escolha um caminho!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc2qqg8g7ondtk8dzsu4b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc2qqg8g7ondtk8dzsu4b.jpg" alt="#pratodosverem Em um fundo de cor rosa existem balões, onde cada balão têm uma linguagem de programação preenchendo o seu espaço interno" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dica do Dev do amor: Dá uma olhada nelas, youtube, github, fóruns, documentação oficial pra ver como elas são de fato...assim, quando bater os olhos, quem sabe não role o amor a primeira codada? hahahaha&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Que linguagens são essas?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Quando a gente fala de desenvolvimento, quais perfis mais se destacam?&lt;br&gt;
Então, bem simplificado... &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1grcpamlc6jkgn0p7tn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1grcpamlc6jkgn0p7tn.png" alt="#pratodosverem é uma imagem de fundo branco que mostra três componentes interligados representados por setas, o servidor de aplicação (representado por três retangulos empilhados como se fosse uma torre de som em preto e branco) com uma seta de duas pontas, de um lado está o servidor e de outro a representação de uma API - Interface de programação de aplicação - representada pelo texto " width="570" height="480"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Backend - O indivíduo que está "por trás" do processo de desenvolvimento&lt;/strong&gt;&lt;br&gt;
Esse perfil de desenvolvedor é aquele que gosta mais de estar envolvido em rotinas por de trás dos panos, não curtem muito desenhar uma janela, fazer um estilo de página com CSS, construir um produto responsivo, enfim aquele que gosta de criar os mecanismos que não ficam destacados pro usuário final, é a pessoal que constrói uma API pra ser consumida ou que consuma outra API disponível... é quem garante que os sistemas visuais (janelas, app, integrações entre sistemas) conseguem conversar entre si.&lt;br&gt;
Essa é a galera do Java, do Python, do NodeJS, do DotNet...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpt9ko4tdvg6entjkt0mn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpt9ko4tdvg6entjkt0mn.png" alt="#pratodosverem é uma imagem de fundo branco que mostra três componentes interligados representados por setas, o servidor de aplicação (representado por três retangulos empilhados como se fosse uma torre de som em preto e branco) com uma seta de duas pontas, de um lado está o servidor e de outro a representação de uma tela de computador em preto e branco. O servidor tem outra ligação, mas agora com uma representação de um celular (representado por uma imagem da tela de um smartphone também em preto e braco), novamente uma seta de ponta dupla indicando uma comunicação entre os dois pontos" width="616" height="462"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Frontend - O indivíduo que está "à frente" do processo de desenvolvimento&lt;/strong&gt;&lt;br&gt;
Esse perfil de desenvolvedor é aquele que agora sim, gosta de usar efeitos, saca bem sobre alinhamentos, estuda estruturas visuais, o que precisa pra que um produto seja responsivo, aquela pessoa que come CSS/SCSS no café da manhã, aquele que vê como plugar as coisas numa área visual pra agregar valor pro cliente.&lt;br&gt;
Essa já é a galera do JavaScript, do TypeScript, do CSS, do HTML, do Angular, do VueJS... &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F821zqonjdyng9w6mbr8d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F821zqonjdyng9w6mbr8d.png" alt="Imagem mostrando dois personagens de Dragon Ball GT, uma série de desenho japonês que estão num movimento chamado fusão. Alusão a união do backend e frontend, dois garotos com os corpos inclinados tentando unir os dedos indicadores um do outro" width="800" height="356"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Fullstack - O indivíduo que atua em ambas&lt;/strong&gt; &lt;br&gt;
Esse perfil é o Gotenks do DBZ, é a fusão dos dois primeiros perfis...é aquele que consegue e gosta de permear pelas duas nuances do desenvolvimento...&lt;br&gt;
Aqui é a galera que pega o que vier... &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DBA - Database Administrator ou Administrador de banco de dados&lt;/strong&gt;&lt;br&gt;
Gente o DBA é o perfil que pode ser considerado um backend, mas digamos que mais especializado ou seja, ele foca em um único tópico, nesse caso, o desenvolvimento de banco de dados. Como otimizar queries, consultas, tunning de indexação de tabelas em relação a bancos relacionais...&lt;br&gt;
Aqui pode ser a galera que usa SQL, PLSQL, TSQL...&lt;/p&gt;

&lt;p&gt;Espero que pra um primeiro texto vocês tenham curtido... e aí, quem é tu no rolê da firma? hahaha&lt;br&gt;
Agora é com vocês, o que faria sentido trazer aqui pra vocês lerem?&lt;br&gt;
Eu ia curtir demais esse feedback, que daí eu estudo e trago aqui pra gente debater, o que tu me diz? Diz aí nos comentários...&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>motivation</category>
    </item>
  </channel>
</rss>
