Ogni programmatore Java deve avere una conoscenza di base dello sviluppo del software. Quindi diamo un'occhiata a ciò che è considerato "di base".

1. Algoritmi di base

La prima cosa da affrontare quando si inizia a imparare a programmare (non solo Java) è capire le basi. Ad esempio, algoritmi.

Ce ne sono un numero infinito, e non dovresti ammazzare interi anni della tua vita cercando di imparare quanti più algoritmi possibile: la maggior parte di loro non ti sarà utile. Puoi ottenere il minimo necessario di conoscenza dal libro "Grokking Algorithms". Questo è sufficiente per iniziare, ma se vuoi, puoi imparare dal libro "Structures and Algorithms" o "Algorithms in Java" di Robert Sedgewick e Kevin Wayne.

2. Sintassi Java

Dopo aver appreso le basi degli algoritmi, dobbiamo imparare la sintassi Java. Del resto stai studiando per diventare programmatore Java, vero? Il corso CodeGym è perfetto per questo.

Mentre esegui innumerevoli compiti, metterai le mani sulla sintassi Java e quindi, senza troppe esitazioni, scriverai/leggerai codice Java come se fosse la tua lingua madre.

Oltre alla pratica, devi anche guardare alla teoria per capire cosa stai facendo. Per fare questo, puoi leggere libri. Ad esempio, uno dei seguenti:

  • "Testa prima Java",
  • "Java for Dummies" di Barry Bird;
  • "Java: una guida per principianti" di Herbert Schildt.

Dopo aver letto questi libri, puoi passare a libri più difficili:

  • "Pensare in Java", Bruce Eckel;
  • "Effective Java" di Joshua Bloch;
  • "Java: il riferimento completo" di Herbert Schildt.

Gli ultimi tre libri non sono di facile lettura per i principianti, ma forniscono una solida base nella teoria di Java.

3. Modelli di progettazione

I modelli di progettazione sono determinati modelli ripetibili che risolvono problemi in contesti incontrati di frequente. Includono modelli di base e semplici che ogni programmatore che si rispetti dovrebbe conoscere. Per comprendere questo argomento, prendi il libro "Head First Design Patterns".

Spiega i modelli di progettazione di base in modo accessibile. Ma il libro parla molto di Java, quindi quando consumerai questo libro avrai anche bisogno di fluidità in questo linguaggio di programmazione.

Per un'immersione più profonda nei modelli, puoi anche leggere "Design Patterns: Elements of Reusable Object-Oriented Software" di The Gang of Four ( Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides ). Dopo aver studiato questo argomento, inizierai a vedere schemi praticamente ovunque nel tuo codice.

Presta attenzione a questo, in particolare ai modelli utilizzati in primavera, poiché questa è una domanda di intervista popolare.

4. Paradigmi di programmazione. Pulizia del codice

Oltre ai modelli di progettazione standard, ci sono vari principi e paradigmi da conoscere (SOLID, GRASP).

È inoltre necessario mantenere il codice pulito e leggibile. Per tutto ciò che devi sapere su questo argomento, vedi Clean Code di Robert Martin o dai un'occhiata a "Code Complete" di Steve McConnell.

5. SQL

Il nostro prossimo passo è studiare un linguaggio per database relazionali: SQL.

I database sono i luoghi in cui sono archiviate le informazioni (dati) utilizzate da un'applicazione web. Un database è composto da diverse tabelle (la rubrica del telefono ne è un semplice esempio).

Gli sviluppatori Java sono responsabili non solo dell'applicazione Java, ma anche del database con cui interagisce e dove memorizza i suoi dati.

Nei database relazionali (che sono il tipo più comune), tutte le interazioni avvengono attraverso un linguaggio speciale chiamato Structured Query Language, o SQL.

Per comprendere questo argomento basta leggere uno di questi libri:

  1. "Imparare SQL" di Alan Beaulieu;
  2. "SQL" di Chris Fehily;
  3. "Head First SQL" di Lynn Beighley.

Ma la pratica senza la teoria non basta, vero? E ai colloqui puoi aspettarti un test della tua conoscenza di SQL. Gli intervistatori spesso (quasi sempre) assegnano uno o due compiti che comportano la scrittura di una query SQL.

Di conseguenza, è molto importante affinare le tue abilità pratiche di SQL per mostrarti in una buona luce.

6. MySQL/PostgreSQL

Dopo aver appreso il linguaggio SQL, è necessario acquisire familiarità con un'implementazione specifica del database. A seconda del database, alcuni comandi possono variare notevolmente. E ci sono differenze abbastanza evidenti nelle capacità del database.

I database relazionali più comuni sono MySQL e PostgreSQL. MySQL è molto più semplice, ma PostgreSQL ha capacità molto più ampie. Conoscere almeno uno di essi è sufficiente per iniziare.

Puoi studiare le implementazioni del database se usi le tue capacità di googling: trova articoli e tutorial pertinenti su YouTube. Dovrai coltivare la tua capacità di creare query di ricerca adeguate per le domande a cui hai bisogno di una risposta. Dopotutto, un programmatore è qualcuno con una cintura nera in googling.

7. Esperto/Gradle

Devi imparare il framework Gradle o Maven. Sono per la creazione di progetti e per te Java ora non è solo per attività che coinvolgono un paio di classi, ma anche un linguaggio per scrivere applicazioni complete.

Devi capire come costruire un progetto, quali sono le fasi di compilazione, come caricare le librerie esterne necessarie con codice di terze parti e molto altro.

Nonostante Gradle sia più nuovo e conciso, nella maggior parte dei casi viene utilizzato Maven. Quindi, presta particolare attenzione al ciclo di vita della build Maven.

8. Git

Git è un sistema di controllo della versione distribuito. Questa tecnologia consente agli sviluppatori di collaborare su una singola applicazione senza interferire tra loro.

Naturalmente, ci sono altri sistemi di controllo della versione. Ad esempio, Sovversione. Ma Git è ampiamente utilizzato e devi essere in grado di lavorarci. Oltre ai numerosi articoli su Git che puoi trovare online, YouTube ha video più che sufficienti per aiutarti a padroneggiare questa tecnologia, passo dopo passo.

All'inizio, è meglio usare Git dalla riga di comando piuttosto che una sorta di implementazione della GUI, perché sarai costretto a fare tutto usando i comandi. Nelle interviste, alle persone spesso piace chiedere informazioni su alcuni comandi Git, quindi ti consiglio di scriverli e tenerli da qualche parte vicino.

9. JDB

Questa tecnologia collega la tua applicazione Java e un database relazionale. Per le nozioni di base leggi qualsiasi tutorial JDBC.

C'è un'abbondanza di articoli che spiegano JDBC e forniscono esempi rudimentali, anche se nessuno usa più direttamente JDBC nudo.

10. APP. Ibernazione

JPA è un modo per stabilire una connessione tra un'applicazione Java e un database, proprio come JDBC. Ma allo stesso tempo, JPA è una tecnologia di livello superiore e quindi più facile da usare.

Ma JPA è solo una specifica, non un'implementazione. Ha bisogno di una concreta attuazione. Ne esistono molti, ma il più vicino agli ideali JPA, il più popolare e il più sviluppato è Hibernate.

Ti imbatterai in questa tecnologia più di una volta nella tua carriera di sviluppatore di software. Quindi, oltre a familiarizzare con questa tecnologia leggendo articoli, potrebbe valere la pena pensare di leggere un libro, ad esempio "Java Persistence API".

11. Primavera

Quando diventi uno sviluppatore Java, Spring non è più solo una parola per te. Conoscere questo framework ora è importante quanto conoscere la sintassi Java. Si potrebbe dire che Spring ha un fratello, cioè Java EE. Ma Java EE è obsoleto e non viene più utilizzato su nuovi progetti.

La stragrande maggioranza degli sviluppatori Java sono ora sviluppatori Java-Spring, quindi conoscere alcune tecnologie Spring di base è un must.

La primavera non è solo un quadro, ma un intero quadro di quadri:

E questo è solo un sottoinsieme dei framework forniti da Spring. Per un principiante, conoscerne solo alcuni è sufficiente:

Nucleo di primavera

Dovresti metterlo al primo posto, così puoi capire cos'è Spring: tutto su contenitori Spring, fagioli, DI, IoC e così via. Per capire la filosofia stessa dell'uso di Spring, per così dire. Il tuo ulteriore studio dei framework Spring si baserà su questa base. Forse dovresti creare la tua piccola applicazione in cui incorporare gradualmente tutte le nuove tecnologie apprese.

Primavera JDB

In precedenza abbiamo menzionato JDBC come tecnologia per la creazione di una connessione al database. In generale, l'uso "nudo" della tecnologia non può più essere trovato nei progetti, quindi potresti concludere che l'apprendimento di JDBC non è necessario. Questo non è proprio l'atteggiamento giusto.

Esplorando l'uso puro (diretto) di JDBC, puoi vedere la tecnologia a un livello inferiore e comprenderne i problemi e le carenze. Quindi, quando inizi a imparare Spring JDBC, ti renderai conto di cosa migliora, ottimizza e nasconde esattamente questo framework.

Ibernazione primaverile

Analogamente alla situazione con JDBC nudo, questo framework sfrutta una tecnologia esistente, in questo caso Hibernate. Se consideri l'utilizzo di Hibernate senza Spring, ti renderai sicuramente conto dei vantaggi offerti da Spring Hibernate.

APP primaverile

In precedenza abbiamo parlato di JPA e abbiamo detto che si tratta solo di una specifica, sebbene abbia varie implementazioni. Tra queste implementazioni, Hibernate si avvicina di più all'ideale.

Spring ha la sua implementazione JPA ideale che utilizza Hibernate sotto il cofano. È il più vicino possibile all'ideale della specifica JPA.

Si chiama Spring JPA. In una parola, semplifica enormemente l'accesso al database.

Puoi solo imparare JPA senza imparare JDBC, Hibernate, Spring JDBC o Spring Hibernate. Ma se segui questo approccio, la tua conoscenza di come connettersi a un database sarà molto superficiale.

Primavera MVC

Questa tecnologia consente di mostrare agli utenti l'interfaccia web della nostra applicazione e facilita la comunicazione tra l'interfaccia e il resto dell'applicazione. La tecnologia può essere utilizzata anche senza visualizzazione quando si dispone di un'applicazione responsabile della gestione della visualizzazione e si interagisce con l'applicazione utilizzando la tecnologia RESTful.

Per assorbire meglio le informazioni sulla primavera, oltre agli articoli e alle lezioni su YouTube, puoi leggere diversi libri. Ad esempio, "Spring in Action" di Craig Walls. Un altro grande libro sulla primavera è "Primavera 5 per i professionisti". È più denso. Più come un riferimento più prezioso da tenere a portata di mano che da leggere dall'inizio alla fine.

Stivale a molla

Questa tecnologia semplifica notevolmente l'uso di Spring. Non l'ho messo in fondo alla lista per capriccio. In effetti, si nasconde molto sotto il cofano, e per chi non ha familiarità con la Vanilla Spring, molti punti potrebbero essere poco chiari o incomprensibili.

Innanzitutto, per una migliore comprensione di come funzionano i framework Spring, dovresti utilizzare Spring regolare e quindi raccogliere tutti i maggiori vantaggi dell'utilizzo di Spring Boot.

Dovresti anche familiarizzare con Spring Security e Spring AOP. Ma a differenza delle tecnologie di cui sopra, non è ancora necessaria una profonda conoscenza di queste due.

Questa tecnologia non è per i principianti. Durante le interviste, agli sviluppatori junior non verrà chiesto di loro (tranne una domanda superficiale, forse). Leggi una panoramica di cosa sono queste tecnologie e dei principi alla base del loro lavoro.

Più sai, più velocemente troverai il tuo primo lavoro.