Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
- Von zahlreichen Hochschulen empfohlen: Der Einstieg in die Welt der Java-Programmierung mit diesem kompakten Klassiker!
- Besonderen Schwerpunkt legen wir auf Grundlagen. Diese sind auch im Zeitalter leistungsfähiger Hilfsmittel unentbehrlich.
- Topaktuell: Lernen Sie die objektorientierte Programmierung auf der Basis von Java 21.
- Erhöhen Sie Ihren Lernerfolg mit den zahlreichen Übungsaufgaben.
- Ihr exklusiver Vorteil: E-Book inside beim Kauf des gedruckten Buches
Sie möchten sich Java von Grund auf aneignen? Dieses Standardwerk hat schon Tausende von Einsteigern zu Java-Pro s gemacht. Kompakt, aktuell und präzise bietet es alles, was für die Programmierung in Java wichtig ist.
Diese Neuauflage wurde grundlegend überarbeitet. Ihr Fokus richtet sich darauf, Ihnen den Einstieg in die Programmierung mit Java 21 möglichst einfach zu machen. Von Anfang an nutzen wir dafür die leistungsfähige und komfortable Entwicklungsumgebung Eclipse.
Von den elementaren Ausdrucksmöglichkeiten in Java und den Grundlagen der Objektorientierung bis hin zur Nebenläu gkeit sowie zur Programmierung in Netzwerken und Anbindung von Datenbanken finden Sie hier alle Themen, die für Einsteiger wichtig sind. Zum Vertiefen des Umgangs mit Entwurfsmustern dient die Programmierung grafischer Benutzeroberflächen.
Zahlreiche Beispiele und Aufgaben in allen Kapiteln – von elementaren Übungen bis hin zu kleinen Projektarbeiten – helfen Ihnen, Ihr Wissen praktisch umzusetzen und zu festigen.
AUS DEM INHALT //
- Einstieg in Java
- Elemente der Programmierung
- Objektorientierte Programmierung
- Grundlegende Klassen
- Ein-/Ausgabe in Java
- Nebenläufigkeit in Java: Threads
- Grafikanwendungen in Java
- Programmierung in Netzwerken
- Anbindung von Datenbanken mit JDBC
- Bearbeiten von XML in Java
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 517
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Fritz Jobst
Programmieren in Java
Einfach Java lernen
8., vollständig überarbeitete Auflage
Ihr Plus – digitale Zusatzinhalte!
Auf unserem Download-Portal finden Sie zu diesem Titel kostenloses Zusatzmaterial.
Geben Sie auf plus.hanser-fachbuch.de einfach diesen Code ein:
plus-25rct-B4vaP
Der Autor:Prof. Dr. Fritz Jobst lehrte an der OTH Regensburg und hielt u. a. Vorlesungen zur Programmierung in Java und zur Entwicklung von Software mit der Java Enterprise Edition.
Print-ISBN: 978-3-446-47691-2E-Book-ISBN: 978-3-446-47834-3E-Pub-ISBN: 978-3-446-48246-3
Alle in diesem Werk enthaltenen Informationen, Verfahren und Darstellungen wurden zum Zeitpunkt der Veröffentlichung nach bestem Wissen zusammengestellt. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Werk enthaltenen Informationen für Autor:innen, Herausgeber:innen und Verlag mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor:innen, Herausgeber:innen und Verlag übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Weise aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebenso wenig übernehmen Autor:innen, Herausgeber:innen und Verlag die Gewähr dafür, dass die beschriebenen Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt also 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 benützt werden dürften.
Die endgültige Entscheidung über die Eignung der Informationen für die vorgesehene Verwendung in einer bestimmten Anwendung liegt in der alleinigen Verantwortung des Nutzers.
Bibliografische Information der Deutschen Nationalbibliothek:Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet unter 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 Werkes, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Einwilligung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder einem anderen Verfahren), auch nicht für Zwecke der Unterrichtgestaltung – mit Ausnahme der in den §§ 53, 54 UrhG genannten Sonderfälle –, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.Wir behalten uns auch eine Nutzung des Werks für Zwecke des Text- und Data Mining nach § 44b UrhG ausdrücklich vor.
© 2024 Carl Hanser Verlag GmbH & Co. KG, Münchenwww.hanser-fachbuch.deLektorat: Brigitte Bauer-SchiewekCopy editing: Petra Kienle, FürstenfeldbruckHerstellung: le-tex publishing services GmbH, LeipzigCovergestaltung: Tom WestSatz: Eberl & Koesel Studio, Kempten
Titelei
Impressum
Inhalt
Vorwort
1 Der Einstieg in Java
1.1 Erstellung und Ablauf von Programmen in Java
1.2 Das erste Java-Programm
1.3 Erstellung und Ablauf des ersten Programms
1.4 Eine erste Anwendung mit Grafik
1.5 Zusammenfassung
1.6 Aufgaben
2 Elemente der Programmierung
2.1 Daten erklären und verarbeiten
2.1.1. Schreibweisen für Deklarationen und Wertzuweisungen
2.1.2. Beispiel: Elementare Ausdrücke
2.1.3. Beispiel: Bereichsüberschreitungen
2.1.4. Typumwandlungen
2.1.5. Deklarationen mit var
2.1.6. Deklarationen mit dem static-Modifizierer
2.1.7. Namen und ihre Gültigkeit
2.2 Kontrollfluss
2.2.1. Verzweigung
2.2.2. Mehrfachverzweigung
2.2.3. Schleifen mit Vorabprüfung
2.2.4. Schleife mit Prüfung am Ende
2.2.5. Verlassen von Schleifen
2.2.6. Programmausnahmen
2.3 Methoden
2.3.1. Definitionen
2.3.2. Beispiele zum Einsatz von Methoden
2.3.3. Rekursion
2.3.3.1. Beispiel: Berechnung der Fakultät
2.3.3.2. Beispiel: Die Türme von Hanoi
2.4 Felder
2.4.1. Eindimensionale Felder
2.4.1.1. Grundlegende Definitionen
2.4.1.2. Beispiel: Einlesen und Bearbeiten eines Felds
2.4.1.3. Behandlung von Indexfehlern
2.4.2. Suche in Feldern
2.4.2.1. Lineare Suche
2.4.2.2. Halbierungsmethode: binäre Suche in Feldern
2.4.3. Sortieren
2.4.4. Mehrdimensionale Felder
2.5 Operatoren in Java
2.6 ANSI-Escape-Sequenzen
2.7 Aufgaben
3 Objektorientierte Programmierung
3.1 Auf dem Weg zu Klassen
3.1.1. Wege zur Objektorientierung
3.1.2. Beziehungen zwischen Klassen
3.1.3. Oberklassen und Unterklassen
3.1.4. Klassen und Objekte
3.1.5. Abstrakte Klassen
3.1.6. Entwurf der Klassen
3.1.6.1. Typ 1: die vorgegebenen Objekte
3.1.6.2. Typ 2: Verwaltungsobjekte oder Sammlungen
3.1.6.3. Typ 3: Umgebungsobjekte
3.1.6.4. Typ 4: übersehene Klassen doch noch finden
3.1.6.5. Gemeinsame Oberklassen finden
3.2 Klassen in Java
3.2.1. Eine Klasse zum Verwalten von Mitarbeitern
3.2.2. Erzeugung von Objekten: Konstruktoren
3.2.3. Wertzuweisung und Übergabe als Parameter
3.2.4. Statische Klassenelemente
3.2.4.1. Grundlagen
3.2.4.2. Initialisierung der static-Variablen in einer Klasse
3.2.5. Eingeschachtelte Klassen, innere Klassen
3.2.6. Umwicklertypen
3.2.7. Datensätze mit record
3.3 Unterklassen und Polymorphie in Java
3.3.1. Definition von Unterklassen in Java
3.3.2. Methoden der Klasse Object überschreiben
3.3.3. Lebenszyklus von Objekten
3.3.4. Wie funktioniert die Polymorphie?
3.3.5. Wertzuweisung und Cast-Anweisung
3.3.6. Klassen und Ausnahmen
3.3.7. Abstrakte Klassen: Design für Vererbung
3.3.8. Ableitung von Klassen begrenzen
3.4 Generische Elemente in Java
3.5 Schnittstellen in Java
3.5.1. Vergleich von Objekten
3.5.2. Statische Methoden in Schnittstellen
3.5.3. Default-Methoden in Schnittstellen
3.5.4. Schnittstellen ohne abstrakte Methoden
3.5.5. Funktionale Schnittstellen
3.6 Funktionen in Java
3.6.1. Referenzen auf Funktionen in Java
3.6.2. Lambda-Ausdrücke
3.6.2.1. Syntax für Lambda-Ausdrücke
3.6.2.2. Bindung in Lambda-Ausdrücken
3.6.3. Beispiel: Anwendung der Comparator-Schnittstelle
3.6.4. Beispiel: Funktionen als Parameter
3.6.5. Zusammenfassung
3.7 Dynamische Erzeugung von Objekten
3.8 Aufzählung von Konstanten mit enum
3.9 Allgemeine Eigenschaften
3.9.1. Der final-Modifizierer
3.9.2. Packages mit package, import
3.9.3. Sichtbarkeit von Namen in Java
3.9.4. Wiederherstellung des Zustands eines Objekts: Serialisierung
3.9.5. Zusicherungen
3.10 Aufgaben
4 Grundlegende Klassen
4.1 Nützliche Klassen und Packages
4.1.1. Übersicht der Klassen des Package java.lang
4.1.2. Zeichenketten in Java: String
4.1.3. Die Klasse System
4.1.4. Die Klasse Math
4.1.5. Zeit und Datum in Java
4.1.6. Reflexion von Java-Programmen
4.1.7. Annotationen
4.1.8. Reguläre Ausdrücke
4.1.9. Protokollierung von Programmläufen: Logging
4.2 Verwalten von Objekten mit Sammlungen
4.2.1. Prinzip für die Aufbewahrung von Objekten
4.2.1.1. Schnittstellen für die Sammlungen in Java
4.2.1.2. Implementierungen für die Schnittstellen
4.2.2. Sequenzieller Zugriff: List, Set und SortedSet
4.2.2.1. Collection und SequencedCollection als Basisschnittstellen
4.2.2.2. Listen
4.2.2.3. Die ListIterator-Schnittstelle
4.2.2.4. Mengen
4.2.3. Assoziativer Zugriff: Map
4.2.3.1. Map als Basisschnittstelle
4.2.3.2. Die SortedMap-Schnittstelle
4.2.4. Nützliche Klassen und Methoden für Sammlungen
4.2.4.1. Die Klasse Collections
4.2.4.2. Implementierungen von Sammlungen für spezielle Zwecke
4.2.4.3. Sammlungen und Threads
4.2.4.4. Nützliche Klassen und Methoden
4.3 Streams in Java
4.3.1. Einstieg in die funktionale Programmierung
4.3.2. Ausgewählte Methoden für Streams
4.3.3. Fallbeispiele – Anwendungsfälle
4.3.3.1. Zeichenketten aneinanderhängen
4.3.3.2. Sortieren
4.3.3.3. Gruppieren von Objekten nach diversen Kriterien
4.3.3.4. Verarbeiten von Daten in Textdateien
4.3.3.5. Berechnungen mit Zwischenergebnissen durchführen
4.4 Aufgaben
5 Ein-/Ausgabe in Java
5.1 Prinzip der Ein-/Ausgabe in Java
5.1.1. Eingabe in Java
5.1.1.1. InputStream als Basisklasse für Eingaben
5.1.1.2. Reader als Brücke zwischen Bytes und Zeichen
5.1.2. Ausgabe in Java
5.1.2.1. OutputStream als Basisklasse für Ausgaben
5.1.2.2. Die Writer-Klassen in Java
5.2 Fallstudien zu Ein-/Ausgabe
5.2.1. Bearbeiten von Textdateien
5.2.2. Durchlaufen aller Dateien in einem Verzeichnis
5.2.3. Zugriff auf die Einträge in einem ZIP-Archiv
5.3 Aufgaben
6 Nebenläufigkeit in Java
6.1 Einstieg in Threads in Java
6.1.1. Streams parallel bearbeiten
6.1.2. Paralleler Zugriff auf Daten
6.1.3. Explizite Programmierung von Threads
6.1.4. Das Executor-Framework
6.2 Grundlagen zu Threads
6.2.1. Nutzen von Threads
6.2.2. Wettrennen
6.2.3. Zustände von Threads
6.3 Monitore in Java
6.3.1. Grundlagen des Monitorkonzepts in Java
6.3.2. Anwendung der Monitore in Java
6.3.3. Die passiert-vor-Relation
6.4 Anwendungsfälle
6.4.1. Lang laufende Aktivitäten in Benutzungsoberflächen
6.4.2. Erzeuger-Verbraucher-Kopplung
6.4.3. Leser-Schreiber-Problem
6.4.4. Semaphoren
6.4.5. Verklemmungen und die fünf Philosophen
6.4.6. Animationen
6.5 Aufgaben
7 Grafikanwendungen in Java
7.1 Struktur von GUI-Anwendungen
7.1.1. Ein erstes Programm für Swing
7.1.2. Prinzip der ereignisgesteuerten Programmierung
7.1.3. Ereignissteuerung
7.1.3.1. Das „Delegation Event Model“
7.1.3.2. Listener-Schnittstellen und Adapter
7.1.4. Hierarchie der Swing-Klassen für Steuerelemente
7.1.5. Elementare Steuerelemente
7.1.6. Das Model-View-Controller-Paradigma und Swing
7.2 Anordnung der Komponenten
7.2.1. BorderLayout
7.2.2. FlowLayout
7.2.3. GridLayout
7.2.4. CardLayout
7.2.5. GridBagLayout
7.2.6. BoxLayout (nur Swing)
7.2.7. Schachtelung der Layouts
7.3 Steuerelemente in Benutzeroberflächen
7.3.1. Schaltflächen: JButton
7.3.2. Checkboxen und Radiobutton
7.3.3. Statischer Text zur Anzeige von Informationen
7.3.4. Listen zur Auswahl
7.3.5. Elementare Auswahl mit der Combobox
7.3.6. Textfelder
7.3.7. Menüs in Java
7.4 Steuerelemente unter der MVC-Architektur
7.4.1. Übersicht: Aufgabenverteilung Swing-Anwender
7.4.2. Vertiefung für JList und JComboBox
7.4.2.1. Eine MVC-Anwendung für JList
7.4.2.2. JComboBox
7.4.3. Tabellen und Baumsteuerelemente
7.4.3.1. Das Steuerelement für Tabellen JTable
7.4.3.2. JTree
7.5 Kurs: GUI-Anwendungen
7.5.1. Erstellung einer grafischen Komponente
7.5.2. Reaktion auf Mausklicks
7.5.3. Reaktion auf Mausbewegungen: ein Malprogramm
7.5.4. Turtle-Grafik
7.5.5. Dialoge in Java
7.5.6. Dialog zur Auswahl von Dateinamen
7.5.7. Die Türme von Hanoi
7.6 Aufgaben
8 Programmierung in Netzwerken
8.1 Elementare Grundlagen von Netzwerken
8.2 Sockets in Java
8.2.1. Verbindungsorientierte Kommunikation mit TCP
8.2.2. Verbindungslose Kommunikation
8.3 Der Java-Client für http
8.4 Verteilte Anwendungen
8.4.1. Der Additionsdienst mit TCP
8.4.1.1. Problemanalyse: Datenaustausch
8.4.1.2. Problemanalyse: Aufbau der Anwendung
8.4.2. Beispiel: der Additionsdienst mit UDP
8.4.2.1. Problemanalyse: Datenaustausch
8.4.2.2. Problemanalyse: Aufbau der Anwendung
8.4.3. RMI
8.4.3.1. Problemanalyse: Datenaustausch
8.4.3.2. Problemanalyse: Aufbau der Anwendung
8.4.4. Prinzip von RMI
8.5 Aufgaben
9 Anbindung von Datenbanken mit JDBC
9.1 Maven-Projekt in Eclipse anlegen
9.2 Grundlagen von JDBC
9.3 Grundsätzlicher Ablauf beim Zugriff
9.4 Einstieg in relationale Datenbanken und SQL
9.4.1. Grundlagen SQL
9.4.2. Klassen und Schnittstellen im Package java.sql
9.5 Erweitertes Beispiel
9.5.1. Programmierung der Verbindung zu den Datenbanken
9.5.2. Vorbereitung: Datenbanken einrichten
9.5.2.1. Die Speisedatenbank
9.5.2.2. Die Speisedatenbank: objektrelationale Zuordnung
9.5.2.3. Die Speisedatenbank: Vermeidung doppelter Einträge
9.6 Datentypen in Java und SQL
9.7 Metadaten
9.7.1. Metadaten und die Auskunft über die Datenbank
9.7.2. Anwendung
9.8 Aufgaben
10 Bearbeiten von XML in Java
10.1 Schreiben und Lesen von XML mittels JAXB
10.1.1. Zusammenhänge: Klasse und Objekt bzw. Schema und XML
10.1.2. Kochrezept: Anleitung zur Benützung von JAXB
10.1.2.1. Schritt: Kennzeichnung eines Objekts zum Speichern
10.1.2.2. Schritt: Programm zum Speichern und Laden
10.2 SAX-Parser
10.3 Aufgaben
11 Literatur
Liebe Leserin, lieber Leser,
in der objektorientierten Sprache Java programmieren wir seit 1996 für diverse Systeme. Jetzt können wir mit der gereiften Programmiersprache Java 21 für manche Probleme einfachere und prägnantere Lösungen formulieren.
Wir fokussieren auf zentrale Techniken der Programmierung und nutzen dabei den Komfort und die Leistungsfähigkeit der Entwicklungsumgebung Eclipse gleich beim Start ins Java-Land in Kapitel 1. In Kapitel 2 besprechen wir die Grundlagen der Steuerung von Abläufen in Programmen, der sog. prozeduralen Programmierung. Erst wenn wir Verzweigungen, Schleifen und Aufrufe von Funktionen beherrschen, können wir uns in Kapitel 3 den Herausforderungen der Objektorientierung stellen. Dort lernen wir auch die Lambda-Ausdrücke als Möglichkeiten zur Implementierung funktionaler Schnittstellen kennen.
Ein einzelnes Objekt kommt selten alleine. Zur Verwaltung von Objekten dienen die sog. Collections. Praktiker wissen, dass man mit den sequenziellen und assoziativen Sammlungen die meisten alltäglichen Probleme der Verwaltung von Daten lösen kann, auf die wir uns im Buch konzentrieren. Java unterstützt uns bei der Programmierarbeit auch mit anderen Klassen, von denen wir in Kapitel 4 eine kleine, praxisorientierte Auswahl vorstellen. Mit Java können wir mit Streams die Iteration über diese Datenbestände dem Laufzeitsystem überlassen, wir spezifizieren nur, was getan werden soll.
Kapitel 5 führt in die Grundlagen der Verarbeitung von Daten auf externen Speichermedien ein. Zum Verständnis der Programmierung von parallelen Streams und grafischen Benutzungsoberflächen machen wir uns in Kapitel 6 mit den Chancen und Risiken der nebenläufigen Programmierung vertraut.
In Kapitel 7 führen wir die Grundkonzepte der Programmierung grafischer Benutzungsoberflächen ein. Dabei vertiefen wir schulmäßig die Techniken der Objektorientierung. Wir lernen die Steuerelemente sowie die Möglichkeiten des Aufbaus kennen. Die Anbindung von Programmcode an Benutzungsoberflächen gelingt uns mit den Lambda-Ausdrücken kurz und prägnant.
Java ist als Programmiersprache für Anwendungen im Internet konzipiert. Deswegen können wir in Kapitel 8 mit relativ geringem Aufwand Programme für verteilte Anwendungen erstellen. Fallstudien stellen verschiedene Ansätze gegenüber und setzen dabei auch virtuelle Threads von Java 21 ein.
In Kapitel 9 lernen wir den Zugriff auf Datenbanken. Damit können wir unsere Objekte in Datenbanken ablegen und daraus wiedergewinnen. Wir stellen Zugriffe auf SQLite-Datenbanken sowie MariaDB vor. Mit Maven hält sich der Installationsaufwand in Grenzen. Mit den Basistechniken zur Speicherung bzw. des Lesens von Daten im XML-Format in Kapitel 10 runden wir unseren Streifzug durch das Java-Land ab.
Wie bei Fremdsprachen gilt auch bei Programmiersprachen: Man muss die Sprache sprechen, d. h. selbst programmieren. Deswegen enthält jedes Kapitel kleinere oder größere Aufgaben. Das Spektrum der Aufgaben reicht von elementaren Übungen bis zu kleinen Projektarbeiten. Lösungsvorschläge zu allen Aufgaben finden Sie über das Internetportal des Carl Hanser Verlags. Gehen Sie dazu auf
plus.hanser-fachbuch.de
und geben Sie dort diesen Code ein:
plus-25rct-B4vaP
Von dort können Sie auch alle Programme im Buch in vollständiger Form herunterladen.
Mein besonderer Dank gilt Frau Brigitte Bauer-Schiewek für die aufmerksame Begleitung bei der Konzeption und Durchführung sowie Frau Irene Weilhart und Frau Kristin Rothe für ihre Präzision und Sorgfalt bei der Herstellung.
Viel Erfolg mit diesem Buch!
Neutraubling, im Mai 2024
Fritz Jobst