1.1 Grandi programmi

Abbiamo già imparato a scrivere piccoli programmi, quindi ora impareremo a scriverne di grandi. Come sai, più grande e complesso è il programma, più soldi vengono pagati per il suo sviluppo :) E iniziamo con un piccolo background ...

Con l'aumentare delle dimensioni dei programmi, gli sviluppatori devono affrontare due nuove sfide:

  • Un gran numero di persone sta lavorando allo stesso programma.
  • Non esiste una persona simile che conosca l'intero codice del programma.

Molto spesso, si sono verificate situazioni in cui un programmatore ha corretto un bug in un punto del programma e allo stesso tempo ha rotto qualcosa in un altro. La documentazione di rilascio contiene anche questa battuta:

Elenco delle modifiche:

  • Risolti vecchi bug :)
  • Aggiunti nuovi :(

Quindi hanno escogitato due approcci per risolvere questo problema: tecnico e gestionale.

L'approccio tecnico prevedeva che i programmi fossero suddivisi in parti: librerie e moduli . Ciascuno di questi moduli era un piccolo mattone da cui venivano poi costruiti grandi progetti. Le librerie sono tali componenti universali che possono essere utilizzate in diversi programmi.

L'approccio manageriale era ancora più interessante: limitavano il numero di persone che potevano lavorare su un progetto/biblioteca. Empiricamente, hanno persino escogitato una regola: la squadra dovrebbe essere così grande che "potrebbe essere nutrita con due pizze . " Questo di solito significa che se ci sono più di 8 persone che lavorano su un progetto , allora deve essere diviso in due progetti.

È diventato popolare nella comunità degli sviluppatori Java scrivere librerie per tutte le occasioni e renderle disponibili al pubblico. Pertanto, i programmatori Java non potevano scrivere di nuovo lo stesso codice (che spesso era grezzo e conteneva bug), ma utilizzare soluzioni già pronte e collaudate .

Un ulteriore incentivo è stato il fatto che il linguaggio Java ha guadagnato una grande popolarità durante la scrittura di soluzioni lato server (ha funzionato sul back-end). Innanzitutto, il software del server ha requisiti di affidabilità più elevati e l'utilizzo di librerie collaudate nel tempo è sempre preferibile alla scrittura del proprio codice.

In secondo luogo, i server non hanno praticamente limiti alla dimensione del codice. Lo sviluppatore di un'applicazione mobile cerca di stiparla in 10 megabyte, un'applicazione desktop - in 100 megabyte. E uno sviluppatore di backend Java può stipare diverse decine di gigabyte di librerie in un progetto e nessuno gli dirà una parola :)

A proposito, questo non è uno scherzo. Puoi facilmente imbatterti in un progetto di backend con diverse dozzine di moduli e un paio di centinaia di librerie. Ma è diventato estremamente difficile descrivere (e modificare!) gli script di compilazione per tali progetti.

E poi è apparso Maven.

1.2 Introduzione a Maven

Maven è un "framework" speciale per la gestione della build del progetto. Standardizza 3 cose:
  • Descrizione del progetto;
  • Script di compilazione del progetto;
  • Dipendenze tra librerie.

Il predecessore di Maven era Ant e il suo successore è Gradle . Ma è stato Maven a sviluppare e perfezionare i tre standard elencati, regolandone anche l'interazione. È stato lui a portare il lavoro delle comunità Java a un nuovo livello. Diamo un'occhiata più in dettaglio.

Esperto di

Tecnicamente, Maven è un programma / servizio speciale, il cui scopo principale è gestire il processo di costruzione dei progetti. Può essere semplicemente scaricato come archivio e decompresso in qualsiasi directory. Non hai bisogno di un programma di installazione speciale per questo.

Non ha un'interfaccia grafica: tutti i comandi le vengono dati tramite la console . Per rendere ancora più comodo lavorare con esso, si consiglia di registrare speciali variabili d'ambiente nel proprio sistema operativo.

Maven ha anche un repository speciale (directory / cartella) in cui memorizza le librerie che utilizza durante la creazione di progetti. Dovrai selezionare una cartella sul disco e assegnarla come repository.

Un'altra cosa interessante è la presenza di un repository Maven globale per tutte le librerie, ma di questo parleremo poco dopo.

1.3 Scaricare e installare Maven

Maven ha un sito ufficiale maven.apache.org . C'è molta documentazione sul progetto, quindi se hai difficoltà o domande aggiuntive, entra, non essere timido.

Sempre nella pagina dei download ( https://maven.apache.org/download.cgi ) è possibile scaricare l'archivio Maven (apache-maven-3.8.5-bin.zip). L'archivio decompresso occuperà da qualche parte circa 10 MB, anche se il repository Maven locale richiederà alla fine diverse centinaia di megabyte di memoria.

Maven è scritto in Java e richiede un JRE di almeno la versione 7, nonché variabili di ambiente JAVA_HOME definite.

Basta creare una cartella per Maven sul tuo computer, ad esempio d:\devtools ed estrarre l'archivio con Maven al suo interno. Di conseguenza, dovresti ottenere una cartella come d:\devtools\maven\bin , dove si troveranno i file binari principali del progetto.

1.4 Variabili d'ambiente

Successivamente, è necessario aggiungere il percorso alla cartella bin dall'archivio decompresso alla variabile di ambiente PATH.

Per impostare la variabile di ambiente in Windows 10, devi andare su Pannello di controllo - Sistema - Impostazioni di sistema avanzate. Quindi fai clic su "Variabili d'ambiente", trova PATH e seleziona "Modifica", quindi aggiungi il percorso d:\devtools\maven\bin alla fine della riga. Attenzione, il percorso deve portare esattamente alla cartella bin.

Su un sistema operativo basato su Unix, la variabile di ambiente può essere aggiunta con un comando della console:

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

Se hai fatto tutto correttamente, nella console devi digitare il comando: "mvn -v". In risposta, vedrai qualcosa come:

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 Repository Maven locale

Puoi anche impostare una cartella speciale in cui Maven memorizzerà le librerie jar che utilizzerà durante la creazione di progetti. Questa cartella è chiamata repository Maven locale .

Se non viene specificata alcuna cartella di questo tipo, Maven la creerà nella home directory dell'utente corrente. La mia directory è: C:\Users\Zapp\.m2

La cartella ha un nome piuttosto specifico “.m2”. Sebbene non spaventi gli utenti Linux, esiste un approccio abbastanza comune per nominare vari "repository" e / o qualsiasi altro archivio di informazioni di servizio.

Importante! Non posizionare Maven nelle cartelle di sistema, poiché durante il funzionamento richiederà autorizzazioni di scrittura su queste cartelle, il che potrebbe essere di malsano interesse per l'antivirus o il sistema operativo.

Maven prima della versione 3.5 richiedeva una variabile di ambiente chiamata M2_HOME, ma non è più necessaria.

Puoi leggere ulteriori informazioni sulla configurazione di Maven al link: https://maven.apache.org/configure.html