Vor- und Nachteile von JAVA
Java - Vorteile
-
ist eine Programmiersprache ;-)
-
ist einfach - weil strukturiert
-
unterstützt multi-threading
-
ist sicher
-
ist objektorientiert
-
ist robust
-
hat eine automatische Speicher-
und Heap-Verwaltung
-
kennt keine Pointers
-
ist dynamisch, was das Runtime-System angeht. Klassen
werden dann gelinkt, wenn sie benötigt werden.
-
wurde entwickelt, Anwendungen in Netzwerken zu unterstützen,
neue Module können über das Netzwerk implementiert werden
-
ist plattformunabhängig,
Java-Code ist ein Bytecode, kein Maschinencode
-
benötigt lediglich einen virtuellen Java-Processor,
der den Bytecode interpretiert und ausführt. Diese Java Virtual Machine
ist in nur ca. 200 KB Code zu implementieren. D.h., Geräte, die diese
200 KB JVM integriert haben, können Java-Programme ausführen.
-
stellt standardmäßig eine Bibliothek für
einheitliche Grafikfunktionen von verschiedenen Windows-Systemen (Windows,
X-Windows etc.) zur Verfügung, das Abstract Window Toolkit (AWT, java.awt)
-
Applets sind einfach in WWW-Seiten einzubinden, können
aus dem WWW geladen und ausgeführt werden nutzt die Ressourcen des
lokalen Rechners, auf dem Java Programme ausgeführt werden
Java - Nachteile:
Der größte Vorteil ist auch
gleichzeitig ein Nachteil: die Performance ist verringert, da Java-Code
vom Interpreter (der die Plattformunabhängigkeit erst möglich
macht) interpretiert wird. Momentan sind Java-Applikationen etwas langsamer
als vergleichbare Anwendungen, die in C++ geschrieben wurden
Java – Begriffe
Einige Bemerkungen zu gerade genannten Begriffen und Eigenschaften
von JAVA .
Java ist sehr stark an C++ angelehnt, hat aber Besonderheiten, die es
für die geplante Anwendung im Netz besonders auszeichnen sollen. Am
leichtesten werden es ProgrammiererInnen haben, denen die Syntax von C++
geläufig ist. Für alle NichtprogrammiererInnen ist Java genauso
leicht oder schwer zu erlernen wie jede andere Sprache, auch wenn Sun behauptet,
Java sei besonders einfach.
Die Eigenschaften kurz erläutert :
- Objektorientiert
In Java geschriebene Programme benutzen Objekte. Objekte werden in
zwei Bestandteile unterteilt, Datenelemente und die dazugehörigen
Funkionen (Methoden). Inhalte von Datenelementen repräsentieren den
Zustand, in dem ein Objekt sich gerade befindet. Funktionen sind Operationen,
die ein Datenobjekt von einem Zustand in einen anderen versetzen. Die Gesamtheit
von Objekten mit gleichen Eigenschaften wird als Klasse bezeichnet. Objektorientiertes
Programmieren ist die Zusammenstellung von Klassenbeschreibungen, d.h.
die Beschreibung der Datenelemente, die jedes Objekt der Klasse enthält,
sowie der Funktionen, die auf jedes Objekt der Klasse anwendbar sind. Diese
sind z.B. im Rahmen eines größeren Programmpaketes wiederverwendbar.
Somit kann man sich im Laufe der Zeit eine umfangreiche Bibliothek (Klassenbibliothek)
verschiedener Objekte anlegen. Ein Satz Bibliotheken für Standardaufgaben
(wie z.B. Ein/Ausgabe oder Graphik) wird zur Sprache mitgeliefert.
- Plattformunabhängigkeit
Die Plattformunabhängigkeit/Architekturneutralität ergibt
sich aus der Tatsache, daß Java-Programme zunächst in neutralen
Byte-Code kompiliert werden. Byte-Codes ähneln Maschinenbefehlen,
sind jedoch nicht für eine bestimmte Maschine spezifisch. Die Quellcodes
in Java werden zu Dateien vom Typ .class kompiliert, die das Programm in
Bytecode enthalten. Die Bytecodes können nun auf jeder Plattform laufen,
die Java unterstützt. Sie werden quasi beim Starten interpretiert
und ausgeführt.
- Multithreading
Threads sind parallele Aktionen, die ein Programm gleichzeitig ausführen
kann. Das heißt, ein Thread kann eine Berechnung durchführen,
wobei gleichzeitig ein anderes Thread eine Benutzerinteraktion ermöglicht.
Es gibt also weniger Wartezeiten. Java hat leicht benutzbare Synchronisationseigenschaften,
die die Schwierigkeiten der Programmierung solcher Umgebungen einfacher
machen sollen.
- Sicher und robust
Java-Programme können vor der Ausführung verifiziert werden,
da sie keine Zeiger haben und in Bytecode vorliegen. Die Verifizierung
wird von Web-Browsern benutzt, um sicherzustellen, daß keine Viren
enthalten sind. Java verwendet nicht Adressen aus Zahlen, sondern Namen
für Funktionen und Methoden, die leicht überprüft werden
können. So kann kein Java-Applet etwas ausführen oder auf etwas
zugreifen, was nicht ausdrücklich im Verifizierungsprozess definiert
worden ist. Dadurch, daß jeder Speicherzugriff geprüft wird,
kommt es nicht zu Computerabstürzen.
- Garbage Collector
Wird ein Speicherbereich des Rechners nicht mehr benötigt, muß
ein Programmierer, der in C oder C++ (und vielen anderen Sprachen) programmiert,
darauf achten, daß das Programm ihn zur Neubenutzung wieder freigibt.
Diese Speicherverwaltung erfordert große Genauigkeit. Bei Java erledigt
dies ein eingebautes Programm, der Garbage Collector, das den Speicher
scannt und nicht mehr gebrauchte Speicherbereiche wieder freigibt.
Vergleich mit anderen Programmiersprachen
Java ist eine objektorientierte, interpretative, hardwareunabhängige,
netzwerkfähige, multitaskingfähige, dynamisch erweiterbare
Programmiersprache mit strenger Typisierung und einigen Sicherheitsmaßnahmen.
Die Ausführungsgeschwindigkeit von Javas
Bytecode ist genügend gut für Benutzerinterfaces. Zeitkritische
Programmabschnitte lassen sich vor der Ausführung in direkte
Maschinencode des Zielrechners umwandeln. Der Compiler macht ein paar
Optimierungen und erzeugt relativ guten Code.
Java ist streng typisiert und zwingt die Programmierer, frühzeitig
Entscheidungen zu treffen. Anderenseits unterstütz er sie auch,
indem er viele mögliche Fehlerquellen schon zur Kompilierzeit
aufdeckt. Da Java erst sehr spät die eigentlichen
Methodenaufrufe bindet und keinerlei Aussagen über das Layout
der Klassen im Speicher von Zielsystem erlaubt, zwingt er die
Programmierer, von unsauberem Programmierstil abzusehen. Hier noch
ein Vergleich mit anderen Programmirsprachen:
Vergleich von Java mit anderen Programmiersprachen. Quelle: Sun Microsystems
In der Programmiersprache Java hat man versucht, die besten Eigenschaften
von C++, SmallTalk, Oberon, Eiffel, Perl und
anderen Programmiersprachen zu vereinen. Es ist ein Kompromiß
zwischen einer hohen Ausführungsgeschwindigkeit, guter
Portierbarkeit und Felxibilität.
|
Benutzer: Gast
Besitzer: seminar Zuletzt geändert am:
|
|
|