DEV Community

loading...
Cover image for JVM por debaixo dos panos #1 - O que é o Java?

JVM por debaixo dos panos #1 - O que é o Java?

Ana Beatriz
Software Engineer, Java Full Stack Developer, Tech Speaker and Comunity Co-Organizer
Updated on ・4 min read

☕ Bem Vindxs à série de artigos sobre Java Virtual Machine!

JVM por debaixo dos panos - O que é o java?

Neste artigo vamos abordar contextualização, acredito que saber da história e de outros vieses é importante antes de partir direto a parte técnica
O conteúdo é bem extenso e técnico, a meta é deixar o mais objetivo e acessível possivel ☺️

🤖 Os processos de compilamento

  • Tudo começa com a história dos computadores de linguagem de alto nível onde o mesmo só entendia micro instruções
  • sabe o código que você escreve? O seu computador não entende ele, nunca entendeu... sim eles são bem burrinhos!
  • Na verdade o seu computador entende o código executável
  • Vamos pegar como exemplo uma linguagem "antiga", como Assembly, veja a arquitetura:

  • Basicamente tem um "Hello World", que passa por um tipo de compilador que converte o código em binário

compilador antigo

  • Mas isso é complexo demais, pensa bem... um sistema operacional vai ler apenas o que foi compilado nele, se for rodar esse mesmo código num MACOX por exemplo teria que fazer tudo de novo!!
  • Precisava- se de otimização de processos e tempo

👽 Processo de compilamento em C

  • Bastante gente tem o preconceito com C né, mas você sabia que Java foi baseado em C?
  • Por que a linguagem C foi revolucionária pra época onde se tornou uma multiplataforma ou seja tem um compilador para cada Sistema Operacional(SO)
  • O processo de compilamento em C é bem simples, veja na arquitetura:

compilador em C

  • Vemos que o código fonte que eu programo em C ele é levado para dois processos que separadamente irão transformar um código executável para cada sistema operacional :D

  • Foi à partir dessa ideia de multiplataforma que nasceu o conceito da JVM do java...

    Antes de partimos pra história, o que aprendemos até aqui:
    Código fonte: é a sequência de comandos que eu, pessoa programadora escrevo.
    Código executável: é a sequência de comandos que o computador entende.
    Linguagem C é multiplataforma.
    Java foi baseado em C

📜 Um breve história sobre o Java

  • 1990: Sun Microsystems criou um projeto liderado pelo James Gosling baseado em C++ com o intuito de criar uma tecnologia onde diferentes dispositivos diferentes pudessem se comunicar entre si. Até então não existiam microprocessadores então imagina o quão revolucionário seria este projeto!
  • e assim formou-se o Green Team que criaram sua própria linguagem o Green Talk
  • A linguagem foi rebatizada para OAK (Carvalho)
  • E assim criou-se o Star Seven
  • 1992: O projeto Star Seven acabou ficando engavetado pois não houveram investimento das empresas, eu acredito que por ser muito revolucionário
  • O principal core do star seven era interatividade, sendo assim, advinha quem se interessou pela linguagem que foi programado o star seven?
  • Tim Berners-Lee, o próprio, na época ele estava desenvolvendo o HTML, que tinha como principal função a interatividade com o usuário em tempo real (o que não existia ainda)
  • Foi assim que se juntou a gema e a clara (piada ruim 🤦‍♀️)
  • Assim surgiu o WebRunner que permitia INTERATIVIDADE
  • Sendo assim agora era só mudar o nome da linguagem pois Oak já existia no mercado, foi quando Gosling reuniu seu grupo e rebatizaram para JAVA, pois é um termo que os americanos têm quando querem café bem forte, Java Coffee, já que nós programadores só funcionamos a base do café, nada mais justo Essa história do surgimento do nome tem outras versões, nunca saberemos ao certo eu acho, quem sabe um dia eu tenha a oportunidade de falar com alguém que era da Sun Microsystems
  • Beleza, entedemos a história linda do Java, legal né?
  • Agora só falta entender o por que da JVM...

☕ Compilamento do código com a JVM

  • Observe a arquitetura abaixo:
    compilador java

  • O código depois de feito passa pelo Java Compiler ou JavaC -> Depois disso dentro do JavaC o seu código fonte é convertido para Bytecode -> A JVM lê esse Bytecode e converte para um código executável.

  • A sacada da JVM é o BYTECODE, a linguagem da JVM, possibilitando assim um multiversionamento para qualquer sistema operacional

  • E o mais legal de tudo isso é que quando você baixa seu Java na sua máquina a JVM já vem junto, não precisa sair procurando (vem a JVM e mais um monte de outras funcionalidades, vale lembrar).

Esse conceito de Write One Run Anywhere possibilita que várias outras linguagem rodem na JVM, principalmente às linguagens da modinha

linguagens que rodam na jvm

E aqui terminamos a primeira parte introdutóra sobre JVM! Espero que tenha sido de grande valia, prometo postar a parte 2 em breve

Se você quiser ler esse mesmo artigo, em inglês, vai estar no meu site:http://bit.ly/jvm-under-the-hood-1

Discussion (8)

Collapse
joseaugustodemelo profile image
José Augusto de Melo

Texto de fácil leitura!
Você escreveu de forma leve um assunto que não é fácil de ser entendido e passado o conhecimento adiante.
Gostei muito e farei uso da mesma forma de abordagem com os meus alunos do nível médio!
Um abraço e obrigado!

Collapse
anabneri profile image
Ana Beatriz Author

Opaaaa valeuzão

Collapse
brunooliveira profile image
Bruno Oliveira

Muito bom ver conteúdo de qualidade em português!!

Collapse
anabneri profile image
Ana Beatriz Author

Fico feliz em ler isso 😊😊 obrigada, fica de olho que tem muito mais coisa pra falar hahha

Collapse
brunooliveira profile image
Bruno Oliveira

Fico! Eu escrevo em ingles mais eheh :)

Thread Thread
anabneri profile image
Ana Beatriz Author

Quiser dar uma olhada neste mesmo artigo em inglês: bit.ly/jvm-under-the-hood-1, aceito feedbacks

Collapse
giuliamaia2 profile image
Giulia Maia Costa

Parabéns Ana! To ansiosa pelos próximos artigos, muito bom ver uma pessoa que eu admiro tanto crescendo profissionalmente :)

Collapse
rubenssleme profile image
Rubens Leme

Parabéns Ana Beatriz, excelente artigo.