Escolher a ferramenta certa é uma das decisões mais impactantes na sua produtividade diária. Em 2026, o cenário mudou bastante com a integração de IA diretamente nos editores. Este guia compara as três principais opções e explica como tirar o máximo de cada uma.
| Característica | Cursor | IntelliJ IDEA Ultimate | VS Code |
|---|---|---|---|
| Preço | Grátis / $20/mês Pro | ~$249/ano | Gratuito |
| Peso | Médio | Pesado | Leve |
| IA nativa | Sim (foco principal) | Parcial (plugin) | Parcial (GitHub Copilot) |
| Suporte Java enterprise | Bom | Excelente | Razoável |
| Refatoração automática | Boa | Excelente | Boa (com extensões) |
| Depurador visual | Sim | Excelente | Sim |
| Melhor para | IA + produtividade | Projetos grandes/Spring | Projetos leves / aprendizado |
O Cursor é um fork do VS Code construído do zero com IA no centro do fluxo. É uma escolha produtiva para quem valoriza edição assistida por IA e trabalha com projetos de complexidade moderada.
- Edição em múltiplos arquivos com IA: o modelo entende o contexto do projeto inteiro, não só o arquivo aberto.
- Chat com base de código: pergunte "onde essa interface é implementada?" e ele navega pelo código.
- Geração e refatoração com contexto real: não apenas snippets, mas refatorações que respeitam a arquitetura existente.
- Composer (Agent mode): executa tarefas complexas como criar um endpoint REST completo com testes.
# Linux (via download direto)
wget https://download.cursor.sh/linux/appImage/x64 -O cursor.AppImage
chmod +x cursor.AppImage
./cursor.AppImage
# macOS (via brew)
brew install --cask cursor
# Windows: baixe o instalador em https://cursor.shComo o Cursor é baseado no VS Code, instale as mesmas extensões:
# Via linha de comando
cursor --install-extension vscjava.vscode-java-pack
cursor --install-extension vscjava.vscode-spring-initializr
cursor --install-extension pivotal.vscode-spring-boot
cursor --install-extension sonarsource.sonarlint-vscode
cursor --install-extension streetsidesoftware.code-spell-checker-portuguese-brazilianOu pelo painel de extensões (Ctrl+Shift+X), busque:
- Extension Pack for Java — suporte completo a Java
- Spring Boot Extension Pack — Spring Boot + Initializr
- SonarLint — análise estática em tempo real
- GitLens — histórico Git avançado
- Thunder Client — testes de API REST sem sair do editor
O Cursor suporta múltiplos provedores de IA. Para usar Claude (Anthropic):
- Abra Cursor Settings →
Cursor > AI > Model - Em API Keys, adicione sua chave da Anthropic
- Selecione o modelo de maior capacidade disponível na sua assinatura
Ou via arquivo de configuração:
{
"cursor.aiProvider": "anthropic",
"cursor.anthropicApiKey": "sk-ant-...",
"cursor.defaultModel": "claude-opus-4"
}Dicas de uso com Claude no Cursor:
Ctrl+K— edita o código selecionado com instrução em linguagem naturalCtrl+L— abre o chat lateral com contexto do arquivo atualCtrl+Shift+I— modo Composer (agente que edita múltiplos arquivos)
Para projetos Spring Boot complexos, microsserviços com Kafka, integração com bancos de dados e debugging avançado, o IntelliJ ainda é imbatível.
- Análise de código mais profunda que qualquer outra IDE
- Refatorações seguras (renomear classe atualiza XML, SQL, HTML automaticamente)
- Profiler integrado, análise de heap, detecção de vazamentos de memória
- Suporte nativo a Spring, Hibernate, JPA, Docker, Kubernetes
- Banco de dados integrado (DataGrip embutido)
# Via Toolbox App (recomendado — gerencia versões)
# Baixe em: https://www.jetbrains.com/toolbox-app/
# Via snap no Linux
sudo snap install intellij-idea-ultimate --classic
# Via brew no macOS
brew install --cask intellij-ideaAcesse File > Settings > Plugins > Marketplace:
| Plugin | Para que serve |
|---|---|
| SonarLint | Análise estática, detecta bugs e code smells em tempo real |
| Rainbow Brackets | Colore pares de colchetes/chaves em cores diferentes |
| Key Promoter X | Mostra o atalho sempre que você usa o mouse desnecessariamente |
| String Manipulation | Converte camelCase, snake_case, UPPER_CASE com atalho |
| Lombok | Suporte ao processamento de anotações do Lombok |
| Docker | Gerencia containers sem sair da IDE |
| HTTP Client | Testa APIs REST diretamente em arquivos .http |
| Atalho | Ação |
|---|---|
Ctrl+N |
Abrir classe pelo nome |
Ctrl+Shift+N |
Abrir qualquer arquivo pelo nome |
Ctrl+Alt+Shift+N |
Abrir símbolo (método, variável) pelo nome |
Ctrl+E |
Arquivos recentes |
Ctrl+B / Ctrl+Click |
Ir para declaração |
Alt+F7 |
Encontrar todos os usos de um símbolo |
Ctrl+Alt+B |
Ir para implementação da interface |
Ctrl+H |
Hierarquia de tipos |
Alt+Home |
Navegação no breadcrumb |
Ctrl+G |
Ir para linha específica |
| Atalho | Ação |
|---|---|
Alt+Insert |
Gerar código (getter, setter, constructor, equals) |
Ctrl+Alt+T |
Envolver com (try-catch, if, synchronized, etc.) |
Ctrl+Shift+Enter |
Completar linha atual (adiciona ; ou {}) |
Ctrl+D |
Duplicar linha ou seleção |
Ctrl+Y |
Deletar linha atual |
Ctrl+Shift+Up/Down |
Mover linha ou bloco para cima/baixo |
Ctrl+/ |
Comentar/descomentar linha |
Ctrl+Shift+/ |
Comentar bloco com /* */ |
Tab |
Aceitar sugestão de autocompletar |
Ctrl+Space |
Autocompletar básico |
Ctrl+Shift+Space |
Autocompletar inteligente (por tipo) |
| Atalho | Ação |
|---|---|
Shift+F6 |
Renomear (refatoração segura — atualiza todas as refs) |
Ctrl+Alt+M |
Extrair método |
Ctrl+Alt+V |
Extrair variável local |
Ctrl+Alt+F |
Extrair campo (field) |
Ctrl+Alt+C |
Extrair constante |
Ctrl+Alt+P |
Extrair parâmetro |
F6 |
Mover classe para outro pacote |
Ctrl+Alt+Shift+T |
Menu completo de refatorações |
| Atalho | Ação |
|---|---|
Shift+Shift |
Search Everywhere (busca tudo) |
Ctrl+F |
Buscar no arquivo atual |
Ctrl+Shift+F |
Buscar em todos os arquivos (com filtros) |
Ctrl+R |
Substituir no arquivo atual |
Ctrl+Shift+R |
Substituir em todos os arquivos |
| Atalho | Ação |
|---|---|
F9 |
Rodar com debug |
F8 |
Step over (próxima linha) |
F7 |
Step into (entrar no método) |
Shift+F8 |
Step out (sair do método) |
Alt+F9 |
Run to cursor (executar até o cursor) |
Ctrl+F8 |
Adicionar/remover breakpoint |
Alt+F8 |
Avaliar expressão no modo debug |
Para quem está começando ou trabalha em projetos menores, o VS Code com as extensões certas é uma excelente opção.
# Linux (Debian/Ubuntu)
sudo apt install code
# Linux via snap
sudo snap install code --classic
# macOS
brew install --cask visual-studio-code
# Windows: https://code.visualstudio.com/Instale o pacote oficial da Microsoft que inclui tudo necessário:
code --install-extension vscjava.vscode-java-packO pack inclui:
- Language Support for Java (Red Hat) — análise semântica, autocompletar
- Debugger for Java — debug visual
- Test Runner for Java — rodar JUnit direto no editor
- Maven for Java — suporte ao Maven
- Project Manager for Java — gerenciar projetos
Adicione ao settings.json (Ctrl+Shift+P → "Open User Settings JSON"):
{
"java.jdt.ls.java.home": "/usr/lib/jvm/java-21-openjdk-amd64",
"java.configuration.runtimes": [
{
"name": "JavaSE-21",
"path": "/usr/lib/jvm/java-21-openjdk-amd64",
"default": true
}
],
"editor.formatOnSave": true,
"editor.tabSize": 4,
"java.format.settings.profile": "GoogleStyle",
"java.saveActions.organizeImports": true,
"java.completion.importOrder": [
"java",
"javax",
"org",
"com",
""
]
}O SonarLint é um plugin disponível para todas as IDEs que detecta bugs, vulnerabilidades de segurança e code smells enquanto você digita, antes do código ir para produção.
IntelliJ: File > Settings > Plugins > Marketplace > SonarLint
VS Code / Cursor:
code --install-extension sonarsource.sonarlint-vscode
# ou
cursor --install-extension sonarsource.sonarlint-vscode// RUIM — SonarLint vai reclamar
public void processarDados(String dado) {
if (dado == null) {
System.out.println("dado nulo"); // Regra: use um logger, não System.out
return;
}
String resultado = dado.toString(); // Regra: toString() desnecessário em String
try {
// ... processamento
} catch (Exception e) {
// Regra: não engula exceções silenciosamente
}
}
// BOM — sem alertas do SonarLint
private static final Logger log = LoggerFactory.getLogger(MinhaClasse.class);
public void processarDados(String dado) {
if (dado == null) {
log.warn("Dado recebido nulo, ignorando processamento");
return;
}
try {
// ... processamento
} catch (IOException e) {
log.error("Erro ao processar dado: {}", dado, e);
throw new ProcessamentoException("Falha ao processar: " + dado, e);
}
}No IntelliJ, clique no ícone do SonarLint na barra lateral → Bind to SonarQube/SonarCloud → insira a URL do servidor e o token. Assim as regras do time ficam sincronizadas com o CI/CD.
O JShell (disponível desde Java 9) é uma ferramenta de linha de comando que permite executar código Java interativamente, sem precisar criar um projeto ou uma classe com main().
jshell
# Saída:
# | Welcome to JShell -- Version 21.0.1
# | For an introduction type: /help intro
# jshell># Calcular um valor diretamente
jshell> 2 + 2
$1 ==> 4
# Criar uma variável
jshell> var nome = "Java"
nome ==> "Java"
# Testar um método de String
jshell> nome.toUpperCase().repeat(3)
$3 ==> "JAVAJAVAJAVА"
# Testar Streams
jshell> import java.util.List
jshell> List.of(1, 2, 3, 4, 5).stream().filter(n -> n % 2 == 0).toList()
$5 ==> [2, 4]
# Definir um método
jshell> int fatorial(int n) { return n <= 1 ? 1 : n * fatorial(n - 1); }
| created method fatorial(int)
jshell> fatorial(10)
$7 ==> 3628800
# Listar o que foi definido
jshell> /vars
jshell> /methods
jshell> /list
# Sair
jshell> /exit- Testar uma API que você não conhece (ex: "como funciona
String.format?") - Verificar comportamento de um método antes de escrever o código de produção
- Aprender features novas do Java sem criar um projeto
- Cálculos rápidos durante o desenvolvimento
O GitHub Codespaces oferece um ambiente de desenvolvimento completo no navegador (ou conectado ao VS Code local), sem precisar instalar nada na sua máquina.
- Acesse qualquer repositório no GitHub
- Clique em Code > Codespaces > Create codespace on main
- O ambiente inicia com VS Code no navegador em ~30 segundos
Crie o arquivo .devcontainer/devcontainer.json no seu repositório:
{
"name": "Java 21 Dev Environment",
"image": "mcr.microsoft.com/devcontainers/java:21",
"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "21",
"installMaven": true,
"installGradle": true
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
},
"customizations": {
"vscode": {
"extensions": [
"vscjava.vscode-java-pack",
"pivotal.vscode-spring-boot",
"sonarsource.sonarlint-vscode",
"eamodio.gitlens"
],
"settings": {
"java.jdt.ls.java.home": "/usr/lib/jvm/msopenjdk-current",
"editor.formatOnSave": true
}
}
},
"postCreateCommand": "mvn dependency:resolve",
"forwardPorts": [8080, 5432, 6379],
"portsAttributes": {
"8080": { "label": "App Java" },
"5432": { "label": "PostgreSQL" },
"6379": { "label": "Redis" }
}
}- Apresentações e demos sem risco de "funciona na minha máquina"
- Contribuir para projetos open source rapidamente
- Trabalhar em computadores que não são seus (bibliotecas, trabalho temporário)
- Onboarding de novos devs — ambiente pronto em minutos
| Situação | Recomendação |
|---|---|
| Aprendendo Java, projetos pequenos | VS Code com Extension Pack |
| Foco em produtividade com IA, projetos novos | Cursor |
| Projetos Spring Boot complexos, enterprise, legado | IntelliJ IDEA Ultimate |
| Não quer instalar nada | GitHub Codespaces |
| Analisar qualidade de código em qualquer IDE | + SonarLint (plugin) |
Nota sobre escolha de IDE: Cursor e IntelliJ Ultimate têm casos de uso complementares, não excludentes. Para refatorações cross-module, análise de heap, profiling integrado e suporte nativo a Spring/Hibernate em projetos de grande porte, o IntelliJ continua sendo a ferramenta mais completa disponível. Muitos profissionais usam Cursor no dia a dia e IntelliJ para debugging avançado e análise de projetos legados. Escolha com base no seu projeto atual, não em tendência.