Java Editores e IDEs

Um programa Java é um arquivo de texto. Você pode escrevê-lo em qualquer editor, do Bloco de Notas a uma IDE, um programa que escreve, compila, roda e depura tudo na mesma janela. Nesta aula você conhece as opções, entende o que a IDE faz por baixo dos panos e vê por que este guia começa pelo terminal.

Você vai aprender
  • A diferença entre editor de texto, editor de código e IDE.
  • As quatro ferramentas mais usadas para Java: VS Code, IntelliJ IDEA, Eclipse e NetBeans.
  • O que a IDE faz por você e qual comando do terminal está por trás de cada botão.
  • Por que começar com o terminal, e quando passar para a IDE.
  • Dois erros de editor: o arquivo Main.java.txt e a acentuação estragada.

A ideia: do caderno à oficina

Pense em consertar uma bicicleta. Dá para fazer com uma chave de boca e paciência. Numa oficina, você tem um suporte que segura a bicicleta, ferramentas penduradas na ordem e uma lista do que verificar. As duas consertam a mesma bicicleta; a oficina só deixa o trabalho mais rápido e com menos erros.

TipoExemplosO que oferece
Editor de textoBloco de Notas (Windows), Editor de Texto (Linux), TextEdit (Mac), nano (terminal)Só escrever e salvar. Nenhuma ajuda com o Java.
Editor de códigoVS Code, Notepad++, Sublime Text, KateCores no código, numeração de linhas, recuo automático. Com extensões, chega perto de uma IDE.
IDEIntelliJ IDEA, Eclipse, NetBeansTudo junto: editor, compilador, execução, depurador, sugestões enquanto você digita, ferramentas de projeto.

IDE é a sigla de Integrated Development Environment, "ambiente de desenvolvimento integrado": integrado porque junta numa janela o que no terminal são vários programas separados.


Primeiro: o terminal e um editor simples

Este guia mostra tudo com o terminal: você escreve o arquivo num editor qualquer, compila com javac e roda com java. Pode parecer trabalhoso, mas tem três vantagens para quem está começando:

  1. Você entende o que acontece. Na IDE, um botão verde faz tudo; quando algo dá errado, você não sabe qual etapa falhou. No terminal, você vê que o javac gerou o .class e que o java o executou.
  2. As mensagens de erro são as do Java. A IDE mostra o erro do jeito dela (às vezes com outras palavras). As aulas mostram a mensagem do javac, igual em todo lugar, e ensinam a lê-la (veja Lendo Erros do javac).
  3. Você não depende de nada. Num servidor, numa prova ou num computador emprestado nem sempre há IDE, mas sempre há um terminal.

Quando você chegar ao Nível 2, com programas de várias classes, uma IDE vai fazer muita diferença. Até lá, qualquer editor serve. Um exemplo no terminal da Ana: ela escreveu o arquivo no editor, salvou como Main.java e conferiu o conteúdo com cat antes de compilar:

$ cat Main.java
public class Main {
    public static void main(String[] args) {
        System.out.println("Olá, mundo!");
    }
}
$ javac Main.java
$ java Main
Olá, mundo!
Duas regras para qualquer editor

1. O nome do arquivo termina em .java e é igual ao nome da classe: public class Main vai em Main.java (a aula Olá, Mundo explica por quê). 2. Salve em UTF-8, a codificação que guarda acentos do mesmo jeito em todo sistema. Os erros que aparecem quando uma das duas falha estão em Quando dá errado.

O próprio guia tem um editor: as caixas Experimente. Ele não substitui uma IDE, mas compila e roda na hora (a aula O Editor do Guia mostra tudo o que ele faz):

Brinque com o código: o editor do guia colore o código e numera as linhas, como um editor de código. Rode, depois apague o ; do fim da linha 3 e rode de novo para ver o erro no formato do javac.

public class Main {
    public static void main(String[] args) {
        System.out.println("Olá, mundo!");
    }
}

As quatro ferramentas mais usadas

FerramentaDe quemPreçoPontos fortesBom para
VS Code + Extension Pack for JavaMicrosoftGrátisLeve, abre rápido, serve para muitas linguagens. O pacote de extensões traz compilação, sugestões, depurador, testes e Maven/Gradle.Quem já usa o VS Code ou tem um computador modesto.
IntelliJ IDEAJetBrainsGrátis (recursos principais; antes chamada Community Edition); versão paga com recursos para web e empresasSugestões muito inteligentes, avisos de código ruim, refatoração. A IDE mais usada por programadores Java profissionais.Quem vai trabalhar com Java; computadores com 8 GB de memória ou mais.
Eclipse IDE for Java DevelopersFundação EclipseGrátis, código abertoClássica, muito usada em empresas e universidades, cheia de plugins.Quem vai trabalhar num lugar que já usa Eclipse.
Apache NetBeansFundação ApacheGrátis, código abertoSimples de configurar, bom suporte a Maven e a interfaces gráficas (Swing).Cursos e projetos com interface gráfica.

Todas usam o JDK que você instalou (Linux, Windows e macOS). Algumas oferecem baixar um JDK por conta própria; tudo bem aceitar, desde que seja o 25.

VS Code: instalando o suporte a Java

O VS Code sozinho é só um editor de código. O suporte a Java vem de um pacote de extensões da Microsoft:

  1. Instale o VS Code (code.visualstudio.com) e abra.
  2. Clique no ícone de Extensões na barra da esquerda (quatro quadradinhos) ou tecle Ctrl+Shift+X.
  3. Procure por Extension Pack for Java, da Microsoft, e clique em Install. Ele instala várias extensões de uma vez, entre elas o suporte à linguagem (da Red Hat), o depurador, o executor de testes e o suporte ao Maven.
  4. Abra uma pasta (File → Open Folder) e crie um arquivo Main.java. Ao digitar main, o editor sugere escrever o método main inteiro (aceite com Enter). Aparecem as palavras Run | Debug acima do main: clique em Run, e a saída aparece no terminal de baixo.

IntelliJ IDEA: o primeiro projeto

  1. Baixe em jetbrains.com/idea a versão gratuita e instale.
  2. New Project: dê um nome, escolha a linguagem Java, o sistema de build IntelliJ (o mais simples) e, em JDK, o 25 que você instalou.
  3. A IDE cria uma pasta src com um Main.java de exemplo. Um triângulo verde aparece ao lado do main: clique nele e escolha Run.
  4. A saída aparece no painel Run, embaixo, seguida de Process finished with exit code 0 ("processo terminou com código de saída 0", o mesmo código de sucesso do terminal).

O Eclipse e o NetBeans seguem o mesmo roteiro: criar um projeto Java, escolher o JDK, criar uma classe com main, clicar em Run.


O que a IDE faz por você

Nada do que a IDE faz é mágica: por trás de cada botão está uma ferramenta do JDK que você vai conhecer neste guia.

Recurso da IDEComo apareceNo terminal, seria
CompilarAutomático, ao salvar ou ao clicar em Runjavac Main.java (javac e java)
RodarBotão ▶ verde ou "Run" acima do mainjava Main
Apontar erros enquanto você digitaSublinhado vermelho; passe o mouse para ler a mensagemAs mensagens do javac (Lendo Erros do javac)
Completar códigoAo digitar System.out., uma lista com println, print…A tecla Tab do JShell, em versão turbinada
FormatarArruma o recuo e os espaços (Ctrl+Alt+L no IntelliJ, Shift+Alt+F no VS Code)Fazer à mão (veja Sintaxe e Estrutura)
DepurarClicar ao lado do número da linha cria um ponto de parada; o programa para ali e mostra os valores das variáveisjdb (Depurar)
RefatorarRenomear uma variável e todas as vezes em que ela aparece, de uma vezProcurar e trocar com cuidado
Gerenciar projetosBaixa bibliotecas e roda testesmvn, gradle (Maven, Gradle)

A mesma mensagem, dois jeitos

Quando você erra o nome de uma variável, o javac do terminal responde assim (real; o código tem um erro de propósito: ntoa em vez de nota):

public class Main {
    public static void main(String[] args) {
        int nota = 8;
        System.out.println(ntoa);
    }
}
$ javac Main.java
Main.java:4: error: cannot find symbol
        System.out.println(ntoa);
                           ^
  symbol:   variable ntoa
  location: class Main
1 error

Numa IDE, você nem precisa compilar: o ntoa fica sublinhado de vermelho enquanto você digita. Passando o mouse, o IntelliJ escreve algo como Cannot resolve symbol 'ntoa' e o VS Code, ntoa cannot be resolved to a variable (as palavras mudam de uma IDE para outra). Muitas vezes a IDE já oferece a correção: "trocar por nota?". É a mesma informação que o javac deu: o arquivo, a linha e o nome que ela não achou.

Missão: o editor do guia também aponta este erro. Rode, leia a mensagem e conserte o nome da variável para o programa mostrar 8.

public class Main {
    public static void main(String[] args) {
        int nota = 8;
        System.out.println(ntoa);
    }
}
public class Main {
    public static void main(String[] args) {
        int nota = 8;
        System.out.println(nota);
    }
}

Qual usar?

SituaçãoSugestão
Nível 1 deste guiaAs caixas Experimente + qualquer editor de código (VS Code, por exemplo) + o terminal.
Computador com pouca memória (4 GB)VS Code, ou um editor simples e o terminal.
A partir do Nível 2, com várias classesIntelliJ IDEA ou VS Code com o Extension Pack for Java.
Projetos com Maven ou Gradle (Nível 3)Qualquer uma das quatro; todas entendem esses projetos.
A escola ou a empresa já usa umaUse a mesma: ajuda a receber e dar ajuda.
A IDE não substitui entender o Java

A IDE completa nomes e conserta erros com um clique, mas só se você souber o que pedir. Quem aprendeu a ler a mensagem do javac entende também os avisos da IDE. Por isso as aulas continuam mostrando o terminal, mesmo para quem já usa uma IDE.


Quando dá errado

error: file not found: Main.java (mas eu salvei!)
$ ls
Main.java.txt
$ javac Main.java
error: file not found: Main.java
Usage: javac <options> <source files>
use --help for a list of possible options

O que aconteceu: o editor salvou o arquivo como Main.java.txt. O Bloco de Notas do Windows faz isso quando o tipo está em "Documentos de texto (*.txt)", e o Windows esconde o .txt no Explorador de Arquivos, então você vê só Main.java. O javac procurou Main.java e não achou.

Como resolver: renomeie o arquivo (mv Main.java.txt Main.java no Linux e no Mac; no Windows, ative "Extensões de nomes de arquivos" na aba Exibir do Explorador e apague o .txt). No Bloco de Notas, salve escolhendo "Todos os arquivos (*.*)" e digitando o nome Main.java. Um editor de código não tem esse problema.

unmappable character (0xE1) for encoding UTF-8
$ javac Main.java
Main.java:3: error: unmappable character (0xE1) for encoding UTF-8
        System.out.println("Ol�, mundo!");
                              ^
1 error
$ file Main.java
Main.java: Java source, ISO-8859 text          « o arquivo não está em UTF-8

O que aconteceu: o arquivo foi salvo numa codificação antiga (ISO-8859-1, também chamada "Latin-1" ou "ANSI" em editores do Windows), em que o á é o byte 0xE1. O javac 25 lê os arquivos como UTF-8, onde esse byte sozinho não é letra nenhuma, e por isso mostra um � e para.

Como resolver: salve de novo em UTF-8 (no VS Code, clique em "ISO 8859-1" na barra de baixo e escolha Save with Encoding → UTF-8; no Bloco de Notas, escolha "UTF-8" em "Codificação" ao salvar). Para um arquivo antigo que você não quer converter, dá para avisar o javac: javac -encoding ISO-8859-1 Main.java.

A IDE diz "Project JDK is not defined" ou "No JDK found"

O que aconteceu: a IDE não achou um JDK. Acontece quando o JDK foi instalado depois da IDE, ou fora do lugar padrão.

Como resolver: nas configurações do projeto (no IntelliJ, File → Project Structure → SDK; no VS Code, o comando Java: Configure Java Runtime), aponte para a pasta do JDK: o seu JAVA_HOME, como /opt/jdk-25.


Exercícios

1. O que quer dizer IDE?

2. Quando você clica no botão ▶ de uma IDE num programa Java, o que acontece por baixo?

3. O javac diz file not found: Main.java, e o ls mostra Main.java.txt. O que fazer?

4. A codificação certa

Em qual codificação os arquivos .java devem ser salvos para os acentos funcionarem com o javac 25?


Resumo

  • Editor de texto só escreve; editor de código colore e organiza; IDE junta editor, compilador, execução e depurador.
  • As mais usadas: VS Code + Extension Pack for Java, IntelliJ IDEA, Eclipse e NetBeans, todas com versão gratuita.
  • Cada botão da IDE é uma ferramenta do JDK: compilar = javac, rodar = java, depurar = jdb.
  • O guia começa pelo terminal para você entender cada etapa e ler as mensagens reais do javac.
  • Salve como NomeDaClasse.java (cuidado com o .txt escondido) e em UTF-8.