Guia para os primeiros passos no desenvolvimento Java em 2023 — Parte 1

Bruno Lellis
iFood Tech
Published in
8 min readJan 30, 2023

A linguagem Java possui uma infinidade de ferramentas, bibliotecas e frameworks maduros prontos para serem escolhidos de acordo com a necessidade dos seus projetos. Esse número é proporcional à sua idade: 27 anos recém-completados é um bom indicativo da maturidade da linguagem e todo o seu ecossistema. E, aliado com as novas funcionalidades, evidencia fortes planos para o futuro.

Como uma pessoa que está iniciando na carreira de desenvolvimento decide escolher Java? Dada essa escolha, como dar os primeiros passos?

É contraditório ter tantas opções disponíveis e, ao mesmo tempo, não conseguir escolher uma delas — justamente porque são muitas. Esta série de posts têm o intuito de auxiliar quem ainda tem dúvida.

Pegue uma xícara de um bom café e aproveite a leitura! ☕

A Linguagem

A linguagem Java aparece no topo dos rankings divulgados como TIOBE index e StackOverflow survey.

Independentemente de qualquer pesquisa, a linguagem é bastante madura pelos seus 27 anos, é plenamente ativa na comunidade (com inúmeros frameworks e bibliotecas) e uma nova versão é lançada a cada 6 meses, sendo que uma nova versão LTS (long-term support) é declarada a cada 2 anos.

Além da linguagem, a JVM (Java Virtual Machine) é muito reconhecida como uma das principais máquinas virtuais para o tempo de execução.

O ecossistema em torno da linguagem é completo, passando por sistemas desktop, linha de comando, aplicações web, webservices, APIs, até plataformas de stream-processing e armazenamento de dados (big data).

Novidades cobiçadas estão em desenvolvimento, como threads virtuais leves (Project Loom), melhorias na integração com código nativo (Project Panama), value objects e user-defined primitives (Project Valhalla), entre outros, e é justamente por isso que o Java está se tornando uma excelente ferramenta para resolver um número cada vez maior de tarefas de desenvolvimento de software.

Onde Estamos

A imensa quantidade de opções acumuladas durante quase 3 décadas pode ser um desafio inerente para pessoas que estão começando sua carreira agora. Qual versão devo utilizar? Por que tantas opções? Como instalar 2+ versões sem conflitos? Quais ferramentas (IDE) utilizar? Todas essas (e qualquer outra) perguntas possuem mais de uma opção como resposta, e isso pode acabar sobrecarregando a carreira de uma pessoa nova na tecnologia Java.

Muitas ferramentas famosas no passado já praticamente não existem mais, outras evoluíram para novas versões. Um ponto de atenção para esses casos, pois na Internet tudo está disponível e pode ser difícil identificar o que é relevante do que caiu em desuso.

Guia Opinativo

A ideia deste post é servir como um guia opinativo para as pessoas que estão começando no desenvolvimento Java em 2023, ajudando você nos primeiros passos dessa plataforma incrível.

Lembre-se que as decisões são pessoais, são as minhas recomendações e elas podem ser diferentes das suas, sem nenhum problema.

Aqui vale um aviso: eu não tenho a pretensão de ser o dono da verdade. Existem várias opções e considerações que devem ser tomadas em cada escolha. Não tem certo ou errado e, muitas vezes, é um trade-off. A minha intenção é ajudar a trilhar as primeiras escolhas considerando as opções mais abrangentes. Conforme a sua experiência vai tomando forma, você começa a formar a sua opinião e, nesse momento, já poderá seguir com suas decisões, sem depender de guias e afins.

Ecossistema Java

Num primeiro momento, pode ser confuso para entender o que Java realmente é.

A linguagem de programação Java

É uma linguagem de programação orientada a objetos, com tipagem estática e de uso geral (com algumas pitadas de linguagem funcional). O código é compilado para um byte-code portátil que é interpretado por uma máquina virtual, ou seja, pode ser executado em diversos sistemas operacionais diferente de onde foi compilado inicialmente.

A Plataforma Java

O universo Java é um vasto conjunto de tecnologias, composto por três plataformas principais que foram criadas para segmentos específicos de aplicações..

Os elementos chave aqui são o compilador Java (javac); a máquina virtual (JVM) e a biblioteca padrão da linguagem. O objetivo deste post é a versão Java Standard Edition (SE), as demais Java Micro Edition (ME) e Jakarta Enterprise Edition (EE) não serão discutidas aqui.

Muitas outras linguagens podem ser executadas na JVM além da própria Java como, por exemplo, Kotlin, Groovy, Scala.

A Máquina Virtual Java (JVM)

É uma máquina virtual responsável por executar os programas escritos em Java (ou melhor, o byte-code), ou seja, cuidando das tarefas como carregar o byte-code e verificar sua precisão, compilando esse byte-code em código nativo usando um compilador just-in-time (JIT), gerenciamento de memória automatizado via coleta de lixo (garbage collector), isolamento entre diferentes componentes, fornecendo dados para diagnóstico em tempo de execução etc. Existem várias implementações da JVM, como HotSpot, OpenJ9, Azul Zulu, entre outras.

O Java Development Kit (JDK)

Um pacote de ferramentas para desenvolvimento e execução de aplicações Java.

OpenJDK

Uma implementação open-source do Java SE. Também é o nome da comunidade open-source que cuida dessa implementação.

O Java Community Process (JCP)

Um grupo para desenvolvimento de novas especificações no mundo Java, incluindo as diferentes versões do Java.

📦 Distribuição

A plataforma Java é mantida pelo projeto open-source OpenJDK. Similar ao Linux, múltiplos fornecedores disponibilizam binários para o projeto, incluindo Amazon, a fundação Eclipse, Microsoft, Oracle e Red Hat. Essas distribuições se diferenciam por aspectos como suporte comercial, plataformas suportadas, algumas com diferentes garbage collectors. Muitos fornecedores disponibilizam uma versão gratuita também. Portanto, qual devo utilizar?

No início, a diferença não importa tanto e a sugestão é começar com Eclipse Temurin. Essa versão é suportada pelo grupo de empresas como Google, Red Hat, Microsoft, Alibaba, Azul e outras. Você pode baixá-lo e usá-lo gratuitamente, contém tudo o que você precisa, é compatível com o Test Compatibility Kit (TCK) da JDK — ou seja, é uma JVM “homologada” — e, caso seja necessário, tem suporte comercial disponível por diferentes fornecedores.

📆 Versão

Uma nova versão do Java é lançada a cada 6 meses. A versão atual no momento da escrita deste post sendo a Java 19. Versões específicas são consideradas de suporte prolongado (long-term support ou LTS), em que cada fornecedor responsável pela JVM dá manutenção por alguns anos. A versão LTS, atualmente, é a Java 17 e a recomendação é escolher esta versão, neste momento.

Existem versões mais novas atualmente (18 e 19) que não são LTS e possuem funcionalidade interessantes, porém pode ser um desafio manter suas aplicações atualizadas de forma sustentável, sem contar que muitas dessas novidades ainda podem estar em fase de testes (preview) ou incubadas — você acabará não utilizando isso em produção. A recomendação, neste caso, é se aventurar nessas versões quando você possuir um pouco mais de experiência.

Caso alguma biblioteca de terceiros ainda não seja suportada pelo Java 17, deve-se procurar uma versão LTS anterior, que no caso é o Java 11. Tente evitar a utilização de versões não LTS, pois elas não têm compromisso com manutenção por muito tempo, ou seja, você pode estar com algum problema de segurança sem nenhuma visibilidade de correção ou bugs. Uma observação importante: não utilize o Java 8 (ou 1.8, como era chamado na época), que seria a versão LTS antes da 11, pois ela já está muito antiga.

🔧 Instalação

Existem algumas formas para instalar a versão escolhida. Geralmente, você encontrará um pacote que você pode instalar a partir do site do fornecedor. Você também poderia utilizar uma versão disponível de algum gerenciador de pacotes da sua distribuição Linux.

A minha recomendação é iniciar por uma forma mais simples que é por meio do SDKMan. Esta ferramenta o auxilia na instalação de softwares (SDKs) e demais ferramentas necessárias para o desenvolvimento. O SDKMan também gerencia futuras instalações, assim como múltiplas versões instaladas facilmente e sem conflitos.

Se você já possui o SDKMan instalado, faça isto para obter a versão 17:

$ sdk install java 17.0.5-tem # Instalar
$ sdk use java 17.0.5-tem # Selecionar
$ java --version # Verificar versão
openjdk 17.0.5 2022-10-18
...

Instalação no Windows SDKMan é feito em bash, portanto, se você utiliza Windows, você precisará do Windows Subsystem for Linux (WSL) ou do Cygwin antes. Outra opção seria utilizar o gerenciador de pacotes winget ou baixar o pacote diretamente do site do fornecedor.

💡 Seu Primeiro Programa

Após a instalação do Java, vamos criar o primeiro programa. Java é uma linguagem primariamente orientada a objetos, então tudo em Java é definido utilizando classes, que possuem atributos (representam o seu estado) e métodos (permitem alterar o estado interno). Como de costume, seu primeiro Hello world!

public class HelloWorld { // #1
public static void main(String... args) { // #2
System.out.println("Hello world!"); // #3
}
}
  1. A classe HelloWorld deve ser especificada num arquivo com o mesmo nome (HelloWorld.java);
  2. O método main() é o ponto de entrada de um programa Java;
  3. O método println() imprime o texto na saída padrão (stdout ou standard output).

O código Java é compilado para um arquivo class e que posteriormente é carregado na JVM para ser executado. Geralmente, isto é feito em duas etapas: 1) compilar utilizando o javac; 2) executar o binário com o java. Para simplificar, é possível realizar os dois comandos de uma só vez:

$ java HelloWorld.java
Hello world!

Para fins didáticos e uma exploração rápida existe o jshell, que é um REPL (Read-Evaluate-Print-Loop). É possível executar comandos mais simples sem a necessidade de declaração de pacotes, classes etc.:

$ jshell

jshell> System.out.println("Hello World");
Hello World

Similar ao jshell existe também o jbang, que é um pouco mais avançado, possibilitando a importação de bibliotecas terceiras.

📚 Aprendendo a Linguagem

Fornecer uma introdução para todas as funcionalidades básicas da linguagem Java está além do escopo deste post. Para realmente aprender a linguagem e seus detalhes, minha recomendação é pegar um bom livro, um bom café (vários) e estudar, seguindo suas preferências.

Algumas recomendações de livros populares: “Head First Java, 3rd Edition”, escrito pela Kathy Sierra, Bert Bates, Trisha Gee, complementado por “The Well-Grounded Java Developer, 2nd Edition”, por Benjamin Evans, Jason Clark e Martijn Verburg. Uma leitura obrigatória para aprimorar suas habilidades em Java é o “Effective Java, 3rd Edition” por Joshua Bloch. A última edição foi escrita com base no Java 9, porém o conteúdo não fica preso à versão em si e se aplica até nas versões atuais.

Se você não é do estilo de comprar e ler livros, existe o guia “Learn Java” do site dev.java. Existem vários materiais sobre a linguagem, sobre a JVM e suas ferramentas mais importantes com muitos detalhes.

Outra opção que pode interessar muita gente é estudar via cursos. Aqui no Brasil temos a Alura, com diversos cursos bons, em português e inclusive uma carreira de Java. Outra opção que costuma ter descontos e preços acessíveis é na Udemy, com bons cursos em português e inglês. O YouTube é outra fonte de conhecimento (só tome cuidado com a infinidade de conteúdo e com as sugestões que pode tirar o seu foco)

Se você gosta de certificação existe a “Oracle Certified Professional: Java SE 17 Developer”. Eu recomendo que você trabalhe pelo menos uns 2 anos com a linguagem, para se ambientar, e também estude durante este período, pois a certificação é relativamente difícil e com bastantes pegadinhas.

Independente da opções que você gosta de estudar, o importante é manter uma rotina frequente de estudos. Tente estudar um pouco todos os dias e isto vai se tornar um hábito para a vida toda.

📜 Próximo Capítulo

Esta é a primeira parte do guia. Aproveite para estudar a linguagem e se apronfundar mais. Na segunda parte, iremos abordar ferramentas para construção do seu projeto, editores e IDEs, bibliotecas e frameworks, entre outros detalhes. Não perca!

Você encontra a segunda parte deste guia aqui.

--

--