Professional Documents
Culture Documents
II-Advanced Feature
12th Edition Cay S. Horstmann
Visit to download the full and correct content document:
https://ebookmass.com/product/core-java-vol-ii-advanced-feature-12th-edition-cay-s-h
orstmann/
About This eBook
ePUB is an open, industry-standard format for eBooks. However,
support of ePUB and its many features varies across reading devices
and applications. Use your device or app settings to customize the
presentation to your liking. Settings that you can customize often
include font, font size, single or double column, landscape or portrait
mode, and figures that you can click or tap to enlarge. For additional
information about the settings and features on your reading device
or app, visit the device manufacturer’s Web site.
Many titles include programming code or configuration examples. To
optimize the presentation of these elements, view the eBook in
single-column, landscape mode and adjust the font size to the
smallest setting. In addition to presenting code and configurations in
the reflowable text format, we have included images of the code
that mimic the presentation found in the print book; therefore,
where the reflowable format may compromise the presentation of
the code listing, you will see a “Click here to view code image” link.
Click the link to view the print-fidelity code image. To return to the
previous page viewed, click the Back button on your device or app.
Core Java
Volume II: Advanced Features
Twelfth Edition
Core Java
Volume II: Advanced
Features
Twelfth Edition
Cay S. Horstmann
The author and publisher have taken care in the preparation of this
book, but make no expressed or implied warranty of any kind and
assume no responsibility for errors or omissions. No liability is
assumed for incidental or consequential damages in connection with
or arising out of the use of the information or programs contained
herein.
The views expressed in this book are those of the author and do not
necessarily reflect the views of Oracle.
For questions about sales outside the United States, please contact
international@pearsoned.com.
ISBN-13: 978-0-13-787107-0
ISBN-10: 0-13-787107-4
ScoutAutomatedPrintCode
Pearson’s Commitment to Diversity, Equity,
and Inclusion
Pearson is dedicated to creating bias-free content that reflects the
diversity of all learners. We embrace the many dimensions of
diversity, including but not limited to race, ethnicity, gender,
socioeconomic status, ability, age, sexual orientation, and religious
or political beliefs.
Preface
Acknowledgments
Chapter 1: Streams
1.1 From Iterating to Stream Operations
1.2 Stream Creation
1.3 The filter, map, and flatMap Methods
1.4 Extracting Substreams and Combining Streams
1.5 Other Stream Transformations
1.6 Simple Reductions
1.7 The Optional Type
1.7.1 Getting an Optional Value
1.7.2 Consuming an Optional Value
1.7.3 Pipelining Optional Values
1.7.4 How Not to Work with Optional Values
1.7.5 Creating Optional Values
1.7.6 Composing Optional Value Functions with flatMap
1.7.7 Turning an Optional into a Stream
1.8 Collecting Results
1.9 Collecting into Maps
1.10 Grouping and Partitioning
1.11 Downstream Collectors
1.12 Reduction Operations
1.13 Primitive Type Streams
1.14 Parallel Streams
Chapter 3: XML
3.1 Introducing XML
3.2 The Structure of an XML Document
3.3 Parsing an XML Document
3.4 Validating XML Documents
3.4.1 Document Type Definitions
3.4.2 XML Schema
3.4.3 A Practical Example
3.5 Locating Information with XPath
3.6 Using Namespaces
3.7 Streaming Parsers
3.7.1 Using the SAX Parser
3.7.2 Using the StAX Parser
3.8 Generating XML Documents
3.8.1 Documents without Namespaces
3.8.2 Documents with Namespaces
3.8.3 Writing Documents
3.8.4 Writing an XML Document with StAX
3.8.5 An Example: Generating an SVG File
3.9 XSL Transformations
Chapter 4: Networking
4.1 Connecting to a Server
4.1.1 Using Telnet
4.1.2 Connecting to a Server with Java
4.1.3 Socket Timeouts
4.1.4 Internet Addresses
4.2 Implementing Servers
4.2.1 Server Sockets
4.2.2 Serving Multiple Clients
4.2.3 Half-Close
4.2.4 Interruptible Sockets
4.3 Getting Web Data
4.3.1 URLs and URIs
4.3.2 Using a URLConnection to Retrieve Information
4.3.3 Posting Form Data
4.4 The HTTP Client
4.4.1 The HttpClient Class
4.4.2 The HttpRequest class and Body Publishers
4.4.3 The HttpResponse Interface and Body Handlers
4.4.4 Asynchronous Processing
4.5 Sending E-Mail
Chapter 7: Internationalization
7.1 Locales
7.1.1 Why Locales?
7.1.2 Specifying Locales
7.1.3 The Default Locale
7.1.4 Display Names
7.2 Number Formats
7.2.1 Formatting Numeric Values
7.2.2 The DecimalFormat Class
7.2.3 Currencies
7.3 Date and Time
7.4 Collation and Normalization
7.5 Message Formatting
7.5.1 Formatting Numbers and Dates
7.5.2 Choice Formats
7.6 Text Input and Output
7.6.1 Text Files
7.6.2 Line Endings
7.6.3 The Console
7.6.4 Log Files
7.6.5 The UTF-8 Byte Order Mark
7.6.6 Character Encoding of Source Files
7.7 Resource Bundles
7.7.1 Locating Resource Bundles
7.7.2 Property Files
7.7.3 Bundle Classes
7.8 A Complete Example
Index
Preface
To the Reader
The book you have in your hands is the second volume of the
twelfth edition of Core Java, fully updated for Java 17. The first
volume covers the essential features of the language; this volume
deals with the advanced topics that a programmer needs to know for
professional software development. Thus, as with the first volume
and the previous editions of this book, we are still targeting
programmers who want to put Java technology to work in real
projects.
As is the case with any book, errors and inaccuracies are inevitable.
Should you find any in this book, we would very much like to hear
about them. Of course, we would prefer to hear about them only
once. For this reason, we have put up a web site at
http://horstmann.com/corejava with a FAQ, bug fixes, and
workarounds. Strategically placed at the end of the bug report web
page (to encourage you to read the previous reports) is a form that
you can use to report bugs or problems and to send suggestions for
improvements for future editions.
Chapter 3 covers XML. We show you how to parse XML files, how
to generate XML, and how to use XSL transformations. As a useful
example, we show you how to specify the layout of a Swing form in
XML. We also discuss the XPath API, which makes finding needles in
XML haystacks much easier.
Java had two prior attempts at libraries for handling date and time.
The third one was the charm in Java 8. In Chapter 6, you will learn
how to deal with the complexities of calendars and time zones, using
the new date and time library.
In Chapter 9, you will learn about the Java Platform Module System
that was introduced in Java 9 to facilitate an orderly evolution of the
Java platform and core libraries. This module system provides
encapsulation for packages and a mechanism for describing module
requirements. You will learn the properties of modules so that you
can decide whether to use them in your own applications. Even if
you decide not to, you need to know the new rules so that you can
interact with the Java platform and other modularized libraries.
Chapter 10 takes up the Java security model, user authentication,
and the cryptographic functions in the Java security library. You will
learn about important features such as message and code signing,
authorization and authentication, and encryption. We conclude with
examples that use the AES and RSA encryption algorithms.
Chapter 11 contains all the Swing material that didn't make it into
Volume I, especially the important but complex tree and table
components. We also cover the Java 2D API, which you can use to
create realistic drawings and special effects. Of course, not many
programmers need to program Swing user interfaces these days, so
we pay particular attention to features that are useful for images
that can be generated on a server.
As always, all chapters have been completely revised for the latest
version of Java. Outdated material has been removed, and the new
APIs up to Java 17 are covered in detail.
Conventions
As is common in many computer books, we use monospace type
to represent computer code.
Note
Notes are tagged with “note” icons that look like this.
Tip
Tips are tagged with “tip” icons that look like this.
Caution
When there is danger ahead, we warn you with a "caution"
icon.
C++ Note
There are a number of C++ notes that explain the
difference between the Java programming language and
C++. You can skip them if you aren't interested in C++.
Cay Horstmann
Berlin, Germany
January 2022
Another random document with
no related content on Scribd:
„Delcommune“ als erledigt an. Die Besatzung von „Hedwig von Wißmann“
überraschte am 27. Februar 1915 einen belgischen Posten bei Tembwe und
erbeutete dessen Maschinengewehr. Ein belgischer Offizier und 10 Askari fielen,
ein schwer verwundeter belgischer Offizier und ein Engländer wurden gefangen.
Bei uns fiel ein Askari, ein Europäer wurde tödlich, ein Askari schwer verwundet.
Im März 1915 nahmen die Belgier in Ubwari, dessen Bewohner sich deutsch-
freundlich gezeigt hatten, Massenverhaftungen vor und hängten eine Anzahl Leute
auf.
Nach aufgefangenen Funksprüchen sind im Juni auf dem Tanganjika mehrere
belgische Walfischboote fertiggestellt gewesen; an einem neuen belgischen
Dampfer, dem „Baron Dhanis“, wurde gearbeitet. Deutscherseits wurde am 9. Juni
1915 Dampfer „Goetzen“ fertiggestellt und von der Truppe übernommen. Er hat
bei den Truppenverschiebungen auf dem Tanganjika wertvolle Dienste geleistet.
Bei Bismarckburg war die dortige Polizeitruppe unter dem tüchtigen Verwalter des
Bezirks, Lt. d. Res. Haun, zur Schutztruppe übergetreten. Es kam zu kleineren
Scharmützeln auf feindlichem Gebiet, und auch hier gelang es, den Feind im
wesentlichen fernzuhalten.
Erst Anfang Februar 1915 rückten mehrere hundert feindliche Askari in
Abercorn ein, und Teile derselben drangen bis in die Gegend der Mission Mwasye
vor, zogen dann aber wieder ab.
Mitte März wurde dann die Truppe unter Lt. d. Res. Haun am Kitoberge durch
eine englisch-belgische Abteilung im Lager überfallen. Lt. Haun geriet schwer
verwundet in Gefangenschaft und mehrere Askari fielen. Oberleutnant Aumann
wurde mit einer Abteilung, die später als Kompagnie formiert wurde, von
Hauptmann Falkenstein, dem Führer der 5. Feldkompagnie (Langenburg),
abgezweigt und deckte in der Gegend von Mbozi die deutsche Grenze. Dort waren
im Februar 1915 mehrfach mehrere hundert Mann starke Abteilungen in
deutsches Gebiet eingedrungen; Ende März wurden in Karonga Europäer in
unbekannter Zahl, in Fife und in anderen Orten der Grenze etwa 800 Mann
gemeldet. Der Feind schien also einen Angriff vorzubereiten. Er streifte bis in die
Gegend von Itaka vor, und Anfang April wurde Kituta am Südende des
Tanganjikasees als von den Belgiern verschanzt gemeldet. Major von Langenn,
der nach Wiederherstellung von seiner schweren Verwundung — er hatte ein
Auge verloren — am Russissi tätig war, wurde mit der Führung der Operationen in
dem ihm bekannten Gebiet Bismarckburg-Langenburg betraut. Außer seiner
früheren 5. Feldkompagnie, die bei Ipyana und in der Gegend von Mbozi stand,
wurden ihm hierzu die etwa kompagniestarke Abteilung Bismarckburg und drei
Kompagnien unterstellt, die von Kigoma und Daressalam herangezogen wurden.
Während des Seetransportes nach Bismarckburg fanden östlich dieses Ortes
einige erfolgreiche Zusammenstöße unserer Patrouillen gegen 50 bis 250 Mann
starke feindliche Streifabteilungen statt.
Major von Langenn hatte am 7. Mai 1915 4 Kompagnien bei Mwasye
versammelt, eine gegenüberstehende belgische Abteilung ging zurück. Am 23.
Mai warf Patrouille Oberleutnant von Debschitz eine belgische Kompagnie zurück,
von der 2 Europäer, 6 Askari fielen. Am 24. Mai erging Befehl an Langenn, mit 3
Kompagnien nach Neu-Langenburg gegen den dort als bevorstehend gemeldeten
Angriff abzurücken. Den Befehl in Gegend Bismarckburg übernahm General
Wahle. Dieser traf am 6. Juni in Kigoma ein und sammelte bei Bismarckburg die
als 29. Feldkompagnie formierte Abteilung Bismarckburg und die von Daressalam
herangezogene 24. Feldkompagnie und halbe Europäerkompagnie.
Am 28. Juni griff General Wahle mit 2½ Kompagnien die Farm Jericho an,
brach aber das Gefecht ab, als er erkannte, daß die feste Stellung ohne Artillerie
nicht zu nehmen sei. Bei uns fielen 3 Europäer, 4 Askari, verwundet wurden 2
Europäer, 22 Askari. General Wahle wurde durch 2 Kompagnien von Langenburg
her verstärkt.
Seit dem 25. Juli 1915 belagerte General Wahle mit 4 Kompagnien und 2
Geschützen C/73 den bei Jericho stark befestigten Gegner. Von Abercorn aus
unternommene Entsatzversuche wurden abgeschlagen, am 2. August 1915 aber
die Belagerung aufgehoben, da mit der vorhandenen Artillerie eine Wirkung nicht
zu erzielen war. General Wahle fuhr mit 3 Kompagnien zurück nach Daressalam.
Die 29. Kompagnie blieb bei Jericho, die 2 Geschütze in Kigoma.
Am 19. Juni war durch „Goetzen“ der bei Kituta auf Strand liegende Dampfer
„Cecil Rhodes“ abgeschleppt und versenkt worden.
Während des September und Oktober kam es nun zu dauernden
Patrouillengefechten an der Grenze von Bismarckburg; bei Abercorn drangen
wieder belgische Verstärkungen ein. Am 3. Dezember wurde bemerkt, daß die
Befestigungen von Jericho verlassen und geschleift waren. Ein neues, nordöstlich
Abercorn erbautes Fort beschoß Oberleutnant Franken am 6. Dezember mit 100
Gewehren und einem Maschinengewehr und brachte dem Feinde dabei
anscheinend Verluste bei.
Die englische Marineexpedition, deren Anmarsch über Bukama-Elisabethville
seit langem beobachtet wurde, hatte am 22. Oktober 1915 die Lukugabahn
erreicht. Die aufgefangenen Notizen, daß für die Deutschen eine Überraschung
auf dem Tanganjika vorbereitet würde, brachten mich auf den Gedanken, daß wir
hier mit besonders konstruierten kleinen Fahrzeugen, die vielleicht mit Torpedos
ausgerüstet wären, zu rechnen haben würden. Es handelte sich also um eine sehr
ernst zu nehmende Gefährdung unserer Herrschaft auf dem Tanganjika, die auf
unsere gesamte Kriegführung von ausschlaggebendem Einfluß sein konnte. Die
gleichzeitig mit diesen Vorbereitungen stattfindenden feindlichen
Truppenverschiebungen in der Richtung auf den Kiwusee und auf Abercorn zu
bewiesen, daß Hand in Hand eine beabsichtigte Landoffensive gehen sollte. Um
hierbei den Feind möglichst noch während seiner Versammlung zu schlagen, griff
Hauptmann Schulz am 27. September 1915 bei Luwungi die Belgier an und
brachte ihnen schwere Verluste bei.
Der Dampfer „Kingani“ überfiel in der Nacht vom 28. Oktober eine belgische
Telegraphenbaukolonne und machte einige Beute. In der Lukugamündung wurde
ein fahrender Eisenbahnzug festgestellt. „Kingani“ kehrte von einer
Erkundungsfahrt zur Lukugamündung nicht zurück und war nach einem
belgischen Funkspruch vom 31. Dezember verlorengegangen. Vier Europäer, acht
Farbige sollen tot, der Rest gefangen sein. Augenscheinlich war der günstige
Zeitpunkt, die feindlichen Vorbereitungen zur Herrschaft auf dem Tanganjika zu
stören, verstrichen.
Am 9. Februar 1916 wurde dann noch einer unserer armierten Dampfer durch
den Feind genommen.
Auf dem Nyassasee war der deutsche Dampfer „Hermann von Wißmann“, der
vom Ausbruch des Krieges nichts wußte, am 13. August 1914 von dem englischen
Regierungsdampfer „Gwendolin“ überrascht und fortgenommen worden.
Hauptmann von Langenn war mit seiner in Massoko bei Neu-Langenburg
stehenden 5. Feldkompagnie am 9. September 1914 gegen die englische Station
Karonga vorgegangen. Beim Kampfe gegen die in fester Stellung befindlichen
Engländer wurde Hauptmann von Langenn selbst schwer verwundet. Die beiden
Kompagnieoffiziere gerieten, gleichfalls schwer verwundet, in englische
Gefangenschaft. Die deutschen Unteroffiziere und die Askari schlugen sich sehr
brav, mußten aber doch einsehen, daß sie gegen die Schanzen des Feindes
nichts ausrichten konnten und brachen deshalb das aussichtslose Gefecht ab.
Über 20 Askari waren gefallen, mehrere Maschinengewehre und leichte
Geschütze verlorengegangen. Aus Iringa und Ubena trafen nun umgehend
Verstärkungen der 2. Kompagnie ein; auch mehrere hundert Wahehehilfskrieger
wurden aufgeboten. Nach und nach stellte sich heraus, daß der Feind auch starke
Verluste erlitten hatte. Er hütete sich vor größeren Unternehmungen gegen den
Bezirk Langenburg, so daß dieses fruchtbare, für uns so wichtige
Verpflegungsgebiet uns anderthalb Jahre lang erhalten blieb.
Später rückte unsere 5. Kompagnie bei Langenburg mit ihrem Hauptteil wieder
näher an die Grenze zur Mission Ipyana vor. Am 2. November 1915 fand am
Lusirafluß ein Vorpostengefecht statt und dem Dampfer „Gwendolin“ auf dem
Nyassasee wurden einige Geschütztreffer beigebracht.
Anfang Dezember 1914 fanden nördlich Karonga, am Ssongwefluß,
Patrouillenzusammenstöße statt. Oberarzt Dr. Gothein, der Anfang Mai 1915 aus
englischer Gefangenschaft zurückgeliefert worden war, erzählte, daß in dem
ersten Gefecht bei Karonga, am 9. September 1914, der Feind an Toten 6
Europäer und 50 Askari, an Schwerverwundeten 7 Europäer und über 50 Askari
verloren hatte. Die Engländer unterhielten eine rege Spionage, besonders durch
den „Wali“, einen eingeborenen Verwaltungsbeamten am Ssongwe.
An der Grenze kam es im Mai 1915 zu einigen für uns günstigen Überfällen.
Die Regenzeit verzögerte sich, so daß der südliche Teil des Bezirkes Langenburg
bis Ende Juni gegen einen Angriff als geschützt gelten konnte.
Im Juni 1915, als Major von Langenn mit seinen Verstärkungen eingetroffen
war, kam es entgegen der Erwartung zu keinen größeren Gefechten. Die Zeit
wurde benutzt, um auf englischem Gebiet einen Telegraphen ab- und auf
deutschem Gebiet in Richtung auf Ubena wieder aufzubauen. Auch im August
bewahrheitete sich die Nachricht von einem geplanten feindlichen Angriff nicht.
Am 8. Oktober erst trafen stärkere feindliche Truppen, Europäer und Askari, in Fife
ein. Auch an dieser Grenze kam es zu zahlreichen kleinen Scharmützeln. Gegen
Ende des Jahres wurde das Eintreffen neuer Verstärkungen auch bei Ikawa
festgestellt. Hauptmann Aumann wies am 23. Dezember 1915 dort den Überfall
einer feindlichen Abteilung von etwa 60 Europäern und zwei Maschinengewehren
ab.
Am Njassasee kam es nur zu unbedeutenden Zusammenstößen. Am 30. Mai
landeten die Engländer bei Sphinx-Hafen 30 Europäer, 200 Askari mit zwei
Geschützen und zwei Maschinengewehren. Sie erlitten durch unsere 13 Gewehre
und ein Maschinengewehr anscheinend über 20 Mann Verluste und fuhren nach
Zerstörung des Wracks des „Hermann von Wißmann“ ab.
Askarikopf
Zweites Buch
Der konzentrische Angriff der
Übermacht
(Vom Eintreffen der südafrikanischen Truppen bis
zum Verlust der Kolonie)
Safari
Erster Abschnitt
Feindlicher Vorstoß am Oldoroboberge[4]