Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Die Funktionsbibliothek
10 Threads und nebenläufige Programmierung
11 Raum und Zeit
12 Datenstrukturen und Algorithmen
13 Dateien und Datenströme
14 Die eXtensible Markup Language (XML)
15 Grafische Oberflächen mit Swing
16 Grafikprogrammierung
17 Netzwerkprogrammierung
18 Verteilte Programmierung mit RMI und Web-Services
19 JavaServer Pages und Servlets
20 Applets
21 Midlets und die Java ME
22 Datenbankmanagement mit JDBC
23 Reflection und Annotationen
24 Logging und Monitoring
25 Sicherheitskonzepte
26 Java Native Interface (JNI)
27 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Download: - ZIP, ca. 12,5 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> /Java-Insel | vor >>
Java ist auch eine Insel von Christian Ullenboom Programmieren mit der Java Standard Edition Version 6
Java ist auch eine Insel 7., aktualisierte Auflage geb., mit DVD (November 2007) 1.492 S., 49,90 Euro Galileo Computing ISBN 978-3-8362-1146-8 |
| Vorwort
|  | Vorwort zur 6. Auflage
|  | Vorwort zur 7. Auflage
Mancher glaubt schon darum höflich zu sein, weil er sich überhaupt noch der Worte und nicht der Fäuste bedient. – Hebbel # Vorwort Am 23. Mai 1995 stellten auf der SunWorld in San Francisco der Chef von Suns Science Office, John Gage, und Netscape-Mitbegründer Marc Andreessen die neue Programmiersprache Java und deren Integration in den Webbrowser Netscape vor. Java stellt uns elegante Programmiermöglichkeiten zur Verfügung plattformunabhängig zu programmieren und objekt-orientiert unsere Gedanken abzubilden. Die Möglichkeiten der Sprache und Bibliothek sind an sich nichts Neues, aber so gut verpackt und verkauft, dass Java angenehm und flüssig zu programmieren ist. Dieses Tutorial beschäftigt sich in 27 Kapiteln mit Java, den Klassen, der Design-Philosophie und der objektorientierten Programmierung. #### Für wen ist das Tutorial? Die Kapitel dieses Buches sind für Anfänger der Programmiersprache Java wie auch für Fortgeschrittene konzipiert. Kenntnisse in einer strukturierten Programmiersprache wie C, Delphi, Visual Basic und ein Verständnis für objektorientierte Technologien sind hilfreich, weil das Buch nicht explizit auf Rechnerarchitektur eingeht oder auf die Frage, was Programmieren ist. Wer also schon in einer beliebigen Sprache programmiert hat, liegt mit diesem Buch genau richtig! Einige Unterkapitel sind für erfahrene Programmierer oder Informatiker geschrieben. Besonders der Neuling wird an einigen Stellen den sequenziellen Pfad verlassen müssen, da spezielle Kapitel mehr Hintergrundinformationen und Vertrautheit mit Programmiersprachen erfordern. Verweise auf C(++) oder C# dienen aber nicht wesentlich dem Verständnis, sondern nur dem Vergleich. #### Was das Tutorial nicht ist Dieses Buch darf nicht als Programmierbuch für Einsteiger verstanden werden. Wer noch nie programmiert hat und mit dem Wort »Übersetzen« in erster Linie Dolmetschen verbindet, sollte besser ein anderes Tutorial bevorzugen oder parallel lesen. Viele Bereiche aus dem Leben eines Industrieprogrammierers behandelt »die Insel« bis zu einer allgemein verständlichen Tiefe, doch sie ersetzt nicht die »Java Language Specification« (JLS: http://java.sun.com/docs/books/jls/). Die Java-Technologien sind in den letzten Jahren explodiert, sodass die anfängliche Überschaubarkeit einer starken Spezialisierung gewichen ist. Heute ist es kaum mehr möglich, alles in einem Buch zu behandeln, und das möchte ich mit der Insel auch auf keinen Fall. Ein Buch, das sich speziell mit der grafischen Oberfläche Swing beschäftigt, ist genauso umfangreich wie die jetzige Insel. Nicht anders verhält es sich mit den anderen Spezialthemen wie objektorientierte Analyse/Design, UML, verteilte Programmierung mit CORBA, Enterprise JavaBeans, Datenbankanbindung, OR-Mapping, Web-Services, dynamische Webseiten und viele andere Themen. Hier muss ein Spezialbuch die Wissensneugier befriedigen. #### Welche Software wir benutzen Als Grundlage dient die Java Platform Standard Edition (Java SE). Sie lässt sich über http://java.sun.com/ beziehen. Das Paket besteht im Wesentlichen aus einem Compiler und einer Laufzeitumgebung (Interpreter). Das SDK ist für die Plattformen Windows, Linux und Solaris erhältlich. (Für Apples Mac OS X gibt es die Java-Laufzeitumgebung unter http://www.apple.com/macosx/features/java/.) Eine grafische Entwicklungsoberfläche (IDE) ist nicht Teil der Java SE. Zwar verlasse ich mich ungern auf einen Hersteller, weil die Hersteller unterschiedliche Entwicklergruppen ansprechen, doch soll in diesem Buch die freie Entwicklungsumgebung Eclipse (http://www.eclipse.org/) Verwendung finden. Die Beispielprogramme lassen sich grundsätzlich mit beliebigen anderen Entwicklungsumgebungen wie NetBeans, JDeveloper, IntelliJ IDEA verarbeiten oder mit einem einfachen ASCII-Texteditor wie Notepad (Windows) oder vi (Unix) eingeben und auf der Kommandozeile übersetzen. Diese Form der Entwicklung ist allerdings nicht mehr zeitgemäß, sodass ein grafischer Kommandozeilen-Aufsatz die Programmerstellung vereinfacht. Für die Entwicklung von Applets ist ein Web-Browser – oder der appletviewer aus dem JDK – wichtig. #### Welche Version? Seit Sun Java als Programmiersprache 1995 mit Version 1.0 vorgestellt hat, drehte sich die Versionsspirale bis Version 6 (gleichbedeutend mit Versionsnummer 1.6). Besonders für Java-Buch-Autoren stellt sich die Frage, auf welcher Java-Version ein Tutorial aufbauen muss und welche Bibliotheken es beschreiben solle. Ich habe das Problem so gelöst, dass ich immer die Möglichkeiten der neuesten Version beschreibe, was zur Drucklegung die Java SE 6 ist. Für die Didaktik der objektorientierten Programmierung ist die Versionsfrage glücklicherweise unerheblich. Galt vor einigen Jahren noch 1.4 als Novum, ist heute Java 5 Basis neuer Projekte. Immer die aktuellste Version zu nutzen, wirft jedoch auch Probleme auf, beispielsweise dann, wenn ein laufendes Projekt unter Java 1.4 entwickelt wird und sich nicht jedes Beispielprogramm aus dem Buch per Copy&Paste übertragen lässt. (Softwareentwickler konsultieren bei Compilerfehlern bitte die Online-Dokumentationen.) Da Sun bei Java 6 die Grammatik der Sprache (glücklicherweise) nicht veränderte, übersetzt ein Java 5-Compiler nahezu alle Beispielprogramme des Buches (die mit neuen Funktionen aus der Java 6-Bibliothek natürlich ausgeschlossen). In Java 7 wird das wieder anders sein und ich mache mir schon jetzt Gedanken, was ein guter Weg sein wird. Java 7 wird voraussichtlich einige neue Sprachkonzepte einführen, die zum Beispiel zur Verkürzung von Programmcode führt, der Ressourcen aus Ein-/Ausgabe-Operationen freigibt. Nutzen die Programmstücke diese neuen Sprachmöglichkeiten, lassen sie sich unter Java 6 nicht übersetzen. #### Organisation der Kapitel Kapitel 1, Java ist auch eine Sprache, zeigt die Besonderheiten der Sprache Java auf. Einige Vergleiche mit anderen populären objektorientierten Sprachen werden gezogen. Die Absätze sind nicht besonders technisch und beschreiben auch den historischen Ablauf der Entwicklung von Java. Das Kapitel ist nicht didaktisch aufgebaut, sodass einige Begriffe erst in den weiteren Kapiteln vertieft werden; Einsteiger sollten es querlesen. Ebenso wird hier dargestellt, wie das Java JDK von Sun zu beziehen und zu installieren ist, damit die ersten Programme übersetzt und gestartet werden können. Richtig los geht es in Kapitel 2, Sprachbeschreibung, das Variablen, Typen und die imperativen Sprachelemente hervorhebt und die Grundlagen für jedes Programm mit Anweisungen und Ausdrücken schafft. Hier finden auch Fallanweisungen, die diversen Schleifentypen und Funktionen ihren Platz. Das alles geht noch ohne großartige Objektorientierung. Objektorientiert wird es in Kapitel 3, Klassen und Objekte. Dabei kümmern wir uns erst einmal um die in der Standardbibliothek vorhandenen Klassen und entwickeln eigene Klassen später. Die Bibliothek ist so reichhaltig, dass allein mit den vordefinierten Klassen schon viele Programme entwickelt werden können. Speziell die bereitgestellten Datenstrukturen lassen sich vielfältig einsetzen. Wichtig ist für viele Probleme auch der in Kapitel 4 vorgestellte Umgang mit Zeichenketten. Die beiden notwendigen Klassen Character für einzelne Zeichen und String, StringBuffer/StringBuilder für Zeichenfolgen werden eingeführt, und auch ein Abschnitt über reguläre Ausdrücke fehlt nicht. Bei den Zeichenketten müssen Teile ausgeschnitten, erkannt und konvertiert werden. Ein split() vom String und der Scanner zerlegen Zeichenfolgen aufgrund von Trennern in Teilzeichenketten. Format-Objekte bringen beliebige Ausgaben in ein gewünschtes Format. Dazu gehört auch die Ausgabe von Dezimalzahlen. Kapitel 5 stellt Mathematisches vor. Die Klasse Math hält typische mathematische Funktionen bereit, um etwa trigonometrische Berechnungen durchzuführen. Mit einer weiteren Klasse können Zufallszahlen erzeugt werden. Auch behandelt das Kapitel den Umgang mit beliebig langen Ganz- oder Fließkommazahlen. Mit diesem Vorwissen über Objekterzeugung und Referenzen kann der nächste Schritt getan werden. In Kapitel 6 werden wir Eigene Klassen schreiben. Anhand von Diskotheken, Gebäuden und Kirchen modellieren wir Objekteigenschaften und zeigen Benutzt- und Vererbungsbeziehungen auf. Wichtige Konzepte wie statische Eigenschaften, Polymorphie, abstrakte Klassen und Schnittstellen (Interfaces) sowie Sichtbarkeit finden dort ihren Platz. Da Klassen in Java auch innerhalb anderer Klassen liegen können (innere Klassen), setzt sich ein eigenes Unterkapitel damit auseinander. Das Kapitel 7, Angewandte Objektorientierung, zeigt Anwendungen guter objektorientierter Programmierung und stellt Entwurfsmuster (Design-Pattern) vor. An unterschiedlichen Beispielen zeigt das Kapitel, wie Schnittstellen und Klassenhierarchien gewinnbringend in Java eingesetzt werden. Danach sind die Grundmauern gelegt, und die verbleibenden Kapitel dienen dem Ausbau des bereits erworbenen Wissens. Dieses wird in Kapitel 8, Exceptions, weiter vertieft. Ausnahmen bilden ein wichtiges Rückgrat in Programmen, da sich Fehler kaum vermeiden lassen. Da ist es besser, die Behandlung aktiv zu unterstützen und den Programmierer zu zwingen, sich um Fehler zu kümmern und diese zu behandeln. Sie lernen, eigene Ausnahmen zu programmieren. Kapitel 9, Die Funktionsbibliothek, gibt eine Paketübersicht der etwa 3800 Klassen, Schnittstellen und Annotationen umfassenden Klassenbibliothek. Es stellt allgemeine Programmelemente, etwa Wrapper-Klassen, Klassen zur Konfiguration von Anwendungen, oder Möglichkeiten zum Ausführen externer Programme vor. Kapitel 10 beschäftigt sich mit Threads und nebenläufiger Programmierung. Das Kapitel umfasst auch die Koordination mehrerer kooperierender oder konkurrierender Threads. Der Rest des Buches vertieft ausgewählte Bereiche. Hier kann der Leser den sequenziellen Pfad verlassen und sich einzelnen Themen widmen. Das beginnt in Kapitel 11 mit Raum und Zeit. Zeitzonen und unterschiedliche Ausgabeformate für Datumswerte werden eingeführt. Darunter fallen auch Datumsberechnungen auf der Grundlage des gregorianischen Kalenders. Kapitel 12 beschäftigt sich mit den Datenstrukturen und Algorithmen, die die Standardbibliothek anbietet. Die wichtigsten Klassen wie Vektoren, Stapel, Bitmengen und Assoziativspeicher werden vorgestellt und dann unterschiedliche Aufgaben mit den jeweils passenden Datenstrukturen gelöst. Als Algorithmen kommen beispielsweise vorgefertigte Sortierverfahren zum Einsatz. In Kapitel 13, Dateien und Datenströme, wird der Fokus auf die Ein-/Ausgabe gelenkt. Zuerst zeigen wir, wie sich Attribute von Dateien und Verzeichnissen auslesen lassen, und dann, wie sich wahlfreier Zugriff auf eine Datei realisieren lässt. Anschließend folgt der zweite Teil über Datenströme, ein wichtiges Konzept, das auch bei Datenströmen aus Netzwerken, Datenbanken oder Schnittstellen wichtig ist. Die Datenströme können dabei durch Filter geschickt werden. Von Letzteren stellen wir einige vor, die sich zum Beispiel die Zeilennummer merken, einen Datenstrom puffern oder ihn komprimieren. Eine elegante Möglichkeit ist das Serialisieren von Objekten. Dabei wird der Zustand eines Objekts ausgelesen und so in einen Datenstrom geschrieben, dass sich das Objekt später wiederherstellen lässt. Eine eigene Speicherroutine kann somit entfallen. Ein neues Thema spannt Kapitel 14 mit Die eXtensible Markup Language (XML) auf. Java als plattformunabhängige Programmiersprache und XML als dokumentenunabhängige Beschreibungssprache sind ein ideales Paar, und die Kombination dieser beiden Technologien ist der Renner der letzten Jahre. Kapitel 15 beschäftigt sich mit Grafischen Oberflächen mit Swing. Es stellt die Swing-Komponenten zur Interaktion vor, wie zum Beispiel Schaltflächen, geht auf die Behandlung von Ereignissen ein, die aus Benutzeraktionen resultieren, und beschreibt Container, die andere Komponenten aufnehmen und layouten. Das anschließende Kapitel 16 deckt die zweite Aufgabe der grafischen Oberflächen ab, in dem es auf die Grafikprogrammierung eingeht. Das AWT (Abstract Window Toolkit) ist die Java-Möglichkeit, grafische Oberflächen zu gestalten. Dabei gliedert es sich in zwei große Teile: zum einen in die direkte Ausgabe von Grafik-Primitiven wie Linien und zum anderen in Komponenten für grafische Oberflächen. Das Kapitel behandelt die Themen Fenster, Zeichenketten und Zeichensätze, Farben und Bilder. In Kapitel 17 geht es mit Netzwerkprogrammierung weiter. Wir sehen, wie Daten von Webservern bezogen werden können, und wie eine eigene Client-Server-Kommunikation aufgebaut wird. Bei Webservern werden wir CGI-Programme ansprechen, um an gewünschte Inhalte zu kommen. Außer auf die gesicherte Verbindung TCP gehen wir auch auf ungesicherte UDP-Verbindungen ein. In Kapitel 18 zeigen wir auf, wie ein Java-Programm einfach Objekte und Methoden nutzen kann, die auf einem anderen Rechner gespeichert beziehungsweise ausgeführt werden. Solche Programme nutzen die Verteilte Programmierung mit RMI und Web-Services. Dabei wird der Aufruf einer Methode über das Netzwerk übertragen, und für das aufrufende Programm sieht es so aus, als ob es sich um einen normalen Funktionsaufruf für ein lokales Objekt handelt. Mit dem Kapitel 19, JavaServer Pages und Servlets, geht es dann in die Welt der dynamischen Webseiten. Java ist zurzeit auf der Serverseite sehr populär, und dort besonders beim so genannten Enterprise-Computing. Mit JavaServer Pages ist es besonders einfach, dynamische Webinhalte zu formulieren, da auf die mitgeschickten Informationen vom Client sehr einfach zugegriffen werden kann. JSPs verfügen zudem über die gesamten Java-Möglichkeiten, insbesondere die Datenbankanbindung. Wissen hinsichtlich grafischer Oberflächen und Netzwerke wird Ihnen in Kapitel 20 anhand des Themas Applets vermittelt. Applets sind Java-Programme innerhalb eines Webbrowsers. Applets machten Java vor über 10 Jahren auf der Welt bekannt, und die ersten Java-Bücher erklärten alles in Zusammenhang mit Applets. Heutzutage spielen Applets keine große Rolle mehr – auch durch die Verbreitung von Flash – und sind schon fast zu einer Nischentechnologie geworden. Ganz anders sieht das bei Midlets und die Java ME aus. Kapitel 21 behandelt kleine Programme – Midlets –, die auf mobilen Endgeräten wie Handys laufen. Schätzungen gehen von über 2,5 Milliarden Geräten mit Java-Unterstützung aus – Zeit, etwas über diese spannende Technologie zu erfahren. Das Thema Datenbankmanagement mit JDBC ist Inhalt von Kapitel 22. Als freie, quelloffene Beispieldatenbank wird HSQLDB vorgestellt, da sie sehr leicht zu installieren und zu betreiben ist und praktischerweise Beispieldaten mitbringt. Die Java-Beispiele bauen eine Verbindung zu HSQLDB auf, setzen SQL-Anweisungen ab, holen die Ergebnisse herein und visualisieren sie. Mit Kapitel 23 widmen wir uns einer Java-typischen Technik: Reflection und Annotationen. Java-Klassen liegen selbst wieder als Meta-Objekte, als Exemplare der speziellen Klasse Class, vor. Diese Class-Objekte geben Auskunft über die verfügbaren und definierten Variablen, Methoden und Konstruktoren. So lassen sich beispielsweise dynamisch bestimmte Methoden aufrufen oder die Werte von dynamisch ausgewählten Objektvariablen abfragen. Die Annotationen sind eine bedeutende Neuerung in Java 5. Wie Java-Programme zu Testzwecken überwacht werden können, zeigt Kapitel 24, Logging und Monitoring. Mit der JMX-API lassen sich MBeans an einem MBean-Server anmelden, und das Dienstprogramm jconsole ermöglicht den Zugriff und die Steuerung der Komponenten. Kapitel 25 zeigt kurz Sicherheitskonzepte, etwa das Sandkastenprinzip, und Sicherheitsmanager auf, zeigt aber auch, wie von Daten eine Prüfsumme gebildet werden kann und wie Daten mit DES oder RSA verschlüsselt werden. Java kann nicht alles plattformunabhängig lösen. An einer bestimmen Stelle muss plattformabhängiger Programmcode eingebaut werden. Um von Java auf Nicht-Java-Code wie C(++) zuzugreifen, definiert Sun das in Kapitel 26 vorgestellte Java Native Interface (JNI). In Kapitel 27, Dienstprogramme für die Java-Umgebung, geht es um die zum JDK gehörigen Programme und einige Extratools, die für Ihre Arbeit nützlich sind. Im Mittelpunkt stehen Compiler, Interpreter und die Handhabung von Jar-Archiven. Dieses Archivformat ist vergleichbar mit den bekannten Zip-Archiven und fasst mehrere Dateien zusammen. Mit den eingebetteten Dokumentationskommentaren in Java kann aus einer Quellcodedatei ganz einfach eine komplette HTML-Dokumentation der Klassen, Schnittstellen, Vererbungsbeziehungen und Eigenschaften inklusive Verlinkung erstellt werden. Unter den Programmen, die zu keiner Standardinstallation gehören, sind etwa Tools, die Java-Programme in C-Programme übersetzen, sie verschönern und Bytecode wieder in lesbaren Java-Quellcode umwandeln. Jeweils am Ende eines Kapitels findet sich ein Unterkapitel »Zum Weiterlesen« mit Verweisen auf interessante Internet-Adressen – in der Java-Sprache finally{} genannt. #### Das Buch in der Lehre einsetzen »Die Insel« eignet sich ideal zum Selbststudium. Das erste Kapitel dient zum Warmwerden und plaudert ein wenig über dies und jenes. Wer auf dem Rechner noch keine Entwicklungsumgebung installiert hat, sollte zuerst das SDK von Sun installieren. Es ist auf der DVD oder unter http://java.sun.com/javase/ zu finden. Zum Entwickeln von Software ist die Hilfe unerlässlich. Da sie über 50 Megabyte groß ist, ist sie nicht Teil einer Standard-Installation. Sie kann online unter http://www.tutego.com/go/javaapi/ eingesehen oder als Zip-Datei extra bezogen und lokal ausgepackt werden. Das komprimierte Archiv ist auf der DVD oder unter http://java.sun.com/docs/ erhältlich. Ausgepackt ist die API-Dokumentation eine Sammlung von HTML-Dateien. Unter http://java.sun.com/docs/windows_format.html findet sich die Hilfe auch im HTMLHelp- und WinHelp-Format. Diese Microsoft-Formate machen die Suche in der Dokumentation einfacher. Weil das JDK nur Kommandozeilentools installiert, sollte jeder Entwickler eine grafische IDE (Integrated Development Environment) installieren, da dies die Entwicklung von Java-Programmen deutlich komfortabler macht. Eine IDE bietet gegenüber der rohen Kommandozeile einige Vorteile: Editieren, Compilieren und Laufenlassen eines Java-Programms soll schnell und einfach über einen Tastendruck oder Mausklick möglich sein. Die Syntax von Java sollte ein Editor farblich hervorheben (Syntax-Highlighting). Eine kontextsensitive Hilfe zeigt bei Methoden die Parameter an, gleichzeitig verweist sie auf die API-Dokumentation. Weitere Vorteile wie GUI-Builder, Projektmanagement und Debuggen sollen jetzt keine Rolle spielen. Wer neu in die Programmiersprache Java einsteigt, wird mit Eclipse seine Freude haben. Es wird im ersten Kapitel ebenfalls beschrieben. Richtig los geht es in Kapitel 2, und ab dort geht es didaktisch Schritt für Schritt weiter. Wer Kenntnisse in C hat, kann Kapitel 2 überblättern. Wer schon in C++/C# objektorientiert programmiert hat, kann Kapitel 3 überfliegen und dann einsteigen. Objektorientierter Mittelpunkt des Buches ist Kapitel 6; es vermittelt die OO-Begriffe Klasse, Methode, Assoziation, Vererbung, Polymorphie, ... Nach Kapitel 6 ist die objektorientierte Grundausbildung abgeschlossen, nach Kapitel 10 sind die Grundlagen von Java bekannt. Es folgen Vertiefungen in einzelnen Bereichen der Java-Bibliothek. Mit diesem Buch und einer Entwicklungsumgebung Ihres Vertrauens können Sie die ersten Programme entwickeln. Um eine neue Programmiersprache zu erlernen, reicht das Lesen aber nicht aus. Mit den Übungsaufgaben auf der DVD können Sie Ihre Fingerfertigkeit trainieren. Da Lösungen beigelegt sind, lassen sich die eigenen Lösungen gut mit den Musterlösungen vergleichen. Vielleicht bietet die Buchlösung noch eine interessante Lösungsidee oder Alternative an. #### Persönliche Lernstrategien Wer das Buch im Selbststudium nutzt, wird wissen wollen, was eine erfolgreiche Lernstrategie ist. Der Schlüssel für die Erkenntnis ist wie immer die Lernpsychologie, die untersucht, unter welchen Lesebedingungen ein Text optimal verstanden werden kann. Die Methode, die ich vorstellen möchte, heißt PQ4R-Methode, benannt nach den Anfangsbuchstaben der Schritte, die die Methode vorgibt: Vorschau (Preview): Zunächst sollten Sie sich über das Kapitel einen ersten Überblick verschaffen, etwa durch Blättern im Inhaltsverzeichnis und in den Seiten der einzelnen Kapitel. Abbildungen und Tabellen sollen etwas länger angeschaut werden, da sie schon den Inhalt verraten und Lust auf den Text vermitteln. Fragen (Question): Jedes Kapitel versucht, einen thematischen Block zu vermitteln. Vor dem Lesen sollte sich jeder überlegen, welche Fragen das Kapitel beantworten soll. Lesen (Read): Jetzt geht's los: Der Text wird durchgelesen. Wenn es nicht gerade ein geliehenes Bücherei-Buch ist, sollten Sie Passagen, die Ihnen wichtig erscheinen, mit vielen Farben hervorheben und mit Randbemerkungen versehen. Gleiches gilt für neue Begriffe. Die zuvor gestellten Fragen sollte jeder beantworten können. Wenn neue Fragen auftauchen: Im Gedächtnis abspeichern! Nachdenken (Reflect): Egal, ob motiviert oder nicht – das ist ein interessantes Ergebnis einer anderen Studie –, lernen kann jeder immer. Der Erfolg hängt nur davon ab, wie tief das Wissen verarbeitet wird (elaborierte Verarbeitung). Dazu müssen die Themen mit anderen Themen verknüpft werden. Überlegen Sie, wie die Aussagen mit den anderen Teilen zusammenpassen. Dies ist auch ein guter Zeitpunkt für praktische Übungen. Für die angegebenen Beispiele im Buch sollten Sie sich eigene Beispiele überlegen. Wenn der Autor eine if-Anfrage mit dem Alter beschreibt, wäre eine Idee etwa eine if-Anfrage mit der Hüpfballgröße. Wiedergeben (Recite): Die zuvor gestellten Fragen sollten sich nun beantworten lassen – und zwar ohne den Text. Für mich ist das Schreiben eine gute Möglichkeit, um über mein Wissen zu reflektieren, doch sollte dies jeder auf seine Weise tun. Allemal ist es lustig, sich während des Duschens alle Schlüsselwörter und ihre Bedeutung, den Zusammenhang zwischen abstrakten Klassen und Schnittstellen usw. klarzumachen. Ein Tipp: Lautes Erklären hilft bei vielen Arten der Problemlösung – quatschen Sie einfach mal den Toaster zu. Noch schöner ist es, mit jemandem zusammen zu lernen und sich gegenseitig die Verfahren zu erklären. Eine interessante Visualisierungstechnik ist die Mind-Map. Sie dient dazu, den Inhalt zu gliedern. Rückblick (Review): Nun gehen Sie das Kapitel noch einmal durch und schauen, ob Sie alles ohne weitere Fragen verstanden haben. Manche »schnelle« Erklärungen haben sich vielleicht als falsch herausgestellt. Vielleicht klärt der Text auch nicht alles. Dann ist ein an mich gerichteter Hinweis (insel@tutego.com) angebracht. #### Konventionen In diesem Buch werden folgende Konventionen verwendet: Neu eingeführte Begriffe sind kursiv gesetzt, und der Index verweist genau auf diese Stelle. Des Weiteren sind Dateinamen, HTTP-Adressen, Namen ausführbarer Programme, Programmoptionen und Dateiendungen (.txt) kursiv. Einige Links führen nicht direkt zur Ressource, sondern werden über http://www.tutego.com/go zur tatsächlichen Quelle umgeleitet, was Änderungen erleichtert. Listings, Methoden und sonstige Programmelemente sind in nicht-proportionaler Schrift gesetzt. An einigen Stellen wurde hinter eine Listingzeile ein Zeichen gesetzt, das den Zeilenumbruch markiert. Der Code aus der nächsten Zeile gehört also noch zur vorherigen. Bei Methodennamen folgt immer ein Klammerpaar. Die Parameter werden nur dann aufgeführt, wenn sie wichtig sind. Komplette Programmlistings sind wie folgt aufgebaut: Listing 0.1 Person.java
    class Person
    {
    }
Der Quellcode gehört zum Typ Person.java – Typen sind entweder Klassen (Aufzählungen zählen dazu) oder Schnittstellen (wozu auch Annotationen zählen). Befindet sich der Typ in einem Paket, steht die Pfadangabe beim Dateinamen Listing 0.2 com/tutego/insel/Person.java Um nicht den kompletten Quellcode abzudrucken, zeigt das Tutorial zum Teil nur Ausschnitte, und das komplette Programm ist auf der DVD beziehungsweise im Internet zu finden. Hinter dem Typ folgen Kennungen des Teiles. Im folgenden Fall wird nur die main()-Funktion abgebildet: Listing 0.3 Person.java, main() Ist nur der Typ Hand in der Datei Typ.java abgebildet, steht Listing 0.4 Person.java, Hand Wird ein Ausschnitt aus Person abgebildet, steht »Ausschnitt« oder »Teil 1«, »Teil 2«, ... Listing 0.5 Person.java, Ausschnitt Die Kurzform für einen Typ Person ohne package- oder import-Anweisung lautet: Listing 0.6 Person.java, Person Gibt es Beispielprogramme für bestimmte Klassen, so enden die Klassennamen dieser Programme mit -Demo. Für die Java-Klasse DateFormat heißt somit ein Programm, welches die Funktionalität der Klasse vorführt, DateFormatDemo. Attribute, Konstruktoren und Methoden finden sich in einer speziellen Auflistung, die es ermöglicht, sie leicht im Buch zu finden und die Insel als Referenzwerk zu nutzen.
    abstract class java.text.DateFormat
    extends Format
    implements Cloneable, Serializable
Date parse( String ) throws ParseException Parst einen Datum- oder einen Zeit-String. Im Rechteck steht der voll qualifizierte Klassen- oder Schnittstellenname (etwa die Klasse DateFormat im Paket java.text) beziehungsweise der Name der Annotation. In den nachfolgenden Zeilen sind die Oberklasse (DateFormat erbt von Format) und die implementierten Schnittstellen (DateFormat implementiert Cloneable und Serializable) aufgeführt. Da jede Klasse, die keine explizite Oberklasse hat, automatisch von Object erbt, ist diese nicht extra angegeben. Die Sichtbarkeit ist, wenn nicht anders angegeben, public, da dies für Bibliotheksfunktionen üblich ist. Wird eine Schnittstelle beschrieben, sind die Methoden automatisch abstrakt und öffentlich, und die Schlüsselwörter abstract und public werden nicht zusätzlich angegeben. In der anschließenden Aufzählung folgen Konstruktoren, Methoden und Attribute. Wenn nicht anders angegeben, ist die Sichtbarkeit public. Sind mit throws Fehler angegeben, dann sind dies keine RuntimeExceptions. Ausführbare Programme auf der Kommandozeile sind durch ein allgemeines Dollarzeichen am Anfang zu erkennen (auch wenn andere Betriebssysteme und Kommandozeilen ein anderes Prompt anzeigen). Die vom Anwender einzugebenden Zeichen sind fett gesetzt, die Ausgabe nicht:
    $ java ErstesGlueck
    Hart arbeiten hat noch nie jemanden getötet. Aber warum das Risiko auf sich nehmen?
Die Programmierer-Sprache in diesem Buch ist Englisch, um ein Vorbild für »echte« Programme zu sein. Bezeichner wie Klassennamen, Methodennamen und auch eigene API-Dokumentationen sind üblicherweise auf Englisch ebenso die Zeichenketten in Ausnahmen (Exceptions), um eine Homogenität mit der englischen Java-Bibliothek zu schaffen. Nur einige Zeichenketten und Konsolenausgaben sind deutsch, da es in realistischen Programmen kaum hart einkodierte Meldungen gibt – spezielle Dateien halten unterschiedliche Landessprachen vor. #### Warum es noch ein Java-Buch gibt ... Meine ursprüngliche Beschäftigung mit Java hängt eng mit einer universitären Pflichtveranstaltung zusammen. In unserer Projektgruppe beschäftigten wir uns 1997 mit einer objektorientierten Dialogspezifikation. Da ich den Seminarteilnehmern Java vorstellen wollte – Alternativen waren Objective-C, C(++) – arbeitete ich meinen ersten Foliensatz für den Seminarvortrag aus. Als ich dann noch die Seminararbeit schreiben musste, wurde aus den geplanten Seminarseiten schon ein kleines Buch. Es kam sogar dazu, dass die so genannte »Seminararbeit« schon zu viele Seiten umfasste und die vorliegende Einleitung mehr oder weniger zur Seminararbeit verwurstet wurde; zumal das Tutorial zwischendurch immer dicker geworden war, da ich für meine ersten Java-Schulungen eine Seminarunterlage benötigte. Dass es mich über die universitäre Pflicht hinaus zum Schreiben treibt, ist nur eine Lernstrategie. Wenn ich mich in neue Gebiete einarbeite, lese ich erst einmal auf Masse und beginne dann, Zusammenfassungen zu schreiben. Erst beim Schreiben wird mir richtig bewusst, was ich noch nicht weiß. Das Lernen durch Schreiben hat mir auch bei einem anderen Buch sehr geholfen, das leider nicht veröffentlicht wurde. Es ist ein Assembler-Buch für den MC680x0 im Amiga. Die Verlage konnten mir nur mitteilen, dass die Zeit des Amiga vorbei sei. [Damit habe ich eine Wette mit Georg und Thomas verloren – sie durften bei einer großen Imbisskette so viel essen, wie sie wollten. Ich hatte später meinen Spaß, als wir mit dem Auto nach Hause fuhren und dreimal anhalten mussten. ] Die Prognosen für Java stehen besser, weil der Einsatz von Java mittlerweile so gefestigt ist wie COBOL bei Banken und Versicherungen. Und da die Insel seit 10 Jahren – die erste Version gab es 1998 – verfügbar und besonders die Online-Variante beliebt ist, stellt sich heute die Frage nach einem »neuen« Java-Buch weniger denn je. Hier klicken, um das Bild zu vergrößern #### Online-Informationen und Aufgaben Das Buch ist in der aktuellen Version im Internet unter der Adresse https://www.galileo-press.de/ erhältlich. Auf der Webseite erfahren Sie Neuigkeiten und Änderungen. Der Quellcode der Beispielprogramme ist in fast allen Fällen entweder komplett oder mit den bedeutenden Ausschnitten im Buch abgebildet. Ein Zip-Archiv mit allen Beispielen ist auf der DVD und zusätzlich auf der Buch-Webseite http://www.tutego.com/javabuch/ erhältlich. Alle Programmteile sind frei von Rechten und können ungefragt in eigene Programme übernommen werden. Wer eine Programmiersprache erlernen möchte, muss sie wie eine Fremdsprache sprechen. Begleitend gibt es eine Aufgabensammlung auf der DVD und viele Musterlösungen auf folgender Webseite: http://www.tutego.com/aufgaben/j/ Die Seite wird in regelmäßigen Abständen aktualisiert, sodass Sie dort immer wieder neue Aufgaben und Lösungen finden. #### Weiterbildung durch tutego Unternehmen, die zur effektiven Weiterbildung ihrer Mitarbeiter IT-Schulungen wünschen, können einen Blick auf http://www.tutego.com/seminare/ werfen. tutego bietet über hundert IT-Seminare zu Java-Themen, C(++), C#/.NET, Datenbanken (Oracle, MySQL), XML (XSLT, Schema), Netzwerke, Internet, Office, ...). Zu den Java-Themen zählen unter anderem: Java-Einführung und , Java für Fortgeschrittene, Java für Umsteiger Softwareentwicklung Entwicklung mit Eclipse Nebenläufiges Programmieren mit Threads JavaServer Pages (JSP) und Servlets, JavaServer Faces (JSF) und weitere Web-Technologien Datenbankanbindung mit JDBC, Derby, C und OR-Mapping mit Hibernate Grafische Oberflächen mit Swing und JFC Java und XML Mobile Endgeräte mit Java ME programmieren J2EE 1.4 (EJB 2.1) und Java EE 5 (EJB 3) Nebenläufiges Programmieren mit Threads #### Danksagungen Ich hätte gern einem großen Softwarehaus meinen Dank ausgesprochen, doch leider gibt es keinen Grund dafür. Mit einer Textverarbeitung ist es wie mit Menschen – irgendwie hat doch jeder eine zweite Chance, auch eine Textverarbeitung. Klappt irgendetwas nicht, nun gut, vielleicht funktioniert es auf einem anderen Weg. Auch meiner Ex-Pommes-Bude in Paderborn habe ich schon viele Chancen gegeben – aber umsonst. Die Pommes blieben weich und pampig. Die Konsequenz: Ich gehe nicht mehr hin. Genauso ist es mit Microsoft Word oder Adobe FrameMaker. Einst war ich von FrameMaker begeistert, doch währte diese Begeisterung nur einen Monat. Die Texterfassung ist umständlich. So ging ich zu Word 7 über. Damals waren es schon etwa vierzig Seiten mit Vorlagen. Das Konvertieren ging innerhalb von drei Tagen schnell über die Bühne. Als ich dann – aus Gründen, die mir heute nicht mehr bekannt sind, [Versionsfanatismus? ] – zu Word 8 überging, ging das Konvertieren schon wieder los. Ich war geblendet von den Funktionen und Spielereien. Die Ernüchterung kam zwei Monate später. Mein Dokument war auf die Größe von 100 Seiten angeschwollen, und Filialdokumente ergaben Sinn. Doch plötzlich fehlte eine Datei, andere waren defekt, und Word wollte einfach nicht ohne Fehlermeldung die Filialdokumente laden. [Aus einem Online-Magazin vom 13. Mai 2002: »A senior Microsoft Corp. executive told a federal court last week that sharing information with competitors could damage national security and even threaten the U. S. war effort in Afghanistan. He later acknowledged that some Microsoft code was so flawed it could not be safely disclosed.« ] Sie waren aus unerfindlichen Gründen als fehlerhaft markiert. Auch die Anweisung, alles zu kopieren und in ein neues Dokument zu packen, machte sie nicht wieder einsatzbereit. Dagegen ist das plötzliche Weißwerden des gesamten Texts unter Word 7 [Microsoft hat in den Entwicklungslabors immense Sicherheitsprobleme. Immer wieder verschwinden Vorversionen von Programmen samt Sicherheitskopien. Dies führt dazu, dass Microsoft unfertige Programmversionen ausliefern und Versionsnummern überspringen musste. Wer über den Verbleib von MS Project 2.0, Works 1.0 für Windows, MS DOS 6.1, Excel 1.0, Word 3.0/4.0/5.0 für Windows, Windows NT 1.0/2.0/3.0 Aussagen machen kann, sollte sich bitte an eine Microsoft-Niederlassung wenden. ] noch harmlos. Als Word anschließend noch anfing, meine Absatzvorlagen heiter durcheinander zu bringen und auch nach dem Ändern und Speichern immer noch die gleichen Effekte zeigte, war es so weit: Word 8 musste weg. Also wieder zurück zu Word 7? Ja! Also RTF, Absatzvorlagen wieder umdefinieren, altes Filialdokument wieder einsetzen. Die Zeit, die ich für Umformatierungen und Konvertierungen verliere, ist pfutsch, und das Einzige, was ich daraus gelernt habe, ist die Bestätigung einer alten Weisheit: »Sei vorsichtig bei einem MS-Produkt!« Aber erzähle ich da jemandem etwas Neues? Nun – ich darf es eigentlich gar nicht erwähnen: Der Verlag setzt das Buch in FrameMaker. Was sonst? [Ja, okay, TeX ist auch eine Lösung. ] Das Programm eignet sich zwar nicht zur Texterfassung, doch ist der Satz sehr gut, die Darstellung von Bild und Text sind überzeugend schnell und für einen möglichen späteren Druck sehr entgegenkommend. Dort lassen sich auch tausend Seiten mit Bildern und Tabellen ohne Seitenneuberechnung schnell scrollen. So sollte das immer sein. Mich beeindruckt in diesem Zusammenhang immer eine Textverarbeitung auf dem Acorn Archimedes – und zwar Impression von Computer Concepts. Sie stellt den Text beim Verschieben eines Bildes mit automatischer Neuberechnung des Textflusses pixelgenau dar. Warum habe ich das in einer PC-Textverarbeitung noch nicht gesehen? Nun denn ... Von der Verlagsseite bekomme ich wieder RTF-Dateien aus FrameMaker exportiert, bearbeite sie und gebe sie dann wieder ab. Für die Texterfassung und Korrektur setze ich Word ein – mit roten Kringeln und neuer Rechtschreibung. Ein Glück, dass ich mich nicht mehr um die Umsetzung von RTF nach FrameMaker kümmern muss. #### Echte Danksagungen Die professionellen, aufheiternden Comics stammen von Andreas Schultze (Akws@aol.com). Ich danke auch den vielen Buch- und Artikelautoren für ihre interessanten Werke, aus denen ich mein Wissen über Java schöpfen konnte. Ich danke meinen Eltern für ihre Liebe und Geduld und meinen Freunden/Freundinnen für ihr Vertrauen. Ein weiteres Dankeschön geht an verschiedene treue Leser, deren Namen aufzulisten viel Platz kosten würde; ihnen ist die Webseite http://www.tutego.com/javabuch/korrekteure.htm gewidmet. Abschließend möchte ich dem Galileo-Verlag meinen Dank für die Realisierung und die unproblematische Zusammenarbeit aussprechen. Für die Zusammenarbeit mit meiner Lektorin Judith bin ich sehr dankbar. #### Feedback Auch wenn wir die Kapitel noch so sorgfältig durchgegangen sind, ist nicht auszuschließen, dass es noch Unstimmigkeiten [Bei mir wird gerne ein »wir« zum »wie« – wie(r) dumm, dass die Tasten so eng beieinander liegen. ] gibt; viel mehr ist es bei 1400 Seiten wahrscheinlich. Wer Anmerkungen, Hinweise, Korrekturen oder Fragen zu bestimmten Punkten oder zur allgemeinen Didaktik hat, sollte sich nicht scheuen, mir eine E-Mail unter der Adresse C.Ullenboom@tutego.com zu senden. Ich bin für Anregung, Lob und Tadel stets empfänglich. Und jetzt wünsche ich Ihnen viel Spaß beim Lesen und Lernen von Java! Christian Ullenboom Hannover, 2007 bzw. 1428 (arabische Zeitrechnung) bzw. 5768 (jüdische Zeitrechnung) ## Vorwort zur 6. Auflage Die neue Auflage des Java-Buchs erscheint pünktlich mit der Version Java 6 (Mustang), die in erster Linie weitere Bibliotheken integriert; auf Nonsens wie eingebettetes SQL, wie es auf einer MS-Konferenz für C# gezeigt wurde, verzichtet Sun. (Prahlereien, welche Programmiersprache die beste ist, wer den Dicksten hat und am längsten kann, gehen also weiter.) Wie in jedem Vorwort kann ich schreiben, dass wieder viele Fehler entfernt wurden. Eine unangenehm große Anzahl Rechtschreibfehler fand der »Context-Sensitive Spelling Checker« (http://tutego.com/go/ibmcsspell), auf den Andreas Arning von der IBM mich brachte. Ein großes Dankeschön an ihn für seine Mühe, das Tool auf das Buch anzuwenden und die Falschmeldungen auszusortieren. Logische Neuerungen ergeben sich durch Java 6: Es gibt die Klasse Console für geschützte Passworteingaben, Symbole in der Tray, Splash-Screens und eine standardisierte Web-Service-API inklusive kleiner HTTP-Server. Der JavaScript-Interpreter Rhino erlaubt das Starten von JavaScript-Programmen, und im JDK 6 (nicht im JRE) ist die komplette Datenbank JavaDB – basierend auf Apache Derby – integriert. Neben den Neuerungen gibt es diverse Umsortierungen im Buch. Kapitel 14 und 15 sind vertauscht, da Swing wichtiger ist, als sich mit dem Zeichnen von Linien und Kreisen zu beschäftigen. Kapitel 15 kümmert sich jetzt um die grafischen Feinheiten und bezieht auch die Java 2D-Bibliothek früher mit ein. Kapitel 23 wurde in »Logging und Monitoring« umbenannt und enthält nun das Unterkapitel »Logging« aus dem ehemaligen Kapitel 12 (Ein-/Ausgabe). Auch das Kapitel 12 wurde in sich umsortiert, denn Unicode-Zeichen-Ströme und Byte-Ströme sind zu Blöcken funktional zusammengefasst und werden nicht mehr isoliert nach jeweils Byte-orientiert und Unicode-orientiert behandelt. ### Ihr Kommentar Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.
Name |
E-Mail |
Ihr Kommentar |
<< zurück | <top> | vor >>

Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de