Java from Scratch — parte 1

Rafael Chinaglia
TOTVS Developers
Published in
8 min readMar 11, 2021

Hoje vamos tratar de um assunto muito importante, que diz respeito à Java.

Júlio Wittwer

O autor deste artigo é o nosso dev Júlio Wittwer, que é Engenheiro de pesquisa e desenvolvimento de Software, analista/programador, entusiasta da linguagem AdvPL e motociclista.

Introdução

Dentre as linguagens de programação de mercado, Java definitivamente possui uma boa fatia de mercado, por muitas razões — Orientação a objeto, relativa simplicidade de implementação, multi-plataforma (inclusive sistemas embarcados e celulares), etc. A alguns meses, resolvi pesquisar com mais ênfase sobre o que é o Java e como funciona. O universo é amplo, SDKs, IDEs, JVM, JRE, J2EE, e por aí vai. Iniciando nesse post, vou compartilhar o que e como eu estou descobrindo mais sobre essa linguagem.

Java from Scratch

Antes de mais nada, visto de uma forma bem simplista, Java é uma linguagem orientada a objetos, que possui uma ampla base de componentes nativos, e uma infinidade de componentes adicionais para múltiplas aplicações. Uma aplicação em Java não gera um arquivo “executável”, mas sim um ByteCode — um código de máquina interpretado por uma máquina virtual (no caso, a JVM — Java Virtual Machine). Logo, um código simples em Java pode ser executado em qualquer equipamento ou plataforma que o seu “interpretador/executor” (JVM) seja homologado.

Embora existam uma infinidade de IDEs (Integrated Development Environment — ou Ambiente Integrado de Desenvolvimento), visando facilitar e padronizar os processos de desenvolvimento, depuração e distribuição (deploy) das aplicações, a criação de aplicações simples em Java possuem requisitos mínimos que, num momento inicial, não dependem de nenhuma IDE. Logo, a abordagem inicial sobre o assunto será extremamente minimalista, apenas para entender os componentes envolvidos e como eles se integram. Vamos começar pelo JRE (Java Runtime Environment) e JDK (Java Development Environment).

  • JRE — Ambiente com os aplicativos necessários para executar um programa Java.
  • JDK — Ambiente com os aplicativos necessários para desenvolver (compilar e debugar) um programa Java.

Se você vai desenvolver uma aplicação Java, você precisa instalar ambos. Para executar uma aplicação Java, você somente precisa do JRE.

Plataformas de execução e desenvolvimento do Java

Existem 4 “plataformas” de execução de aplicações Java : SE (Standard Edition), EE (Enterprise Edition), ME (Micro Edition ) e JAVAFX . Cada uma delas possui suas diretivas de licenciamento, aplicabilidade, capacidades , versionamento e finalidades distintas. Java é ao mesmo tempo uma linguagem e uma plataforma.

Os testes e exemplos desse post partem das funcionalidades existentes na plataforma Java Standard Edition Versão 8 (ou apenas JAVA SE 8). Versões mais novas do Java trazem novos recursos, mas ele possui uma compatibilidade de execução deveras interessante: Uma aplicação java compilada usando um JDK SE 8 roda sem problemas em um ambiente com JRE 8 ou superior. Embora o ciclo de vida do Java SE8 8 esteja “no final”, eu optei por iniciar os estudos nela.

Primeiros Passos

Ao entrar no GOOGLE ou no seu engine de busca favorito, e pesquisar por “JAVA SE JDK 8 DOWNLOAD”, você vai encontrar o site da ORACLE — https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html — onde você pode baixar a versão do instalador do JDK 8 para Windows, RPM para Linux, entre outras plataformas.

Dependendo da distribuição do Linux onde você quer usar o JDK, você pode usar o próprio gerenciador de pacotes e atualizações do Linux para pegar a versão mais atualizada ou aquela que você deseja instalar no seu ambiente.

Instalando o JDK no Windows

Eu comecei pelo JDK 8, mas o procedimento é basicamente o mesmo para qualquer versão. Vá para a página de downloads da Oracle (https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html), aceite os termos de licenciamento e baixe o JDK para Windows 64 bits:

Quando eu solicito o Download, eu sou direcionado para uma página de login da Oracle, como eu já tinha criado uma conta — gratuita, de desenvolvimento — na Oracle, após o login o download é iniciado. Finalizado o download, execute o instalador (no caso, o arquivo baixado “jdk-8u241-windows-x64.exe“). Normalmente o Windows pede uma confirmação de execução do instalador, basta conferir se o instalador é da Oracle mesmo, e confirmar. Então, a seguinte tela será exibida:

Basta clicar em “NEXT” para continuar a instalação.

Pode manter as configurações default, e “NEXT”

Neste momento o JDK será instalado, e ao término da instalação, a tela abaixo será exibida:

Ao clicar no botão “NEXT STEPS”, será aberta a página “https://docs.oracle.com/javase/8/docs/” no navegador padrão configurado no seu ambiente. Ela contém tudo e mais um pouco sobre o Java SE 8

Para finalizar o instalador, basta clicar em “CLOSE”.

O que foi instalado

Se abrirmos a pasta onde o JDK foi instalado, devemos encontrar a seguinte estrutura de diretórios:

bin
include
jre
lib

A pasta BIN possui vários utilitários do JDK, entre eles o que nos interessa para o momento: JAVAC.EXE — o compilador do Java. A pasta INCLUDE possui alguns headers em C/C++ para alguns tipos de integrações, a pasta JRE possui o ambiente de execução do Java, divididos nas pastas JRE/BIN e JRE/LIB. Por hora, o que nos interessa na JRE é p aplicativo JAVA.EXE — o “Executor” de programas

Etapas após a instalação

Como por hora a ideia é acessar o java sem nenhuma IDE, precisamos criar algumas variáveis de ambiente para o JDK e a JRE funcionarem certinho. Por hora, para não mexer nas configurações do Windows, podemos criar um arquivo de lote (BAT) para setar o ambiente de uso do Java, por exemplo:

@echo off
SET PATH=C:\Program Files\Java\jdk1.8.0_241\bin;%PATH%
SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0_241
SET JDK_HOME=C:\Program Files\Java\jdk1.8.0_241
SET JRE_HOME=C:\Program Files\Java\jdk1.8.0_241\jre
SET CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib
Echo Variaveis de ambiente do JAVA definidas.
Echo * Versao do JVM / JRE
java -version
echo * Versao do Compilador JAVA
javac -version
Echo.

Para realizar meus testes, eu criei uma pasta chamada C:\Projetos\Java , e dentro dela salvei o script acima com o nome de setjava.bat. E, para deixar o acesso ao prompt de comando “mais fácil”, criei um atalho no Desktop com o comando “CMD /k c:\Projetos\Java\setjava.bat”, colocando o nome do atalho de “Java CMD”, e depois alterei a propriedade do atalho para abrir direto na pasta “c:\Projetos\Java“.

Primeiro programa — HELLO WORLD

O primeiro desafio foi fazer um programa o mais simples possível, apenas para confirmar que o compilador e o executor estão “de acordo” — o famoso “Helo World”, apenas mostrar uma mensagem ( texto puro , sem janela ) no prompt de comando…. vamos ao fonte:

class HelloWorld

{

public static void main(String args[])

{

System.out.println("Hello, World");

}

}

Pontos importantes :

  • JAVA é CASE-SENSITIVE : Letras maiúsculas e minúsculas são diferentes …
  • Use um editor de textos simples, pode ser o NOTEPAD do Windows mesmo.
  • Salve o arquivo com o nome de “HelloWorld.java”, dentro da pasta c:\Projetos\Java

Agora, com o arquivo “HelloWorld.java” criado no disco, vamos executar dois comandos:

javac HelloWorld.javajava HelloWorld

O resultado destes comandos, deveria ser o seguinte:

A chamada do compilador não deve mostrar nada, nada mesmo. Se não mostrou nada, a compilação foi feita com sucesso, e agora você deve encontrar no disco um arquivo chamado “HelloWorld.class”.

E, para executar a classe que acabamos de compilar, usamos o comando “JAVA”, informando apenas o nome do arquivo que contém a classe, sem informar a extensão do arquivo. E, como resultado, devemos ver a mensagem “Hello, World” sendo mostrada no console.

Por dentro do que houve

Primeiro, a compilação … vamos rodar a compilação novamente, porém acrescentando o parâmetro “-verbose” … o comando fica assim:

javac HelloWorld.java -verbose

E, agora sim podemos ver na tela uma parte do que o compilador precisou usar para gerar o bytecode no arquivo “HelloWord.class” :

Eu sei, as letrinhas ficaram pequenas … mas basicamente o compilador verificou as variáveis de ambiente, para buscar nas pastas configuradas tudo o que ele precisava saber para validar se o nosso HelloWorld.java está escrito “certinho”, e gerar a classe compilada no arquivo “HelloWorld.class”.

OS PRIMEIROS PORQUÊ(S)

Bem, agora que o primeiro programa super-simples funcionou … por que ele precisa ser escrito exatamente dessa forma ?

  1. A sintaxe de um fonte em Java é similar ao C++. Case sensitive, escopo de código entre chaves ({ }), o ponto-e-vírgula (;) é usado para indicar o final de uma instrução — ou final de linha.
  2. Cada fonte em java DEVE SER uma CLASSE. E o nome do fonte deve ser o mesmo nome da classe. É uma definição e comportamento da linguagem.
  3. O método implementado deve ser “public static void main(String args[])”, no nosso caso, pois essa é a forma de declarar o método “main”, um método reservado do Java para ser o inicio da execução de um aplicativo. Ele é “public”, pois deve ser visível para componentes fora da classe declarada, “static” pois não depende do instanciamento direto da classe, “void” pois não tem retorno, e por ser “main”, ele deve/pode receber um array de strings.
  4. Como tudo no Java é orientado a objetos, mostrar uma mensagem em uma aplicação de linha de comando — como a do nosso exemplo — é feito pela classe System — uma classe do Java que contém métodos para interagir com entrada e saída de dados — mais especificamente stdin e stdout ( conceito e implementação originalmente em C para entrada e saída de dados , também usado no Unix/Linux). Quer ver tudo o que a classe System faz ? Veja a documentação dela no link https://docs.oracle.com/javase/8/docs/api/java/lang/System.html

Esse CLASS roda no LINUX ?

Sim, o mecanismo de entrada e saída de dados das aplicações executadas em linha de comando no CMD (Windows) ou BASH (Linux) é a mesma. Logo, eu posso pegar uma máquina Linux qualquer, que tenha a JRE 8 ou superior instalada, copiar apenas o arquivo “HelloWorld.class” ( bytecode compilado ) e executá-lo ! Foi exatamente o que eu fiz com o meu Ubuntu 16 — onde previamente eu já havia instalado um JDK:

Conclusão

Por hora, a introdução já ganhou um “volume” considerável, e o que acabou de nascer foi apenas um programa que mostra uma mensagem fixa na tela, feito para ser executado por um interpretador de comandos. Usar o JAVA como primeira linguagem de programação vai dar um bom trabalho, pois você vai ter que conhecer e entender o conceito e a implementação do conceito de orientação a objetos dele. Mas não esquenta a cabeça agora … a gente chega lá, um passo por vez

Agradeço novamente a todos pela audiência, e lhes desejo TERABYTES DE SUCESSO

Referências

Artigo original cedido pelo autor em https://siga0984.wordpress.com/2020/02/10/java-from-scratch-parte-01/

--

--

Rafael Chinaglia
TOTVS Developers

Jornalista/ Editor do iMasters, Gestor de projetos e produtor de conteúdo para TOTVS Developers.