Primeiras aulas do curso IntelliJ IDEA: aumente a sua produtividade em projetos Java

IntelliJ IDEA: aumente a sua produtividade em projetos Java

Primeiros passos com a IDE - Introdução

Introdução

Bem-vindo ao curso de IntelliJ IDEA da Alura.

O que veremos nesse curso, são dicas e truques que podemos usar no dia a dia como desenvolvedor. Aprenderemos como navegar, acessar e criar arquivos sem a necessidade de usar o mouse.

Veremos como executar as classes e programas, ou até mesmo fazer uma busca de arquivos sem ter que vasculhar o projeto.

Além disso veremos como aplicar algumas técnicas de refatoração, ou seja, fazer com que o nosso código melhore sem ter impactos negativos no resultado final. E tudo isso, nós faremos usando os recursos da IDE, para evitar grande trabalho.

Também veremos outras técnicas de execução, para que caso haja algum problema, seja possível testar e depurar o nosso código.

Um dos pontos mais importantes de um IDE é o momento da criação do código. Veremos as facilidades que o IntelliJ nos fornece na hora de declarar variáveis, estrutura de controle de fluxo e até mesmo nas própria estruturas de código.

O curso é focado nos conceitos mais básicos do IntelliJ, e justamente por isso, não abordaremos os recursos de aplicações web ou que envolva bancos de dados. Durante o curso usaremos a versão IntelliJ IDEA Community, que é a versão gratuita, mas todo conteúdo adquirido aqui pode ser aplicado a versão Ultimate.

Vamos começar?

Primeiros passos com a IDE - Conhecendo os atalhos

Conhecendo os atalhos

O primeiro passo é abrir o IntelliJ IDEA Community. Após o término do carregamento, teremos a tela inicial com algumas opções. Como estamos iniciando com a ferramenta, vamos selecionar a opção de criar novo projeto.

selecionar a opção create new project

Selecionando a opção Create new Project, uma nova janela será aberta onde podemos configurar o projeto. Vamos selecionar a opção Java, nas opções de projeto.

opção de projeto java

Em Project SDK deixamos como a versão java 1.8. Caso essa opção não esteja aparecendo em seu projeto, basta clicar em "New" e selecionar o diretório de instalação do seu JDK. Após essa configuração basta clicar em "Next".

project sdk, versão do java, botão new

Na nova janela, o IntelliJ pergunta se gostaríamos de criar o nosso projeto baseado em algum Template, mas como não usaremos nenhum Template, basta clicar em "Next".

Agora apareceu a opção de nomear o projeto. Durante o curso vamos trabalhar em um projeto de um banco digital, então vamos nomeá-lo no campo Project name como "bytebank". Em Project location fica o caminho onde se encontra nosso projeto.

campo de nome e campo com o caminho do projeto

Clicando em "Finish", o projeto será carregado, inclusive aparecerá um barra de progresso de indexação dos arquivos. Isso é comum quando estamos criando ou carregando o projeto pela primeira vez, a IDE vai indexar os arquivos para ganhar mais desempenho durante o desenvolvimento do projeto.

Com tudo carregado, podemos notar que temos uma view chamada "Project", onde podemos visualizar toda a estrutura das pastas do projeto.

O primeiro diretório é o próprio nome de projeto bytebank. Dentro, possuímos o diretório .idea onde ficam todas as configurações do IntelliJ, esta pasta não é o foco do nosso curso. Também temos a pasta src (source) onde iremos colocar todas as nossas classes Java.

view project e toda a estritura de pastas

Para criar um classe, bastaria clicarmos com o botão direito do mouse na pasta src e selecionar a opção "New" e em seguida "Java Class". Porém a grande vantagem da IDE é poder fazer os mesmos passos com atalhos.

Para manipular a view do projeto, podemos usar o atalho "Alt + 1", dessa forma é possível ocultar e mostrar a view. Também é possível após o "Alt + 1", navegar pelos diretórios com as setas do teclado.

Selecionando com os atalhos a pasta src, podemos usar o atalho "Alt + insert", que permite criar algum arquivo. Como estamos na pasta src o IntelliJ vai mostrar as opções dos arquivos faz sentido estarem nesse diretório.

Selecionando a opção "Java Class", colocaremos o nome da classe de "Principal".

nomeando a classe como "Principal"

Mas como faremos para executar a classe? Nos cursos básicos de Java, aprendemos que para executar, precisamos de um método main. Poderíamos escrever toda a assinatura do método, porém a IDE também consegue nos auxiliar, basta escrevermos as iniciais psvm e apertamos a tecla "Tab" para que a assinatura seja escrita automaticamente.

Ainda não executamos a classe Principal, e existem diversas formas de executa-lá. Podemos clicar com o botão direito do mouse e selecionar a opção "Run Teste.main()". A segunda maneira é ir no caminho "Run > Run 'Teste' ", mas ainda estamos usando o mouse. A terceira maneira é através de atalhos, clicamos na área do editor de código e usamos o "Ctrl + Shift + F10". Como é a primeira vez que estamos executando a classe, aparecerá um menu mostrando as classes que podemos executar, basta selecionar a classe Principal e clicar em "Enter".

selecionando a classe principal

O IntelliJ executou a nossa classe Principal, e abriu inclusive um console informando que o Java foi executado e o processo foi finalizado.

Process finished with exit code 0

Porém, não foi apresentado nenhuma mensagem interessante para nós, e está certo, afinal não colocamos nenhuma instrução com alguma mensagem para que fosse exibida no Console.

Para exibirmos mensagem no Console, podemos usar o System.out.println(). Mas será que um comando como esse não teria uma forma mais simples de escrever? Sim, podemos escrever sout e pressionar a tecla "Tab" para que o comando seja completado. Agora podemos colocar a mensagem "Bem-vindo ao Bytebank".

public class Principal {

    public static void main(String [] args){
       System.out.println("Bem-vindo ao Bytebank");
    }
}

Podemos executar a classe novamente, mas como já executamos uma vez e o IntelliJ já indexou a nossa classe Principal como executável, podemos usar o atalho "Shift + F10". Agora recebemos no console a mensagem de "Bem-vindo ao Bytebank".

Mas você deve estar se perguntando: se eu não estivesse vendo os atalhos aqui no curso, como eu aprenderia? O primeiro pensamento provavelmente seria a internet.

Na internet realmente aprenderíamos muitas funcionalidades da ferramenta, mas o legal do IntelliJ é que ele permite acessarmos todos os atalhos baseados em nossa configuração.

Mas como podemos buscar essa configuração? Podemos ir em "File > Settings" para chegarmos a todas as configurações do IntelliJ. No campo de busca, podemos digitar "Keymap" para filtrar a opção desejada.

buscando por keymap

Na seção de Keymap podemos ver a configuração usada na opção Keymaps, por padrão no Windows a configuração vem como Default, mas não se preocupe caso você esteja no Mac ou no Linux, durante o curso os atalhos serão ensinados nos três sistemas operacionais.

keymaps com configuração default

Do lado direito teremos o símbolo de uma lupa, que é a opção Find Actions by Shortcut. Clicando nessa opção, podemos usar os atalhos que a IDE nos retorna a ação correspondente.

Find Actions by Shortcut

Também temos ao lado da lupa, outro campo de busca. Nesse campo de busca podemos especificar a ação que queremos, por exemplo "new".

pesquisando todas as ações de "new"

O IntelliJ irá nos retornar a listagem de todas as ações que contenha a palavra buscada e junto os atalhos correspondentes à ação.

listagem de ações com os atalhos

Outra dica importante é que podemos ir em "Help > Keymap Reference" para que seja aberto um arquivo PDF com todos os atalhos e suas funções da configuração que estamos usando no momento. É bem interessante deixarmos a documentação aberta para que possamos consultar os atalhos de forma mais rápida.

Primeiros passos com a IDE - Criando código com o generate

Criando código com o generate

Tivemos o nosso primeiro contato com o IntelliJ, e aprendemos alguns atalhos, e como criar e executar uma classe, vamos dar continuidade com o nosso projeto.

Nosso passo agora é colocar uma classe para representar um funcionário no projeto. Mas antes de criar a classe precisamos organizar as nossas classes nas convenções estabelecidas pelo Java, que é por meio de pacotes.

Para criar um novo pacote, usamos "Alt + 1" para acessar a project, agora navegamos até a pasta src e usamos o atalho "Alt + Insert". No menu de opções, podemos escolher package, ou utilizar o recurso de filtros do IntelliJ, que nada mais é do que digitar "package" e a própria IDE já ativa a filtragem.

filtrando a opção package na criação do pacote

Com a opção package selecionada, clicamos em "Enter" para confirmar a opção. Na nova janela aberta colocamos o nome do pacote, por exemplo, br.com.alura.bytebank.

colocando o nome no pacote

Criamos apenas o pacote, e não mandamos classe Principal para o novo pacote. Poderíamos clicar e arrastar a classe com o mouse, mas o interessante é usar o atalho para isso.

O atalho para mover a classe é o "F6" conhecido como Move, que faz a mesma função que arrastar a classe. No campo To Package colocamos o pacote que queremos enviar, que no caso é br.com.alura.bytebank. Agora é só clicar em "Refactor".

atalho f6 move, selecionando o pacote destino

Simples, o IntelliJ moveu a nossa classe para o pacote. Inclusive ele já colocou na classe o pacote que ela pertence.

package br.com.alura.bytebank;

public class Principal {

    public static void main(String [] args){
        System.out.println("Bem-vindo ao Bytebank");
    }
}

Agora de fato vamos criar uma classe Funcionario. Poderíamos acessar a view do Project e usar os atalhos, mas existe uma outra forma interessante de fazer esse processo.

Vamos imaginar que durante o desenvolvimento tivemos a intenção de instanciar a classe com new Funcionario(). No momento ela não existe, e a IDE sinaliza dizendo não sabe trabalhar com esse símbolo. Nessas situações podemos usar as sugestões do IntelliJ com o atalho "Alt + Enter". Baseando no contexto do que estamos tentando fazer, o que foi sugerido é a criação da classe Funcionario.

create class 'Funcionario'

Como queremos criar a classe, vamos selecionar a opção Create class 'Funcionario' e confirmar com a tecla "Enter". Uma janela surgirá solicitando o pacote que a nova classe vai ficar, como Funcionario é um model, vamos colocá-lo no pacote br.com.alura.bytebank.model.

Destionation Package br.com.alura.bytebank.model

Confirmando o destino do pacote, a classe Funcionario será criada dentro do pacote que escolhemos no passo anterior. Além disso, na classe Principal, já foi feito automaticamente o import br.com.alura.bytebank.model.Funcionario.

package br.com.alura.bytebank;

import br.com.alura.bytebank.model.Funcionario

public class Principal {

    public static void main(String [] args){
        System.out.println("Bem-vindo ao Bytebank");
        new Funcionario();
    }
}

Vamos então trabalhar em nossa classe Funcionario. Um funcionário terá um nome String nome, uma matricula int matricula. Também terá uma data de nascimento, como estamos configurados com Java 8, vamos usar a classe LocalDate dataNascimento, e repare que o podemos usar o autocomplete pressionando "Ctrl + Espaço", assim ao selecionar a classe LocalDate a IDE já faz o import automaticamente.

package br.com.alura.bytebank.model;

import java.time.LocalDate;

public class Funcionario {

    String nome;
    int matricula;
    LocalDate dataNascimento;

}

Como sabemos, uma boa prática é manter os atributos da classe encapsulados, por isso precisamos colocar os atributos como private. Mas imagine que temos muitos atributos nessa classe, daria muito trabalho colocar repetidas vezes o modificador de acesso private, por isso usaremos os atalhos.

Usaremos o atalho "Alt + Shift + insert". Esse atalho converte a maneira de seleção de linha para coluna. Podemos ver o modo em que estamos trabalhando na barra inferior do IntelliJ.

seleção em modo coluna

Com o modo de seleção para colunas, seguramos a tecla "Shift" e selecionamos todos os atributos que queremos colocar o modificador de acesso, agora é só escrever private que será repetido para todos os atributos.

package br.com.alura.bytebank.model;

import java.time.LocalDate;

public class Funcionario {

    priavte String nome;
    private int matricula;
    private LocalDate dataNascimento;

}

Para voltar ao modo de seleção de linha, basta repetir o atalho "Alt + Shift + insert".

Em Java, utilizamos dos métodos Getter e Setter. Para evitar trabalho, podemos escrever setNome e usar o autocomplete para que ele já monte o método Setter inteiro para você. A mesma coisa pode ser feita para Getter.

É bem interessante o recurso do autocomplete, mas para classes com muitos atributos ainda ficaria trabalhoso. Então, podemos usar o recurso do atalho "Alt + insert". Dentro de uma classe, o atalho tem a função de Generate, e no caso, vamos selecionar a opção Getter and Setter.

generate - getter and setter

Selecionando a opção, uma janela será aberta para que possamos selecionar os atributos que gostaríamos de ter o Getter and Setter. Selecionamos todos e clicamos em "OK".

selecionando os atributos na janela "select fields to generate getters and setters"

Pronto, temos todos os Getter e Setter criados, isso sem nenhum esforço. Para aumentar o espaço do editor, podemos usar o "Ctrl + Shift + F12", e para voltar a visualização original basta usar o mesmo atalho.

package br.com.alura.bytebank.model;

import java.time.LocalDate;

public class Funcionario {

    private String nome;
    private int matricula;
    private LocalDate dataNascimento;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getMatricula() {
        return matricula;
    }

    public void setMatricula(int matricula) {
        this.matricula = matricula;
    }

    public LocalDate getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(LocalDate dataNascimento) {
        this.dataNascimento = dataNascimento;
    }
}

Vamos agora criar um objeto da classe Funcionario e executar o nosso programa. Mas, ainda estamos usando o mouse para trocar de classe, seria algo complicado se tivéssemos dezenas de classes.

Por conta disso podemos usar o atalho "Ctrl + n". Esse atalho é o que busca as classes no projeto, então basta digitarmos Principal, ou as iniciais para que ele retorne a classe.

buscando a classe Principal com o atalho "Ctrl + n"

Essa é a maneira rápida de buscar uma classe no projeto. Na classe Principal, agora que temos uma instância de Funcionario, precisamos guardá-lo em uma variável do tipo Funcionario.

Poderíamos escrever manualmente Funcionario funcionario = new Funcionario();, porém a IDE também nos ajuda nessa questão, basta colocarmos o cursos do editor em cima de new Funcionario() e usarmos o atalho "Alt + Enter", selecionando a opção "Introduce a local variable".

introduce a local variable

Dessa forma, o IntelliJ cria para gente uma variável que assina a instância que criamos. A variável já vem como nome padrão da classe, mas podemos alterar para o que desejarmos, por exemplo, Funcionario jose = new Funcionario().

package br.com.alura.bytebank;

import br.com.alura.bytebank.model.Funcionario;

public class Principal {

    public static void main(String[] args) {

        System.out.println("Bem-vindo ao Bytebank");
        Funcionario jose = new Funcionario();
    }
}

Vamos agora colocar as informações do objeto usando os método jose.setNome(), jose.setMatricula() e jose.setDataNascimento().

Mas o que passaremos para o jose.setDataNascimento()? Como o método espera um LocalDate podemos passar LocalDate.of() com os argumentos de valor do ano, mês e dia.

package br.com.alura.bytebank;

import br.com.alura.bytebank.model.Funcionario;

public class Principal {

    public static void main(String[] args) {

        System.out.println("Bem-vindo ao Bytebank");
        Funcionario jose = new Funcionario();

        jose.setNome("José");
        jose.setMatricula(1);
        jose.setDataNascimento(LocalDate.of(1990, 2, 10));
    }
}

Vale notar que no LocalDate.of() o IntelliJ colocou labels (rótulos) para o que cada argumento passado representa. Esses labels são visíveis apenas no IntelliJ e serve apenas com o intuito de auxiliar o desenvolvedor a passar os valores corretos.

Podemos agora colocar o uma saída para que possamos visualizar o funcionário.

package br.com.alura.bytebank;

import br.com.alura.bytebank.model.Funcionario;

public class Principal {

    public static void main(String[] args) {

        System.out.println("Bem-vindo ao Bytebank");
        Funcionario jose = new Funcionario();

        jose.setNome("José");
        jose.setMatricula(1);
        jose.setDataNascimento(LocalDate.of(1990, 2, 10));

        System.out.println(jose);
    }
}

Executando com "Shift + F10" podemos ver que recebemos a mensagem de bem-vindo e o endereço de memória do objeto jose. Isso aconteceu por que foi chamado o método toString() da classe Object.

Vamos acessar a classe Funcionario. Dentro da classe podemos usar o atalho de Generate "Alt + insert" e selecionar a opção toString() ou digitar para que o IntelliJ faça a busca, assim como fizemos na criação de pacotes.

criando toString com o atalho "Alt + insert"

A janela Generate toString() será aberta, em seguida, selecionaremos os atributos que serão usados no toString() - no caso, selecionaremos todos.

generated toString, selecionando todos os atributos

O toString() será sobrescrito e virá com os atributos que selecionamos.

package br.com.alura.bytebank.model;

import java.time.LocalDate;

public class Funcionario {

    private String nome;
    private int matricula;
    private LocalDate dataNascimento;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getMatricula() {
        return matricula;
    }

    public void setMatricula(int matricula) {
        this.matricula = matricula;
    }

    public LocalDate getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(LocalDate dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    @Override
    public String toString() {
        return "Funcionario{" +
                "nome='" + nome + '\'' +
                ", matricula=" + matricula +
                ", dataNascimento=" + dataNascimento +
                '}';
    }
}

Podemos voltar a classe Principal e executar novamente a classe. Receberemos a mensagem de boas-vindas e a descrição do objeto jose.

Sobre o curso IntelliJ IDEA: aumente a sua produtividade em projetos Java

O curso IntelliJ IDEA: aumente a sua produtividade em projetos Java possui 170 minutos de vídeos, em um total de 60 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Java acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas