ComplDemo  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.
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 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: 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:
Hinweis     Ergänzende Hinweise und Anmerkungen, Dinge, die besonderer Beachtung bedürfen, und Tipps.

CD     Zu finden auf der CD und / oder gegebenenfalls aktualisiert auf dem WWW-Bereich.

Java-Problem   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.