LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HARRY FELDMANN
HHHHH T M
HSSSH HHHHHHHHH HHHH HHHH HHHHHHHHH
HSSSH HMMMMMMMHHHCCHH HHCCH HGGGGGGGHH
HSSSH HHHHHHHMMHHHCCH HCCHH HHHHHHHGGH
HSSSH HHHMMMMMHMMHYHCCHYYYYYHCCH HHHGGGGGHGGH
HSSSHYHHMMMHHHMMMMHRHCCHRRRRRHCCHYHHGGGHHHGGGGH
YYYYYYYHSSSHRHMMHHH HHHMMH HCCHH HHCCHRHGGHHH HHHGGHYYYYY
YYYRRRRRHHSSHH HMMH HMMH HHCCH HCCHH HGGH HGGHRRRRYYY
YYRRR HHHSSHH HMMHHH HHHMMHH HCCHHHHHCCH HGGHHH HHHGGHH RRRYY
YRR HSSSHH HHMMMHHHMMMMMH HHCCCHCCCHH HHGGGHHHGGGGGH RRY
YRRRR HHHHH HHHMMMMMHHHHH HHHCCCHHH HHHGGGGGHHHHH RRRRY
YR RRRRRRRR HHHHHHH HHHHH HHHHHHRRRRRRRR RY
YRR RRRRRRRRRRRR RRRRRRRRRRRR RRY
YYR RRRRRRRRRRRRRRRRRRRRR RRRRRRRRRRRYY
YRR RRR RRYY
YYRRR RR RRRRRRR RRY
YYYRR RRRRR RRYR RY
YYRRR RRRYYR RY
YYYRRRR RRRRRRRRRRRRRRRR RRY
YYYYRRRR RR RRYY
YYYYRRRR R RRRRRRRRRRRRRRRRYY
YYYYRRRRRR RRRRRRYYYYYYYYYYYYYYYY
YYYYYYRRRRRRRRRRRRRRRRRRRRRYYYYYY
YYYYYYYYYYYYYYYYYYYYYYY
Java PROGRAMMIERUNG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
Ein einführendes Lehrbuch
Einführung in ALGOL_60 (ISBN 3-528-03315-0, 1972)
Einführung in ALGOL_68 (ISBN 3-528-03329-0, 1978)
Einführung in SIMULA (Rechz. Uni.Hamburg, 1979)
Einführung in Pascal (ISBN 3-528-03342-8, 1981)
Programmieren in Pascal (ISBN 3-528-05261-9, 1992)
Programmieren mit Ada (ISBN 3-528-05205-8, 1992)
Struktur. Progr. in C (ISBN 3-528-05204-X, 1992)
Struktur. Progr. in C++ (W. Mauke S Hamburg, 1994)
Java Programmierung (W. Mauke S Hamburg, 1999)
Alle Rechte dem Autor vorbehalten
Das vorliegende Lehrbuch entstand aus Vorlesungen über die Programmiersprache Java, die der Verfasser seit 1999 an der Universität Hamburg für Wirtschaftswissenschaftler gehalten hat.
Herausgegeben wurde Java von Sun (Stanford University Network)
Microsystems. Der Name "Java" soll durch Assoziation mit wohlschmeckendem Java-Kaffee angenehme Gefühle wecken. Bill Joy, einer
der Gründer von Sun, machte James Gosling zum Leiter des Java Design-Teams. 1994 wurde der erste Java WebBrowser, dann ein Java
WebRunner und 1996 die erste komplette Entwicklungsumgebung für
Java von Sun herausgebracht.
Java, eine höhere Programmiersprache, ist wie seine nächsten
Vorgänger C++, Smalltalk, Ada und seine Urahnen SIMULA und
ALGOL68 eine universelle Sprache, hat Blockstruktur, ist Typ/
Methoden-rekursiv, Typ-generisch, Methoden-überladbar, Fehler-tolerant, kann parallele Handlungsfäden (Thread) synchronisieren,
ist Paket-orientiert und Klassen-hierarisch. Java hat eine umfassende, hervorragend dokumentierte Programmbibliothek mit Fenster
-Graphik-Programmierung im Paket java.awt (Abstract Window Toolkit), mit Sprachelementen zur Beschreibung von Echtzeit-Abläufen
(Date) im Paket java.util, mit Applet(s) zur Einbettung in HTML
im Paket java.applet, mit Sicherheits-Management im Paket java.security, mit Datenbank-Zugriff im Paket java.sql u.a.m. Neu für
Programmiersprachen ist die Zielsetzung, dass auf jeder ans Internet angeschlossenen Maschine eine virtuelle Java-Maschine implementiert sein soll, die vorübersetzten Java-Byte-Code maschinenunabhängig ablaufen läßt. Für Web-Klienten steht die Plattform Java
Standard Edition (Java SE) zur Verfügung, für Web-Server die
Plattform Java Enterprise Edition (Java EE). Dieses Angebot trifft
auf die Nachfrage der Web-Nutzer und führt Java auf seinen Siegeszug um die Welt.
2010 fusionierte Sun Microsystems mit Oracle. Gosling verließ
Oracle/Sun. Oracle übernahm die Weiterentwicklung von Java
(Version 1.7), insbesondere für den mobilen Einsatz: "Write-Once,
Run-Anywhere". Neben dem Einsatz seines JDeveloper und dem traditionellen Einsatz von Eclipse wird Oracle die von SUN stammende
freie Entwicklungsumgebung NetBeans (1.1.2) weiterpflegen und neben seinem kommerziellen SQL-Datenbank-Server Oracle den von SUN
unterstützten freien SQL-Datenbank-Server MySQL (15.1) einsetzen.
C und C++ Programmierer könnten Java für ++C halten, da Java
stark an C angelehnt ist ("heavily inspired by C"). Damit wurde
im großen Kreis der C-Programmierer erfolgreich für Java geworben.
Gestrafft wurden die C und C++ Konzepte für Zeiger, Reihung, Parameterübergabe und Klassenerbschaft.
Übernommen wurden C-Relikte, wie z.B. Anweisungsstruktur an Stelle von Blockstruktur und fehlende Endzeichen (open end festival)
bei If-, While- und For-Anweisung, die durch zusätzliche Vorrangregeln und ggf. Klammersetzung ausgeglichen werden müssen.
Die in diesem Buch gewählte graphische Grammatik-Notation in Form
von Wirth-Syntaxdiagrammen ist für Anfänger erfahrungsgemäß leichter lesbar als die formelmäßige Backus/Naur-Schreibweise in der
'Java Language Specification'. Um Sprachbarrieren abzubauen, wurden alle grammatischen Formulierungen aus dem Englischen ins Deutsche übersetzt und englische Fachausdrücke nur benutzt, wenn auf
das englischsprachige Syntaxdiagramm Bezug genommen werden soll.
Nach der Devise "Das Beste an der Theorie sind immer die Beispiele" wird neben vielen Kurzbeispielen etwa alle drei Seiten ein
vollständiges Programmierbeispiel mit Wiedergabe aller Ein/Ausgabedaten gebracht. Außerdem ist eine Sammlung von Übungsaufgaben
mit Lösungshinweisen als Anhang beigefügt. Am Schluß eines jeden
Kapitels findet der Leser eine Liste von Testfragen, die ihm eine
Kontrolle über seinen Wissensstand ermöglichen. Rechts neben den
Fragen sind die Anworten zu finden, die man abdecken kann.
Ein Literaturverzeichnis der Quellen wird angegeben und es wird
auf das aktuelle Informationsangebot aus dem Internet hingewiesen.
Das Buch beginnt mit Hinweisen zum Download und zur Installation
von Java, mit dem Aufruf von Java-Kommandos bzw. mit dem Aufruf
der Entwicklungsumgebung NetBeans und mit dem ersten Programm
"HelloWorld".
Meinen Hörern und studentischen Mitarbeitern, insbesondere Frau
B. Lönneker und den Herren M. Berg, N. Boysen und A. Kühl bin ich
für kritische Durchsicht des Skripts und für Änderungsvorschläge
zu Dank verpflichtet. Für freundliche Hilfe danke ich Herrn
Kollegen D. Preßmar (Universität Hamburg), Herrn Dipl.-Kfm. M.
Myschik, Herrn Staatsrat Dr. R. Salchow, Herrn Oberregierungsrat
B. Warninck und meinem Sohn Lutz. Meiner geliebten Frau Rosemarie
danke ich dafür, dass sie mich so lange ertragen hat.
H. Feldmann
1.1 Download, Installation und Aufruf
1.1.1 Direkter Aufruf der Java-Kommandos
1.1.2 Aufruf der Entwicklungsumgebung NetBeans
1.2 Einführende Beispiele
1.2.1 Das erste Text-Programm
1.2.2 Das erste Graphik-Programm
1.3 Schreibweisen
1.3.1 Verwendung der Syntax-Diagramme, siehe Syntax
1.3.2 Signifikanz von Groß- und Kleinschreibung
1.3.3 Namenskonventionen
1.3.4 Kommentar
1.4 Testfragen
Kap.02: GRUNDTYPEN, ZEICHENKETTE (String), FORMAT
2.1 Abfragbare Typ-Eigenschaften, Typ-Konvertierung
2.2 boolean Logik
2.3 char Unicode-Zeichen
2.4 byte/short/int/long Ganzzahlen
2.5 float/double Gleitpunktzahlen
2.6 String als Referenztyp, Zeichenketten-Literale
2.7 Format-String
2.8 Testfragen
3.1 Hauptprogramm mit main
3.2 Lokale Variablen-Vereinbarungen
3.3 System-Programmierung
3.4 Graphik als Applikation
3.5 Testfragen
4.1 Elementare Ausdrücke
4.1.1 Namen
4.1.2 Primärausdruck
4.2 Operatoren, Separatoren, Prioritäten
4.2.1 Inkrement/Dekrement, präfix/postfix
4.2.2 Explizite Konvertierung (cast)
4.2.3 Ganzzahldivision und Rest
4.2.4 Bitweise arbeitende Operatoren
4.2.5 Bedingung
4.3 Java-Maschinen-Arithmetik
4.4 Testfragen
Kap.05: ANWEISUNGEN, BLOCKSTRUKTUR
5.1 Zuweisung
5.2 Verzweigungen
5.2.1 if-Verzweigung
5.2.2 switch-Verzweigung
5.3 Schleifen
5.3.1 for-Schleife
5.3.2 while-Schleife, do-Schleife
5.4 Strukturierte Sprünge
5.4.1 break, continue, ggf. labeled
5.4.2 exit, return, assert
5.5 Bereichsschachtelung
5.5.1 vereinbart / sichtbar
5.5.2 lokal / global / verdeckt
5.5.3 Einschränkung der Namensfreiheit
5.6 Testfragen
6.1 Reihungen in mehreren Dimensionen
6.2 Reihung als Referenztyp
6.3 Aggregat zur Initialisierung
6.4 Zuweisung von new-Reihungen
6.5 Testfragen
7.1 Methoden-Vereinbarung (ggf. generisch)
7.2 Methoden-Aufruf (ggf. generisch)
7.3 Rekursive Methoden
7.4 Parameterübergabe (by value)
7.4.1 Nur-Eingabe über PrimitiveType-Parameter
7.4.2 Ein/Ausgabe über ReferenceType-Parameter
7.5 Überladen (overloading) von Methoden
7.6 Ergebnis-Typ und Rücksprung (return)
7.7 Hauptprogramm mit main, Argumente
7.8 Testfragen
Kap.08: DATEIEN (File, Stream)
8.1 Text -Datei
8.2 Binär-Datei
8.3 Testfragen
Kap.09: KLASSENHIERARCHISCHES PROGRAMMIEREN
9.1 Klassen (class, ggf. generisch) und Objekte
9.1.1 Klassen als Referenztypen, Mitglieder
9.1.2 Konstruktoren (ggf. generisch), this
9.1.3 Superklasse, super(), einfache Erbschaft (extends)
9.1.4 Abstrakte Klassen
9.1.5 Rekursive Typen
9.1.6 Aufzählung (Enumeration)
9.2 Schnittstellen (interface, ggf.generisch)
9.2.1 Schnittstellen als Referenztypen, Mitglieder
9.2.2 Superschnittst. (extends), mehrf. Erbsch. (implements)
9.2.3 Anmerkungstyp (Annotation)
9.3 Testfragen
Kap.10: ÜBERSETZUNGEINHEIT, PAKETE, DOKUMENTATION
10.1 Übersetzungseinheit
10.2 Pakete (package) und Import (import)
10.3 Dokumentation (javadoc)
10.4 Testfragen
Kap.11: FEHLERTOLERANTES PROGRAMMIEREN
11.1 Ausnahmebehandlung (try)
11.1.1 Auswerfen einer Ausnahme (throw)
11.1.2 Abfangen einer Ausnahme (catch)
11.1.3 Das letzte Wort behalten (finally)
11.2 Testfragen
Kap.12: FÄDEN (Thread) DES ABLAUFS (Runnable)
12.1 Einfache Vorrangsteuerung beim Multithreading
12.1.1 Thread-Vorrangsteuerung mit sleep(ms)
12.1.2 Thread-Vorrangsteuerung mit setPriority(prio)
12.2 Sychronisiertes (synchronized) Multithreading
12.2.1 Synchronisierter Zugriff auf gemeinsames Objekt
12.2.2 Synchronisierter Aufruf gemeinsamer Methode
12.3 Testfragen
Kap.13: HTML-DOKUMENTE, BILDER
13.1 Einführung in Hypertext Markup Language (HTML)
13.1.1 Grundelemente in HTML und XHTML (extensible HTML)
13.1.2 Cascading Style Sheets (CSS) in HTML-Dokumenten
13.1.3 HTML-Listen
13.1.4 HTML-Tabellen
13.1.5 HTML-Verweise (href) auf Namen (name)
13.2 Bilder (img) in HTML-Dokumenten
13.3 Testfragen
14.1 Java-Applets in HTML-Dokumenten (applet)
14.1.1 Text-Graphik
14.1.2 Bild-Graphik, Maus
14.1.3 Layout
14.1.4 Dialog
14.1.5 Farben (Color)
14.2 Testfragen
Kap.15: VERBINDUNG (Connection) ZU DATENBANKEN
15.1 Installieren eines SQL-Datenbank-Servers, z.B. MySQL
15.2 Einrichtung einer SQL-Datenbank, z.B. Lager in MySQL
15.3 Java-DB-Verbindung, z.B. zur Datenbank Lager in MySQL
15.4 Testfragen
Mit Diagramm-Index, deutsch/englisch
Pakete, Dokumentation (Übersicht)
Standardpakete, Erweiterungen, Pakete von Dritten
Quellen (from the source)