Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Java 9 führt ein Modulsystem in die Plattform ein. Das ist ein großer Sprung und markiert den Beginn einer neuen Ära für die modulare Softwareentwicklung auf der Java-Plattform. Wir freuen uns sehr über diese Änderungen und hoffen, dass du es nach der Lektüre dieses Buches auch bist. Du wirst das Modulsystem im Handumdrehen optimal nutzen können.

Wer sollte dieses Buch lesen?

Dieses Buch richtet sich an Java-Entwickler/innen, die das Design und die Struktur ihrer Anwendungen verbessern wollen. Das Java-Modulsystem verbessert die Art und Weise, wie wir Java-Anwendungen entwerfen und erstellen können. Auch wenn du Module nicht sofort einsetzen wirst, ist es ein wichtiger erster Schritt, die Modularisierung des JDK selbst zu verstehen. Nachdem du dich im ersten Teil des Buches mit Modulen vertraut gemacht hast, erwarten wir, dass du auch die folgenden Migrationskapitel sehr zu schätzen weißt. Die Umstellung von bestehendem Code auf Java 9 und das Modulsystem wird eine immer häufigere Aufgabe sein.

Dieses Buch ist keineswegs eine allgemeine Einführung in Java. Wir gehen davon aus, dass du bereits Erfahrung mit dem Schreiben relativ großer Java-Anwendungen in einer Teamumgebung hast. Dort wird die Modularität immer wichtiger. Als erfahrener Java-Entwickler wirst du die Probleme erkennen, die durch den Klassenpfad verursacht werden, und das Modulsystem und seine Funktionen schätzen lernen.

Neben dem Modulsystem gibt es noch viele andere Änderungen in Java 9. Dieses Buch konzentriert sich jedoch auf das Modulsystem und die damit verbundenen Funktionen. Wo es angebracht ist, werden andere Java 9-Funktionen im Zusammenhang mit dem Modulsystem besprochen.

Warum wir dieses Buch geschrieben haben

Wir sind Java-Nutzer seit den Anfängen von Java, als Applets noch angesagt waren. Im Laufe der Jahre haben wir viele andere Plattformen und Sprachen genutzt, aber Java ist nach wie vor unser wichtigstes Werkzeug. Wenn es darum geht, wartbare Software zu entwickeln, ist Modularität ein Schlüsselprinzip. Die modulare Anwendungsentwicklung ist für uns zu einer Art Leidenschaft geworden, nachdem wir im Laufe der Jahre viel Energie in die Entwicklung modularer Software investiert haben. Um dies zu erreichen, haben wir Technologien wie OSGi ausgiebig genutzt, die von der Java-Plattform selbst nicht unterstützt werden. Wir haben auch von Tools außerhalb des Java-Bereichs gelernt, z. B. von Modulsystemen für JavaScript. Als klar wurde, dass Java 9 das lang erwartete Modulsystem enthalten würde, beschlossen wir, dass wir diese Funktion nicht nur nutzen, sondern auch bei der Einbindung anderer Entwickler helfen wollten.

Vielleicht hast du in den letzten zehn Jahren schon einmal von Project Jigsaw gehört. Project Jigsaw hat über viele Jahre hinweg viele mögliche Implementierungen eines Java-Modulsystems getestet. Ein Modulsystem für Java wurde immer wieder ins Gespräch gebracht. Sowohl Java 7 als auch Java 8 sollten ursprünglich die Ergebnisse von Project Jigsaw enthalten.

Mit Java 9 gipfelt diese lange Zeit des Experimentierens in einer offiziellen Implementierung des Modulsystems. Im Laufe der Jahre haben sich Umfang und Funktionalität der verschiedenen Modulsystem-Prototypen stark verändert. Selbst wenn du diesen Prozess genau verfolgt hast, ist es schwierig zu erkennen, was das endgültige Java 9 Modulsystem wirklich beinhaltet. Mit diesem Buch wollen wir einen endgültigen Überblick über das Modulsystem geben. Und, was noch wichtiger ist, was es für das Design und die Architektur deiner Anwendungen tun kann.

Navigieren in diesem Buch

Das Buch ist in drei Teile gegliedert:

  1. Einführung in das Java-Modulsystem

  2. Migration

  3. Modulare Entwicklungstools

Im ersten Teil lernst du, wie du das Modulsystem nutzen kannst. Beginnend mit dem modularen JDK selbst, geht es dann um die Erstellung deiner eigenen Module. Als Nächstes besprechen wir Dienste, die die Entkopplung von Modulen ermöglichen. Der erste Teil endet mit einer Diskussion über Modularitätsmuster und wie du Module so einsetzt, dass sie möglichst wartbar und erweiterbar sind.

Im zweiten Teil des Buches geht es um die Migration. Wahrscheinlich hast du bereits Java-Code, der Java-Bibliotheken verwendet, die nicht für das Modulsystem entwickelt wurden. In diesem Teil des Buches erfährst du, wie du bestehenden Code zu Modulen migrierst und wie du bestehende Bibliotheken verwendest, die noch keine Module sind. Wenn du Autor oder Betreuer einer Bibliothek bist, gibt es ein eigenes Kapitel über das Hinzufügen von Modulunterstützung zu Bibliotheken.

Im dritten und letzten Teil des Buches geht es um Werkzeuge. Hier erfährst du, wie der aktuelle Stand der IDEs und Build-Tools ist. Außerdem lernst du, wie du Module testest, denn Module stellen dich vor neue Herausforderungen, aber auch vor neue Möglichkeiten, wenn es um (Unit-)Tests geht. Schließlich erfährst du auch etwas über das Linking, ein weiteres spannendes Feature des Modulsystems. Es ermöglicht die Erstellung von hoch optimierten, benutzerdefinierten Laufzeit-Images und verändert die Art und Weise, wie du Java-Anwendungen mithilfe von Modulen ausliefern kannst.

Das Buch ist so konzipiert, dass es von vorne bis hinten gelesen werden kann, aber wir haben bedacht, dass das nicht für jeden Leser in Frage kommt. Wir empfehlen, zumindest die ersten vier Kapitel im Detail durchzugehen. So erhältst du das Grundwissen, um den Rest des Buches gut nutzen zu können. Wenn du wirklich wenig Zeit hast und bereits vorhandenen Code migrieren musst, kannst du danach zum zweiten Teil des Buches übergehen. Sobald du dazu bereit bist, solltest du zu den fortgeschritteneren Kapiteln zurückkehren können.

Code-Beispiele verwenden

Das Buch enthält viele Code-Beispiele. Alle Code-Beispiele sind auf GitHub unter https://github.com/java9-modularity/examples verfügbar . In diesem Repository sind die Code-Beispiele nach Kapiteln geordnet. Im gesamten Buch verweisen wir auf bestimmte Code-Beispiele wie folgt: ➥ chapter3/helloworld. Das bedeutet, dass das Beispiel unter https://github.com/java9-modularity/examples/chapter3/helloworld zu finden ist .

Wir empfehlen dringend, den Code zur Hand zu haben, wenn du das Buch durcharbeitest, denn längere Codeabschnitte lassen sich in einem Code-Editor einfach besser lesen. Wir empfehlen auch, selbst mit dem Code zu spielen - zum Beispiel, um Fehler zu reproduzieren, die wir im Buch besprechen. Lernen durch Handeln ist besser als nur den Text zu lesen.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Hinweis

Dieses Symbol steht für einen allgemeinen Hinweis.

Tipp

Dieses Symbol steht für einen Tipp oder eine Anregung.

Warnung

Dieses Symbol weist auf eine Warnung oder Vorsicht hin.

O'Reilly Safari

Hinweis

Safari (ehemals Safari Books Online) ist eine mitgliedschaftsbasierte Schulungs- und Nachschlageplattform für Unternehmen, Behörden, Lehrkräfte und Einzelpersonen.

Mitglieder haben Zugang zu Tausenden von Büchern, Schulungsvideos, Lernpfaden, interaktiven Tutorials und kuratierten Playlists von über 250 Verlagen, darunter O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett und Course Technology, um nur einige zu nennen.

Weitere Informationen erhältst du unter http://oreilly.com/safari.

Wie du uns kontaktierst

Du kannst einem Twitter-Account zu diesem Buch folgen, um über die Entwicklungen rund um die modulare Entwicklung in Java auf dem Laufenden zu bleiben:

@javamodularity: http://twitter.com/javamodularity

Du kannst auch https://javamodularity.com besuchen .

Du kannst die Autoren auch direkt kontaktieren:

Sander Mak

@sander_mak

Paul Bakker

@pbakker

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://bit.ly/java-9-modularity aufrufen .

Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an

Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.

Finde uns auf Facebook: http://facebook.com/oreilly

Folge uns auf Twitter: http://twitter.com/oreillymedia

Schau uns auf YouTube: http://www.youtube.com/oreillymedia

Danksagungen

Die Idee zu diesem Buch entstand während eines Gesprächs mit Brian Foster von O'Reilly auf der JavaOne im Jahr 2015. Vielen Dank, dass du uns dieses Projekt anvertraut hast. Seitdem haben uns viele Menschen geholfen, Java 9 Modularity zu erstellen.

Dieses Buch wäre nicht das, was es heute ist, ohne die großartigen technischen Rezensionen von Alex Buckley, Alan Bateman und Simon Maple. Vielen Dank an sie, denn sie haben viele Verbesserungen zum Buch beigetragen. Wir sind auch dankbar für die Unterstützung des O'Reilly-Redaktionsteams. Nan Barber und Heather Scherer haben sich um alle organisatorischen Details gekümmert.

Die Comics in den Kapiteln 1, 7, 13 und 14 wurden von Oliver Widder erstellt und sind unter der Creative Commons Attribution 3.0 Unported (CC BY 3.0) lizenziert. Die Autoren haben die Comics so verändert, dass sie horizontal und in Graustufen sind.

Get Java 9 Modularität now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.