Compilando e Executando um Arquivo Java pela Linha de Comando

Neste tutorial você aprenderá a compilar e executar um arquivo Java através da linha de comando do Windows, Linux ou Mac. Mas antes de tudo, vamos entender o que é esse processo e como funciona.



Obs.: é importante ter o JDK instalado em seu computador e as variáveis de ambiente configuradas devidamente.

Por que Compilar e Executar dessa Forma?

Esta é uma pergunta importante. Quando começamos a aprender a complexa linguagem de programação Java por meio de IDEs (Integrated Development Environment) como o NetBeans ou Eclipse, não há necessidade de se realizar esse processo manualmente já que ele pode ser feito ao pressionar um botão na tela ou com uma combinação de teclas. Mas, da mesma forma que esse processo automático pode ser bom por um lado, também pode ser ruim por outro. As IDEs vão autocompletar seu código — se você permitir, claro — além de fazerem outros ajustes automáticos, que seria interessante você fazer durante o processo de aprendizagem até a fixação do conceito.

Imagine a seguinte situação: você está em uma entrevista de emprego e precisa escrever no papel um código em Java. Mas você acaba não se lembrando da sintaxe dos comandos, se é System.out.println(), system.out.printLn() ou System.Out.println(). Imagine também uma outra ocasião em que há em uma certa máquina o JDK (Java Development Kit) instalado, mas a máquina está sem acesso a internet e o NetBeans e Eclipse não estão funcionando — isso, claro, em uma situação hipotética —. Se o JDK está instalado e foram configuradas as variáveis de ambiente de forma correta, então há a possibilidade de como compilar arquivos .java e é isso que iremos explorar nesse artigo.

Saber esse processo mais manual te torna um pouco mais independente de IDEs. Elas são necessárias, te poupam tempo e dinheiro para produzir grandes softwares, já que quanto menos você escreve, menos você erra e menor será as chances de retrabalho depois. Ter esse conhecimento de compilação é essencial, principalmente para situações emergenciais.

O que é compilar?

Segundo o dicionário Aurélio, compilar significa reunir, coligir. Mas para o nosso caso na computação, compilação é o ato de transformar um código fonte (escrito com linguagem de programação) em uma linguagem de máquina (código objeto). Claro que isso envolve uma série de processos que não convém explicar nesse artigo, como análises léxica, semântica e sintática.

Suponha o código abaixo escrito na linguagem C.
#include <stdio.h>
#define TAM 12

int main() {
   int m[TAM];
   int i;

   for (i = 0; i < TAM; i++) {
      m[i] = i % 2 == 0 ? 1 : 0;
   }

   return 0;
}
Ao compilar esse código fonte em um computador com sistema operacional Windows X64, um arquivo executável é gerado contendo código de máquina. E esse arquivo só pode ser executado em um computador Windows X64.

Em Java a compilação também existe, só que não é gerado um arquivo contendo código em linguagem de máquina. É gerado uma forma intermediária entre o código de máquina e a linguagem de programação Java, chamado de Bytecode.

Compilação de um arquivo de extensão .java

Os Bytecodes não são executados diretamente pelo sistema operacional, e sim interpretados por uma máquina virtual, a JVM (Java Virtual Machine). O arquivo .class pode ser interpretado em qualquer versão do Windows, Mac, Linux e Unix em geral desde que se tenha uma JVM específica para aquela plataforma instalada.

Após a compilação, o segundo passo é o carregador de classes ler os arquivos .class que contêm bytecodes a partir do disco rígido e colocar esses bytecodes na memória; após o carregamento, a próxima etapa é de verificação: o verificador de bytecode confirma que todos os bytecodes  são válidos e não  violam as restrições  de segurança do Java; por último, para executar  o programa, a JVM lê os bytecodes  e os compila (isto é, traduz) no momento certo (ou Just-in-Time) para uma linguagem que o computador possa entender.

Compilando um Arquivo Java

Abaixo temos um código fonte (source file) escrito em Java:
 public class Exemplo {
   public static void main(String[] args) {
     System.out.println("Olá, mundo!");
   }
 }

Iremos utilizar esse código para compilar e executar por meio de linha de comando.

Compilando no Windows

Abra o bloco de notas, copie e cole o código desse artigo do "Olá, mundo!", acima, dentro do bloco de notas.

Escrevendo o código em Java em um documento no Bloco de Notas

Vá no menu em arquivo, selecione salvar como e marque o diretório da área de trabalho (desktop). Dê o nome ao arquivo de (sem aspas) "Exemplo.java".

Salvando o código em Java a partir de um documento do Bloco de Notas

Após isso vamos ao que nos interessa, a compilação. pressione a tecla Win + R; digite cmd e tecle enter. Agora vamos digitar alguns comandos:

cd Desktop
O comando "cd" permite entrar no diretório "Desktop".

java -version
Exibe a versão do Java instalado em sua máquina (comando opcional).

dir
Lista todos os arquivos e pastas do diretório atual. Você precisa identificar se está presente o Exemplo.java que iremos compilar.

 javac -cp . Exemplo.java
  • O comando javac compila o arquivo Java.
  • O argumento -cp (classpath) destina em qual diretório a classe deverá ser armazenada. Nesse caso -cp aponta para o "." que é o diretório atual. Se nenhum diretório for especificado, com a omissão do argumento, então é armazenado no diretório atual. Portanto, javac -cp . Exemplo.java é equivalente a javac Exemplo.java.
  • Exemplo.java é o arquivo que será compilado.

Compilando o arquivo escrito em Java

java Exemplo
Esse comando serve para chamar a JVM, que realizará todos aqueles passos de verificação e então executará nosso programa escrito em Java, se estiver tudo certo. Resultado:

Executando o programa. Resultado: Olá, mundo!

Compilando no Linux (mesmo procedimento no Mac)

Código:
 public class Exemplo {
   public static void main(String[] args) {
     System.out.println("Olá, mundo!");
   }
 }
Como SO de exemplo, será utilizado o Ubuntu. No Ubuntu pressione Ctrl + Alt + T. No Mac basta pesquisar por Terminal. Obs.: "$" é usuário normal, "#" é root.

$ cd Desktop
O comando "cd" permite entrar no diretório "Desktop".

$ nano Exemplo.java
O comando "nano" chama o programa Nano, editor de texto que utiliza CLI (Command-Line Interface). No Mac você pode utilizar um editor de texto simples no lugar do Nano.
O Nano já nos trará um arquivo em buffer com o nome "Exemplo" e extensão ".java". Agora é só copiar o código do programa "Olá, mundo!" desse artigo e colar no terminal apertando Ctrl + Shift + V. Após isso, no Nano, pressione Ctrl + O para salvar e Ctrl + X para sair.

Escrevendo o código em Java em um documento no Nano

$ java -version
Exibe a versão do Java instalado em sua máquina (comando opcional).


Versão utilizada do Java

$ ls
Lista todos os arquivos e pastas do diretório atual. Você precisa identificar se está presente o Exemplo.java que iremos compilar.

$ javac -cp . Exemplo
  • O comando javac compila o arquivo Java.
  • O argumento -cp (classpath) destina em qual diretório a classe deverá ser armazenada. Nesse caso -cp aponta para o "." que é o diretório atual. Se nenhum diretório for especificado, com a omissão do argumento, então é armazenado no diretório atual. Portanto, javac -cp . Exemplo.java é equivalente a javac Exemplo.java.
  • Exemplo.java é o arquivo que será compilado.

Compilando o arquivo escrito em Java

$ java Exemplo
Esse comando serve para chamar a JVM, que realizará todos aqueles passos de verificação e então executará nosso programa escrito em Java, se estiver tudo certo. Resultado:

Executando o programa. Resultado: Olá, mundo!

O que você aprendeu

Nesse artigo você teve a oportunidade de aprender:
  • O porquê de se compilar um arquivo Java por linha de comando
  • O que é compilação
  • O que é bytecode
  • Como se compilar um arquivo Java no Windows, Linux e Mac

Referência Bibliográfica
ORACLE JAVA™ DOCUMENTATION. "Hello World!" for Microsoft Windows. Disponível em <https://docs.oracle.com/javase/tutorial/getStarted/cupojava/win32.html>. Acesso em 18 set. 2016.

ORACLE. Essentials, Part 1, Lesson 1: Compiling & Running a Simple Program. Disponível em <http://www.oracle.com/technetwork/java/compile-136656.html>. Acesso em 18 set. 2016.

DEITEL, H. M.; DEITEL P. J. Java - como Programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010. 1176 p.


Para citar esse artigo:

Comentários

  1. Muito legal e funcionou perfeitamente.

    ResponderExcluir
  2. Muito útil, artigo organizado, objetivo e muito bem escrito. Obrigado pelo conteúdo.

    ResponderExcluir
  3. O mundo seria diferente se tivesse mais conteudo com essa qualidade na internet, mas uma pergunta pq se eu mudar o nome do arquivo ele não funciona?

    ResponderExcluir
    Respostas
    1. Muito obrigado pelo comentário :)

      Existe uma regra definida pelo interpretador do Java (JVM) em que o nome do arquivo precisa ser exatamente o mesmo nome da classe, senão ele não consegue interpretá-la.

      Excluir
  4. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
  5. Este comentário foi removido por um administrador do blog.

    ResponderExcluir

Postar um comentário