homedukeOOP mit Java: Spracheigenschaften von Java Prof. Dr. Uwe Schmidt FH Wedel

Spracheigenschaften von Java

weiter

weiter

Portabilität

Virtuelle Maschine
durch die Definition eines Interpretierers, einer Virtuellen Maschine
bewährtes Prinzip:
erprobt bei Pascal, Smalltalk, Prolog, TeX, ...
Datentypen plattformunabhängig
die Zahlenbereiche aller ganzen Zahlen sind in der Sprachdefinition festgelegt.
für die reellen Zahlen wird der IEEE-754-Standard zu Grunde gelegt

weiter

Objektorientiert

nur objektorientierte Sprachelemente
nicht wie in C++ prozedurale und objektorientierte Sprachelemente gemischt
Kapselung
alle Daten werden nur über Methoden gelesen und verändert
Vererbung
Wiederverwendung und Veränderung von Programmteilen durch Vererbung und Überschreiben von Methoden
Polymorphie
Objekte aus verschiedenen Klassen reagieren auf den Aufruf von gleich aussehenden Methoden unterschiedlich
Interfaces
keine Mehrfachvererbung, aber mehrere Schnittstellen zu einer Klasse

weiter

Multithreaded

Threads
zur Ausführung von Coroutinen, zur zeitlich unabhängigen, parallelen Ausführung von Berechnungen.
Synchronisation
mit Hilfe von
Monitore
und condition variables (nach C.A.R. Hoare).

weiter

Robustheit

keine Zeiger
keine expliziten Zeiger, nur Referenzen auf Objekte
keine expliziten Adressen
automatische Speicherverwaltung
für dynamisch erzeugte Objekte,
garbage collection
Indexüberprüfung
bei Feldzugriffen, nicht abschaltbar
Referenzüberprüfung
bei Referenzieren eines Objekts
Konversionen
keine unsicheren Konversionen,
keine Konversion von int nach Zeiger und umgekehrt

weiter

Sicherheit

Sicherheit
beim Laden von Programmteilen über das Netz
Bytecode Verifizierung
Authentifizierung
mit kryptografischen Verfahren

weiter

Flexibilität

dynamisch
können Programmteile zur Laufzeit dazugeladen werden
flexibel
nur die Teile (Klassen) einer Anwendung, die benötigt werden, werden geladen.
auf Anforderung
on demand
Klassen werden erst dann geladen, wenn sie gebraucht werden

weiter

Unterschiede zu C und C++

merke
kein Präprozessor
weiter
merke
keine
#define,
#ifdef ... #endif und
#include
Anweisungen
weiter
merke
keine typedefs
weiter
merke
keine Strukturen und Unions,
struct und union
weiter
merke
keine Variablen und Funktionen außerhalb von Klassen
weiter
merke
keine Mehrfachvererbung, aber mehrere Interfaces
weiter
merke
keine automatische Typumwandlung
weiter
merke
keine expliziten Zeiger
keine manuelle Speicherverwaltung für dynamische Datenstrukturen

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel