Java from Scratch — parte 1
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 ?
- 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.
- 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.
- 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.
- 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
- JAVA (LINGUAGEM DE PROGRAMAÇÃO). In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia Foundation, 2019. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Java_(linguagem_de_programa%C3%A7%C3%A3o)&oldid=57044639>. Acesso em: 26 dez. 2dir019.
- ORACLE DOCS — Differences between Java EE and Java SE
- How to Install JDK 13 (on Windows, macOS & Ubuntu) and Get Started with Java Programming
- Understanding public static void main(String[] args) in Java
Artigo original cedido pelo autor em https://siga0984.wordpress.com/2020/02/10/java-from-scratch-parte-01/