Vorwort

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

Wie jede der meistgenutzten Programmiersprachen hat auch Java seine Kritiker, Befürworter, Probleme, Macken und eine Lernkurve,1 Das Java-Kochbuch soll Java-Entwicklern dabei helfen, sich mit den wichtigsten Aspekten der Java-Entwicklung vertraut zu machen. Ich konzentriere mich auf die Standard-APIs und einige APIs von Drittanbietern, zögere aber nicht, auch sprachliche Aspekte zu behandeln.

Dies ist die vierte Auflage dieses Buches, das von vielen Menschen und den unzähligen Veränderungen, die Java in den ersten zwei Jahrzehnten seiner Popularität durchlaufen hat, geprägt wurde. Leser, die sich für die Geschichte von Java interessieren, finden sie in Anhang A.

Java 11 ist die derzeitige, langfristig unterstützte Version, aber Java 12 und 13 sind bereits verfügbar. Java 14 befindet sich im Early Access und soll am selben Tag wie die vierte Ausgabe dieses Buches veröffentlicht werden. Die neue Kadenz der halbjährlichen Veröffentlichungen mag für das Java SE-Entwicklungsteam bei Oracle und für klickgesteuerte, Java-bezogene Nachrichtenseiten großartig sein, aber für Java-Buchautoren kann sie "zusätzliche Arbeit verursachen", da Bücher normalerweise einen längeren Überarbeitungszyklus haben als Java jetzt! Java 9, das nach der letzten Ausgabe dieses Buches herauskam, war ein bahnbrechendes Release, das erste Release seit langer Zeit, das die Abwärtskompatibilität, vor allem des Java-Modulsystems, aufhob. Es wird davon ausgegangen, dass alles in diesem Buch auf jeder JVM funktioniert, die noch zur Codeentwicklung verwendet wird. Niemand sollte Java 7 (oder irgendetwas davor!) für irgendetwas benutzen, und niemand sollte neue Entwicklungen in Java 8 machen. Wenn du das tust, ist es an der Zeit, weiterzuziehen!

Das Ziel dieser Überarbeitung ist es, das Buch auf den neuesten Stand zu bringen. Während ich viel älteres Material gestrichen habe, habe ich Informationen über neue Funktionen wie Module und die interaktive JShell hinzugefügt und viele andere Informationen aktualisiert.

Für wen dieses Buch ist

Ich gehe davon aus, dass du die Grundlagen von Java kennst. Ich werde dir weder erklären, wie man einen String println, noch wie man eine Klasse schreibt, die eine andere erweitert und/oder eine Schnittstelleimplementiert .Ich gehe davon aus, dass du einen Java-Kurs wieLearning Tree's Introduction besucht hast oder ein Einführungsbuch wie Head First Java, Learning Java, oder Java in a Nutshell (O'Reilly) gelesen hast. In Kapitel 1 werden jedoch einige Techniken behandelt, die du vielleicht noch nicht so gut kennst und die notwendig sind, um einige der späteren Inhalte zu verstehen. Überspringe sie ruhig! Sowohl in der gedruckten als auch in der elektronischen Version des Buches gibt es zahlreiche Querverweise.

Was steht in diesem Buch?

Java schien bisher besser für die "Entwicklung im großen Stil" oder die Entwicklung von Unternehmensanwendungen geeignet zu sein als für einzeilige, einmalige Skripte in Perl, Awk oder Python. Das liegt daran, dass es sich um eine kompilierte, objektorientierte Sprache handelt. Diese Eignung hat sich jedoch mit dem Erscheinen der JShell (sieheRezept 1.4) etwas geändert. Ich veranschauliche viele Techniken mit kürzeren Java-Klassenbeispielen und sogar mit Codefragmenten; einige der einfacheren werden mit JShell gezeigt. Alle Codebeispiele (außer einigen Ein- oder Zweizeilern) befinden sich in einem meiner öffentlichen GitHub-Repositories, du kannst also sicher sein, dass jedes Codefragment, das du hier siehst, kompiliert wurde und die meisten davon kürzlich ausgeführt wurden.

Einige der längeren Beispiele in diesem Buch sind Werkzeuge, die ich ursprünglich geschrieben habe, um die eine oder andere alltägliche Aufgabe zu automatisieren. Ein Werkzeug namensMkIndex (im javasrc-Repository ) liest beispielsweise das oberste Verzeichnis des Ortes, an dem ich meinen Java-Beispielquellcode aufbewahre, und erstellt eine browserfreundliche index.html-Datei für dieses Verzeichnis. Ein weiteres Beispiel ist XmlForm , das verwendet wurde, um Teile des Manuskripts von XML in die Form zu konvertieren, die von einer anderen Verlagssoftware benötigt wird. XmlForm kümmerte sich auch - mit Hilfe eines anderen Programms,GetMark - um das Einfügen von vollständigem und teilweisem Code aus dem Verzeichnis javasrc in das Buchmanuskript. XmlForm ist in dem erwähnten Github-Repository enthalten, ebenso wie eine spätere Version von GetMark, obwohl keines von beiden bei der Erstellung der vierten Ausgabe verwendet wurde. Heutzutage verwendet die Atlas-Publikationssoftware von O'Reilly denAsciidoctor, mit dem wir Dateien und Teile von Dateien in das Buch einfügen können.

Aufbau dieses Buches

Schauen wir uns den Aufbau dieses Buches an. Jedes Kapitel besteht aus einer Handvoll Rezepten, kurzen Abschnitten, die ein Problem und seine Lösung beschreiben, zusammen mit einem Codebeispiel. Der Code in jedem Rezept soll weitgehend in sich geschlossen sein; du kannst dir gerne Teile davon für deine eigenen Projekte ausleihen. Der Code wird mit einem Berkeley-ähnlichen Urheberrecht verteilt, um eine massenhafte Vervielfältigung zu verhindern.

Ich beginne mit Kapitel 1, "Erste Schritte": Kompilieren und Ausführen von Java", indem ich einige Methoden beschreibe, um dein Programm auf verschiedenen Plattformen zu kompilieren, es in verschiedenen Umgebungen (Browser, Kommandozeile, Fenster-Desktop) auszuführen und es zu debuggen.

In Kapitel 2, "Interaktion mit der Umgebung", geht esdarum, dein Programm zu kompilieren und auszuführen, damit es sich an die Umgebung anpasst - an die anderen Programme, die auf deinem Computer leben.

In den nächsten Kapiteln geht es um grundlegende APIs. Kapitel 3, "Strings and Things", konzentriert sich auf einen der grundlegendsten, aber mächtigsten Datentypen in Java und zeigt dir, wie du das, was du sonst für gewöhnlichen Text hältst, zusammensetzen, zerlegen, vergleichen und neu anordnen kannst. Dieses Kapitel behandelt auch das Thema Internationalisierung/Lokalisierung, damit deine Programme in Akbar, Afghanistan, Algier, Amsterdam und Angleterre genauso gut funktionieren wie in Alberta, Arkansas und Alabama.

In Kapitel 4, "Musterabgleich mit regulären Ausdrücken", lernst du, wie du die leistungsstarke Technologie der regulären Ausdrücke aus Unix in vielen Problembereichen des String-Matching und Pattern-Matching einsetzen kannst. Die Regex-Verarbeitung ist in Java schon seit Jahren Standard, aber wenn du nicht weißt, wie man sie benutzt, erfindest du vielleicht den platten Reifen neu.

Kapitel 5, "Zahlen", befasst sich sowohl mit eingebauten numerischen Typen wie int und double als auch mit den entsprechenden API-Klassen (Integer, Double, etc.) und den Konvertierungs- und Testmöglichkeiten, die sie bieten. Auch die "Big Number"-Klassen werden kurz erwähnt. Da Java-Programmierer oft mit Datums- und Zeitangaben umgehen müssen, sowohl lokal als auch international, behandelt Kapitel 6, "Datums- und Zeitangaben", dieses wichtige Thema.

In den nächsten Kapiteln geht es um die Datenverarbeitung. Wie in den meisten Sprachen sind Arrays in Java lineare, indizierte Sammlungen ähnlicher Objekte, wie in Kapitel 7, "Datenstrukturierung mit Java", beschrieben . In diesem Kapitel geht es weiter mit den vielen Collections-Klassen: mächtige Möglichkeiten, um Mengen von Objekten im Paket java.util zu speichern, einschließlich der Verwendung von Java Generics.

Trotz einiger syntaktischer Ähnlichkeiten mit prozeduralen Sprachen wie C ist Java im Kern eine objektorientierte Programmiersprache (OOP), in die einige wichtige Konstrukte der funktionalen Programmierung (FP) geschickt integriert sind. In Kapitel 8, "Objektorientierte Techniken", werden einige der Schlüsselbegriffe der OOP in Java besprochen, darunter die häufig überschriebenen Methoden von java.lang.Object und das wichtige Thema der Design Patterns. Java ist keine reine FP-Sprache und wird es auch nie sein. Es ist jedoch möglich, einige Aspekte der FP zu nutzen, was mit Java 8 und der Unterstützung von Lambda-Ausdrücken (auch bekannt als Closures) zunehmend möglich wird. Dies wird in Kapitel 9, "Funktionale Programmiertechniken", behandelt : Funktionale Schnittstellen, Streams und parallele Sammlungen".

Das nächste Kapitel befasst sich mit Aspekten des traditionellen Inputs und Outputs. Kapitel 10, "Eingabe und Ausgabe: Lesen, Schreiben und Verzeichnistricks" beschreibt die Regeln für das Lesen und Schreiben von Dateien (überspringe dieses Kapitel nicht, wenn du glaubst, dass Dateien langweilig sind; du wirst einige dieser Informationen in späteren Kapiteln brauchen). In diesem Kapitel erfährst du auch alles andere über Dateien, wie z. B.ihre Größe und den Zeitpunkt der letzten Änderung, über das Lesen und Ändern von Verzeichnissen, das Anlegen von temporären Dateien und das Umbenennen von Dateien auf der Festplatte.

Apache Hadoop, Apache Spark und viele andere Big-Data-Infrastrukturen sind in Java geschrieben und können mit Java erweitert werden, wie in Kapitel 11 "Datenwissenschaft und R" beschrieben . Die Programmiersprache R ist bei Datenwissenschaftlern, Statistikern und anderen Wissenschaftlern sehr beliebt. Es gibt mindestens zwei Neuimplementierungen von R, die in Java geschrieben sind, und Java kann auch direkt mit der Standardimplementierung von R in beide Richtungen gekoppelt werden.

Da Java ursprünglich als Programmiersprache für das Internet propagiert wurde, ist es nur fair, dass wir uns auch mit der Netzwerkprogrammierung in Java beschäftigen. Kapitel 12, "Netzwerk-Clients", behandelt die Grundlagen der Netzwerkprogrammierung auf der Client-Seite und konzentriert sich dabei auf Sockets. Heutzutage müssen so viele Anwendungen auf einen Webservice zugreifen, vor allem auf RESTful Webservices, dass dies notwendig erschien. In Kapitel 13, "Serverseitiges Java", gehe ich dann zur Serverseite über , wo du einige Techniken der serverseitigen Programmierung kennenlernst.

Eine einfache textbasierte Darstellung für den Datenaustausch ist JSON, die JavaScript-Objektnotation. Kapitel 14, "Verarbeitung von JSON-Daten", beschreibt das Format und einige der vielen APIs, die für den Umgang mit JSON entwickelt wurden.

Kapitel 15, "Pakete und Paketierung", zeigt dir, wie du Pakete mit Klassen erstellst, die zusammenarbeiten. In diesem Kapitel geht es auch darum, wie du deine Software bereitstellst (auch bekannt als Verteilung und Installation).

In Kapitel 16, "Threaded Java", erfährst du, wie du Klassen schreibst, die scheinbar mehr als eine Sache gleichzeitig tun und mit denen du die Vorteile leistungsstarker Multiprozessor-Hardware nutzen kannst.

In Kapitel 17, "Reflection, or "A Class Named Class"", erfährst du unter anderem, wie du API-Querverweise mechanisch schreibst und wie Webserver in der Lage sind, ein beliebiges Servlet zu laden undauszuführen, ohne die Klasse vorhergesehen zu haben.

Manchmal hast du bereits Code in einer anderen Sprache geschrieben, der dir einen Teil deiner Arbeit abnehmen kann, oder du möchtest Java als Teil eines größeren Pakets verwenden. Kapitel 18, "Java mit anderen Sprachen verwenden", zeigt dir, wie du ein externes Programm (kompiliert oder als Skript) ausführst und auch direkt mit nativem Code in C/C++ oder anderen Sprachen interagieren kannst.

In einem Buch dieses Umfangs ist nicht genug Platz für alles, was ich dir über Java erzählen möchte. Das Nachwort enthält einige abschließende Gedanken und einen Link zu meiner Online-Zusammenfassung der Java-APIs, die jeder Java-Entwickler kennen sollte.

Anhang A, "Java damals und heute", beschreibt die Geschichte von Java in einer Zeitleiste, so dass du dich schnell auf den neuesten Stand bringen kannst, egal welche Version von Java du gelernt hast.

So viele Themen, und so wenige Seiten! Viele Themen werden nicht zu 100 % abgedeckt; ich habe versucht, die wichtigsten oder nützlichsten Teile jeder API aufzunehmen. Wenn du mehr wissen willst, sieh dir die offiziellen Javadoc-Seiten der einzelnen Pakete an; viele dieser Seiten enthalten kurze Anleitungen, wie das Paket zu verwenden ist.

Neben den Teilen von Java, die in diesem Buch behandelt werden, wurden zwei weitere Plattform-Editionen, Java ME und Java EE, standardisiert.Java Micro Edition (Java ME) ist für kleine Geräte wie Handhelds, Handys und Faxgeräte gedacht. Am anderen Ende der Größenskala - für große Server - gibt esEclipse Jakarta EE, das die frühere Java EE ablöst, die im letzten Jahrhundert als J2EE bekannt war. Jakarta EE befasst sich mit der Entwicklung großer, skalierbarer, verteilter Anwendungen. Zu den APIs, die Teil von Jakarta EE sind, gehören Servlets, JavaServer Pages, JavaServer Faces, JavaMail, Enterprise JavaBeans (EJBs), Container and Dependency Injection (CDI) und Transaktionen. Jakarta EE-Pakete beginnen normalerweise mit "javax", da sie keine Kernpakete sind. In diesem Buch werden nur einige davon erwähnt; es gibt auch einJava EE 8 Cookbookvon Elder Moraes (O'Reilly), das einige der Jakarta EE APIs behandelt, sowie ein älteresJava Servlet & JSP Cookbook von Bruce Perry (O'Reilly).

Dieses Buch behandelt nicht die Java Micro Edition, Java ME. Aber da wir gerade von Handys und mobilen Geräten sprechen, weißt du wahrscheinlich, dass Android Java als Sprache verwendet. Was Java-Entwickler beruhigen sollte, ist, dass Android auch die meisten Kern-Java-APIs verwendet, mit Ausnahme von Swing und AWT, für die es Android-spezifische Ersetzungen gibt. Java-Entwickler/innen, die Android erlernen möchten, sollten sich mein Android Cookbook (O'Reilly) oder die Website des Buches ansehen.

Java Bücher

In diesem Buch sind viele nützliche Informationen enthalten. Aufgrund der Breite des Themas ist es jedoch nicht möglich, ein einziges Thema in Buchlänge zu behandeln. Aus diesem Grund enthält das Buch Verweise auf viele Websites und andere Bücher. Indem ich auf diese Verweise hinweise, hoffe ich, meiner Zielgruppe zu dienen: der Person, die mehr über Java lernen möchte.

O'Reilly veröffentlicht meiner Meinung nach die beste Auswahl an Java-Büchern auf dem Markt. Da die API immer weiter ausgebaut wird, wächst auch der Umfang der Bücher. Schau dir die vollständige Liste der Java-Bücher von O'Reilly an; du kannst sie in den meisten physischen und virtuellen Buchläden kaufen. Du kannst sie auch online auf der O'Reilly Online Learning Platform lesen, einem kostenpflichtigen Abonnementdienst. Und natürlich sind die meisten Bücher jetzt auch als E-Books erhältlich. Die E-Books von O'Reilly sind DRM-frei, so dass du dir keine Sorgen machen musst, dass du durch den Kopierschutz an ein bestimmtes Gerät oder System gebunden bist, wie es bei einigen anderen Verlagen der Fall ist.

Obwohl viele Bücher an den entsprechenden Stellen im Buch erwähnt werden, verdienen ein paar hier eine besondere Erwähnung.

Zuallererst bietet David Flanagan und Benjamin Evans Java in a Nutshell (O'Reilly) einen kurzen Überblick über die Sprache und die API sowie eine detaillierte Referenz zu den wichtigsten Paketen. Das Buch ist praktisch, wenn du es neben deinem Computer aufbewahren möchtest. Head First Java von Bert Bates und Kathy Sierra bietet eine viel launigere Einführung in die Sprache und wird für weniger erfahrene Entwickler/innen empfohlen.

Java 8 Lambdas (Warburton, O'Reilly) behandelt die in Java 8 eingeführte Lambda-Syntax zur Unterstützung der funktionalen Programmierung und von prägnanterem Code im Allgemeinen.

Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications von Sander Mak und Paul Bakker (O'Reilly) behandelt die wichtigen Änderungen, die in Java 9 für das Java-Modulsystem in der Sprache vorgenommen wurden.

Java Virtual Machine von Jon Meyer und Troy Downing (O'Reilly) ist für alle interessant, die mehr darüber wissen wollen, was unter der Haube steckt. Das Buch ist vergriffen, kann aber gebraucht und in Bibliotheken gefunden werden.

Eine maßgebliche (und monumentale) Beschreibung der Programmierung der Swing-GUI istJava Swing von Robert Eckstein et al. (O'Reilly).

Java Network Programming undJava I/O, beide von Elliotte Harold (O'Reilly), sind ebenfalls nützliche Referenzen.

Für die Arbeit mit Java-Datenbanken sind Database Programming with JDBC & Java von George Reese (O'Reilly) und Pro JPA 2: Mastering the Java Persistence API von Mike Keith und Merrick Schincariol (Apress) zu empfehlen. Oder mein demnächst erscheinenderÜberblick über Java Database.

Obwohl das Buch, das du gerade liest, nicht viel über die Java EE berichtet, möchte ich zwei Bücher zu diesem Thema erwähnen:

Mehr dazu findest du auf der O'Reilly-Website.

Auch wenn es sich nicht um ein Buch handelt, bietet Oracle im Internet zahlreicheInformationen zu Javaan. Auf dieser Webseite gab es früher ein großes Diagramm, das alle Komponenten von Java in einem "Konzeptdiagramm" zeigte. Eine frühe Version davon ist in Abbildung P-1 zu sehen; jedes farbige Kästchen ist ein klickbarer Link zu Details über die jeweilige Technologie.

jcb4 0001
Abbildung P-1. Java-Konzeptdiagramm aus der Oracle-Dokumentation

In neueren Versionen von Java wurde dies durch eine Textseite ersetzt; in Java 13 ist die Seite unter https://docs.oracle.com/en/java/javase/13 zu finden.

Allgemeine Programmierbücher

Donald E. KnuthsThe Art of Computer Programming (Addison-Wesley) ist seit seiner ersten Veröffentlichung im Jahr 1968 eine Quelle der Inspiration für Generationen von Informatikstudenten. Band 1 behandelt die Grundlegenden Algorithmen, Band 2 die Seminumerischen Algorithmen, Band 3 das Sortieren und Suchen und Band 4A die Kombinatorischen Algorithmen, Teil 1. Die restlichen Bände der geplanten Reihe sind noch nicht abgeschlossen. Obwohl seine Beispiele weit von Java entfernt sind (er erfand die hypothetische Assemblersprache MIX für seine Beispiele), sind viele seiner Diskussionen über Algorithmen - wie Computer zur Lösung realer Probleme eingesetzt werden sollten - heute noch genauso relevant wie vor Jahren.2

Das Buch The Elements of Programming Style von Brian Kernighan und P. J. Plauger (McGraw-Hill) hat mit seinen Beispielen aus verschiedenen strukturierten Programmiersprachen den Stil (buchstäblich) für eine ganze Generation von Programmierern geprägt, auch wenn die Code-Beispiele inzwischen ziemlich veraltet sind. Kernighan und Plauger schrieben auch zwei Bücher, Software Tools (Addison-Wesley) und Software Tools in Pascal (Addison-Wesley), die so viele gute Ratschläge zum Programmieren enthielten, dass ich allen Programmierern riet, sie zu lesen. Allerdings sind diese drei Bücher inzwischen veraltet; oft wollte ich ein Nachfolgebuch in einer moderneren Sprache schreiben. Stattdessen verweise ich jetzt auf The Practice of Programming, Kernighans Nachfolgebuch - zusammen mit Rob Pike (Addison-Wesley) geschrieben - zurSoftware Tools Reihe. Dieses Buch setzt die Tradition der Bell Labs fort, die für hervorragende Software-Lehrbücher stehen. In früheren Ausgaben dieses Buches hatte ich sogar ein Stück Code aus ihrem Buch übernommen, ihren CSV-Parser. Schließlich hat Kernighan kürzlich UNIX: A History and a Memoir veröffentlicht, seine Sicht auf die Geschichte von Unix.

Siehe auch The Pragmatic Programmer von Andrew Hunt und David Thomas (Addison-Wesley).

Design Bücher

Peter Coad's Java Design (PTR-PH/Yourdon Press) behandelt die Fragen der objektorientierten Analyse und des Designs speziell für Java. Coad steht der Java-Implementierung des Observable-Observer-Paradigmas etwas kritisch gegenüber und bietet seinen eigenen Ersatz dafür an.

Eines der bekanntesten Bücher über objektorientiertes Design der letzten Jahre ist Design Patterns von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides (Addison-Wesley). Diese Autoren werden oft gemeinsam als "Gang of Four" bezeichnet, was dazu führt, dass ihr Buch manchmal auch als GoF-Buch bezeichnet wird. Einer meiner Kollegen nannte es "das beste Buch über objektorientiertes Design aller Zeiten", und ich stimme ihm zu; zumindest gehört es zu den besten.

Refactoring von Martin Fowler (Addison-Wesley) behandelt eine Vielzahl von "Codebereinigungen", die auf Code angewendet werden können, um die Lesbarkeit und Wartbarkeit zu verbessern. Genauso wie das GoF-Buch eine neue Terminologie eingeführt hat, die Entwicklern und anderen hilft, sich darüber zu verständigen, wie der Code gestaltet werden soll, bietet Fowlers Buch ein Vokabular für die Diskussion darüber, wie er verbessert werden kann. Aber dieses Buch ist vielleicht weniger nützlich als andere; viele der Refactorings erscheinen jetzt im Refactoring-Menü der Eclipse IDE (siehe Rezept 1.3).

Derzeit sind zwei wichtige Strömungen von Methodentheorien im Umlauf. Die erste ist unter dem Begriff "Agile Methoden" bekannt, und ihre bekanntesten Vertreter sind Scrum und Extreme Programming (XP). XP (die Methodik, nicht die wirklich alte Variante des Microsoft-Betriebssystems) wird in einer Reihe kleiner, kurzer und gut lesbarer Texte vorgestellt, die von ihrem Entwickler, Kent Beck, geleitet werden. Das erste Buch der XP-Reihe ist Extreme Programming Explained (Addison-Wesley). Einen guten Überblick über alle agilen Methoden bietet Jim Highsmith's Agile Software Development Ecosystems (Addison-Wesley).

Eine weitere Gruppe wichtiger Bücher zur Methodik, die das eher traditionelle objektorientierte Design abdeckt, ist die UML-Reihe unter der Leitung der "drei Amigos" (Booch, Jacobson und Rumbaugh). Ihre wichtigsten Werke sind das UMLUser Guide, UML Process und andere. Ein kleineres und leichter zugängliches Buch aus der gleichen Reihe ist Martin Fowlers UML Distilled.

In diesem Buch verwendete Konventionen

Dieses Buch verwendet die folgenden Konventionen.

Programmierkonventionen

In diesem Buch verwende ich die folgende Terminologie. Ein Programm ist jede Codeeinheit, die ausgeführt werden kann: von einem fünfzeiligen Hauptprogramm bis hin zu einem Servlet oder einer Web-Tier-Komponente, einer EJB oder einer vollständigen GUI-Anwendung. Applets waren Java-Programme für die Verwendung in einem Webbrowser; sie waren eine Zeit lang sehr beliebt, aber heute gibt es sie kaum noch. Ein Servlet ist eine Java-Komponente, die mit Hilfe der Jakarta EE APIs für die Verwendung in einem Webserver gebaut wurde, normalerweise über HTTP. EJBs sind Business-Tier-Komponenten, die mit Jakarta-APIs gebaut werden. Eine Anwendung ist jede andere Art von Programm. Eine Desktop-Anwendung (auch Client genannt) interagiert mit dem Benutzer. Ein Serverprogramm arbeitet indirekt mit einem Client zusammen, normalerweise über eine Netzwerkverbindung (heutzutage meist HTTP/HTTPS).

Die gezeigten Beispiele gibt es in zwei Varianten. Diejenigen, die mit null oder mehr Import-Anweisungen, einem javadoc-Kommentar und einer public class -Anweisung beginnen, sind vollständige Beispiele. Diejenigen, die mit einer Deklaration oder einer ausführbaren Anweisung beginnen, sind natürlich Auszüge. Die vollständigen Versionen dieser Auszüge wurden jedoch kompiliert und ausgeführt, und die Online-Quelle enthält die vollständigen Versionen.

Die Rezepte sind nach Kapitel und Nummer nummeriert. So bezieht sich zum Beispiel Rezept 8.1 auf das erste Rezept in Kapitel 8.

Schriftsatz-Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Wird für Befehle, Dateinamen und Beispiel-URLs verwendet. Es wird auch zur Hervorhebung und zur Definition neuer Begriffe verwendet, wenn sie zum ersten Mal im Text erscheinen.

Constant width

Wird in Codebeispielen verwendet, um teilweise oder vollständige Java-Quellcode-Programmlistings anzuzeigen. Es wird auch für Klassennamen, Methodennamen, Variablennamen und andere Fragmente von Java-Code verwendet.

Constant width bold

Wird für Benutzereingaben verwendet, z. B. für Befehle, die du in der Befehlszeile eingibst.

Constant width italic

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

Tipp

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

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Symbol weist auf eine Warnung oder Vorsicht hin.

Code Beispiele

Die Codebeispiele für dieses Buch befinden sich auf dem GitHub des Autors. Die meisten befinden sich im Repositoryjavasrc, aber ein paar stammen aus einem anderen Repository, darwinsys-api. Details zum Herunterladen findest du in Rezept 1.6.

Zu vielen Programmen gibt es ein Beispiel, das sie in Aktion zeigt, wenn sie über die Befehlszeile ausgeführt werden. Diese zeigen in der Regel eine Eingabeaufforderung, die entweder mit $ für Unix oder > für Windows endet, je nachdem, welchen Computer ich an dem Tag benutzt habe, an dem ich das Beispiel geschrieben habe. Wenn vor diesem Eingabeaufforderungszeichen ein Text steht, kann er ignoriert werden. Dabei kann es sich um einen Pfadnamen oder einen Hostnamen handeln, auch das hängt vom System ab.

In diesen Beispielen wird in der Regel auch der vollständige Paketname der Klasse angezeigt, da Java dies verlangt, wenn ein Programm von der Kommandozeile aus gestartet wird. Und weil dich das daran erinnert, in welchem Unterverzeichnis des Quellcode-Repositorys du den Quellcode finden kannst, werde ich nicht so oft explizit darauf hinweisen.

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel:"Java Cookbook" von Ian F. Darwin (O'Reilly). Copyright 2020 RejmiNet Group, Inc. 978-1-492-07258-4."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel, Konferenzen und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen findest du unter http://oreilly.com.

Kommentare und Fragen

Wie bereits erwähnt, habe ich den gesamten Code auf mindestens einer der Referenzplattformen getestet, die meisten sogar auf mehreren. Trotzdem kann es sein, dass es in meinem Code oder in wichtigen Java-Implementierungen Plattformabhängigkeiten oder sogar Fehler gibt. Bitte melde alle Fehler, die du findest, sowie deine Vorschläge für zukünftige Ausgaben, indem du mir schreibst:

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

Es gibt eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Sie kann unter http://shop.oreilly.com/product/0636920304371.do aufgerufen werden .

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

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

Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media

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

Auf der O'Reilly-Website findest du eine Liste mit Errata. Dort findest du auch den Quellcode für alle Java-Beispiele zum Herunterladen; bitte verschwende deine Zeit nicht damit, sie noch einmal abzutippen! Konkrete Anweisungen findest du inRezept 1.6.

Danksagungen

Im Nachwort zur ersten Ausgabe habe ich geschrieben, dass "das Schreiben dieses Buches eine demütigende Erfahrung war". Ich sollte hinzufügen, dass es auch bescheiden war, es weiterzuführen. Viele haben es in den höchsten Tönen gelobt - ein sehr freundlicher Rezensent nannte es "das wohl beste Buch, das je über die Programmiersprache Java geschrieben wurde" -, aber die vielen Fehler und Auslassungen in früheren Ausgaben haben mich demütig gemacht. Ich habe mich bemüht, diese zu korrigieren.

Mein Leben wurde viele Male vom Schicksal berührt, das mich mit der richtigen Person in Kontakt brachte, die mir das Richtige zur richtigen Zeit zeigte. Steve Munro, zu dem ich schon lange keinen Kontakt mehr habe, führte mich in der High School in die Computerwelt ein, als wir in der gleichen Klasse waren - insbesondere in einen IBM 360/30 am Toronto Board of Education, der größer als ein Wohnzimmer war, 32 oder 64K (nicht M oder G!) Speicher hatte und vielleicht die Leistung eines PC/XT hatte. Der inzwischen verstorbene Herb Kugel nahm mich an der Universität von Toronto unter seine Fittiche, während ich mich mit den größeren IBM-Großrechnern beschäftigte, die später kamen. Terry Wood und Dennis Smith an der Universität von Toronto machten mich mit Mini- und Mikrocomputern bekannt, bevor es den IBM PC gab. Abends und an den Wochenenden konnte ich im Toronto Business Club von Toastmasters Internationalund in Al Lamberts Canada SCUBA School meine Fähigkeiten als Redner und Lehrer ausbauen. Mehrere Leute an der Universität von Toronto, vor allem aber Geoffrey Collyer, brachten mir die Funktionen und Vorteile des Unix-Betriebssystems zu einem Zeitpunkt bei, als ich bereit war, es zu lernen.

Vielen Dank an die vielen Learning Tree-Dozenten und -Schüler, die mir Wege zur Verbesserung meiner Präsentationen aufgezeigt haben. Ich unterrichte immer noch für "The Tree" und empfehle die Kurse für vielbeschäftigte Entwickler, die sich vier Tage lang ausführlich mit einem Thema beschäftigen wollen.

Tim O'Reilly glaubte an mein "kleines Lint-Buch", als es nur ein Beispielkapitel aus einem geplanten längeren Werk war, und ermöglichte mir so den frühen Eintritt in den erlesenen Kreis der O'Reilly-Autoren. Jahre später ermutigte mich Mike Loukides, weiter nach einer Java-Buchidee zu suchen, mit der er und ich arbeiten konnten. Und er hielt zu mir, als ich immer wieder mit den Terminen in Verzug geriet. Mike las auch das gesamte Manuskript und machte viele sinnvolle Anmerkungen, von denen einige die Höhenflüge auf den Boden der Tatsachen zurückholten. Jessamyn Read verwandelte viele gefaxte und gemailte Kritzeleien von zweifelhafter Lesbarkeit in die hochwertigen Illustrationen, die du in diesem Buch siehst. Und viele, viele andere talentierte Leute bei O'Reilly haben dabei geholfen, dieses Buch in die Form zu bringen, in der du es jetzt siehst.

Die Codebeispiele sind jetzt dynamisch eingebunden (damit Aktualisierungen schneller gehen) und nicht mehr eingefügt. Mein Sohn (und Entwickler für funktionale Programmierung) Benjamin Darwin hat dazu beigetragen, den Abgabetermin einzuhalten, indem er fast die gesamte Codebasis auf den neuesten "Include"-Mechanismus von O'Reilly umgestellt und einige andere, nicht mit Java zusammenhängende Darstellungsprobleme gelöst hat. Außerdem half er dabei, Kapitel 9 klarer und funktionaler zu gestalten.

Bei O'Reilly

Für diese vierte Ausgabe des Buches war Suzanne McQuade die redaktionelle Leiterin und Corbin Collins der Hauptredakteur. Corbin hat das Manuskript besonders sorgfältig geprüft. Meghan Blanchette, Sarah Schneider, Adam Witwer, Melanie Yarbrough und die vielen Produktionsmitarbeiter, die auf der Seite Copyright aufgeführt sind, haben alle dazu beigetragen, dass du die dritte Ausgabe lesen kannst. Danke an Mike Loukides, Deb Cameron und Marlowe Shaeffer für die redaktionelle und produktionstechnische Arbeit an der zweiten Ausgabe.

Technische Prüfer

Für die vierte Ausgabe hatte ich das Glück, zwei sehr gründliche technische Prüfer zu haben, Sander Mak und Daniel Hinojosa. Die beiden haben mich auf viele Punkte aufmerksam gemacht, die ich bei der Hauptüberarbeitung nicht bedacht hatte, was zu umfangreichen Überarbeitungen und Änderungen in den letzten Wochen vor der Übernahme durch das O'Reilly-Produktionsteam führte. Vielen Dank an euch beide!

Mein Rezensent für die dritte Auflage, Alex Stangl, hat das Manuskript der dritten Auflage gelesen und ist weit über seine Pflicht hinausgegangen. Er hat unzählige hilfreiche Vorschläge gemacht und sogar Tippfehler gefunden, die in früheren Auflagen vorhanden waren! Hilfreiche Vorschläge zu bestimmten Abschnitten kamen von Benjamin Darwin, Mark Finkov und Igor Savin. Allen, die ich vergessen habe zu erwähnen, danke ich herzlich!

Bil Lewis und Mike Slinn gaben hilfreiche Kommentare zu mehreren Entwürfen der ersten Ausgabe ab. Ron Hitchens und Marc Loy haben den gesamten endgültigen Entwurf der ersten Ausgabe sorgfältig gelesen. Ich bin Mike Loukides für seine Ermutigung und Unterstützung während des gesamten Prozesses dankbar. Die Redakteurin Sue Miller half, das Manuskript durch die etwas energische Endphase der Produktion zu bringen. Sarah Slocombe hat das XML-Kapitel vollständig gelesen und viele klare Vorschläge gemacht, die ich leider aus Zeitgründen nicht alle in die erste Ausgabe aufnehmen konnte.

Jonathan Knudsen, Andy Oram und David Flanagan haben den Entwurf des Buches kommentiert, als es noch nicht viel mehr als eine Liste von Kapiteln und Rezepten war, und sie konnten sehen, was für ein Buch es werden könnte, und Vorschläge machen, wie man es besser machen könnte.

Jeder von ihnen hat dieses Buch in vielerlei Hinsicht verbessert, vor allem indem er zusätzliche Rezepte vorgeschlagen oder bestehende überarbeitet hat. Vielen Dank an alle! Die Fehler, die bleiben, sind meine eigenen.

Leserinnen und Leser

Mein aufrichtiger Dank gilt allen Lesern, die Fehler gefunden und Verbesserungen vorgeschlagen haben. Jede neue Ausgabe wird durch Leute wie dich, die sich die Zeit und Mühe nehmen, zu melden, was gemeldet werden muss, besser!

Besonders erwähnenswert ist einer der deutschen Übersetzer des Buches,3 Gisbert Selke, der die erste Ausgabe während der Übersetzung von vorne bis hinten gelesen und mein Englisch verbessert hat. Gisbert hat das für die zweite Auflage noch einmal gemacht und viele Code-Refactorings beigesteuert, die dieses Buch zu einem viel besseren gemacht haben, als es sonst gewesen wäre. Gisbert hat sogar ein Rezept(Rezept 18.5) beigesteuert und einige der anderen Rezepte im selben Kapitel überarbeitet. Vielen Dank, Gisbert!

Die zweite Auflage profitierte auch von den Kommentaren von Jim Burgess, der große Teile des Buches gelesen hat. Kommentare zu einzelnen Kapiteln erhielten wir von Jonathan Fuerth, dem verstorbenen Kim Fowler, Marc Loy und Mike McCloskey. Auch meine Frau Betty und meine Kinder im Teenageralter haben jeweils mehrere Kapitel Korrektur gelesen.

Die folgenden Personen haben wichtige Fehlerberichte oder Verbesserungsvorschläge eingereicht: Rex Bosma, Rod Buchanan, John Chamberlain, Keith Goldman, Gilles-Philippe Gregoire, B. S. Hughes, Jeff Johnston, Rob Konigsberg, Tom Murtagh, Jonathan O'Connor, Mark Petrovic, Steve Reisman, Bruce X. Smith, und Patrick Wohlwend.

Etc.

Meine liebe Frau Betty Cerar weiß immer noch mehr über das koffeinhaltige Getränk, das ich beim Programmieren trinke, als über die Programmiersprache, die ich benutze, aber ihre Leidenschaft für klare Ausdrucksweise und korrekte Grammatik hat so viel von meinem Schreiben während unseres gemeinsamen Lebens profitieren lassen.

Kein Buch über Java wäre vollständig, ohne James Gosling für die Erfindung von Java zu danken (er erfand auch den ersten Unix Emacs, die Tabellenkalkulation sc und das Fenstersystem NeWS). Dank gebührt auch seinem Arbeitgeber Sun Microsystems (bevor sie von Oracle übernommen wurden), der nicht nur die Java-Sprache, sondern auch eine unglaubliche Anzahl von Java-Tools und API-Bibliotheken frei im Internet verfügbar gemacht hat.

Willi Powell von Apple Kanada hat für die erste Ausgabe den Zugang zu macOS zur Verfügung gestellt, damals in den frühen Tagen von macOS.

Jedem Einzelnen von euch gilt mein aufrichtiger Dank.

Buchproduktionssoftware

Bei der Vorbereitung, der Kompilierung und dem Testen dieses Buches habe ich eine Vielzahl von Tools und Betriebssystemen verwendet. Den Entwicklern von OpenBSD, dem "proaktiv sicheren Unix-ähnlichen System", gebührt Dank dafür, dass sie einen stabilen und sicheren Unix-Klon geschaffen haben, der auch näher am traditionellen Unix ist als andere Freeware-Systeme. Ich habe den vi-Editor(vi auf OpenBSD und vim auf Windows) verwendet, während ich das Originalmanuskript in XML eingegeben habe, und ich habe Adobe FrameMaker (ein wunderbares GUI-basiertes Dokumentationswerkzeug, das Adobe gekauft und anschließend zerstört hat) verwendet, um die Dokumente zu formatieren. Ich weiß nicht, ob ich Adobe jemals verzeihen kann, dass es das wohl beste Dokumentationssystem der Welt zerstört und das Internet zu einem so gefährlichen Ort gemacht hat, indem es das fehlerbehaftete Flash lange über sein bestes Jahrhundert hinaus am Leben erhalten hat. Ich weiß nur, dass ich nie wieder ein Dokumentationssystem von Adobe für irgendetwas verwenden werde.

Aus diesem Grund wurde das von mir bearbeitete Android-Kochbuch nicht mit FrameMaker erstellt, sondern mit XML DocBook (das aus dem Wiki-Markup auf einer von mir geschriebenen Java-Website generiert wurde) und einer Reihe von benutzerdefinierten Tools, die von der O'Reilly-Toolgruppe bereitgestellt wurden.

Die dritte und vierte Ausgabe dieses Java-Kochbuchs wurden inAsciidoctorformatiert und auf der Publishing Toolchain von O'Reilly's Atlas zum Leben erweckt.

1 Für die Macken, siehe die Java Puzzlers Bücher von Joshua Bloch und Neal Gafter (Addison-Wesley).

2 Mit möglichen Ausnahmen für Algorithmus-Entscheidungen, die heute angesichts der massiven Veränderungen bei der verfügbaren Rechenleistung weniger relevant sind.

3 Frühere Ausgaben sind oder waren auf Englisch, Deutsch, Französisch, Polnisch, Russisch, Koreanisch, Traditionelles Chinesisch und Vereinfachtes Chinesisch erhältlich. Mein Dank gilt allen Übersetzerinnen und Übersetzern für ihre Bemühungen, das Buch einem breiteren Publikum zugänglich zu machen.

Get Java Kochbuch, 4. Auflage 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.