1.1 Große Programme

Wir haben bereits gelernt, wie man kleine Programme schreibt, also lernen wir jetzt, wie man große Programme schreibt. Wie Sie wissen, gilt: Je größer und komplexer das Programm, desto mehr Geld wird für seine Entwicklung bezahlt :) Und fangen wir mit ein wenig Hintergrundwissen an ...

Mit zunehmender Programmgröße stehen Entwickler vor zwei neuen Herausforderungen:

  • Viele Menschen arbeiten am gleichen Programm.
  • Es gibt keine solche Person, die den gesamten Code des Programms kennt.

Sehr oft kam es zu Situationen, in denen ein Programmierer einen Fehler an einer Stelle des Programms behob und gleichzeitig an einer anderen Stelle etwas kaputt machte. In der Release-Dokumentation gibt es sogar diesen Witz:

Liste der Änderungen:

  • Alte Fehler behoben :)
  • Neue hinzugefügt :(

Dann entwickelten sie zwei Ansätze zur Lösung dieses Problems: technische und verwaltungstechnische.

Der technische Ansatz bestand darin, Programme in Teile aufzuteilen: Bibliotheken und Module . Jedes dieser Module war ein kleiner Baustein, aus dem dann große Projekte gebaut wurden. Bibliotheken sind solche universellen Komponenten, die in verschiedenen Programmen verwendet werden können.

Der Managementansatz war sogar noch interessanter – sie begrenzten die Anzahl der Personen, die an einem Projekt/einer Bibliothek arbeiten konnten. Empirisch haben sie sogar eine Regel aufgestellt: Das Team sollte so groß sein, dass „es mit zwei Pizzen satt werden könnte “ . Dies bedeutet normalerweise, dass, wenn mehr als 8 Personen an einem Projekt arbeiten , es in zwei Projekte aufgeteilt werden muss.

In der Java-Entwicklergemeinschaft ist es populär geworden, Bibliotheken für alle Gelegenheiten zu schreiben und sie öffentlich verfügbar zu machen. Daher konnten Java-Programmierer nicht denselben Code erneut schreiben (der oft roh war und Fehler enthielt), sondern vorgefertigte und bewährte Lösungen verwenden .

Ein zusätzlicher Anreiz war die Tatsache, dass die Java-Sprache beim Schreiben serverseitiger Lösungen große Popularität erlangte (sie funktionierte im Backend). Erstens stellt Serversoftware höhere Anforderungen an die Zuverlässigkeit, und die Verwendung bewährter Bibliotheken ist dem Schreiben eigenen Codes immer vorzuziehen.

Zweitens gibt es auf Servern praktisch keine Grenzen hinsichtlich der Größe des Codes. Der Entwickler einer mobilen Anwendung versucht, sie auf 10 Megabyte zu packen, eine Desktop-Anwendung auf 100 Megabyte. Und ein Java-Backend-Entwickler kann mehrere Dutzend Gigabyte an Bibliotheken in ein Projekt stopfen, und niemand wird ein Wort zu ihm sagen :)

Das ist übrigens kein Scherz. Sie können leicht auf ein Backend-Projekt mit mehreren Dutzend Modulen und einigen hundert Bibliotheken stoßen. Es ist jedoch äußerst schwierig geworden, Build-Skripte für solche Projekte zu beschreiben (und zu ändern!).

Und dann erschien Maven.

1.2 Einführung in Maven

Maven ist ein spezielles „Framework“ für das Projekt-Build-Management. Es standardisiert drei Dinge:
  • Beschreibung des Projekts;
  • Projekterstellungsskripte;
  • Abhängigkeiten zwischen Bibliotheken.

Mavens Vorgänger war Ant und sein Nachfolger ist Gradle . Aber es war Maven, der die drei aufgeführten Standards entwickelte und perfektionierte und auch ihr Zusammenspiel regelte. Er war es, der die Arbeit der Java-Communitys auf ein neues Niveau brachte. Schauen wir es uns genauer an.

Maven

Technisch gesehen ist Maven ein spezielles Programm/Dienst, dessen Hauptzweck darin besteht, den Prozess von Bauprojekten zu verwalten . Es kann einfach als Archiv heruntergeladen und in ein beliebiges Verzeichnis entpackt werden. Sie benötigen hierfür keinen speziellen Installer.

Sie verfügt nicht über eine grafische Oberfläche – alle Befehle werden ihr über die Konsole gegeben . Um die Arbeit damit noch komfortabler zu gestalten, empfiehlt es sich, spezielle Umgebungsvariablen in Ihrem Betriebssystem zu registrieren.

Maven verfügt außerdem über ein spezielles Repository (Verzeichnis/Ordner), in dem die Bibliotheken gespeichert werden, die beim Erstellen von Projekten verwendet werden. Sie müssen einen Ordner auf der Festplatte auswählen und ihn als Repository zuweisen.

Eine weitere interessante Sache ist das Vorhandensein eines globalen Maven-Repositorys für alle Bibliotheken, aber darüber werden wir etwas später sprechen.

1.3 Laden Sie Maven herunter und installieren Sie es

Maven hat eine offizielle Website maven.apache.org . Es gibt eine Menge Dokumentation zum Projekt. Wenn Sie also Schwierigkeiten oder weitere Fragen haben, kommen Sie vorbei, seien Sie nicht schüchtern.

Außerdem können Sie auf der Download-Seite ( https://maven.apache.org/download.cgi ) das Maven-Archiv (Apache-maven-3.8.5-bin.zip) herunterladen. Das entpackte Archiv benötigt etwa 10 MB, obwohl das lokale Maven-Repository letztendlich mehrere hundert Megabyte Speicher benötigt.

Maven ist in Java geschrieben und erfordert eine JRE von mindestens Version 7 sowie definierte JAVA_HOME-Umgebungsvariablen.

Erstellen Sie einfach einen Ordner für Maven auf Ihrem Computer, zum Beispiel d:\devtools , und extrahieren Sie das Archiv mit Maven hinein. Als Ergebnis sollten Sie einen Ordner wie d:\devtools\maven\bin erhalten , in dem sich die Hauptbinärdateien des Projekts befinden.

1.4 Umgebungsvariablen

Danach müssen Sie den Pfad zum Bin-Ordner aus dem entpackten Archiv zur Umgebungsvariablen PATH hinzufügen.

Um die Umgebungsvariable in Windows 10 festzulegen, müssen Sie zu Systemsteuerung – System – Erweiterte Systemeinstellungen gehen. Klicken Sie dann auf „Umgebungsvariablen“, suchen Sie nach PATH, wählen Sie „Bearbeiten“ und fügen Sie dann den Pfad d:\devtools\maven\bin am Ende der Zeile hinzu. Achten Sie darauf, dass der Pfad genau zum bin-Ordner führen muss.

Auf einem Unix-basierten Betriebssystem kann die Umgebungsvariable mit einem Konsolenbefehl hinzugefügt werden:

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

Wenn Sie alles richtig gemacht haben, müssen Sie in der Konsole den Befehl „mvn -v“ eingeben. Als Antwort sehen Sie etwa Folgendes:

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 Lokales Maven-Repository

Sie können auch einen speziellen Ordner festlegen, in dem Maven JAR-Bibliotheken speichert, die beim Erstellen von Projekten verwendet werden. Dieser Ordner wird als lokales Maven-Repository bezeichnet .

Wenn kein solcher Ordner angegeben ist, erstellt Maven ihn im Home-Verzeichnis des aktuellen Benutzers. Mein Verzeichnis ist: C:\Benutzer\Zapp\.m2

Der Ordner hat einen ziemlich spezifischen Namen „.m2“. Obwohl es Linux-Benutzern keine Angst macht, ist es dort ein ziemlich verbreiteter Ansatz zur Benennung verschiedener „Repositorys“ und/oder anderer Speicherungen von Dienstinformationen.

Wichtig! Platzieren Sie Maven nicht in Systemordnern, da es während des Betriebs Schreibrechte für diese Ordner benötigt, was für das Antiviren- oder Betriebssystem von schädlichem Interesse sein kann.

Für Maven vor Version 3.5 war eine Umgebungsvariable namens M2_HOME erforderlich, diese ist jedoch nicht mehr erforderlich.

Weitere Informationen zur Konfiguration von Maven finden Sie unter dem Link: https://maven.apache.org/configure.html