Todo programador Java deve ter uma compreensão básica do desenvolvimento de software. Então, vamos dar uma olhada no que é considerado "básico".

1. Algoritmos básicos

A primeira coisa a fazer ao começar a aprender programação (não apenas Java) é entender o básico. Por exemplo, algoritmos.

Há um número infinito deles, e você não deve matar anos inteiros de sua vida tentando aprender o máximo possível de algoritmos: a maioria deles não será útil para você. Você pode obter o mínimo de conhecimento necessário no livro "Grokking Algorithms". Isso é o suficiente para você começar, mas se quiser, pode aprender com o livro "Structures and Algorithms" ou "Algorithms in Java" de Robert Sedgewick e Kevin Wayne.

2. Sintaxe Java

Depois de aprender o básico dos algoritmos, precisamos aprender a sintaxe Java. Afinal, você está estudando para se tornar um programador Java, certo? O curso CodeGym é perfeito para isso.

Ao executar inúmeras tarefas, você colocará as mãos na sintaxe Java e, sem muita hesitação, escreverá/lerá o código Java como se fosse seu idioma nativo.

Além da prática, você também precisa olhar para a teoria para entender o que está fazendo. Para fazer isso, você pode ler livros. Por exemplo, um dos seguintes:

  • "Head First Java",
  • "Java for Dummies" de Barry Bird;
  • "Java: um guia para iniciantes" por Herbert Schildt.

Depois de ler esses livros, você pode começar a ler livros mais difíceis:

  • "Pensando em Java", Bruce Eckel;
  • "Effective Java" por Joshua Bloch;
  • "Java: a referência completa" por Herbert Schildt.

Os últimos três livros não são de leitura fácil para iniciantes, mas fornecem uma base sólida na teoria de Java.

3. Padrões de projeto

Padrões de projeto são certos padrões repetíveis que resolvem problemas em contextos frequentemente encontrados. Eles incluem padrões básicos e simples que todo programador que se preze deve conhecer. Para entender este tópico, pegue o livro "Head First Design Patterns".

Ele explica os padrões básicos de design de forma acessível. Mas o livro fala muito sobre Java, portanto, ao consumir este livro, você também precisará ter fluência nessa linguagem de programação.

Para um mergulho mais profundo nos padrões, você também pode ler "Design Patterns: Elements of Reusable Object-Oriented Software" da Gang of Four ( Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides ). Depois de estudar esse tópico, você começará a ver padrões praticamente em todos os lugares do seu código.

Preste atenção a isso, especialmente aos padrões usados ​​no Spring, já que essa é uma pergunta popular em entrevistas.

4. Paradigmas de programação. Limpeza do código

Além dos padrões de design padrão, existem vários princípios e paradigmas a serem observados (SOLID, GRASP).

Você também precisa manter seu código limpo e legível. Para saber tudo sobre esse tópico, consulte Clean Code de Robert Martin ou confira "Code Complete" de Steve McConnell.

5. SQL

Nosso próximo passo é estudar uma linguagem para bancos de dados relacionais — SQL.

Os bancos de dados são onde as informações (dados) usadas por um aplicativo da web são armazenadas. Um banco de dados consiste em várias tabelas (o catálogo de endereços do seu telefone é um exemplo simples).

Os desenvolvedores Java são responsáveis ​​não apenas pelo aplicativo Java, mas também pelo banco de dados com o qual ele interage e onde armazena seus dados.

Nos bancos de dados relacionais (que são o tipo mais comum), toda interação ocorre por meio de uma linguagem especial chamada Structured Query Language, ou SQL.

Para entender este tópico, tudo que você precisa fazer é ler um destes livros:

  1. "Aprendendo SQL" por Alan Beaulieu;
  2. "SQL" por Chris Fehily;
  3. "Head First SQL" por Lynn Beighley.

Mas prática sem teoria não resolve, não é? E nas entrevistas você pode esperar um teste de seu conhecimento de SQL. Frequentemente (quase sempre) os entrevistadores dão uma ou duas tarefas que envolvem escrever uma consulta SQL.

Como resultado, é muito importante aprimorar suas habilidades práticas de SQL para se mostrar bem.

6. MySQL/PostgreSQL

Depois de aprender a linguagem SQL, você precisa se familiarizar com uma implementação de banco de dados específica. Dependendo do banco de dados, alguns comandos podem variar drasticamente. E há diferenças bastante perceptíveis nos recursos do banco de dados.

Os bancos de dados relacionais mais comuns são MySQL e PostgreSQL. O MySQL é muito mais simples, mas o PostgreSQL tem recursos muito mais amplos. Estar familiarizado com pelo menos um deles é o suficiente para começar.

Você pode estudar implementações de banco de dados se usar suas habilidades de pesquisa no Google - encontre artigos e tutoriais relevantes no YouTube. Você precisará cultivar sua capacidade de criar consultas de pesquisa adequadas para as perguntas que precisa responder. Afinal, um programador é alguém com faixa preta em googling.

7. Maven/Gradle

Você precisa aprender a estrutura Gradle ou Maven. Eles são para construir projetos e, para você, o Java agora não é apenas para tarefas que envolvem algumas classes, mas também uma linguagem para escrever aplicativos completos.

Você precisa entender como construir um projeto, quais são os estágios de construção, como carregar as bibliotecas externas necessárias com código de terceiros e muito mais.

Apesar do Gradle ser mais novo e mais conciso, o Maven é usado na maioria dos casos. Portanto, preste atenção especial ao ciclo de vida de construção do Maven.

8. Git

Git é um sistema de controle de versão distribuído. Essa tecnologia permite que os desenvolvedores colaborem em um único aplicativo sem interferir uns nos outros.

Claro, existem outros sistemas de controle de versão. Por exemplo, Subversão. Mas o Git é usado mais amplamente e você precisa ser capaz de trabalhar com ele. Além dos muitos artigos sobre Git que você pode encontrar online, o YouTube tem vídeos mais do que suficientes para ajudá-lo a dominar esta tecnologia, passo a passo.

A princípio, é melhor usar o Git na linha de comando do que algum tipo de implementação de GUI, porque você será forçado a fazer tudo usando comandos. Em entrevistas, as pessoas geralmente gostam de perguntar sobre alguns comandos do Git, então eu recomendo que você os escreva e guarde em algum lugar por perto.

9. JDBC

Essa tecnologia conecta seu aplicativo Java e um banco de dados relacional. Para o básico, leia qualquer tutorial JDBC.

Há uma abundância de artigos que explicam o JDBC e fornecem exemplos rudimentares, embora ninguém mais esteja usando o JDBC puro diretamente.

10. JPA. hibernar

JPA é uma forma de estabelecer uma conexão entre um aplicativo Java e um banco de dados, assim como o JDBC. Mas, ao mesmo tempo, JPA é uma tecnologia de alto nível e, portanto, mais fácil de usar.

Mas o JPA é apenas uma especificação, não uma implementação. Precisa de uma implementação concreta. Muitos deles existem, mas o mais próximo dos ideais do JPA, o mais popular e o mais desenvolvido é o Hibernate.

Você encontrará essa tecnologia mais de uma vez em sua carreira de desenvolvimento de software. Então, além de se familiarizar com essa tecnologia lendo artigos, pode valer a pena pensar em ler um livro, por exemplo, "Java Persistence API".

11. Primavera

Quando você se torna um desenvolvedor Java, Spring não é mais apenas uma palavra para você. Conhecer esse framework agora é tão importante quanto conhecer a Sintaxe Java. Você poderia dizer que o Spring tem um irmão, ou seja, Java EE. Mas o Java EE está desatualizado e não é mais usado em novos projetos.

A esmagadora maioria dos desenvolvedores Java são agora desenvolvedores Java-Spring, portanto, conhecer algumas tecnologias básicas do Spring é obrigatório.

Spring não é apenas um framework, mas todo um framework de frameworks:

E este é apenas um subconjunto das estruturas fornecidas pelo Spring. Para um iniciante, conhecer apenas alguns deles é bom o suficiente:

Núcleo de mola

Você deve colocar isso em primeiro lugar, para entender o que é Spring — tudo sobre contêineres Spring, beans, DI, IoC e assim por diante. Para entender a própria filosofia de usar o Spring, por assim dizer. Seu estudo mais aprofundado dos frameworks Spring será construído sobre esta base. Talvez você deva criar seu próprio pequeno aplicativo no qual possa incorporar gradualmente todas as tecnologias recém-aprendidas.

Primavera JDBC

Anteriormente, mencionamos o JDBC como uma tecnologia para criar uma conexão de banco de dados. Em geral, o uso "nu" da tecnologia não pode mais ser encontrado em projetos, então você pode concluir que aprender JDBC não é necessário. Essa não é a atitude certa.

Ao explorar o uso nu (direto) do JDBC, você pode ver a tecnologia em um nível inferior e entender seus problemas e deficiências. Então, quando você começar a aprender o Spring JDBC, perceberá exatamente o que essa estrutura melhora, otimiza e oculta.

Hibernação de primavera

De forma análoga à situação do JDBC nu, esse framework utiliza uma tecnologia existente, neste caso, o Hibernate. Se você considerar usar o Hibernate sem o Spring, com certeza perceberá os benefícios que o Spring Hibernate oferece.

Primavera JPA

Anteriormente, falamos sobre JPA e mencionamos que é apenas uma especificação, embora tenha várias implementações. Entre essas implementações, o Hibernate é o que mais se aproxima do ideal.

O Spring tem sua própria implementação JPA ideal que usa o Hibernate sob o capô. É o mais próximo possível do ideal da especificação JPA.

É chamado Spring JPA. Em uma palavra, simplifica muito o acesso ao banco de dados.

Você só pode aprender JPA sem aprender JDBC, Hibernate, Spring JDBC ou Spring Hibernate. Mas se você adotar essa abordagem, seu conhecimento de como se conectar a um banco de dados será muito superficial.

Primavera MVC

Essa tecnologia permite exibir a interface web do nosso aplicativo para os usuários e facilitar a comunicação entre a interface e o restante do aplicativo. A tecnologia também pode ser usada sem exibição quando você tem um aplicativo responsável por manipular a exibição e está interagindo com o aplicativo usando a tecnologia RESTful.

Para melhor absorver as informações sobre a Primavera, além de artigos e palestras no YouTube, você pode ler diversos livros. Por exemplo, "Spring in Action" de Craig Walls. Outro grande livro sobre o Spring é "Spring 5 for the Professionals". É mais denso. Mais como uma referência que é mais valiosa manter à mão do que ler de capa a capa.

bota de mola

Essa tecnologia simplifica muito o uso do Spring. Não coloquei no final da lista por capricho. De fato, ele se esconde muito sob o capô e, para quem não está familiarizado com o vanilla Spring, muitos pontos podem não ser claros ou incompreensíveis.

Primeiro, para uma melhor compreensão de como funcionam as estruturas do Spring, você deve usar o Spring regular e, em seguida, obter todos os benefícios superiores do uso do Spring Boot.

Você também deve se familiarizar com Spring Security e Spring AOP. Mas, ao contrário das tecnologias acima, um conhecimento profundo dessas duas ainda não é necessário.

Esta tecnologia não é para iniciantes. Nas entrevistas, os desenvolvedores juniores não serão questionados sobre eles (exceto uma pergunta superficial, talvez). Leia uma visão geral do que são essas tecnologias e os princípios por trás de seu trabalho.

Quanto mais você souber, mais rápido encontrará seu primeiro emprego.