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