1.1 Duże programy

Nauczyliśmy się już pisać małe programy, więc teraz nauczymy się pisać duże. Jak wiadomo, im większy i bardziej złożony program, tym więcej pieniędzy płaci się za jego rozwój :) A zacznijmy od małego tła...

Wraz ze wzrostem rozmiarów programów programiści stają przed dwoma nowymi wyzwaniami:

  • Nad tym samym programem pracuje wiele osób.
  • Nie ma takiej osoby, która znałaby cały kod programu.

Bardzo często zaczynały się pojawiać sytuacje, gdy programista naprawiał błąd w jednym miejscu programu, a jednocześnie zepsuł coś w innym. Dokumentacja wydania zawiera nawet ten żart:

Lista zmian:

  • Poprawiłem stare błędy :)
  • Dodano nowe :(

Następnie wymyślili dwa podejścia do rozwiązania tego problemu: techniczne i menedżerskie.

Podejście techniczne polegało na tym, że programy zostały podzielone na części: biblioteki i moduły . Każdy taki moduł był małą cegiełką, z której następnie budowano duże projekty. Biblioteki to takie uniwersalne komponenty, które można wykorzystać w różnych programach.

Jeszcze ciekawsze było podejście menedżerskie, które ograniczało liczbę osób, które mogły pracować nad jednym projektem/biblioteką. Empirycznie wymyślili nawet zasadę: zespół powinien być tak liczny, by „dało się go nakarmić dwiema pizzami ” . Zwykle oznacza to, że jeśli nad projektem pracuje więcej niż 8 osób , należy go podzielić na dwa projekty.

W społeczności programistów Javy stało się popularne pisanie bibliotek na każdą okazję i udostępnianie ich publicznie. Tym samym programiści Javy nie mogli napisać ponownie tego samego kodu (który często był surowy i zawierał błędy), tylko skorzystać z gotowych i sprawdzonych rozwiązań .

Dodatkową zachętą był fakt, że język Java zyskał dużą popularność przy pisaniu rozwiązań po stronie serwera (działał na backendzie). Po pierwsze, oprogramowanie serwera ma wyższe wymagania dotyczące niezawodności, a korzystanie ze sprawdzonych bibliotek jest zawsze lepsze niż pisanie własnego kodu.

Po drugie, serwery praktycznie nie mają ograniczeń co do wielkości kodu. Twórca aplikacji mobilnej stara się zmieścić ją w 10 megabajtach, aplikacji desktopowej w 100 megabajtach. A programista Java backend może upchnąć w projekt kilkadziesiąt gigabajtów bibliotek i nikt się do niego nie odezwie :)

Nawiasem mówiąc, to nie jest żart. Bez problemu można trafić na projekt backendowy z kilkudziesięcioma modułami i kilkoma setkami bibliotek. Jednak opisanie (i zmiana!) skryptów kompilacji dla takich projektów stało się niezwykle trudne.

A potem pojawił się Maven.

1.2 Wprowadzenie do Mavena

Maven to specjalny „framework” do zarządzania budowaniem projektów. Standaryzuje 3 rzeczy:
  • opis projektu;
  • Skrypty budowania projektu;
  • Zależności między bibliotekami.

Poprzednikiem Mavena był Ant , a jego następcą jest Gradle . Ale to Maven opracował i udoskonalił trzy wymienione standardy, a także uregulował ich interakcję. To on wyniósł pracę społeczności Java na nowy poziom. Przyjrzyjmy się temu bardziej szczegółowo.

Maven

Technicznie rzecz biorąc, Maven jest specjalnym programem/usługą, której głównym celem jest zarządzanie procesem budowy projektów. Można go po prostu pobrać jako archiwum i rozpakować do dowolnego katalogu. Nie potrzebujesz do tego specjalnego instalatora.

Nie posiada interfejsu graficznego - wszystkie komendy wydawane są jej za pomocą konsoli . Aby praca z nim była jeszcze wygodniejsza, zaleca się zarejestrowanie specjalnych zmiennych środowiskowych w systemie operacyjnym.

Maven posiada również specjalne repozytorium (katalog/folder), w którym przechowuje biblioteki, których używa podczas budowania projektów. Będziesz musiał wybrać jakiś folder na dysku i przypisać go jako repozytorium.

Kolejną interesującą rzeczą jest obecność globalnego repozytorium Maven dla wszystkich bibliotek, ale o tym porozmawiamy nieco później.

1.3 Pobierz i zainstaluj Mavena

Maven ma oficjalną stronę maven.apache.org . Na temat projektu jest dużo dokumentacji, więc jeśli masz jakieś trudności lub dodatkowe pytania - wejdź, nie wstydź się.

Również na stronie pobierania ( https://maven.apache.org/download.cgi ) możesz pobrać archiwum maven (apache-maven-3.8.5-bin.zip). Rozpakowane archiwum zajmie około 10 MB, chociaż lokalne repozytorium maven będzie ostatecznie wymagało kilkuset megabajtów pamięci.

Maven jest napisany w Javie i wymaga środowiska JRE w wersji co najmniej 7, a także zdefiniowanych zmiennych środowiskowych JAVA_HOME.

Po prostu utwórz folder dla Mavena na swoim komputerze, na przykład d:\devtools i rozpakuj do niego archiwum z Mavenem. W rezultacie powinieneś otrzymać folder taki jak d:\devtools\maven\bin , w którym będą znajdować się główne pliki binarne projektu.

1.4 Zmienne środowiskowe

Następnie musisz dodać ścieżkę do folderu bin z rozpakowanego archiwum do zmiennej środowiskowej PATH.

Aby ustawić zmienną środowiskową w systemie Windows 10, musisz przejść do Panelu sterowania - System - Zaawansowane ustawienia systemu. Następnie kliknij „Zmienne środowiskowe”, znajdź PATH i wybierz „Edytuj”, a następnie dodaj ścieżkę d:\devtools\maven\bin na końcu linii. Zwróć uwagę, ścieżka musi prowadzić dokładnie do folderu bin.

W systemie operacyjnym opartym na systemie Unix zmienną środowiskową można dodać za pomocą polecenia konsoli:

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

Jeśli zrobiłeś wszystko poprawnie, to w konsoli musisz wpisać polecenie: „mvn -v”. W odpowiedzi zobaczysz coś takiego:

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 Lokalne repozytorium Maven

Możesz także ustawić specjalny folder, w którym Maven będzie przechowywać biblioteki jar, których będzie używał podczas budowania projektów. Ten folder nazywa się lokalnym repozytorium maven .

Jeśli nie określono takiego folderu, Maven utworzy go w katalogu domowym bieżącego użytkownika. Mój katalog to: C:\Users\Zapp\.m2

Folder ma dość specyficzną nazwę „.m2”. Chociaż nie przeraża to użytkowników Linuksa - istnieje dość powszechne podejście do nazywania różnych „repozytoriów” i / lub wszelkich innych przechowywania informacji o usługach.

Ważny! Nie umieszczaj Mavena w folderach systemowych, ponieważ będzie on potrzebował uprawnień do zapisu w tych folderach podczas działania, co może być niezdrowe dla programu antywirusowego lub systemu operacyjnego.

Maven przed wersją 3.5 wymagał zmiennej środowiskowej o nazwie M2_HOME, ale nie jest to już potrzebne.

Możesz przeczytać więcej o konfiguracji Mavena pod linkiem: https://maven.apache.org/configure.html