DEV Community

Rodrigo
Rodrigo

Posted on • Edited on

JVM - Java é Verboso Mesmo? Parte I

A resposta de muitos devs mais seniores é: depende!
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 não haverá atalhos; e isso vale para qualquer linguagem de programação...
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.
No artigo anterior 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...
e hoje vamos falar um pouco do primeiro ponto: a JVM.
Na Alura, você encontra essas e outras explicações no curso Java Primeiros Passos, vamos lá?
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.
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!

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".

public class Programa{
    public static void main(String[] args){
        System.out.println("Hello Programa");
    }
}
Enter fullscreen mode Exit fullscreen mode

Podemos ver esse diálogo
- O que você usa para escrever esse código, Rodrigo?
- 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!

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

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á.

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:

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

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.

Vamos em frente, num terminal qualquer você poderá executar o comando javac para compilar seu arquivo e obter o Programa.class:

javac Programa.java
Enter fullscreen mode Exit fullscreen mode

Mas ao executar o comando acima, você pode topar como o seguinte problema:

/bin/sh: javac: not found
Enter fullscreen mode Exit fullscreen mode

e o desespero vir: MAS O QUE HOUVE???? TÁ TUDO IGUAL AO QUE TU FEZ ALI EM CIMA, LINHA POR LINHA!!

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

E essa resposta ficará para a parte dois desse artigo sobre a JVM, nos vemos lá, abraços!

ps: pode mandar perguntas ou me seguir nas redes!! #VamoJunto

Top comments (0)