Infos zum Buch
Albrecht Weinert,
Java für Ingenieure
Fachbuchverlag Leipzig im
Carl Hanser Verlag, Februar 2001
Gebunden mit CD-ROM ISBN 3-446-21567-0.
Original Vorwort aus dem Buch —
Stand 15.6.2000 © Albrecht Weinert
Vorwort
Java für Ingenieure ist selbstverständlich auch Java für Ingenieurinnen
— und für Physikerinnen, Chemikerinnen und Technikerinnen. Im Titel und
im Text dieses Buches wird immer nur eine Geschlechtsform verwendet, ohne dass
dies die jeweils andere ausschließt.
Die Sprache Java
Die Zahl der Programmiersprachen, die die Informatik in den letzten 50
Jahren hervorgebracht hat, ist Legion. Ernstzunehmende Schätzungen sprechen
von mehr als 20.000. Eine Zeitlang war es ja Mode, dass jeder
Informatikstudent im Rahmen einer Projektgruppe eine neue
Programmiersprache oder eine Änderung einer bestehenden
erfinden musste.
Den Ingenieur interessieren aber hauptsächlich Programmiersprachen, die
in großem Umfang geschäftlich und industriell eingesetzt werden. Deren
Anzahl
lässt sich, wenn man die Maschinensprachen der unterschiedlichen
Prozessorfamilien als eine nimmt, eher an zwei Händen abzählen: Ada,
Assembler, C/C++, Cobol, Fortran, Java, Step5/7, VisualBasic und vielleicht
noch ein oder zwei andere.
Unter diesen ernsthaft eingesetzten Sprachen ist Java die jüngste. Sie wurde
1995 eingeführt und hat sich mit einer immensen Dynamik verbreitet. Keine
Sprache hat so schnell nach ihrer Einführung eine so breite Beachtung,
Wirkung und Anwendungsbasis gefunden wie Java. In den Wachstumsraten schlägt
Java alle ihre zur Zeit (Mai 2000) noch verbreiteteren Mitbewerber.
Ingenieure, Informatiker, Programmierer und Berater mit Java-Kenntnissen
werden in den USA bereits höher bezahlt als Fachleute für C/C++ mit
vergleichbarem Hintergrund. Auch in der Hochschullehre hat sich Java
inzwischen fest etabliert, meist auch als erste gelehrte
Programmiersprache.
Die Gründe für den einzigartigen Erfolg sind vielfältig. Eine wichtige
Rolle spielt auch die "Gnade der späten Geburt". Die Fortschritte
der Informatik in der Theorie der Sprachen und der
Compilertechnik auch erarbeitet von den
oben genannten 20.000 machten es möglich,
vernünftige
Konzepte zu entwickeln und gut zu verwirklichen. Insbesondere ließen sich
manche schlimme Fehler der Vorgänger vermeiden. Nun ist, wie zahlreiche
großangelegte Programmiersprachenprojekte der letzten zehn Jahre zeigen,
der Erfolg auch unter solchen Bedingungen keineswegs selbstverständlich.
Man muss es der Firma Sun hoch anrechnen, dass sie ein innovatives Umfeld
und eine Arbeitsatmosphäre geschaffen hatte, in der geniale Entwickler ihre
Ideen bis zur Marktreife verwirklichen konnten.
Java ist eine robuste, objektorientierte Sprache, die moderne Konzepte klar
verwirklicht. Der Erfolg am Markt beruht auf den drei Säulen
- gute Konzeption,
- sicherer plattformunabhängiger Einsatz als ausführbarer
Inhalt (executable content, Applet) von Internetseiten und
- nahe syntaktische Anlehnung an C.
Bei naher syntaktischer Anlehnung an C vermeidet Java alle
konzeptionellen und teilweise sicherheitskritischen Mängel von C/C++;
letztere sind vielfach historisch durch die Anfänge der Sprache in den
frühen 1970er-Jahren bedingt. Die syntaktische Anlehnung an C wurde
stellenweise ein wenig übertrieben und sie bedingt auch einige
entsprechende
Nachteile und Ungereimtheiten. Andererseits drückt sich hierin ein
Respekt vor den C-Kenntnissen
einer breiten Entwicklerbasis und den riesigen Investitionen
in C/C++ aus. Für den Einsatz von C/C++ in großen
industriellen Projekten gab es ja, wegen fehlender anderer Werkzeuge
beispielsweise, oft keine Alternative.
Dieser notwendige und angebrachte Respekt war bei den Komitees zur
Schöpfung anderer neuer Sprachen und deren Umfeld teilweise zu vermissen.
Wer seine Arbeit mit Aussagen wie "C/C++ ist eine Mistsprache und wer
sie benutzt, ist ein Idiot" (verkürzt, aber sinngemäß) begründet, mag
im ersten Punkt ja nicht ganz unrecht haben. Eine solche Haltung wird aber
weder den Entwicklern von C und C++ gerecht noch vor allem den zahlreichen
Ingenieuren, die weltweit mit C und C++ gute Produkte geschaffen
haben. Eine derartige Haltung ist im Java-Umfeld nicht zu finden.
Java ist als Sprache seit der Version 1.1.3 des JDK stabil. Das
Java Development Kit, oder kurz JDK, umfasst alle Werkzeuge,
Ablaufsysteme und Bibliotheken, die man zum Arbeiten mit Java braucht;
es wird frei von Lizenzgebühren abgegeben. Die Klassenbibliotheken wurden
beim Übergang von JDK1.1.x nach
JDK1.2.x erweitert und teilweise überarbeitet und können nun auch als
stabil gelten. Die jetzt aktuelle Version JDK1.3.0 heißt offiziell
Java 2.
Bezüglich der internationalen Standardisierung von Java gab es
hoffnungsvolle Ansätze beim JTC1 der ISO/IEC und der ECMA. Diese haben sich
zerschlagen. Inzwischen ist die Normungsfrage für die Verbreitung und
Durchsetzung von Java nicht mehr so entscheidend. Ein guter Firmenstandard
kann ja auch erfolgreich sein. Das bei anderen Sprachen aufgetretene
Zerfallen in mehrere Dialekte (etwa in die drei Geschmacksrichtungen
Sun, Microsoft und übrige) wäre eine Gefahr für Java, die ein
internationaler Standard zwar nicht verhindern, aber effektiv
mindern könnte.
Das Buch
Im Frühjahr 1996 war ich bei Siemens in Hard- und
Softwareprojekte eingebunden und setzte als Sprachen C und C++ sowie diverse
Pascal-Dialekte ein. Durch frühere und andere Arbeiten war ich unter
anderem mit Algol
und Fortran und durch die Arbeit meiner Frau auch mit Ada vertraut. Als ich
damals Java zum erstenmal sah, wusste ich "Das ist es!".
Wenn man den damaligen Zustand der Sprache, ihre Verbreitung und das
Umfeld noch kaum Internetzugang
privat von zu Hause und sehr
restriktive Handhabung in Firmen in
Betracht zieht, war diese damalige
Erkenntnis nicht so selbstverständlich, wie sie aus heutiger Sicht
scheinen mag.
In der Fachhochschule Bochum setze ich seit dem Wintersemester 1997 Java
als erste Programmiersprache in der Ingenieurausbildung ein. Das war in
Deutschland damals noch ungewöhnlich. Die Gründe für die Wahl von Java für
diese Lehrveranstaltung waren und sind:
- Java bietet alle wesentlichen Konzepte einer modernen
Programmiersprache.
- Einige konzeptionelle Nachteile bei der Nebenläufigkeit
(gegenüber den entsprechenden Konzepten in Ada) spielen für die Lehre gar
keine Rolle.
- Die Syntax von Java entspricht in grundlegenden Dingen der
von C. Wer Java "kann", kann mit einer guten C/C++-Referenz zur
Hand auch viele (vernünftig geschriebene) C- und C++-Programme lesen und
recht bald auch solche schreiben.
Diese schon eingangs erwähnte Nähe zu C führte dazu, dass in der
Literatur Java vielfach anhand der Unterschiede zu C geschildert wird.
Eine weitere Beobachtung ist, dass Java-Lehrbücher und -Einführungen sich
in erster Linie mit Texten und Grafiken befassen, aber kaum mit Formeln,
Berechnungen, Gleitkommadatentypen und den entsprechenden Bibliotheken
sowie den Grundlagen der Sprache (dem "Handwerk"). Diese
Vermeidung im Vorwort des
betreffenden Werks oft und für manche Leserkreise zutreffend als Vorteil
geschildert ist für den
Ingenieur, der Projekte in Java
durchführen wird, ein Nachteil.
Die Arbeit von Ingenieuren (und angewandten Naturwissenschaftlern und
Technikern) ist durch zielgerichtetes Vorgehen sowie die Beherrschung
ihrer Arbeitsmittel und der physikalischen und mathematischen Grundlagen
ihres Arbeitsgebiets geprägt. In vielen
Fällen sind
aufwändige und komplexe Berechnungen erforderlich. Deren Ausführung
mit Hilfe von Computern macht diese oft erst als Werkzeug wertvoll.
Als Werkzeug ist ein Computer ja erstaunlich universell: die Handhabung
von Texten, Bildern und
Tönen, die Bewältigung großer Datenmengen mit und ohne Datenbanken,
Kommunikationsanwendungen und die Ausführung umfangreicher Rechnungen
werden von der selben Maschine beherrscht. Und Java als universelle
Programmiersprache umfasst alle diese Aspekte.
Der Wunsch nach einer eigenständigen Darstellung der Sprache ohne
Abstützung auf C-Kenntnisse und das Nicht-Ausschließen von Aspekten, die
dem Ingenieur vertraut und notwendig sind, haben zu diesem Buch geführt. Es
beruht in Teilen auf meinem im Wintersemester 1997 hierzu erstmals
erschienenen Skript, das seitdem ständig erweitert und verbessert
wurde.
Alle (alle!) Installationshinweise und Programmbeispiele in diesem Buch
sind erprobt. Sollte ein direkt aus dem Buch (statt von der beigefügten CD)
übernommenes Programmstück nicht laufen, wird es vermutlich daran liegen,
dass bei der Übertragung von der Programmquelle zum Buchtext ungewollte
Änderungen oft durch
automatische "Korrekturen", Trennhilfen etc.
passiert sind. Die Plattform für
die Erprobung ist das JDK1.3/1.4 auf MS-Windows 2000 / NT4.0
(Servicepack 4 und 6a, beide stabil und 2000-fest).
Dies passt zum ingenieurmäßigen
Arbeiten. Windows ist nun mal das derzeit im industriellen Umfeld
vorherrschende Betriebssystem mit der breitesten Werkzeugbasis und von
allen seinen Varianten ist NT die professionellste und stabilste und damit
als industrielle Arbeitsplattform geeignete. Dies mag sich in nächster Zeit
ändern, wenn beispielsweise unter Linux stabile und zum derzeitigen
Standard kompatible Office- und Entwicklungswerkzeuge verfügbar
werden.
Eine hervorragende Eigenschaft von Java ist seine Plattformunabhängigkeit.
Die Java-Werkzeuge und die Java-Anwendungen
laufen letztere im
allgemeinen ohne Neuübersetzung auf
vielen Plattformen. Insofern ist die
eben genannte konsequente Erprobung auf einer Basis gerade bei Java keine
große Einschränkung. Lediglich Hinweise zur Installation und Handhabung der
Werkzeuge, Einstellungen der Systemumgebung und dergleichen müssen
Windows95/99/2000- und Linux-Anwender nicht wörtlich nehmen sondern mit
ihren Systemkenntnissen sinngemäß umsetzen.
Die Unterschiede zu früheren Java- beziehungsweise JDK-Versionen
(wie JDK1.1.7), auf die im Buch
nicht eingegangen wird, sind für das Vorliegende unbedeutend. Manche
Funktionen der Klassenbibliotheken (Erweiterungen bei den Containerklassen
und anderes) stehen erst seit 1.2.x zur Verfügung. Versionen vor JDK1.1.6
sollte man heute gar nicht mehr benutzen (und auch keine Bücher, die sich
darauf beziehen). Bei einer Neuinstallation ist das zur Zeit neuste JDK1.4
(beta) die beste Wahl. Java 2 wird sich als Standard
durchsetzen
hoffentlich auch (ohne plug-in!) in den immer etwas hinterherhinkenden
Browsern und Entwicklungsumgebungen und
alles andere ist dann Schnee von gestern.
Das Buch ist in sechs Teile unterteilt, die auch eigenständig genutzt
werden können.
Teil I beschreibt die Installation, Handhabung und Wirkungsweise der
Softwarewerkzeuge (JDK). Zum Testen der Installation dient ein
Schnelldurchgang durch die Programmierung in Java mit drei einfachen
Beispielen. Ziel dieses Teils ist es, möglichst schnell am eigenen PC
"Java zum Laufen" zu bekommen, ohne zunächst auf die Syntax von
Java und die Erklärung der Sprache näher einzugehen.
Die verwendete Software, die frei von Lizenzgebühren (nicht aber von
Lizenzregeln!) ist, finden Sie auf der CD
beziehungsweise in
möglicherweise aktuelleren Versionen im Internet.
Teil II fasst einige für das Verständnis der Programmierung notwendige
Grundlagen und Begriffe als Einführung in die Informatik zusammen.
Teil III ist die eigentliche Beschreibung der Sprache Java.
Teil IV behandelt Pakete und wichtige zum Sprachumfang
gehörende Klassenbibliotheken.
Teil V enthält Projekt- und Designempfehlungen sowie einige Lösungsmuster.
Dieser Teil kann als Teil eines Pflichtenhefts für Java-Projekte genutzt
werden.
Teil VI ist ein Anhang mit Programmbeispielen, Glossar und Listen.
Die Teile I bis V können in dieser Reihenfolge durchgearbeitet werden.
Allerdings ist das Erlernen einer Programmiersprache kaum möglich, ohne
alles Schritt für Schritt auf einem PC selbst auszuprobieren. Dies wiederum
setzt gewisse Installationen auf dem zur Verfügung stehenden PC und auch
einige Kenntnisse in der Programmiersprache voraus, die ja gerade erst
erlernt werden soll. Die hierfür nötigen Hilfen sind im Teil I
zusammengestellt, dessen volles Verständnis sich vielleicht erst beim
wiederholten Lesen und parallelen Durcharbeiten der Teile II und III
erschließen wird. Ähnliches gilt für das Verhältnis von Teil II zu den
Teilen III und IV. Insbesondere bedürfen die bereits in Java geschriebenen
Beispiele in den beiden ersten Teilen ohne das im Teil III vermittelte
Wissen einer intuitiven Erfassung durch den Leser.
Kenntnisse in anderen Programmiersprachen und insbesondere C-Kenntnisse
werden (wie oben gesagt) hier nicht vorausgesetzt. Wegen der Verbreitung
von C und der gewollten syntaktischen Nähe von Java zu C gibt es im Anhang
(Teil VI, Kapitel 29 ab Seite 206) ein vergleichendes Kapitel. Hier wird
auch auf Java-Lösungsmuster für einige nicht direkt übertragbare
C/C++-Ansätze hingewiesen.
Längere Programmbeispiele und Ergebnisse sind nicht im Buch abgedruckt. Sie
finden sich neben vielem anderen auf der CD zum Buch (siehe auch Kapitel
30.3 ab Seite 213 im Anhang, Teil VI) und auch gegebenenfalls aktualisiert
auf meinem WWW-Bereich. Der Einstieg ist
http://a-weinert.de .
Besondere Textstellen sind mit kleinen Graphiken gekennzeichnet:
Ergänzende Hinweise und Anmerkungen, Dinge, die besonderer
Beachtung bedürfen, und Tipps.
Zu finden
auf der CD und / oder gegebenenfalls aktualisiert auf dem
WWW-Bereich.
Nichts ist perfekt. Hinweis auf Probleme oder Fehler der Sprache
Java oder des JDK.
Bilder, Tabellen, Beispiele und Übungen sind kapitelweise
durchnummeriert.
Danksagung
Ohne die Firma Sun, der wir die Sprache Java und ihre Verbreitung und
damit einen echten Fortschritt in der Softwarewelt verdanken, hätte
dieses Buch natürlich keine Grundlage. Mein Dank gilt auch den
anderen Firmen und Programmieren, die mir die Verbreitung ihrer Werkzeuge
und Arbeitsergebnisse auf der CD erlaubt haben.
Weitere Angebote für Beiträge auf dieser CD sind willkommen.
Dieses Buch wäre ohne die Unterstützung meiner Familie nicht möglich
gewesen. Mein Dank gilt meiner Frau, die die Entstehung aktiv unterstützt
hat und monatelang vieles übernommen hat, was eigentlich zu meinen
Pflichten gehörte. Auch meine Kinder hatten lange
nur einen Viertel-Papa.
Im Fachbuchverlag Leipzig im Carl Hanser Verlag haben viele Mitarbeiter,
insbesondere aus den Bereichen Programmplanung und Layout, für dieses
Buch gearbeitet. Stellvertretend für alle möchte ich die Lektorin,
Frau Erika Hotho, ausdrücklich erwähnen und allen für ihren Rat und ihre
ausgezeichnete Arbeit danken. Auch die Ingenieurstudenten des
Fachbereichs Elektrotechnik und Informatik
der Fachhochschule Bochum
haben in der Entstehungsgeschichte des oben genannten umfangreichen
Vorlesungsskripts Kritik und Anregungen beigetragen.
Für Fehler und Mängel des Buches bin ich natürlich ausschließlich
selbst verantwortlich und Anregungen und Hinweise sind mir
immer willkommen (siehe bitte hierzu die
Errata-Seite).
Ende des Vorworts (Stand: 15.06.2000)
Copyright © 2000 - 2002
Albrecht Weinert
— Alle
Rechte vorbehalten.
Das Buch erschien Februar 2001 beim Fachbuchverlag Leipzig im
Carl Hanser Verlag.
Seit Mai 2000 ist es
(hier als java4ing.pdf) im Internet
vorab veröffentlicht.
Stand (technisch, SVN) dieser HTML-Seite: V.$Revision: 1.34,
10.03.2006
Zum Seitenanfang,
zum Vorwort,
zum Cover-Text,
zu den Infos und
Errata zum Buch.