Skip to main content
main-content

Inhaltsverzeichnis

Frontmatter

1. Grundbegriffe der Programmierung

Bevor man mit einer Programmiersprache umzugehen lernt, muss man wissen, was ein Programm prinzipiell ist und wie man Programme konstruiert. Damit wird sich das erste Kapitel befassen. Leser, die bereits eine höhere Programmiersprache erlernt haben, können prüfen, ob sie tatsächlich die hier präsentierten Grundbegriffe (noch) beherrschen, und können dieses Kapitel “überfliegen”. Ehe es “zur Sache geht”, zunächst als spielerischen Einstieg in Kapitel 1.1 das Programm “Hello, world”.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

2. Objektorientierte Konzepte

Entscheidend für den objektorientierten Ansatz ist nicht das objektorientierte Programmieren, sondern das Denken in Objekten vom Start des Projektes an. Dies wird dadurch erleichtert, dass bei den objektorientierten Techniken in Konzepten und Begriffen der realen Welt anstatt in computertechnischen Konstrukten wie Haupt- und Unterprogrammen gedacht und entsprechend programmiert wird.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

3. Einführung in die Programmiersprache Java

Im Jahre 1991 befasste sich ein Mitarbeiterteam von Sun Microsystems (inzwischen ORACLE) mit der Entwicklung von Set-Top Boxen für Fernsehgeräte mit dem Ziel des interaktiven Fernsehens. Für die Software dieser Boxen wurde zunächst C++ verwendet, die damals gängige Sprache für objektorientierte technische Anwendungen. Unzufriedenheit über die Komplexität von C++ und die daraus resultierende mangelnde Sicherheit veranlasste das Team, ausgehend von C und C++ eine neue Sprache – die Sprache Java – zu entwickeln.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

4. Einfache Beispielprogramme

Mit dem Programm “Hello, world” in Kap. 1.1 und dem Programm “Punkt” in Kap. 2.1 haben Sie bereits erste Erfahrungen im Programmieren gesammelt. Programmieren kann viel Spaß bereiten. Im Folgenden sollen deshalb andere kurze aussagekräftige Programme vorgestellt werden, damit Sie sich spielerisch voran arbeiten, um dann auch Augen und Ohren für die erforderliche Theorie zu haben. Alle Programme des Buches befinden sich auch auf der beiliegenden CD, sodass Sie die Programme nicht abzutippen brauchen.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

5. Lexikalische Konventionen

Nachdem jetzt schon eine gewisse Erfahrung im Programmieren vorliegt, sollen in den Kapiteln 5.1 bis 5.3 die “Rechtschreibregeln” von Java behandelt werden. Wer nur für “die Schule programmiert” und viel Zeit hat, kann sich auch vom Compiler belehren lassen. Da Fehlermeldungen in manchen Fällen wie das Orakel von Delphi klingen können, kann die Fehlerbeseitigung durchaus zu einer spannenden Geschichte werden. Wer industriell programmieren möchte und von vornherein möglichst keine Fehler machen will, wird sich aus Effizienzgründen zuerst mit den Regeln befassen. Es bleiben ihm dann einige langwierige Diskussionen mit dem Compiler erspart.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

6. Datentypen und Variable

Datentypen stellen den Bauplan für Variable dar. Alle Variablen eines Datentyps haben dieselbe Darstellung im Arbeitsspeicher, d. h. dieselbe Anzahl von Speicherzellen und dieselbe Interpretation der einzelnen Bits. Verschiedene Variable können dabei individuelle Werte tragen. Eine Klassifikation der in Java verfügbaren Datentypen finden Sie im anschließenden Kapitel.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

7. Ausdrücke und Operatoren

Ein Ausdruck ist in Java im einfachsten Falle der Bezeichner (Name) einer Variablen oder einer Konstanten. Meist interessiert der Wert eines Ausdrucks. So hat eine Konstante einen Wert, eine Variable kann einen Wert liefern, aber auch der Aufruf einer Instanz- oder Klassenmethode kann einen Wert liefern. Der Wert eines Ausdrucks wird oft auch als Rückgabewert des Ausdrucks bezeichnet. Alles das, was einen Wert zurückliefert, stellt einen Ausdruck dar.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

8. Kontrollstrukturen

Kontrollstrukturen steuern den Kontrollfluss eines sequenziellen Programms. So können beispielsweise in Abhängigkeit von der Bewertung von Ausdrücken gewisse Anweisungen übergangen oder ausgeführt werden. Da Kontrollstrukturen einen einzigen Eingang und einen einzigen Ausgang haben, bleibt der Kontrollfluss einer Methode dennoch sequenziell.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

9. Blöcke und Methoden

Ein Block ist eine Folge von Anweisungen, die sequenziell hintereinander ausgeführt wird. Eine Methode ist eine Folge von Anweisungen, die unter einem Namen aufgerufen werden kann. Diese beiden Sätze enthalten bereits die Definition von Block und Methode. Den Aufbau von Blöcken und Methoden und die Verwendung lokaler Variablen als Zwischenspeicher für Daten benötigen Sie als grundlegendes Handwerkszeug beim Programmieren.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

10. Klassen und Objekte

In Java kann man nur objektorientiert programmieren. Die Klassenbäume der Vererbungshierarchien, die Zerlegungshierarchien für aggregierte Klassen und der Aufbau der einzelnen Klassen aus Datenfeldern und Methoden stellen das Skelett eines Programms dar. Das Fleisch auf den Knochen und die Muskeln, die das Skelett zum Leben und in Bewegung bringen, sind die Methoden, welche die Dynamik, d. h. die Verarbeitung von Daten, beschreiben.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

11. Vererbung und Polymorphie

Neben der Aggregation stellt die Vererbung ein wesentliches Sprachmittel der objektorientierten Programmiersprachen dar, um Programmcode wiederverwenden zu können. Bei der Vererbung wird der Quellcode einer Superklasse in einer abgeleiteten Klasse wiederverwendet. Bei der Aggregation werden vorhandene Klassen von den aggregierenden Klassen benutzt und damit wiederverwendet.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

12. Pakete

Eine moderne Programmiersprache soll das Design (den Entwurf) eines Programms unterstützen. Hierzu sind Sprachmittel erforderlich, die es erlauben, ein Programm in Programmeinheiten zu unterteilen, um das Programm übersichtlich zu strukturieren. Man spricht bei solchen Sprachmitteln auch vom “Programmieren im Großen”.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

13. Ausnahmebehandlung

Vor dem Einstieg in das Exception Handling von Java soll in Kapitel 13.1 das Konzept des Exception Handlings unabhängig von einer Programmiersprache vorgestellt werden.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

14. Schnittstellen

Eine Klasse enthält Methoden und Datenfelder. Methoden bestehen aus Methodenköpfen und Methodenrümpfen. Methodenköpfe stellen die Schnittstellen eines Objektes zu seiner Außenwelt dar.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

15. Geschachtelte Klassen

Geschachtelte Klassen werden in Java dazu eingesetzt, um Typen, die für die Implementierung einer Klasse benötigt werden, zu verbergen.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

16. Ein-/Ausgabe und Streams

Programme laufen fast immer nach dem Schema “Eingabe/Verarbeitung/Ausgabe” ab. Schon daran ist die Wichtigkeit der Ein- und Ausgabe in Programmen zu erkennen. Ein gutes Ein- und Ausgabe-System ist für die Akzeptanz einer Programmiersprache von großer Bedeutung. Gute Ein- und Ausgabe-Systeme sind jedoch nicht einfach zu entwerfen, denn es gibt nicht nur sehr viele Datenquellen (Tastatur, Dateien, Netzverbindungen), von denen Eingaben gelesen werden und Datensenken (Bildschirm, Dateien, Netzverbindungen), in welche die Ausgaben geschrieben werden, sondern mit diesen Datenquellen und Datensenken sollen Informationen auch in verschiedenen Einheiten wie z. B. Byte, Zeichen oder Zeilen ausgetauscht werden.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

17. Generizität

Seit dem JDK 5.0 wird die Definition generischer Klassen, generischer Schnittstellen und generischer Methoden von Java unterstützt.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

18. Collections

Collections sind – wie der Name schon andeutet – Zusammenstellungen von Daten, genauer gesagt von Objekten. Die Verwaltung und Bearbeitung von Daten ist eine elementare Aufgabe von Programmen. Zur Verwaltung dieser Daten im Arbeitsspeicher werden bei der Programmierung strukturierte Datentypen eingesetzt, welche die einzelnen Datenelemente enthalten. Die einfachste dieser Datenstrukturen ist das bekannte Array. Daneben kennt man jedoch in der Informatik noch eine Reihe weiterer Datenstrukturen mit unterschiedlichen Eigenschaften.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

19. Threads

Bei vielen Anwendungen ist es wünschenswert, dass verschiedene Abläufe für einen Benutzer parallel ablaufen. So möchte z. B. ein Nutzer eine Datei aus dem Internet laden, während er einen Text in einem Fenster des Bildschirms schreibt. Er wäre überhaupt nicht zufrieden, wenn er während des Ladevorgangs jegliche Aktivität einstellen und untätig auf den Abschluss des Ladens warten müsste.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

20. Applets

Wie schon der Name “Applets” vermuten lässt, handelt es sich bei Applets um kleine Applikationen – die Nachsilbe “let” stellt im Englischen die Verkleinerungsform entsprechend dem deutschen “chen” dar. Im Unterschied zu normalen Java-Applikationen sind Applets in eine HTML-Seite eingebettet. Anstatt von eingebettet spricht man auch oft von eingebunden. Für das Verständnis ist es jedoch einfacher, sich vorzustellen, dass innerhalb der HTML-Seite auf ein Applet verwiesen wird, das sich auf einem HTTP-Server befindet. Die HTML-Seite wird in einem ersten Schritt durch einen Browser von einem HTTP-Server über ein Netzwerk geladen und dann im Browser-Fenster dargestellt. Ein in der HTML-Seite eingebundenes Applet wird in einem zweiten Schritt durch den Browser von einem HTTP-Server geladen. Damit das Applet – was ja ein Java-Programm ist – ausgeführt werden kann, muss eine Java Virtuelle Maschine innerhalb des Browser gestartet werden. Sofern auf dem Rechner eine Java-Laufzeitumgebung installiert ist, ist auch automatisch ein so genanntes Java-Plugin installiert. Dieses Java-Plugin ermöglicht dann das automatische Starten der JVM aus dem Browser heraus, wenn ein Applet ausgeführt werden soll.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

21. Oberflächenprogrammierung mit Swing

Die in diesem Buch bisher vorgestellten Programme wurden über die Kommandozeile bedient. Während das bei kleineren Programmen noch problemlos möglich ist, wird die Bedienung über die Kommandozeile mit steigender Funktionsvielfalt eines Programmes immer komplexer. Um die Bedienung zu erleichtern, werden so genannte grafische Bedienoberflächen eingesetzt.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

22. Servlets

Mit Servlets kann die Funktionalität eines Web-Servers um die Fähigkeit der dynamischen Seitengenerierung erweitert werden. Bei der Technik der dynamischen Seitengenerierung erzeugt ein Programm in Abhängigkeit von Benutzereingaben die entsprechende Webseite und schickt diese zum Browser des Benutzers. Eine bereits klassische Technik für die dynamische Seitengenerierung sind CGI-Skripte, eine neuere Technik sind in Java geschriebene Servlets.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

23. JavaServer Pages

JavaServer Pages (JSP) bieten neben Servlets eine weitere Möglichkeit zur Erzeugung dynamischer Webseiten. Bei JSPs handelt es sich um einen Bestandteil der Java Enterprise Edition (Java EE) von ORACLE. JSPs nutzen Servlets als zugrunde liegende Technologie, weshalb sich zuerst das Lesen von Kapitel 22 empfiehlt. Hier wird auch die Installation des Apache Tomcat Servers beschrieben, auf dem die hier gezeigten Beispiele nachvollzogen werden können. Der wesentliche Unterschied von JSPs gegenüber herkömmlichen Servlets besteht darin, dass Java- Quellcode direkt in einer HTML-Seite eingebunden werden kann, ähnlich wie bei der Skriptsprache PHP. Somit können Programmierer leichter dynamische Webseiten erstellen, als dies mit Servlets der Fall wäre. Da bei Servlets der gesamte HTMLCode mittels Methodenaufrufen ausgegeben werden muss, geht bei der zu erzeugenden Webseite schnell die Übersicht verloren. Änderungen am Layout oder den statischen Inhalten der Seite sind schwerer durchführbar, da der HTML-Code nicht zusammenhängend oder formatiert angeordnet werden kann.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

24. Netzwerkprogrammierung mit Sockets

Um Ressourcen wie Drucker oder Datenspeicher mehreren Benutzern zugänglich zu machen, ist es notwendig, die einzelnen Computersysteme durch ein Netz zu verbinden. Das weltweit größte und wohl auch wichtigste Netz ist das Internet. Es ermöglicht beispielsweise seinen Benutzern, weltweit Daten abzurufen oder Informationen mittels Elektronischer Nachrichten (E-Mails) auszutauschen.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

25. Remote Method Invocation

Wie in Kapitel 24 gezeigt, kann die Kommunikation zwischen Anwendungsmodulen auf verschiedenen Rechnern mit Hilfe von Sockets erfolgen. Für größere Anwendungen kann diese Art des Nachrichtenaustauschs einen relativ großen Implementierungsaufwand bedeuten. Ein weiterer Nachteil besteht darin, dass der Compiler eine Überprüfung der Aufruf-Schnittstelle nicht durchführen kann, da nur ein Strom von Bytes übertragen wird. Eine Abhilfe schafft hier RMI (Remote Method Invocation), das unter Java eine weitere Kommunikationsmöglichkeit zwischen Programmen auf verschiedenen Rechnern zur Verfügung stellt. RMI weist die folgenden wesentlichen Eigenschaften auf:.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

26. JDBC

JDBC ist eine Low Level-API, die es ermöglicht, auf einfache Weise SQL-Anweisungen auszuführen. SQL (Structured Query Language) ist eine standardisierte Abfragesprache für relationale Datenbanken. Die Grundlagen von SQL werden in Kapitel 26.1.2 erklärt. JDBC ist eine API von Sun Microsystems und steht für “Java Database Connectivity”. Java bietet mit der JDBC-API einfache Möglichkeiten an, Daten aus Datenbanken in Objekte zu wandeln und diese wieder zurück in eine Datenbank zu schreiben. Außerdem ist JDBC unabhängig vom verwendeten Datenbankverwaltungssystem, sodass man das Datenbankverwaltungssystem wechseln kann, ohne die darüberliegende Anwendung ändern zu müssen. JDBC benutzt einen Treiber, um auf das jeweilige Datenbankverwaltungssystem zuzugreifen. Ist dieser Treiber netzwerkfähig, so können mit JDBC verteilte Anwendungen realisiert werden. Auf die unterschiedlichen Treibertypen wird in Kapitel 26.2 näher eingegangen.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

27. Enterprise JavaBeans 3.1

Im Folgenden wird die Enterprise JavaBeans (EJB)-Technologie in ihrer aktuellen Version 3.1 vorgestellt. Es kann von vorne herein klar gesagt werden, dass die Implementierung von Enterprise JavaBeans bereits seit der Version 3.0 erheblich vereinfacht wurde. Viele Dinge, die nach der alten Spezifikation, d. h. nach der Version 2.1, noch benötigt wurden – wie beispielsweise der Deployment-Deskriptor oder das Home-Interface einer Session-Bean – sind mit der neuen Version weggefallen oder werden nur noch optional eingesetzt. Mit der Version 3.1 wurde die Entwicklung von Enterprise JavaBeans nochmals vereinfacht. Die Spezifikation wurde außerdem um Punkte erweitert, auf die viele Entwickler schon lange gewartet haben wie zum Beispiel die Möglichkeit Methoden von Session-Beans asynchron auszuführen. Da EJB 3.0 noch häufig eingesetzt wird, wird in diesem Kapitel sowohl auf die Version 3.0, als auch die Version 3.1 eingegangen.
Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll

Backmatter

Weitere Informationen

Premium Partner

BranchenIndex Online

Die B2B-Firmensuche für Industrie und Wirtschaft: Kostenfrei in Firmenprofilen nach Lieferanten, Herstellern, Dienstleistern und Händlern recherchieren.

Whitepaper

- ANZEIGE -

Best Practices für die Mitarbeiter-Partizipation in der Produktentwicklung

Unternehmen haben das Innovationspotenzial der eigenen Mitarbeiter auch außerhalb der F&E-Abteilung erkannt. Viele Initiativen zur Partizipation scheitern in der Praxis jedoch häufig. Lesen Sie hier  - basierend auf einer qualitativ-explorativen Expertenstudie - mehr über die wesentlichen Problemfelder der mitarbeiterzentrierten Produktentwicklung und profitieren Sie von konkreten Handlungsempfehlungen aus der Praxis.
Jetzt gratis downloaden!

Bildnachweise