kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Einführung in die Programmierung mit Java für C++ - Programmierer mit besonderem Augenmerk auf die Bedürfnisse in der Mechatronik

Externe Links


http://openbook.galileocomputing.de/javainsel8/ - Java ist auch eine Insel - Tolles Java-Buch online verfügbar.
http://www.dpunkt.de/java/Referenz/index.html - Java Referenz in Deutsch
http://java.programmersbase.net/ - Grundlagen ohne GUI
http://de.wikibooks.org/wiki/Java_Standard - weitere
java001.zip - Beispiele aus den Kapiteln 1.1 und 1.2

Zur Orientierung

Besonderheiten von Java

  • Java geht auf die Sprache Duke zurück, mit der es möglich sein sollte Plattform unabhängig Programme für eingebettete Systeme zu entwickeln.
  • Duke hat sich nicht durchgesetzt, jedoch wurde von der Firma Sun die Bedeutung des Internets und die Möglichkeit erkannt, Duke als Plattform-unabhängige Internet-Sprache umzukonzipieren.
  • Die neue Bezeichnung Java geht auf ein modisches Wort für Kaffee zurück und ist ein spontaner Einfall gewesen.
  • Die hier behandelten Beispiele basieren auf einer Java-Version ab 1.6.0
  • Java ist eine objektorientierte Sprache, deren Syntax weitgehende Übereinstimmung mit C hat.
  • Java-Quellcode wird wie C oder C++ Quellcode kompiliert.
  • Es entsteht dabei aber kein Maschinenprogramm für die aktuell benutzte Plattform, sondern "Bytecode".
  • Dieser "Bytecode" ist ein Maschinenprogramm für einen virtuellen Rechner ("virtual machine"), der eine Schicht zwischen Hardware und Bytecode bildet.
  • Dieser virtuelle Rechner interpretiert den Bytecode.
  • Jedoch geschieht dies viel schneller, als bei Skriptsprachen, weil die Struktur des "Bytecodes" sehr hardwarenah ist.
  • Jede "virtual machine" verhält sich gegenüber jedem "Bytecode" gleich.
  • Damit ist es Möglich den einmal kompilierten Bytecode auf jeder Hardwareplattform laufen zu lassen, wenn für diese eine passende "Virtual Machine" zur Verfügung steht und einmal installiert wurde.
Für jede Plattform muß einmal eine passende Virtual Machine installiert werden, dann kann der gleiche Java-Bytecode auf allen Plattformen laufen.

Bild 0-1: Für jede Plattform muß einmal eine passende Virtual Machine installiert werden, dann kann der gleiche Java-Bytecode auf allen Plattformen laufen.

Java und das Internet

  • Für die gängigsten Internet-Browser existieren Java-Plugins, die es erlauben Java-Bytecode in dem Browser ablaufen zu lassen.
  • Es muß also nur der Bytecode über das Internet übertragen werden.
  • Dieser wird in einer speziellen Form, dem Java-Applet, in eine Internetseite eingebettet.
  • Wird diese Seite aufgerufen, wird auch der Bytecode geladen und gestartet.
  • Diese Technik erlaubt es, dynamische Webseiten mit GUI-Elementen und z.B. animierten Grafiken schnell verfügbar zu machen.
  • Eine komfortable Benutzerschnittstelle kann beispielsweise so geschaffen werden, ohne dass jede Änderung auf der Internetseite erst über eine Kommunikation mit dem Server erreicht werden müßte.- Das Java-Applet läuft lokal auf dem Client-Rechner.
  • Die verfügbaren Java-Bibliotheken sind sehr umfangreich.
  • Mit deren Hilfe können neben GUI-Anwendungen auch Netzwerktechnik, Datenbankverwaltung, 3D-Visualisierung usw. betrieben werden.
  • Jedoch gibt es für Applets aus Sicherheitsgründen die Beschränkung, das diese Programme niemals auf Daten und Programme des Client-Rechners zugreifen dürfen.
  • Darum ist es mit Applets auch nicht möglich, Dateien auf der eigenen Festplatte zu schreiben, oder von diesen zu lesen, noch ist es möglich fremde Programme zu starten.
  • Dies wird mit "Sandbox"-Prinzip bezeichnet (Es darf nur im Sandkasten gespielt werden, aber niemals außerhalb).
  • Neben den Java-Applets gibt es im Internet-Bereich auch spezielles Server-seitig laufendes Java.
Laden und Starten eines Applets

Bild 0-2: Laden und Starten eines Applets

Java als lokales Anwendungsprogramm

  • Eine Alternative zu der Programmierung von Java-Applets, stellt die Programmierung von Java-Applikationen dar.
  • Hier ist der Zugriff auf die Resourcen des Rechners erlaubt.
  • Während in Klassen, die von der Basisklasse Applet erben schon die Möglichkeit vorbereitet ist, Grafik und GUI-Elemente einzubetten, muß dies bei Applikationen durch Erben von speziellen Fensterklassen geschehen.
  • Die umfassende GUI-Bibliothek ist "awt", eine "schickere" eingeschränktere, die deshalb meistens mit "awt" kombiniert werden muß, ist "swing"
  • Neben der Steuerung fremder Programme gibt es bei Java-Applets auch weniger Beschränkungen bei der Netzwerkprogrammierung.

Verfügbare Bibliotheken

  • Während bei C/C++ - Anwendungen es häufig nicht so einfach ist, Anwendungen zu kombinieren, die auf verschiedenen Bibliotheken basieren, sind die verfügbaren Bibliotheken bei Java alle gut aufeinander abgestimmt.
  • Insbesondere ist deren Handhabung konsistenter und durchgehend rein objektorientiert, was bei der hybriden Sprache C++ bei vielen Bibliotheken nicht durchgehalten wird.
  • Insbesondere bedarf es auch keiner besonderen Angaben beim Kompilieren, um bestimmte Bibliotheken mit zu benutzen.
  • Die Include-Angaben im Kopf der Quelltexte reichen in den meisten Fällen aus.
  • Tatsächlich liegt die Stärke von Java vor allem in der Verfügbarkeit einer ungeheuren Vielfalt an Bibliotheken für die unterschiedlichsten Anwendungen.

Vor- und Nachteile gegenüber C++ im Hinblick auf mechatronische Anwendungen

  • Durch die Vielfalt kostenlos verfügbarer Bibliotheken, gelangt man mit Java oft schneller an's Ziel bei der Programmierung.
  • Jedoch ist die Interpretation des Bytecodes bei Java immer langsamer, als ein kompiliertes C oder C++ - Programm.
  • Außerdem bringt die Plattform-unabhängigkeit bei Java gewisse Einschränkungen bei den Zugriffsmöglichkeiten auf Hardware-Recourcen, wie serielle/parallele Schnittstelle, Meßkarten, etc. wie sie in der Mechatronik wichtig sind.
  • Dagegen sind die Kernels von Linux und Windows in C geschrieben, weshalb es deshalb viel einfacher ist, Hardware über C-Programme anzusprechen.
  • Zwar ist es grundsätzlich möglich hierfür so genannten "native"-Code in Java einzubinden, doch der Aufwand ist hoch und im Rahmen unserer Aktivitäten wird man statt dessen eher fremde Anwendungen von Java aus steuern.
  • Gerade für Handys, Palms und vergleichbaren Geräten wird aber häufig eine Java-API (Application programming interface) zur Verfügung gestellt und mit ihr gleich besondere Klassen zum Ansprechen der Hardware.

Weitere besondere Möglichkeiten bei Java

  • Es ist möglich oft gemeinsam verwendete Klassen zu einem .jar-File zusammenzufassen. Dieses Zusammenpacken von Bibliotheken erlaubt die Definition von Namensräumen und erlaubt ein schnelleres Laden einer Anwendung, die aus mehreren Klassen besteht, über das Internet.
  • Ferner ist es möglich mit dem Befehl "javadoc" automatisch Dokumentationen von Klassen zu erstellen, wenn innerhalb der Klassen spezielle Kommetare der Form /** Kommentar */ verwendet wurden.