Java Alles-in-einem-Band für Dummies - Arnold Willemer - E-Book

Java Alles-in-einem-Band für Dummies E-Book

Arnold Willemer

0,0
26,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Dieses Buch ist für alle, die tief in die Java-Programmierung einsteigen möchten. Dennoch werden keine Programmierkenntnisse vorausgesetzt. Lernen Sie zunächst, wie Sie das Java Development Kit installieren und welche Java-Elemente es gibt. Machen Sie sich dann mit Methoden und objektorientierter Programmierung vertraut. Werfen Sie Exceptions, sammeln Sie Datenelemente in flexiblen Arrays und programmieren Sie Fenster, Mäuse und Grafik. Merken Sie was? Unversehens sind Sie zum Profi geworden. Datenspeicherung, Datenbankzugriff und der Umgang mit XML-Dateien sind genauso wie die Parallelverarbeitung mit Threads und die Netzwerkprogrammierung keine Hürde mehr. Programmieren lernt man in erster Linie dadurch, dass man es tut: Deshalb sind Aufgaben vorhanden. Die Lösungen dazu und alle Codebeispiele des Buchs stehen zum Download zur Verfügung.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 776

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Java für Dummies. Alles-in-einem-Band

Schummelseite

WICHTIGE TASTENKOMBINATIONEN VON ECLIPSE

+ markiert den kompletten Text. + kopiert den markierten Text in den Hintergrundspeicher. + fügt an die Stelle, an der der Cursor steht, den Text ein, der im Hintergrundspeicher steht. + löscht den markierten Text und schiebt ihn in den Hintergrundspeicher. + + formatiert den markierten Bereich nach den Vorgaben des Java Style Guides. + erneuert die Einrückung in dem markierten Bereich. + + : Der markierte Bezeichner wird geändert, und zwar nicht nur an Ort und Stelle, sondern überall, wo er noch verwendet wird. + + verwaltet die Importliste. Fehlende Importe werden hinzugefügt und nicht mehr verwendete Importe entfernt. + Mausklick auf eine Methode oder Variable führt zu der Stelle ihrer Definition. + kehrt an die zuletzt bearbeitete Stelle zurück.

STEUERUNG DES DEBUGGERS UNTER ECLIPSE

startet den Debugger. lässt den Debugger bis zum nächsten Breakpoint laufen. stoppt das Programm. geht einen Schritt weiter und springt gegebenenfalls in die Methode. geht einen Schritt weiter, aber überspringt die Methode.

MODIFIZIERER FüR VARIABLEN, METHODEN UND KLASSEN

private: Reine Privatsache. Nur die eigene Klasse darf dies sehen.protected: Familienangelegenheit. Nur die Klasse selbst und alle abgeleiteten Kinder dürfen dies sehen.public: Öffentlichkeitswirksam: Das hier ist so toll. Das darf jeder sehen!final: Diese Variable darf auch mit Gewalt nach der Initialisierung nicht mehr geändert werden.static: Diese Variable oder Methode existiert exakt einmal. Es kann also nicht mehrere Exemplare geben, existiert aber auch ohne Geburtshilfe durch new.

PRIMITIVE VARIABLENTYPEN

int: Eine ganze Zahl.long: Eine ganze Zahl mit besonders hoher Kapazität.short: Eine zu kurz gekommene ganze Zahl.byte: Eine richtig kleine ganze Zahl, nur acht Bits lang.float: Eine kleine Fließkommazahl, inzwischen nicht mehr üblich.double: Dies verwendet man heute als Fließkommazahl.char: Ein Buchstabe, kann aber auch als Zahl betrachtet werden. Buchstabenliterale haben Hochkommata, wie etwa ‘A’.boolean: Wahrheitswert, enthält true oder false.String: ist nicht richtig primitv, aber fast – enthält Zeichenketten, deren Literale in Anführungszeichen stehen.void: gibt es eigentlich gar nicht, wird aber bei Methoden verwendet, um zu kennzeichnen, dass sie nichts hergeben.

NICHTPRIMITIVE VARIABLEN

Nichtprimitive Variablentypen sind Arrays oder Klassen.Die Variablen nennt man Referenzen.Vor ihrem Zugriff müssen sie durch new erzeugt werden.Tritt eine NullPointerException auf, hat man das new vergessen.

TYPEN DES JAVA COLLECTION FRAMEWORKS

ArrayList: Dynamisch vergrößerbares Array. Darauf kann über einen Index zugegriffen werden.LinkedList: Verkettete Liste, ideal für Warteschlangen und Stapel.Set: Die Rache der Mengenlehre: Keine doppelten, keine Ordnung.Map: Assoziativer Speicher, auf den über Schlüssel zugegriffen wird. Die Datenbank des kleinen Mannes im Speicher.

Java für Dummies. Alles-in-einem-Band

Bibliografische Information der Deutschen Nationalbibliothek

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

1. Auflage 2018

© 2018 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim

All rights reserved including the right of reproduction in whole or in part in any form. This translation published by arrangement with John Wiley and Sons, Inc.

Alle Rechte vorbehalten inklusive des Rechtes auf Reproduktion im Ganzen oder in Teilen und in jeglicher Form. Diese Übersetzung wird mit Genehmigung von John Wiley and Sons, Inc. publiziert.

Wiley, the Wiley logo, Für Dummies, the Dummies Man logo, and related trademarks and trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries. Used by permission.

Wiley, die Bezeichnung »Für Dummies«, das Dummies-Mann-Logo und darauf bezogene Gestaltungen sind Marken oder eingetragene Marken von John Wiley & Sons, Inc., USA, Deutschland und in anderen Ländern.

Das vorliegende Werk wurde sorgfältig erarbeitet. Dennoch übernehmen Autoren und Verlag für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie eventuelle Druckfehler keine Haftung.

Coverfoto: nerudol – fotolia.comKorrektur: Petra Heubach-Erdmann

Print ISBN: 978-3-527-71450-6ePub ISBN: 978-3-527-81307-0mobi ISBN: 978-3-527-81306-3

Inhaltsverzeichnis

Cover

Titelseite

Impressum

Einleitung

Über dieses Buch

Konventionen in diesem Buch

Törichte Annahmen über den Leser

Wie dieses Buch aufgebaut ist

Symbole, die in diesem Buch verwendet werden

Wie es weitergeht

Teil I: Programmieren lernen

Kapitel 1: Ein Loblied auf Java

Das Profil von Java

Programmiersprache, Interpreter und Compiler

Die virtuelle Maschine und das ultimative Wohnmobil

Vergleich mit anderen Programmiersprachen

Kapitel 2: Entwicklung mit IDEen und ohne

Ein kleines Programmbeispiel als Opfer

Java-Programmierung mit dem JDK

Eclipse

NetBeans

Aufgabe: Grüßaugust selbst erstellen

Kapitel 3: Aufstieg zum Programmierer

Java-Programm-Skelett

Programmerweiterungen

Variable Attribute

Kleines Rechenwerk

Zeichen

Ordnende Elemente

Aufgaben

Anmerkungen

Kapitel 4: Entscheiden und Wiederholen

Nur unter einer Bedingung

Logeleien

Die Fallunterscheidung – switch case

Endlich lernen wir Schleifen zu binden!

Überblick behalten mit Struktogrammen

Aufgaben

Kapitel 5: Funktionierende Methoden

Vorstellung der Methode main

Methoden gliedern und sparen Arbeit

Salzkartoffeln kochen für Anfänger

Methoden mit Datenfluss

Überladen von Methoden

Rekursionen

Aufgaben

Kapitel 6: Die Strings: Viele, viele Buchstaben

Variablen und Texte

Texteingabe

Textmanipulationen

Typwandler

StringBuffer und StringBuilder

Beispiel Pfadumbau

Aufgaben

Kapitel 7: Arrays

Wir bauen ein Array

Übung: Ein Array für die Monatstage

Übung: Ein Kartenspiel

Das String-Array der Methode main

Aufbruch in neue Dimensionen

Aufgaben

Kapitel 8: Bermuda: Die Schiffe und das Meer

Spielregeln

Arrays für Spielfeld und Schiffe

Der Spielablauf

Das komplette Listing

Teil II: Objektorientiert und modular

Kapitel 9: Klasse Objekte

Ein Beispiel für objektorientierte Programmierung

Eine Klasse im Selbstbau

Selbstverweisende Klassen

Die Vorteile der Privatsphäre

Konstruktionsbedingt

Statische Attribute und Methoden

Wrapper-Klassen für Primitive

Aufzählungstyp mit enum definieren

Aufgaben

Kapitel 10: Klassen erweitern

Noch mal Klasse: Der Mensch als Objekt

Referenzen auf erweiterte Objekte

Konstruktoren in der Vererbung

Die Mensa der Universität Norgaardholz

Der Beruf wird geschützt

Anonyme Klassen und das Lambda

Aufgaben

Kapitel 11: Verteilung der Klassen auf Pakete

Packages

Ausführbare Dateien und Bibliotheken: JAR

Kapitel 12: Bermuda-Klassen

Das Projekt erstellen

Die Klassen

Teil III: Erweitern Sie den Horizont

Kapitel 13: Hoffentlich Exception-versichert

Ausnahmsweise Fehler

Eingabe einer Zahl per Dialogbox

Der catch-Parameter

Ein gelungener Wurf

Der Stammbaum der Exceptions

Die Katzen-Exception

Nochmal clone

Aufgaben

Kapitel 14: Fertige Bausteine zur Selbstbedienung

Wie der Zufall es will

Das Datum, der Kalender und die Neuerungen

Rechnerisches aus der Math-Klasse

Hilfsmethoden für Arrays

Kapitel 15: Datenelemente sammeln und anordnen

Das flexible Array: ArrayList

Ein altes flexibles Array: Der Vector

In Ketten: Die LinkedList

Sammlung der Einzigartigen: Set

Zugriff per Schlüssel: Der assoziative Speicher

Die Interfaces

Die Methoden des Java Collection Frameworks

Wie sortiert man Autos?

Lambda-Ausdrücke und Streams

Hinweis

Teil IV: Fenster- und Grafikprogrammierung

Kapitel 16: Mit Swing Fenster, Mäuse und Grafik programmieren

JFrame: Guck mal durchs Fenster

Zeichnen und Malen

Modernisierung: Graphics2D

Ereignisreichtum

Aufgaben

Kapitel 17: Erstellen eines Layouts

Alle bitte nebeneinander aufstellen: FlowLayout

Gleichmäßig vergittert: GridLayout

Die Mitte wird fett: BorderLayout

Kombination der Layouts mit Panels

Das Layout der Dialoge: GridBagLayout

Das BoxLayout und die Box

Null-Diät für Layout-Manager

Aufgaben

Kapitel 18: Kontrollelemente im Swing

Hochgradiger Simpel: Das Label

Das Auffangen der Ereignisse

Druckvolle Buttons

Ein BMI-Programm als Spielwiese

Eine doch nicht so einfache Liste

Der JTable und sein Modell

Bäume pflanzen mit JTree

Check den Button

Menüs und Dateidialoge

Der Fokus und der Multiliner

Aufgaben

Kapitel 19: Bermuda im Swing

Klassenbildung

Grafik aus Images

Ein Fensterrahmen für Bermuda

Das Bermuda-Panel

Erstellen einer Bermuda-JAR-Datei

Kapitel 20: Java FX, das neue Swing?

Mit Eclipse zur FX-Anwendung

Bühnendekoration

Mit NetBeans zur Java-FX-Anwendung

Ein Button als Kontrollelement

Mit dem Pane um Fassung ringen

Es kommt Leben in die Bude: EventHandler

Ein paar Kontrollelemente

Standarddialoge

Schickmachen mit CSS

Komponieren in FXML im SceneBuilder

Aufgaben

Kapitel 21: Bermuda im FX-Kleid

Das Hauptprogramm

Das Canvas für die Grafikdarstellung

Kapitel 22: Android

Alles ist ein wenig anders

Arbeitsumgebung schaffen

Gestaltung einer App

Java macht die Activity erst aktiv

Ereignisse der Kontrollelemente

Texte aus dem Java-Programm lesen

Bermuda auch auf Android

Und nun?

Teil V: Daten längerfristig speichern

Kapitel 23: Dateien halten die Daten frisch

Daten aus Textdateien lesen

Daten in einer Textdatei

Serialisierte Klassen

Spielstandsicherung für Bermuda

Properties als Konfigurationsdatei

Auf Strings über Strings zugreifen

Properties als Konfigurationsdatei

Random-Access-Dateizugriffe

Umgang mit dem Dateisystem

Verzeichnisse auslesen

Aufgaben

Kapitel 24: Datenbankzugriff aus Java

Datenbanken und ihre Tabellen

Eine Datenbank für die Bonbonbude

Wenn Datenbanken einmal groß werden

Transaktionen

Datenbankunterstützung durch Eclipse

Aufgaben

Java Persistence API: JPA

Kapitel 25: XML-Dateien

Die Strukturen von XML-Dateien

Einlesen einer XML-Datei

XML-Dateien schreiben

Eine beliebige XML-Datei auslesen

Kapitel 26: JSON

Der JSON-Sprachschatz

JSON in Java

Aufbau der JSON-Struktur

Klassen sorgen selbst für JSON

Frag mal Google Maps

Teil VI: Praktisches

Kapitel 27: Javabohnen als Datenmodell

Serialisierbarkeit

Attributänderungen und Meldung

Einspruch!

Kapitel 28: Parallelverarbeitung mit Threads

Erst einmal Schlaf nachholen

Leichtgewichtige Threads

Kollisionen in der Vasenfabrik

Warten auf Kartons

Wir warten nicht auf Godot: Time-out

Prozessoren rösten

Multitasking in der GUI

Aufgabe

Teil VII: Netzwerke und Internet

Kapitel 29: Netzwerkprogrammierung

Das Liebesgeflüster der Sockets

Mails versenden

Java als Web-Client

Java ruft Java: RMI

Time-out und Parallelität

Kapitel 30: Heidis Berge und die Enterprise Edition

Das Konzept des Application Servers

Vorbereitung und Installation

Glassfish spielt Indianer und Servlet

Java Server Pages

Java Server Faces

Der Gast und die Datenbank

Datenbankanwendung per JPA

Jersey und der ganze REST

SOAP: Ferngespräch in XML

Teil VIII: Werkzeuge

Kapitel 31: Dem Fehler auf der Spur

Alles so schön rot hier

Gelbe Warnungen

Der Eclipse-Debugger

Kapitel 32: Automatisierte Tests: JUnit

Konfiguration von Eclipse

Erstellen eines TestCase

Annotationen

JUnit-Testaufbau bei NetBeans

Kapitel 33: Die Versionskontrolle Git

Ein lokales Repository für Eclipse

Branches

Ein zentrales Repository

Git unter Android Studio

Teil IX: Der Top-Ten-Teil

Kapitel 34: Zehn Dinge

Zehn Hilfen bei der Fehlersuche

Zehn ganz persönliche Dinge

Stichwortverzeichnis

End User License Agreement

Tabellenverzeichnis

Kapitel 3

Tabelle 3.1: Primitive Typen und ihre Dimensionen

Tabelle 3.2: Operatoren in Java

Tabelle 3.3: Backslash-Sequenzen für Steuerzeichen

Kapitel 4

Tabelle 4.1: Vergleichsoperatoren

Tabelle 4.2: Wahrheitswertetabelle für UND

Tabelle 4.3: Wahrheitswertetabelle für ODER

Tabelle 4.4: Wahrheitswertetabelle für exklusives ODER

Tabelle 4.5: Wahrheitswertetabelle für NOT

Tabelle 4.6: Wahrheitswertetabelle zulässigen Fahrens und der Negation

Tabelle 4.7: Wahrheitswertetabelle der Umkehrung mit UND

Tabelle 4.8: Wahrheitswertetabelle der Umkehrung mit ODER

Tabelle 4.9: Notentabelle

Kapitel 6

Tabelle 6.1: Reguläre Ausdrücke

Kapitel 9

Tabelle 9.1: Primitive Typen und ihre Klassen-Wrapper

Kapitel 14

Tabelle 14.1: Datumskonstanten

Kapitel 15

Tabelle 15.1: Die Methoden der Queue

Kapitel 18

Tabelle 18.1: Spannungsabfall an LEDs

Kapitel 23

Tabelle 23.1: Der erste Block einer dBase-Datei

Kapitel 24

Tabelle 24.1: Eine Liste für die Artikel

Tabelle 24.2: Datenbanken und ihre JDBC-Treiberklassen

Kapitel 30

Tabelle 30.1: Entsprechung der HTTP- und SQL-Befehle

Illustrationsverzeichnis

Kapitel 1

Abbildung 1.1: Vom Wohnmobil zum Wohnboot

Kapitel 2

Abbildung 2.1: Eclipse-Installer

Abbildung 2.2: Eclipse nach Anlegen des Projekts

Abbildung 2.3: Ein Fehler im Eclipse-Editor

Abbildung 2.4: NetBeans wird installiert.

Abbildung 2.5: Die IDE NetBeans

Kapitel 3

Abbildung 3.1: Start über das grüne Dreieck oder dessen Menü

Abbildung 3.2: Eingabe einer Zahl

Kapitel 4

Abbildung 4.1: Eine Weiche bringt eine Verzweigung des Ablaufs.

Abbildung 4.2: Eine Weiche führt zur Wiederholung.

Abbildung 4.3: Eine Weiche am Ende der Schleife

Abbildung 4.4: Struktogramm für

if

Abbildung 4.5: Struktogramm für

while

Abbildung 4.6: Struktogramm für

do

Abbildung 4.7: Struktogramm für die ggT-Berechnung

Abbildung 4.8: Struktogramm für ggT im Java-Code

Kapitel 5

Abbildung 5.1: Aus Parametern wird der Rückgabewert.

Abbildung 5.2: Türme von Hanoi

Abbildung 5.3: Lösung für die Türme von Hanoi

Kapitel 6

Abbildung 6.1: James Bond in seiner Rolle als String

Abbildung 6.2: Die Wirkung von

substring(26, 30)

Kapitel 7

Abbildung 7.1: Gleichartige Objekte dicht an dicht und nummeriert

Abbildung 7.2: Ein zweidimensionales Array ist ein Array von Array-Referenzen.

Kapitel 8

Abbildung 8.1: Das Spielfeld von Bermuda

Abbildung 8.2: Richtungen abfragen in Bermuda

Kapitel 9

Abbildung 9.1: Eclipse zeigt die Attribute und Methoden eines Objekts.

Abbildung 9.2: Eclipse-Hilfe mit Javadoc.

Abbildung 9.3: Das

next

-Attribut verkettet die Elemente der Liste.

Abbildung 9.4: Das

next

-Attribut wird auf das übernächste Element gelenkt.

Abbildung 9.5: Das

next

-Attribut wird umgebogen.

Abbildung 9.6: Das letzte

next

-Attribut baut den Ring.

Abbildung 9.7: Zwei Referenzen ziehen einen binären Baum auf.

Abbildung 9.8: Eclipse generiert Getter- und Setter-Methoden.

Abbildung 9.9: Eine Kiste hat drei Dimensionen.

Kapitel 11

Abbildung 11.1: Das Projekt mit seinen Packages

Abbildung 11.2: Automatische Importsuche

Abbildung 11.3: Hinzufügen von JARs zu den Libraries im Build Path

Kapitel 13

Abbildung 13.1: Eingabedialog

Abbildung 13.2: Anzeige der Methodeninformation

Kapitel 15

Abbildung 15.1: Die

ArrayList

in Bauklotzform

Abbildung 15.2: Die

LinkedList

in Bauklotzform

Abbildung 15.3: Iteratoren zeigen auf Container-Elemente.

Abbildung 15.4: Möglichkeiten einer Queue

Abbildung 15.5: Die Map in Bauklotzform

Kapitel 16

Abbildung 16.1: Ein Swing-Programm

Abbildung 16.2:

Terminate

-Button in Eclipse

Abbildung 16.3: Eine kleine Grafik

Abbildung 16.4: Eckig und geradlinig

Abbildung 16.5: Abstrakte Kunst?

Abbildung 16.6: Fett ist gelb, Zucker ist blau, und Eiweiß ist magenta.

Abbildung 16.7: Ein kleiner Bildbetrachter

Abbildung 16.8: Bildausschnitt kopieren

Abbildung 16.9: Clippingbereich setzen

Abbildung 16.10: Eine

Area

für ein Wappen

Abbildung 16.11: Farbübergang

Abbildung 16.12: Sommersprossen selbst gemacht

Abbildung 16.13: Mit der Maus unterwegs

Kapitel 17

Abbildung 17.1: FlowLayout

Abbildung 17.2:

GridLayout

Abbildung 17.3:

BorderLayout

Abbildung 17.4: Ein Beispieldialog

Abbildung 17.5: Dialog-Layout durch Kombination mehrerer Layouts

Abbildung 17.6:

JSplit

erzeugt einen verschiebbaren Balken

Abbildung 17.7:

JScrollPane

erzeugt einen Rollbalken als Rahmen.

Abbildung 17.8:

JTabbedPane

Abbildung 17.9:

GridBagLayout

für eine einfache Eingabemaske

Abbildung 17.10:

BoxLayout

Abbildung 17.11:

Box

Kapitel 18

Abbildung 18.1: Zweimal

JLabel

. Ein Bild und ein Text.

Abbildung 18.2: Einbau eines

ActionListeners

Abbildung 18.3: Wenn man Druck auf einen Button ausübt

Abbildung 18.4: Body-Mass-Index-Rechner

Abbildung 18.5: Body-Mass-Index-Rechner mit Radiobutton

Abbildung 18.6: Body-Mass-Index-Rechner mit Combobox

Abbildung 18.7: Eine Auswahlliste

Abbildung 18.8: Eine einfache Hitparade mit einem

JTable

Abbildung 18.9:

JTable

berücksichtigt Typen und ist editierbar.

Abbildung 18.10:

JTree

stellt das Benutzerverzeichnis dar.

Abbildung 18.11: Eine computergesteuerte Dinner-Party

Abbildung 18.12: Aufbau einer Menüleiste in Swing

Abbildung 18.13: Fokuswechsel

Kapitel 19

Abbildung 19.1: Die Bermuda-Images

Abbildung 19.2: Mit Swing sieht Bermuda schon besser aus.

Kapitel 20

Abbildung 20.1: Installation von

e(fx)clipse

Abbildung 20.2: NetBeans besitzt bereits Projekte für FX.

Abbildung 20.3: Der Button nach Start des NetBeans-Rahmenprogramms

Abbildung 20.4: Buttons in einer

HBox

Abbildung 20.5: Eingabemaske mit

GridPane

Abbildung 20.6:

BorderPane

mit Liste und Rändern

Abbildung 20.7:

GridPane

-Eingabemaske im

BorderPane

Abbildung 20.8: Ein TabPane mit drei Reitern

Abbildung 20.9: Fokuswechselanzeige

Abbildung 20.10:

CheckBox

und

ToggleButton

Abbildung 20.11:

RadioButtons

für das Fernsehprogramm

Abbildung 20.12: Eine

ComboBox

Abbildung 20.13: Eisauswahl mit zwei

ListViews

Abbildung 20.14: Die

TableView

zeigt den Highscore.

Abbildung 20.15: Nachrichtendienst

Abbildung 20.16: Eingabeaufforderung

Abbildung 20.17: Mehrere Buttons für Ja-Nein-Fragen

Abbildung 20.18: Dateiauswahldialog

Abbildung 20.19: Der SceneBuilder mit einem Dialogfenster

Kapitel 21

Abbildung 21.1: Bermuda mit Java FX

Kapitel 22

Abbildung 22.1: Nach dem Download

Abbildung 22.2: Android Studio nach der Installation

Abbildung 22.3: Neues Projekt im Android Studio

Abbildung 22.4: Zielgeräte für die App auswählen

Abbildung 22.5: Activity für die App auswählen

Abbildung 22.6: Android Studio mit dem ersten Projekt

Abbildung 22.7: Gestaltung der Activity

Abbildung 22.8: Die Kontrollelemente auf dem Display

Abbildung 22.9: Die Android-Emulation mit der BMI-App

Abbildung 22.10: Die Activity als XML-Code in Android Studio

Abbildung 22.11: Neue Sprache hinzufügen

Abbildung 22.12: Die leere

BermudaView

Abbildung 22.13: Bermuda mit Bitmaps unter Android

Kapitel 23

Abbildung 23.1: LibreOffice Calc erzeugt eine dBase-Datei.

Kapitel 24

Abbildung 24.1: Das Datenbank-Management-System

Abbildung 24.2: Eclipse in der Database-Development-Perspektive

Abbildung 24.3: Der Eclipse-Editor für

persistence.xml

Kapitel 30

Abbildung 30.1: Glassfish-Einrichtung in Eclipse

Abbildung 30.2: Glassfish-Administration per Browser

Abbildung 30.3: Das Eingabeformular

Abbildung 30.4: Eingabe der Gastdaten

Abbildung 30.5: Der REST-Service hat reagiert.

Abbildung 30.6: Einstellen des Web Service

Kapitel 31

Abbildung 31.1: Eclipse in der Debug-Perspektive

Abbildung 31.2: Eclipse und seine Debug-Symbole

Kapitel 32

Abbildung 32.1: Einbinden der JUnit Library

Abbildung 32.2: Test des JUnit-Test-Case

Kapitel 33

Abbildung 33.1: Der erste lokale Commit in Eclipse

Abbildung 33.2: Eclipse-Ansicht über die Branches über

Team

|

Switch

TO

|

Other

Guide

Cover

Inhaltsverzeichnis

Fangen Sie an zu lesen

Pages

C1

1

2

5

6

23

24

25

26

27

29

31

32

33

34

35

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

149

150

151

152

153

154

155

156

157

158

159

161

162

163

164

165

166

167

168

169

170

171

172

173

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

257

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

341

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

447

448

449

450

451

452

453

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

474

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

561

562

563

564

565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

583

584

585

586

587

588

589

590

591

592

593

594

595

596

597

598

599

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

615

616

617

618

619

620

621

622

623

624

625

626

627

628

629

630

631

632

633

634

635

636

637

638

639

640

641

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

675

676

677

678

679

680

681

683

684

685

686

687

688

689

690

691

692

693

694

695

696

697

698

699

700

701

703

704

705

706

707

708

709

710

711

712

713

714

715

716

717

719

720

721

722

723

724

725

726

727

728

729

730

731

732

733

734

735

736

737

738

739

740

741

742

743

744

745

746

747

748

749

750

751

752

753

754

755

756

757

758

759

760

761

762

763

764

765

766

767

768

769

770

771

772

773

774

775

776

777

778

779

780

781

782

783

784

785

786

787

788

789

790

791

792

793

794

795

796

797

798

799

800

801

802

803

805

807

808

809

810

811

812

813

814

815

816

817

818

819

820

821

822

823

824

825

826

827

829

830

831

833

834

835

836

837

E1

Einleitung

Über dieses Buch

In diesem Buch lernen Sie, warum Nashörner kein Bankkonto haben, dass Katzen besser kratzen, als sich zu übergeben, wie man Bauklötze arrangiert, dass Stringtangas gar nicht so erotisch sind, und dann noch die Programmiersprache Java. Sie werden Programme erstellen, die das Übergewicht des Autors quantifizieren, Schiffe im Bermuda-Dreieck verstecken, den Kiosk von Superhelden verwalten und die Almhütten von Heidi vermieten.

Wir fangen also bei null an. Sie werden Variablen, Schleifen und Methoden kennenlernen. Wir werden in die wunderbare Welt der objektorientierten Programmierung eintauchen und Sie können beim nächsten Stammtisch endlich mit Wörtern wie Polymorphie, Interface und Exception protzen. Aber wir werden dabei noch nicht stehen bleiben.

Die Welt der grafischen Oberflächen ist viel zu attraktiv, um sie zu ignorieren. Die Java-Welt befindet sich in einer Umbruchsituation. Die Java-Hersteller erklären, dass in Zukunft alle grafischen Entwicklungen nur noch mit Java-FX arbeiten werden. Das sehen vermutlich sehr viele Unternehmen anders, da sie seit Jahren bereits Swing verwenden. So ist also beides am Markt. Sicherheitshalber habe ich beide Technologien behandelt. Suchen Sie sich etwas aus! Und da es für Android noch einmal eine eigene grafische Umgebung gibt, werden wir auch da einmal hineinschauen.

Nun kommen wir schon in die Regionen für fortgeschrittene Programmierer. Wir sehen uns die Datencontainer des Java Collection Frameworks an, schreiben und lesen Dateien und Datenbanken, schauen, wie Programme parallel laufen können, und werden die Anwendungen zur Netzwerkkommunikation anregen.

Wenn wir so weit gekommen sind, können wir auch die Stufe zur Client-Server-Programmierung mit der Java Enterprise Edition erklimmen. Sie werden sehen, wie man Software as a Service erstellt, und Client-Server-Architekturen wie SOAP und REST kennenlernen.

Vielleicht sollte ich Sie warnen: Die Leute vom Verlag haben mir keine Vorschriften zu diesem Buch gemacht. Alles war erlaubt. Einfach alles. Es gab zwei Bedingungen: Ich darf nicht gegen geltendes Recht verstoßen und der Leser muss Java lernen. Es ist aber nicht so schlimm, wie Sie jetzt vielleicht fürchten. In weiten Teilen ist es wirklich ein seriöses Fachbuch.

Dieses Buch basiert auf meinem Java-Buch, das 2013 veröffentlicht wurde. Den Inhalt habe ich aktualisiert und noch all die Dinge hineingeschrieben, die ich wichtig fand. Es ist nun etwa doppelt so umfangreich und in der Reihe für Dummies erschienen.

In der ersten Auflage hatte Christine Siedle als Lektorin die Weichen gestellt. Bei dieser Auflage hat mich Marcel Ferner unterstützt. Beiden habe ich und vor allem das Buch viel zu verdanken. Frau Heubach-Erdmann begradigte meine Verbrechen an der deutschen Sprache und viele Leute mit Gefühl für Design bauten aus der Vorlage ein Buch. Und wenn nun noch die Abteilung Marketing richtig aktiv wird, werde ich vielleicht doch noch reich. Ansonsten versuche ich es weiter mit arbeiten.

Das Buch hat sehr davon profitiert, dass ich seit einiger Zeit bei der Hochschule Flensburg angestellt bin. Die Studenten der Veranstaltungen »Strukturierte Programmierung«, »Objektorientierte Programmierung« und »Client-Server-Programmierung mit der Java Enterprise Edition« hatten so einen erheblichen Einfluss auf die Gestaltung und die Verständlichkeit dieser Auflage. Mein Dank gilt auch den zahlreichen Kollegen, die mir viel Vertrauen entgegenbrachten. Die Atmosphäre dort ist toll. Wenn Sie also Informatik oder Medien-Informatik studieren wollen, kommen Sie in den Norden!

Auch meine Familie hat indirekt an diesem Buch mitgewirkt. Sie haben mich mit Nahrungsmitteln versorgt und mir den nötigen Freiraum verschafft. Selbst die Katze hatte ihren Anteil, wie Sie am Kapitel über Exceptions feststellen werden. Allerdings ist sie inzwischen verstorben. Aber ich bin unschuldig. Ehrlich!

Konventionen in diesem Buch

Der Setzer hatte noch ein paar Schriftarten übrig. Daraus haben wir etwas gemacht:

Neue Fachbegriffe

werden hervorgehoben.

Oft haben Sie es mit

Dateien

oder

Pfaden

zu tun.

Manchmal finden Sie

www.informationen.de/im/internet

.

Menü

- oder

Buttonbeschriftungen

in grafischen Oberflächen werden auf diese Weise hervorgehoben.

Für

Befehle

und

Schlüsselworte

verwende ich diese Darstellung.

Funktionen

und

Methoden

werden auf diese Weise hervorgehoben. Und dann gibt es noch

Bezeichner

und

Variablen

.

Törichte Annahmen über den Leser

Ich habe eine ganze Weile überlegt, wer Sie sind, der Sie dieses Buch lesen. Ich gehe mal davon aus, dass Sie vielleicht noch nicht oft oder noch nie programmiert haben. Aber pfiffig sollten Sie schon sein. Das sind nämlich alle Programmierer – fragen Sie doch mal einen!

Dann geriet ich in eine solche Schreibekstase, dass Themen dazukamen, die auch erfahrenen Java-Programmierern noch Spaß machen. Die können die ersten Kapitel mit einem wissenden Lächeln überblättern, werden aber bestimmt auch Spaß an dem Buch haben.

Sie werden nicht nur einen Computer benötigen, sondern ihn auch benutzen müssen. Programmieren ist mehr eine Frage der Routine als der Intelligenz. Das bestätigen alle, die mich kennen. Im Anfang ist es noch frustrierend, weil man ständig auf die selbst gemachten Fehler stößt. Darauf kann man unterschiedlich reagieren: Man wirft entnervt den Computer aus dem Fenster, schiebt die Schuld anderen in die Schuhe, beispielsweise Java oder dem doofen Autor, oder man beginnt, über sich selbst zu lachen.

Letzteres wünsche ich Ihnen. Mit der Zeit wird es nämlich besser. Und dann werden Sie feststellen, dass nichts so kreativ ist wie das Programmieren. Und Sie brauchen nicht mehr als Ihren Computer und Ihre Fantasie. Dann können Sie alles programmieren, was sich ein Mensch denken kann. Und das macht Spaß!

Wie dieses Buch aufgebaut ist

Wir haben uns auch in diesem Buch entschlossen, die Buchstaben von links nach rechts zu schreiben. Damit ein wenig Ordnung in die vielen Buchstaben kommt, gibt es eine grobe Gliederung:

Teil I: Programmieren lernen

Sie lernen die Werkzeuge kennen, wie man aus Schleifen, Abfragen und Methoden Programme baut. Sie werden Zahlen und Zeichenketten bändigen und miteinander verbinden. Damit kann man schon ein Spiel bauen und darum werden wir das auch tun.

Teil II: Objektorientiert und modular

Nun bauen Sie die Welt nach. Sie gestalten Objekte wie etwa Autos, Personen oder auch Mensaspeisen. Das Tolle an der Objektorientierung ist, dass man die Arbeit auf mehrere Leute verteilen kann.

Teil III: Erweitern Sie den Horizont

Wir lassen uns von Java in den Ausnahmesituationen unseres Programms mit Exceptions helfen, erfreuen uns an Werkzeugkästen voller Zufallszahlen, Kalendern und mathematischer Formeln. Gut, wenn man nicht alles selbst machen muss.

Teil IV: Fenster- und Grafikprogrammierung

Sie erstellen eigene Fenster. Spiele machen gleich viel mehr Spaß, wenn man sie grafisch untermalen kann. Das gute alte Swing und das neue FX werden gleichermaßen behandelt. Und da sich Android-Smartphones auch in Java programmieren lassen, spielen wir damit ebenfalls herum.

Teil V: Daten längerfristig speichern

Bisher war der Computer nur bis zum Ende des Programms schlau. Nun sollen die Programme lernen, ihre Weisheit aufzubewahren. Dazu greifen wir zu allen Mitteln: Dateien und Datenbanken. Und die wichtigsten Datenformate XML und JSON werden Sie auch noch brauchen.

Teil VI: Praktisches

Ich gebe zu, dass ich keine wirklich gute Überschrift für zwei Dinge fand, die darunter fallen. Als Beans bezeichnet man Datenobjekte und wir werden sehen, wie die gegenseitig Ereignisse melden. Threads sind parallel laufende Unterprogramme.

Teil VII: Netzwerke und Internet

Wir werden die Kommunikation zwischen Computern erproben, die Romeo und Julia spielen. Und dann wird Java Mails versenden, Webseiten lesen und mit Google Maps spielen.

Vor allem werden wir uns die Profitechniken von Java Enterprise Edition ansehen. Da fallen dann die Schlagwörter aus den Stellenanzeigen wie Application Server, Java Server Pages, JPA, REST und SOAP. Wir drehen also am ganz großen Rad der Client-Server-Architektur.

Teil VIII: Werkzeuge

Mit dem Debugger können Sie Programme Schritt auf Schritt verfolgen und so auch verborgene Fehler finden. Wir bauen Programme, die sich automatisch selbst testen, und verwenden eine Versionskontrolle, um in alten Versionen zu wühlen, aber auch, damit ein Programmierteam auf dem gleichen Stand ist.

Teil IX: Top-Ten-Teil

Hier finden Sie eine Hitparade der beliebtesten Programmierfehler und ganz persönliche Dinge.

Das ist ja doch ganz schön viel geworden. Erstaunlich, dass es so exakt zwischen die Buchdeckel passt.

Symbole, die in diesem Buch verwendet werden

Als ich dieses Buch schrieb, durfte ich mir ein paar Symbole aussuchen, die Sie nun immer wieder sehen werden. Sie müssen sie nicht auswendig lernen. Sie werden vermutlich schon am Inhalt merken, was sie bedeuten. Aber damit alles seine Ordnung hat, stelle ich Ihnen die Symbole kurz vor.

Neben diesem Symbol finden Sie das Konzentrat eines Abschnitts. Etwas, was Sie sich auf Ihren Spicker schreiben würden, wenn jemand Sie prüfen würde.

Ein Tipp lässt manche Arbeit etwas einfacher werden. Damit solche Hilfestellungen nicht verloren gehen, stehen sie neben diesem Symbol.

Wenn es da noch etwas zu erwähnen gibt, was zum Verständnis hilft, finden Sie dieses Symbol.

Bevor Sie mit einem Fehlgriff Daten zerstören, den PC schädigen oder die Welt pulverisieren, sollten Sie den Text hinter diesem Symbol lesen. Die Welt oder Ihr Computer werden Ihnen dankbar sein.

Manchmal gibt es ungeheuer spannende Hintergründe zu einem Thema, das den Anfänger aufgrund der Komplexität etwas verschrecken könnte. Bevor der Informatiker in mir durchgeht, habe ich versucht, dieses Symbol zu verwenden. Sie können dem Ausflug folgen oder den Inhalt einfach ignorieren.

Wie es weitergeht

Die Formalitäten sind erledigt. Sie können sich mit Ihrem Computer einschließen und die wunderbare Welt der Java-Programmierung entdecken. Dabei wird Ihr PC Dinge kennenlernen, die er nie zuvor gesehen hat.

Zu diesem Buch gibt es eine Supportseite im Internet: http://www.willemer.de/java4d. Die Lösungen zu den Aufgaben im Buch und die Quelltexte aus diesem Buch finden Sie auch unter: http://www.wiley-vch.de/ISBN9783527714506.

Falls Sie dieses Buch richtig gut finden, senden Sie eine Mail an den Verlag, schreiben Sie eine Rezension für Amazon und informieren Sie das Fernsehen. Falls nicht, schicken Sie eine Mail an [email protected]. Ich werde sie lesen, und sobald ich mich davon erholt habe, dass ein Leser mich nicht verstanden hat, werde ich Ihnen antworten.

Arnold WillemerNorgaardholz

Teil I

Programmieren lernen

Kapitel 1

Ein Loblied auf Java

IN DIESEM KAPITEL

Bequem und abgesichert, aber vor allem objektorientiert

Übersetzen oder übersetzen?

Vorteile der Portabilität

Von dem Autor eines Fachbuches für eine Programmiersprache erwartet man, dass er im ersten Kapitel ein Loblied auf diese Sprache singt. Wenn Sie dieses Buch kaufen wollen, haben Sie vermutlich gute Gründe, Java zu lernen. Und da werde ich Ihnen natürlich nicht abraten und so einen potenziellen Leser verlieren! Wie sollte ich dann Bestseller-Autor werden?

Das Profil von Java

Falls Sie die Programmiersprache, die Sie lernen wollen, nach dem Namen aussuchen, sind Sie hier richtig. Java! Kaum eine Programmiersprache hat solch einen hübschen Namen! Klingt Java nicht nach Südsee, Urlaub und weißen Stränden? Benannt wurde Java eigentlich nach Kaffee, der aus Java kommt. Auch das ist schön. Denn wer von uns mag denn keinen Kaffee?

Wer tatächlich weder Kaffee noch Südseeinseln mag, wird wohl Python programmieren müssen. Aber ob Schlangen wirklich schöner sind? Nebenbei bemerkt, ist die Sprache Python tatsächlich sehr nett. Ich könnte Ihnen da ein Buch empfehlen. Aber vielleicht sollte ich doch lieber erzählen, welche Besonderheiten Java so hat.

Objektorientiert

Java ist objektorientiert. Und weil objektorientiert beim Programmieren heutzutage ganz wichtig ist, drängt Java den Programmierer dazu, indem es massiv Hilfen zur Verfügung stellt. Nun ist die objektorientierte Programmierung, von ihren Fans auch kurz OOP genannt, wirklich hilfreich bei der Bewältigung großer Projekte. Darum sollten Sie Java diesen Zwang nicht übel nehmen.

Damit ich nicht allzu sehr ins Schwärmen gerate, werde ich hier auf Details zur OOP verzichten und dies an geeigneter Stelle nachholen.

Abgesichert und gut gepolstert

Ein typisches Merkmal von Java ist der Versuch, so viele Fehlerquellen auszuräumen wie irgend möglich und so den Programmierer vor seinem eigenen Fehlverhalten zu beschützen. Ein gutes Beispiel ist die Müllabfuhr, die Garbage Collection. Programmierer vergessen schon mal die Beseitigung ihrer Speicherleichen. Und wir wissen ja alle, was mit alterndem Müll geschieht: Er beginnt langsam intensiv zu stinken.

Aber trotz aller Vorsichtsmaßnahmen durch Java ist eine sorgfältige Programmierung nicht überflüssig geworden. Ja, es gibt das Gerücht, dass auch schon einmal ein Java-Programm abgestürzt sei.

Portabel

Wirklich brillieren kann Java allerdings auf dem Gebiet der Portabilität. Der Programmierer schreibt ein Programm, übersetzt es und es läuft auf Linux, Mac und Windows. Das ist schon sehr beeindruckend. Bei vielen anderen Programmiersprachen müssten Sie das Programm für jede Plattform neu schreiben. Ein Java-Programm sollte hingegen eigentlich auch auf jedem Telefon, der programmierbaren Fernbedienung, dem Toaster und auf allen Internetseiten laufen. Aber da ist sie wieder, die lästige Realität. Bei den Telefonen sind die Displays sehr klein, und bei Webanwendungen gibt es aus Sicherheitsgründen keinen Zugriff auf die lokalen Dateien. So müssen vielleicht nicht immer gleich Extra-Süppchen gekocht werden, aber manchmal muss die Beilage an das jeweilige Ziel angepasst werden. Weniger kulinarisch ausgedrückt: Sie können zwar auch auf exotischen Umgebungen Java programmieren, müssen aber ein paar Einschränkungen und Besonderheiten in Kauf nehmen.

Und dann gibt es noch marktpolitische Gründe, warum Java-Programme nicht überall da laufen dürfen, wo sie könnten. So hat Microsoft schon früh seine Unterstützung für Java zurückgezogen, als klar wurde, dass der Benutzer bei portablen Programmen frei wählen kann, ob er statt Windows vielleicht ein ganz anderes Betriebssystem verwenden möchte. Microsoft konnte zwar nicht verhindern, dass Java-Programme auch auf Windows laufen, sie müssen sich die Umgebung, in der sie laufen, aber selbst mitbringen. Apple unterbindet die Programmierung von iPhone-Apps in Java, angeblich um Sicherheitslücken zu vermeiden. Ein Schelm, der »Android« dabei denkt.

Alle Standards eingebaut

Wenn eine Anwendung überall laufen soll, ergibt sich zwangsläufig, dass Java alles an Bord haben muss, was das Programm je benötigen könnte. So ist insbesondere die grafische Oberfläche der Programme aus der Sicht des Java-Programmierers überall gleich. Andere Programmierer müssen für Windows entweder Win32, MFC oder .NET lernen. Für Linux sollten Sie GTK oder Qt beherrschen. Und natürlich hat der Mac auch eine ganz eigene Programmierschnittstelle. Dasselbe gilt auch für Datenbanken oder die Prozessverwaltung. Der Java-Programmierer programmiert alle Datenbanken gleich. Willkommen in der wunderbar langweiligen Welt der standardisierten Umgebung!

Performance

Ja, zugegeben: Java-Programme haben nicht den Ruf, mit quietschenden Reifen ihre Aufgaben zu erledigen. Das beginnt schon beim Start einer Java-Anwendung. Da startet nämlich zunächst die virtuelle Maschine durch, bevor das Programm das erste Mal husten kann. Nun weiß jeder Power-User, dass Java-Programme interpretiert werden (was das ist, steht im nächsten Abschnitt), und Interpreter haben seit den Zeiten von BASIC den Ruf elender Schnarchnasen.

Zum Glück sind die Zeiten der BASIC-Interpreter vorbei. Java übersetzt das Programm in einen vorkompilierten Code, der auf schnelle Ausführung optimiert ist, und so muss sich das Java-Laufzeitsystem nicht mit irgendwelche Textzeilen quälen. Außerdem ist es auch schon über zwanzig Jahre her, dass die meisten C-64 ihren Weg in den Elektronikschrott gefunden haben. Und seither sind unsere Computer so schnell geworden, dass Sie einen aktuellen Computer vom Discounter nur an seine Grenzen fahren können, indem Sie ihm mit der Konvertierung von Spielfilmen drohen oder einen Ego-Shooter spielen wollen, bei dem Sie das Blut in 3D spritzen sehen wollen. Auf einem Durchschnittsrechner werden Sie also keine Verzögerung bei der Ausführung der Java-Programme bemerken. Überraschenderweise benutze ich gerade für den Videoschnitt seit Jahren ein Java-Programm, das ich unter anderem wegen seiner Geschwindigkeit schätze.

Programmiersprache, Interpreter und Compiler

Java ist eine Programmiersprache. Programmiersprachen sind für Menschen gemacht, damit sie darin Anweisungen für Computer codieren können. Das Problem ist, dass Computer eigentlich solche Sprachen nicht verstehen. Sie schwärmen eher für Zahlenkombinationen, die sie dann für Befehle halten und ausführen. Diese Diskrepanz muss irgendwie überbrückt werden. Es gibt zwei Arten von Programmen, die genau dies tun:

Ein

Compiler

arbeitet wie ein Übersetzungsbüro. Man schickt den Quellcode hin und erhält den Maschinencode zurück. Mit dem Ergebnis füttert man den Computer.

Ein

Interpreter

entspricht eher einem Simultan-Dolmetscher. Jeder Programmbefehl wird während der Laufzeit des Programms abgearbeitet.

Und was macht nun Java? Beides! Ich habe ja schon erwähnt, dass der Java-Code interpretiert wird. Aber das ist nur die halbe Wahrheit. Zuvor übersetzt der Java-Compiler, der von seinen Freunden javac genannt wird, den Quellcode in einen Maschinencode für eine Maschine, die es gar nicht gibt. Und dieser Maschinencode wird dann auf jeder Zielmaschine interpretiert. Der Interpreter nennt sich geschwollen Java Runtime System und wird mit seinem Spitznamen java aufgerufen.

Die virtuelle Maschine und das ultimative Wohnmobil

Sowohl Compiler als auch Interpreter einzusetzen, erscheint zunächst völlig unsinnig. Das dahinter stehende Prinzip lässt sich aber an meinem Traum eines ultimativen Wohnmobils recht anschaulich erläutern. Es ist zusammengebaut aus einem Kleinlaster und einem alten Wohnwagen. Da sind richtig gute Ideen eingebaut. Die Betten sind bequem und mit einem Griff zur Sitzecke umgebaut. Die energieeffiziente Küche nutzt den kleinen Platz ideal. Die Dusche verbraucht kaum Wasser und hat doch einen vollen Strahl. Jetzt stellen Sie sich noch vor, das Wohnmobil habe einen speziellen Antrieb, der auf Solar-energie und Wasserstoff basiert. Wenn es nicht fährt, nutzt es die Sonne, um das bei Regen aufgefangene Wasser in Wasserstoff und Sauerstoff aufzuteilen.

Das Super-Wohnmobil hat lediglich einen Nachteil. Es fährt nur auf der Straße. Das ist für ein Wohnmobil nicht ungewöhnlich, ich fahre aber nun mal genauso gerne mit einem Boot in Urlaub. Es wäre also toll, wenn ich als Unterbau auch einen Bootsrumpf daruntersetzen könnte. Darum hat die Wohnzelle eine klare Verbindung, an denen die Anschlüsse und das Zahnrad für den Antrieb sitzen, und schon kann die Wohnzelle einfach durch einen Kran vom Boot auf den Laster und umgekehrt gesetzt werden. Wenn man nun noch jemanden findet, der einen Luftkissenunterbau herstellt, könnte man sogar in den Everglades Urlaub machen und Alligatoren füttern. Letzteres ist aber vermutlich verboten. Vor allem wenn man als Futter die Schwiegermutter verwendet.

Abbildung 1.1: Vom Wohnmobil zum Wohnboot

Und was hat das jetzt mit der virtuellen Maschine zu tun? Ganz einfach! Das übersetzte Java-Programm ist die Kabine. Es verändert sich nach der Erstellung nicht mehr. Es setzt auf einem Unterbau auf, der es von der harten Wirklichkeit der verschiedenen Computersysteme trennt. Ob das Vehikel zu Wasser oder zu Land unterwegs ist, muss die Kabine nicht wissen. Der Unterbau ist also die virtuelle Maschine und die Kabine die Java-Anwendung.

Die virtuelle Maschine ist das Java Runtime Environment (JRE). Bei einigen Systemen ist es bereits installiert oder eingebaut. Aber bei fast allen anderen Systemen kann man es nachinstallieren.

Wo wir gerade bei dreibuchstabigen Kürzeln sind: Neben dem JRE gibt es noch das JDK. Das JDK ist das Java Development Kit. Das ist der Werkzeugsatz, den der Programmierer benötigt, um Java-Programme zu entwickeln. Es enthält beispielsweise den Compiler, der aus dem Source-Code den Zwischencode erzeugt, der dann später von der JRE ausgeführt werden kann.

Das JDK (Java Development Kit) enthält den Compiler für den Code der virtuellen Maschine. Das JRE (Java Runtime Environment) interpretiert diesen Code für die Zielmaschine.

Vergleich mit anderen Programmiersprachen

Wer mit Computern zu tun hat, stellt fest, dass die Branche gelegentlich etwas an Sachlichkeit zu wünschen übrig lässt. Die Emotionswelle entspricht manchmal der von Fußballfans. Wer eine Programmiersprache kennt, wird sie bis aufs Messer verteidigen und Beweise über die Unfähigkeit aller anderen Programmiersprachen auf den Tisch legen. Dabei sind Erfahrungen mit der gegnerischen Sprache scheinbar eher hinderlich.

Der Hintergrund dieser Emotionen ist vermutlich die Angst, das eigene Wissen könnte obsolet werden, wenn sich die andere Programmiersprache oder das andere Betriebssystem durchsetzt.

Portabilität und Konsequenzen

Java hat seine Kompetenz da, wo Portabilität benötigt wird. Bei sorgfältiger Programmierung kann das Programm ohne Neuübersetzung auf verschiedenen Computern laufen.

Das hat zur direkten Folge, dass es klare Vorgehensweisen geben muss, wie man Datenbanken und grafische Oberflächen programmiert, ohne auf die Spezialitäten einzelner Produkte eingehen zu müssen. Es ergibt sich also eine hohe Standardisierung.

Akademische Reinlichkeit

Das Design der Sprache Java ist durch eine gewisse Ideologie geprägt. Man möchte den Programmierer dazu zwingen, saubere objektorientierte Programme zu schreiben. Das hat etwas für sich, wenn man sieht, dass Cobol-Programmierer in jeder Programmiersprache Cobol programmieren können. Und Cobol ist wahrhaft keine übersichtliche oder wartungsfreundliche Programmiersprache.

Client-Server-Systeme

Kapitel 2

Entwicklung mit IDEen und ohne

IN DIESEM KAPITEL

Werkzeugkiste für den Programmierer

Die Befehle und die Entwicklungsumgebung

Grüßen im August

Ich denke, dass nun der Tatendrang aus Ihnen hervorbricht, denn es sollen Programme entstehen. Dazu benötigen Sie als Programmierer Werkzeug und davon gibt es reichlich und erstaunlicherweise alles kostenlos.

Die meisten Programmierer bevorzugen eine IDE. IDE hat leider nicht zwangsläufig etwas mit Idee zu tun, sondern ist die Abkürzung für Integrated Development Environment, also integrierte Entwicklungsumgebung. Diese Programme enthalten einen Editor, den Compiler, einen Debugger, eine Projektverwaltung und einige sehr praktische Tools.

Aber wo wir gerade bei Idee sind: Es ist nicht falsch, wenn ein Java-Programmierer eine Idee davon hat, wie es unter der Motorhaube seiner IDE aussieht. Dazu besuchen wir das Java Development Kit.

Ein kleines Programmbeispiel als Opfer

Um mit den Entwicklungsumgebungen wenigstens kurz spielen zu können, brauchen wir erst einmal ein kleines Java-Programm. Seit dem Erscheinen der Programmiersprache C hat es sich eingebürgert, ein Minimalprogramm zu erstellen, das »Hallo Welt!« auf den Bildschirm schreibt. In Java sieht das so aus:

Viele Details dieses kleinen Programms werden erst im Laufe des Buches genauer erläutert. Aber damit nicht der Eindruck entsteht, die Zeilen seien vom Himmel gefallen, darf ich Sie vielleicht kurz mit ihnen bekannt manchen.

public

: Das Schlüsselwort

public

ist ein Modifizierer. Das bedeutet, dass er den folgenden Bereich etwas verändert. In diesem besonderen Fall bedeutet

public

, dass die folgende Klasse von außen frei zugänglich ist. Es gibt keine Geheimnisse, Paparazzi werden arbeitslos. Das Wort

public

taucht noch einmal in der nächsten Zeile auf. Dort veröffentlicht es eine Methode. Eine Methode ist etwas, das etwas tut.

class

: Das Schlüsselwort

class

ist keine Auszeichnung, sondern ist auch für weniger tolle Programme zwingend. Jedes Java-Programm besteht aus mindestens einer Klasse. Dem Schlüsselwort folgt der Name der Klasse, den der Programmierer aussucht. Hier ist es

ErsteKlasse

.

Geschweifte Klammern: Mit einem geschweiften Klammernpaar wird ein Block von Anweisungen zusammengefasst. Sie können ineinander verschachtelt werden, wie das hier zu sehen ist.

static

: Das Schlüsselwort

static

ist ein Modifizierer für eine Methode oder ein Attribut, die es nur einmal pro Klasse gibt. Es muss genau da hin und da es ohne Vorwissen schwer zu begründen ist, müssen Sie mir vorläufig einfach vertrauen, auch wenn es schwerfällt.

void main(String[] args): Mit main beginnt die Hauptfunktion des Programms. Funktionen heißen in Java im Allgemeinen Methoden. Zwischen den runden Klammern stehen Parameter, die von außen an das Programm herangetragen werden. Auch dies lassen wir erst einmal ruhen, bis wir auf Parameter näher eingehen. In diesem Programm wird eh noch nicht auf sie zugegriffen. Dennoch müssen die Parameter benannt werden.

Und void? Das heißt nichts. Wirklich! Gar nichts. Es sagt hier, dass die Hauptfunktion – ich meine natürlich Hauptmethode – gar nichts an das System zurückgibt. Verrückterweise steht das, was hinten rauskommt, bei der Methodendeklaration vorn. Sie werden sich daran gewöhnen müssen.

System.out.println

: Alles, was in den Klammern steht, wird über den Systemausgabekanal angezeigt, oder weniger hochtrabend ausgedrückt: Es wird auf dem Bildschirm ausgegeben. Text wird dazu in Anführungszeichen gesetzt.

Die geschweiften Klammern werden jeweils wieder geschlossen. Der Compiler wird etwas pinselig, wenn das nicht passiert.

Der Programmtext steht in einer Datei, die den Namen der Klasse tragen muss und auf die Extension java endet, hier also ErsteKlasse.java. Die Groß- und Kleinschreibung ist signifikant. Das birgt eine Überraschung, weil es Windows egal ist, ob seine Dateien in Groß- oder Kleinbuchstaben geschrieben werden. Dort würden ErsteKlasse.java und ersteklasse.java dieselbe Datei bezeichnen.

Der Quelltext darf übrigens nicht mit einer Textverarbeitung wie Word oder OpenOffice.Writer geschrieben werden. Ein Quelltext wird mit einem Editor geschrieben, der keinerlei zusätzliche Informationen wie Schriftarten oder Ausrichtungen hinterlegt. All das würde einen Compiler nur irritieren. Stattdessen werden nur die nackten Texte geschrieben. Man spricht auch von rohem Text (raw text).

Dafür sind viele dieser Editoren auf Programmierung spezialisiert und färben beispielsweise die Quelltexte schön bunt, damit der Programmierer schnell erkennt, was Schlüsselworte sind, oder ob alle geöffneten Klammern auch wieder geschlossen werden. Da können Textteile zusammengeklappt werden oder auch Referenzhilfen angezeigt werden. Sie werden Ihre Textverarbeitung deshalb langfristig bestimmt nicht vermissen!

Verwenden Sie zum Programmieren einen Editor statt einer Textverarbeitung! Der Compiler verzehrt Quelltexte am liebsten schön roh.

Java-Programmierung mit dem JDK

Die Mindestausstattung, die Sie für die Java-Programmierung brauchen, finden Sie im Java Development Kit (JDK). Allerdings enthält es keine grafischen Werkzeuge, sondern Programme, die in klassischer Weise über die Kommandozeile aufgerufen werden. Programmierer, die so arbeiten, haben den Ruf von Leuten, die sich lieber im Wald ein Zelt aus Zweigen bauen, als eine Ferienwohnung auf Mallorca zu mieten.

Zunächst müssen Sie das JDK aber erst mal haben. Linux-Benutzer installieren das JDK über das distributionseigene Installationstool. Windows- und Mac-Benutzer laden das JDK von der Website von Oracle:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Hier suchen Sie nach dem Link zum Download des JDK der Java Standard Edition (Java SE). Nun können Sie Ihre Betriebssystemversion auswählen. Bei Windows gibt es für 32-Bit- und 64-Bit-Versionen je eine EXE-Datei. Natürlich müssen Sie noch die Lizenzbedingungen akzeptieren. Dann können Sie die Datei herunterladen. Diese klicken Sie doppelt an und folgen den Installationsanweisungen. Auch für Mac finden Sie eine Standardinstallationsdatei, die Sie ebenso herunterladen und doppelklicken.

Windows

Das JDK kommt in Form einer ausführbaren Datei, die eine ganz normale Installation durchführt, wie Sie sie auch von anderen Programmen her kennen. Sie können alle Schritte einfach bestätigen. Wenn Sie die Installation fragt, wo alle Dateien hingeschafft werden sollen, sollten Sie aufmerken. Typischerweise installiert die Routine in ein Verzeichnis, das mit C:∖Program Files∖Java∖jdk beginnt. Das Verzeichnis enthält auch die Versionsnummer. Merken Sie sich diesen Pfad!

Wenn Sie den Java-Compiler und andere Tools von der Kommandozeile aufrufen wollen, dann sollten Sie nun noch die Umgebungsvariable PATH anpassen. Diese können Sie bei Windows erreichen, indem Sie die -Taste mit der -Taste zusammen drücken. Es erscheint ein Fenster, in dem Sie ErweiterteSystemeinstellungen anklicken. Es erscheint ein weiteres Fenster. Unter dem Reiter Erweitert finden Sie den Button Umgebungsvariablen. Es startet ein weiteres Dialogfenster, in dem Sie PATH als neue Variable anlegen können. Als Wert hängen Sie den Pfad des JDK an, dem Sie noch ein Verzeichnis bin anhängen, weil sich darin die ausführbaren Programme befinden.

PATH=%PATH%;C:\Programme\Java\jdk\bin

Sollten Sie noch Windows XP verwenden, öffnen Sie das Start-Menü und klicken mit der rechten Maustaste auf Arbeitsplatz. Im Kontextmenü wählen Sie Eigenschaften aus und kommen dann über Erweitert zu Umgebungsvariablen.

MacOS

Liebhaber des Macintoshs finden auf ihrem Gerät bereits ein komplettes JDK, sofern ihr Gerät mit einem Betriebssystem bis 10.6 ausgestattet ist. Allerdings ist die dort lauffähige Java-Version 6 schon historisch wertvoll.

Tatsächlich wird diese Version von Apple auch für neuere Versionen von MacOS X angeboten, allerdings nur als JRE. Nach der Installation dieser Version gibt es häufig erhebliche Probleme mit diesem Gerät.

Statt also bei Apple zu suchen, sollten Sie sich lieber der Website von Oracle zuwenden und dürfen dort das aktuelle JDK herunterladen. Die Datei ist eine typische Installationsdatei für den Mac und wird durch einen einfachen Doppelklick installiert wie jedes andere Programm auch. Dabei sind Administrationsrechte erforderlich, weil das JDK grundsätzlich für alle Benutzer des Rechners eingerichtet wird.

Linux

Wenn Sie das JDK unter Linux installieren wollen, tun Sie sich den Gefallen und halten Sie sich an die normalen Paket-Installationen Ihrer Linux-Distribution. Erstens ist es der leichteste Weg. Zweitens sind Sie sicher, dass Sie keine Programme zweifelhafter Herkunft installieren. Und drittens sorgt die Installationsroutine dafür, dass alle Umgebungsvariablen korrekt gesetzt sind und Sie einfach anfangen können.

Rufen Sie das zu Ihrer Distribution gehörige Installationstool auf. Das könnte Synaptec, Software-Center oder Muon heißen, je nachdem, welche Distribution und welchen Desktop Sie verwenden. Darin suchen Sie nach dem Stichwort »JDK« und finden das Paket default-jdk. Dieses Pseudopaket verweist auf die aktuellste Version des Standard-JDKs. Dieses installieren Sie. Alle weiter benötigten Pakete werden automatisch mitinstalliert. Alle Umgebungsvariablen werden automatisch gesetzt.

Compiler aufrufen

Damit haben Sie das Werkzeug an Bord, um Ihre Java-Programme kompilieren und dann auch ausführen zu können.

Der Java-Compiler heißt javac und kann direkt mit dem Namen der Quelltextdatei von der Konsole aus gestartet werden. Unter Windows heißt diese cmd.exe. Sie können sie direkt über das Menü Start|Ausführen aufrufen. Sie finden sie auch unter dem Namen Eingabeaufforderung im Zubehör. Auf dem Mac suchen Sie beispielsweise über  +  nach dem Programm Terminal. Unter Linux gibt es an jeder Ecke eine Terminal-Emulation, meist unter dem Namen Terminal oder Konsole in den Untermenüs Zubehör oder System.

Sie wechseln mit dem Befehl cd in das Verzeichnis, in dem Ihr Java-Quelltext ErsteKlasse.java steht und rufen dann den Compiler auf:

javac ErsteKlasse.java

Falls Sie Fehlermeldungen bekommen, die besagen, dass javac nicht gefunden wurde, prüfen Sie Ihre Installation. Sollte der Compiler den Quelltext beanstanden, schieben Sie bitte zuerst mir die Schuld in die Schuhe und prüfen Sie dann, ob Sie beim Abtippen einen Fehler gemacht haben. Sollten hingegen keine Fehler gemeldet werden, erzeugt der Compiler aus der Datei ErsteKlasse.java eine Datei namens ErsteKlasse.class.

Diese Datei kann nicht einfach gestartet werden, weil sie weder unter Windows noch Mac oder Linux selbstständig läuft, deswegen kommt jetzt das Java Runtime Environment ins Spiel.

Das Runtime Environment starten Sie von der Konsole aus mit java. Als Parameter erhält es den Dateinamen der vorkompilierten Java-Klasse, aber bitte ohne die Extension .class, denn sonst gibt es böse Fehlermeldungen.

java ErsteKlasse

Wenn alles gutgegangen ist, erscheint auf der Konsole die Zeile:

Hallo Welt!

Nun bestehen große Programme aus ganz vielen Klassen und so auch aus ganz vielen Dateien. Braucht das Programm weitere Klassen, so wird es im aktuellen Verzeichnis nach den passenden Dateien mit der Erweiterung class suchen. Das ist auch der Grund, warum der Dateiname dem Klassennamen entsprechen muss.

Aber was macht man jetzt unter Windows, wenn eine Klasse MyClass und die andere myclass heißt? Java unterscheidet zwar Groß- und Kleinschreibung, aber Windows tut dies bei Dateinamen nicht. Beide Klassen könnten also gar nicht nebeneinander in einem Verzeichnis stehen. An dieser Stelle helfen aber die Konventionen. Bei Klassennamen pflegt man den ersten Buchstaben großzuschreiben. Wortanfänge werden gern durch Großbuchstaben angezeigt, wie bei ErsteKlasse. Der Klassenname ersteklasse widerspräche also der Konvention.

Auch wenn Sie das bei den ersten Programmen noch nicht betrifft, stellt sich natürlich die Frage, ob das nicht sehr lästig ist, wenn man bei einem großen Projekt vielleicht mehrere Hundert Dateien installieren muss. So viele Klassen kommen da schon locker zusammen. Irgendwie sollte man das Ganze zusammenpacken können.

Ob Sie es glauben oder nicht: Das ist möglich! Sie hatten es nach dieser Einleitung wohl auch schon vermutet. Aber nun kommen wir zum komplizierteren Teil: Wie macht man das?

Das Packprogramm heißt jar. Übersetzt heißt es zwar Krug, was irgendwie passt, aber eigentlich ist der Name eine Abwandlung von tar, dem Standard-Packprogramm von Linux, dessen Syntax das Programm auch folgt. Sie müssen aber nicht alle Möglichkeiten kennenlernen. Es reicht zu wissen, wie Sie eine gepackte Anwendung zusammensetzen können.

Das Runtime Environment würde beim Start eines solchen Pakets natürlich schon gern wissen, in welcher der vielen Klassendateien eigentlich die Hauptfunktion main steckt. Dazu schreiben Sie ein Manifest. Das mag hochgestochen klingen, aber ausnahmsweise habe ich mir das nicht ausgedacht. Es heißt wirklich so.

Das Manifest könnte in der einfachsten Form den folgenden Aufbau haben:

Manifest-Version: 1.0Main-Class: ErsteKlasse

Im Abschluss muss noch eine Leerzeile hinzugefügt werden, sonst bekommt das Laufzeitsystem wieder seine Migräne.

Welchen Dateinamen Sie für die Manifest-Datei verwenden, ist egal. Das Manifest wird vom Befehl jar später immer unter dem Namen MANIFEST.MF im Archiv abgelegt. Im folgenden Aufruf gehen wir davon aus, dass Ihr Manifest unter dem Dateinamen manifest.txt erstellt wurde.

Der folgende Befehl erzeugt ein Programmpaket namens MeinProgramm.jar, entnimmt das Manifest der Datei manifest.txt und bindet die beiden Klassendateien ErsteKlasse.class und NochEine.class ein:

jar -cfm MeinProgramm.jar manifest.txt ErsteKlasse.class NochEine.class

Die entstandene Datei MeinProgramm.jar kann fast wie die Klassendateien über das Runtime Environment System aufgerufen werden. Allerdings muss die Option -jar noch angegeben werden:

java -jar MeinProgramm.jar

Wenn Sie die jar-Dateien als ausführbar auf Ihrem Computer anmelden, können Sie sie sogar direkt von der grafischen Oberfläche doppelklicken.