1.1 Stora program

Vi har redan lärt oss hur man skriver små program, så nu ska vi lära oss hur man skriver stora. Som ni vet, ju större och mer komplext programmet är, desto mer pengar betalas för dess utveckling :) Och låt oss börja med lite bakgrund ...

När programmen växer i storlek står utvecklare inför två nya utmaningar:

  • Ett stort antal personer arbetar med samma program.
  • Det finns ingen sådan person som skulle kunna hela koden för programmet.

Mycket ofta började situationer uppstå när en programmerare fixade en bugg på en plats i programmet och samtidigt bröt något på en annan. Releasedokumentationen har till och med detta skämt:

Lista över ändringar:

  • Fixat gamla buggar :)
  • Lade till nya :(

Sedan kom de på två tillvägagångssätt för att lösa detta problem: tekniskt och ledningsmässigt.

Det tekniska tillvägagångssättet var att program bröts upp i delar: bibliotek och moduler . Varje sådan modul var en liten tegelsten från vilken man sedan byggde stora projekt. Bibliotek är sådana universella komponenter som kan användas i olika program.

Det chefsmässiga förhållningssättet var ännu mer intressant - de begränsade antalet personer som kunde arbeta med ett projekt/bibliotek. Empiriskt kom de till och med på en regel: laget ska vara så stort att "det kunde matas med två pizzor . " Detta innebär vanligtvis att om det är fler än 8 personer som arbetar med ett projekt måste det delas upp i två projekt.

Det har blivit populärt i Java-utvecklargemenskapen att skriva bibliotek för alla tillfällen och göra dem offentligt tillgängliga. Java-programmerare kunde alltså inte skriva samma kod igen (som ofta var rå och innehöll buggar), utan använda färdiga och beprövade lösningar .

Ett ytterligare incitament var det faktum att Java-språket fick stor popularitet när man skrev server-side-lösningar (det fungerade på backend). För det första har servermjukvara högre krav på tillförlitlighet, och att använda tidstestade bibliotek är alltid att föredra framför att skriva din egen kod.

För det andra har servrar praktiskt taget inga gränser för storleken på koden. Utvecklaren av en mobilapplikation försöker klämma in den i 10 megabyte, en stationär applikation - i 100 megabyte. Och en Java-backend-utvecklare kan klämma in flera tiotals gigabyte med bibliotek i ett projekt och ingen kommer att säga ett ord till honom :)

Det här är förresten inget skämt. Du kan lätt stöta på ett backend-projekt med flera dussin moduler och ett par hundra bibliotek. Men det har blivit extremt svårt att beskriva (och ändra!) bygga manus för sådana projekt.

Och så dök Maven upp.

1.2 Introduktion till Maven

Maven är ett speciellt "ramverk" för projektuppbyggnadshantering. Den standardiserar 3 saker:
  • Beskrivning av projektet;
  • Manus för att bygga projekt;
  • Beroenden mellan bibliotek.

Mavens föregångare var Ant , och dess efterträdare är Gradle . Men det var Maven som utvecklade och fulländade de tre listade standarderna och även reglerade deras interaktion. Det var han som tog Java-gemenskapernas arbete till en ny nivå. Låt oss titta på det mer detaljerat.

Maven

Tekniskt sett är Maven ett speciellt program/tjänst, vars huvudsakliga syfte är att hantera processen för byggprojekt . Det kan enkelt laddas ner som ett arkiv och packas upp till valfri katalog. Du behöver ingen speciell installatör för detta.

Hon har inget grafiskt gränssnitt - alla kommandon ges till henne med hjälp av konsolen . För att göra det ännu bekvämare att arbeta med det, rekommenderas det att registrera speciella miljövariabler i ditt operativsystem.

Maven har också ett speciellt arkiv (katalog / mapp) där den lagrar de bibliotek som den använder när man bygger projekt. Du måste välja någon mapp på disken och tilldela den som ett arkiv.

En annan intressant sak är närvaron av ett globalt Maven-förråd för alla bibliotek, men vi kommer att prata om detta lite senare.

1.3 Ladda ner och installera Maven

Maven har en officiell webbplats maven.apache.org . Det finns mycket dokumentation om projektet, så om du har några svårigheter eller ytterligare frågor – kom in, var inte blyg.

Även på nedladdningssidan ( https://maven.apache.org/download.cgi ) kan du ladda ner maven-arkivet (apache-maven-3.8.5-bin.zip). Det uppackade arkivet kommer att ta någonstans runt 10 MB, även om det lokala maven-förrådet så småningom kommer att kräva flera hundra megabyte minne.

Maven är skrivet i Java och kräver en JRE på minst version 7, samt definierade JAVA_HOME miljövariabler.

Skapa bara en mapp för Maven på din dator, till exempel d:\devtools , och extrahera arkivet med Maven i det. Som ett resultat bör du få en mapp som d:\devtools\maven\bin , där de huvudsakliga binärfilerna för projektet kommer att finnas.

1.4 Miljövariabler

Efter det måste du lägga till sökvägen till bin-mappen från det uppackade arkivet till miljövariabeln PATH.

För att ställa in miljövariabeln i Windows 10 måste du gå till Kontrollpanelen - System - Avancerade systeminställningar. Klicka sedan på "Environment Variables", leta reda på PATH och välj "Redigera", lägg sedan till sökvägen d:\devtools\maven\bin i slutet av raden. Var uppmärksam, sökvägen måste leda exakt till papperskorgen.

På ett Unix-baserat operativsystem kan miljövariabeln läggas till med ett konsolkommando:

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

Om du gjorde allt korrekt, måste du skriva kommandot i konsolen: "mvn -v". Som svar kommer du att se något i stil med:

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 Lokalt Maven-förråd

Du kan också ställa in en speciell mapp där Maven kommer att lagra jar-bibliotek som den kommer att använda när man bygger projekt. Den här mappen kallas det lokala maven-förrådet .

Om ingen sådan mapp anges kommer Maven att skapa den i den aktuella användarens hemkatalog. Min katalog är: C:\Users\Zapp\.m2

Mappen har ett ganska specifikt namn ".m2". Även om det inte skrämmer Linux-användare - där är det ett ganska vanligt sätt att namnge olika "repositories" och/eller annan lagring av tjänstinformation.

Viktig! Placera inte Maven i systemmappar, eftersom den kommer att behöva skrivbehörighet till dessa mappar under drift, vilket kan vara av ohälsosamt intresse för antivirus- eller operativsystemet.

Maven före version 3.5 krävde en miljövariabel som heter M2_HOME, men detta är inte längre nödvändigt.

Du kan läsa mer om att konfigurera Maven på länken: https://maven.apache.org/configure.html