Cover

Inhalt

Titelei

Impressum

Inhalt

Vorwort

1 Bevor es losgeht

1.1 Was ist Java? – I. Teil

1.2 Was ist ein Programm?

1.3 Wie werden Programme erstellt?

1.4 Von Compilern und Interpretern

1.5 Was ist Java? – II. Teil

1.6 Vorbereitung zum Programmieren

2 Der erste Kontakt

2.1 Die erste Java-Anwendung

2.2 Zusammenfassung

2.3 Fragen und Antworten

2.4 Übungen

3 Von Daten, Operatoren und Objekten

3.1 Variablen und Anweisungen

3.2 Operatoren

3.3 Typumwandlung

3.4 Objekte und Klassen

3.5 Arrays

3.6 Vordefinierte Klassen und Pakete

3.7 Zusammenfassung

3.8 Fragen und Antworten

3.9 Übungen

4 Programmfluss und Fehlererkennung mit Exceptions

4.1 Die Axiomatik des Programmablaufs

4.2 Modularisierung durch Klassen und Methoden

4.3 Kontrollstrukturen

4.4 Fehlerbehandlung durch Exceptions

4.5 Zusammenfassung

4.6 Fragen und Antworten

4.7 Übungen

5 Objektorientierte Programmierung mit Java

5.1 Vererbung

5.2 Methoden (Klassenfunktionen)

5.3 Variablen- und Methodensichtbarkeit

5.4 Innere Klassen

5.5 Mehrfachvererbung und Schnittstellen

5.6 Zusammenfassung

5.7 Fragen und Antworten

5.8 Übungen

6 Ein- und Ausgabe

6.1 Streams

6.2 Ausgaben auf den Bildschirm

6.3 Ausgabe in Dateien

6.4 Eingaben von Tastatur

6.5 Aus Dateien lesen

6.6 Ein wichtiger Punkt: korrekte Exception-Behandlung

6.7 Rund um Strings

6.8 Zusammenfassung

6.9 Fragen und Antworten

6.10 Übungen

7 Collections und weitere nützliche Klassen

7.1 Zufallszahlen erzeugen

7.2 Zeit- und Datumsangaben

7.3 Zeichenfolgen zerlegen

7.4 Komplexe Datenstrukturen (Collections)

7.5 Algorithmen

7.6 Zusammenfassung

7.7 Fragen und Antworten

7.8 Übungen

8 Grundlagen der GUI-Programmierung

8.1 Der GUI-Reiseführer

8.2 Aufbau einer GUI-Anwendung

8.3 Das Ereignis-Modell des AWT

8.3.1 java.awt.event importieren

8.3.2 Ereignislauscher definieren

8.3.3 Lauscher für Quelle registrieren

8.3.4 Adapter

8.3.5 Einige abschließende Anmerkungen

8.4 Chamäleon sein mit UIManager und Look&Feel

8.5 Ein umfangreicheres Beispiel

8.6 Zusammenfassung

8.7 Fragen und Antworten

8.8 Übungen

9 Grafik, Grafik, Grafik

9.1 Das Arbeitsmaterial des Künstlers

9.2 Erweitertes Layout mit Panel-Containern

9.3 Kreise, Rechtecke und Scheiben

9.4 Freihandlinien

9.5 Noch mehr Grafik mit Java2D

9.6 Zusammenfassung

9.7 Fragen und Antworten

9.8 Übungen

10 Bilder, Bilder, Bilder

10.1 Der Bildbetrachter

10.2 Dateien öffnen und speichern: die Klasse JFileChooser

10.3 Laden und Anzeigen von Bildern

10.4 Zusammenfassung

10.5 Fragen und Antworten

10.6 Übungen

11 Text, Text, Text

11.1 Ein Texteditor

11.2 Umgang mit Text: JTextField, JTextArea und JTextPane

11.3 Kombinationsfelder

11.4 Eigene Dialoge

11.5 Nach Textstellen suchen

11.6 Unterstützung der Zwischenablage

11.7 Drucken

11.8 Zusammenfassung

11.9 Fragen und Antworten

11.10 Übungen

12 Menüs und andere Oberflächenelemente

12.1 Die Komponentenhierarchie

12.2 Die Basisklasse Component

12.3 Statische Textfelder (JLabel)

12.4 Schaltflächen (JButton)

12.5 Eingabefelder (JTextField und JTextArea)

12.6 Optionen (JCheckBox, JRadioButton)

12.7 Listen- und Kombinationsfelder (JList und JComboBox)

12.8 Bildlaufleisten (JScrollBar)

12.9 Menüleisten (JMenubar)

12.10 Zusammenfassung

12.11 Fragen und Antworten

12.12 Übungen

13 Threads und Animation

13.1 Multithreading mit Java

13.2 Eigene Threads erzeugen: die Klasse Thread

13.3 Eigene Threads erzeugen: die Runnable-Schnittstelle

13.4 Wissenswertes rund um Threads

13.5 Threads und Animation I

13.6 Threads und Animation II

13.6.1 SwingWorker

13.7 Zusammenfassung

13.8 Fragen und Antworten

13.9 Übungen

14 Sound

14.1 Was ist eine URL?

14.2 Sounddateien abspielen

14.3 Wiedergabe von MP3

14.4 Tonerzeugung mit MIDI

14.4.1 Abspielen einer MIDI-Datei

14.4.2 Selber Musik machen

14.5 Zusammenfassung

14.6 Fragen und Antworten

14.7 Übungen

15 Die Datenbankschnittstelle JDBC

15.1 Datenbanken-ABC

15.2 Die JDBC-Schnittstelle

15.3 Vorbereitung für JavaDB

15.4 Zugriff auf eine Datenbank

15.4.1 Verbindungsaufbau

15.4.2 Lese- und Schreiboperationen durchführen

15.4.3 Verbindung schließen

15.5 Zusammenfassung

15.6 Fragen und Antworten

15.7 Übungen

16 Was wir noch erwähnen wollten

16.1 Aufzählungen (enum)

16.1.1 Definition

16.1.2 Variablen definieren

16.1.3 Aufzählungskonstanten vergleichen

16.1.4 Aufzählungen und switch

16.1.5 Aufzählungen und for

16.2 Lambda-Ausdrücke

16.3 Java Generics

16.3.1 Einleitung

16.3.2 Syntax

16.3.3 Eingeschränkte Platzhalter

16.3.4 Parameter und Variablen von generischen Typen

16.4 Jar-Archive

16.5 Module

16.6 Debuggen

16.6.1 Grundsätzliches Vorgehen

16.7 Anwendungen weitergeben

16.7.1 Ohne JRE geht es nicht

16.7.2 Java-Anwendungen ausführen:von .class bis .exe

Anhang A: Lösungen

Anhang B: Installation des JDK

B.1 Installation

B.2 Anpassen des Systems

B.2.1 Erweiterung des Systempfads

B.2.2 Installation testen

B.2.3 Setzen des Klassenpfads

B.3 Die Java-Dokumentation

B.4 Wo Sie weitere Hilfe finden

Anhang C: Schlüsselwörter

Anhang D: Java-Klassenübersicht

D.1 java.io

D.2 java.lang

D.3 java.applet

D.4 java.awt

D.5 java.awt.event

D.6 java.awt.geom

D.7 java.net

D.8 java.sql

D.9 javax.sound.midi

D.10 javax.swing

D.11 java.util

Anhang E: Literatur und Adressen

E.1 Bücher

E.2 Zeitschriften

E.3 Ressourcen im Internet

Anhang F: Das Material zum Buch

Dirk Louis
Peter Müller

Java

Eine Einführung in die Programmierung

2. Auflage

Die Autoren:

Dirk Louis, autoren@carpelibrum.de
Peter Müller, Saarbrücken, leserfragen@gmx.de

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.

Ebenso übernehmen Autoren und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen­ und Markenschutz­Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Lektorat: Brigitte Bauer-Schiewek
Copyediting: Petra Kienle, Fürstenfeldbruck
Umschlagdesign: Marc Müller-Bremer, München, www.rebranding.de
Umschlagrealisation: Stephan Rönigk

Print-ISBN 978-3-446-45194-0
E-Book-ISBN 978-3-446-45362-3

Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz)
CSS-Version: 1.0

Font License Zurück zum Impressum

Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

Vorwort

Dieses Buch soll Sie auf leicht verständliche und gleichsam unterhaltsame Weise in die Programmierung mit Java einführen. Vorhandene Programmierkenntnisse können von Vorteil sein, werden aber nicht vorausgesetzt. Schritt für Schritt werden Sie sich in Java einarbeiten und erfahren, wie Sie die Mächtigkeit der Sprache für Ihre Zwecke nutzen können.

Sie werden Ihre ersten Java-Anwendungen schreiben, sich mit der objektorientierten Programmierung vertraut machen und erfahren, wie man in Java Anwendungen mit grafischen Benutzeroberflächen programmiert. In den letzten Kapiteln des Buchs wenden wir uns dann noch diversen Fortgeschrittenenthemen zu, wie der Implementierung von Threads und Animationen oder der Datenbankunterstützung.

Am Ende eines jeden Kapitels finden Sie eine Reihe von Testfragen und eine Zusammenfassung des behandelten Stoffs sowie einige Übungsaufgaben, die zur Vertiefung und Wiederholung des Stoffs dienen, vor allem aber auch die Lust am Programmieren anregen sollen.

Programmierkenntnisse sind wie erwähnt nicht erforderlich, aber Sie sollten auch nicht zu den Zeitgenossen gehören, die bisher noch jedem Computer erfolgreich aus dem Weg gegangen sind. Spaß am Programmieren können wir Ihnen nur dann vermitteln, wenn Sie selbst ein wenig guten Willen und Ausdauer mitbringen. Gute Laune, eine Portion Neugier, dieses Buch – was brauchen Sie noch?

Um mit Java programmieren zu können, benötigen Sie ein entsprechendes Entwicklungspaket, das sogenannte JDK (Java Development Kit). Optional können Sie zusätzlich zu dem JDK eine integrierte Entwicklungsumgebung wie z. B. NetBeans oder die Open-Source-Software Eclipse verwenden.

Für Java-Einsteiger ist der Einsatz einer integrierten Entwicklungsumgebung allerdings häufig recht verwirrend und lenkt vom eigentlichen Primärziel, die Programmiersprache Java zu lernen, unnötig ab. Schlimmer noch: Die meisten Entwicklungsumgebungen sind für fortgeschrittene Programmierer konzipiert und erleichtern deren tägliche Programmierarbeit, indem sie komplexe Arbeitsschritte automatisieren, vordefinierte Codegerüste anbieten, eigenständig Code erzeugen. Für Anfänger ist dies ein Desaster! Nehmen wir nur einmal das Codegerüst einer einfachen Konsolenanwendung, das in Java aus ungefähr vier bis sieben Zeilen Code besteht. Wenn Ihnen dieses Codegerüst stets von Ihrer Entwicklungsumgebung fertig vorgelegt wird, werden Sie sich kaum die Mühe machen, es je selbst einmal abzutippen. Sie werden es sich vielleicht anschauen und versuchen, es zu verstehen, aber Sie werden es nie wirklich verinnerlichen. Wenn Sie dann später einmal an einem Rechner arbeiten müssen, auf dem keine Entwicklungsumgebung installiert ist, werden Sie mit Schrecken feststellen, dass es Ihnen unmöglich ist, das Grundgerüst aus dem Kopf nachzustellen. Nun, ganz so schlimm wird es vielleicht nicht kommen, aber der Punkt ist, dass die Annehmlichkeiten der Entwicklungsumgebungen den Anfänger schnell dazu verführen, sich mit zentralen Techniken und Prinzipien der Java-Programmierung nur oberflächlich auseinanderzusetzen.

Aus diesem Grund legen wir in diesem Buch Wert auf Handarbeit mit elementarsten Mitteln: Wir setzen unsere Quelltexte in einem einfachen Texteditor auf, wandeln die Quelltexte mithilfe des Java-Compilers javac aus dem JDK in ausführbare Programme um und führen diese dann mit dem Java-Interpreter java (ebenfalls im JDK enthalten) aus. Wie Sie dabei im Einzelnen vorgehen und was Sie beachten müssen, erfahren Sie in den einleitenden Kapiteln und im Anhang dieses Buchs.

Benötigte Software und Beispielsammlung

Die Java-Entwicklungsumgebung und die Beispielsammlung zu diesem Buch finden Sie zum Download im Internet. Die entsprechenden Links finden Sie im Anhang F, Hinweise zur Installation der Entwicklungsumgebung in Anhang B.

www.carpelibrum.de

Falls Sie während der Buchlektüre auf Probleme oder gar auf inhaltliche Fehler stoßen, sollten Sie nicht zögern, uns eine E-Mail unter Angabe von Buchtitel und Auflage zu senden. Allerdings schauen Sie bitte zuerst auf unserer Buchseite www.carpelibrum.de nach, ob sich nicht dort schon eine Antwort findet. Neben Aktualisierungen, Fehlerkorrekturen und Antworten auf typische Fragen finden Sie dort auch Hinweise auf weitere Bücher rund ums Thema Programmieren.

Viel Erfolg mit Java wünschen Ihnen

Dirk Louis (autoren@carpelibrum.de)

Peter Müller (leserfragen@gmx.de)

Saarbrücken, im Frühjahr 2018

1 Bevor es losgeht