Heutiger und zukünftiger Stand von Java


... [Seminar WWW und Java] ... [Strategische Bedeutung von Java]... [Kampf um das zukünftige Java] ...

Übersicht: Heutiger und zukünftiger Stand von Java


Zahlen


Geschwindigkeit

Folgerungen:


Sprachliche Eigenschaften von Java: Überblick

laut Anbieter

Kritik

Einfach

nur einfacher als C++

Objektorientiert

es gibt bereits genug andere OO- Programmiersprachen

Verteilbar

Sicherheit der Quellen

Interpretierbar

keine sprachliche Eigenschaft

Robust

Sicherheit der Programmausführung

Sicher

kritisch

Architekturneutral

Ziel jeder höheren Programmiersprache

Portabel

Ziel jeder höheren Programmiersprache

Leistungsstark

keine sprachliche Eigenschaft

Multithreaded

für Client/Server benötigt

Dynamisch

Sicherheit der Links


Sicherheit

Warum ist Sicherheit für Java so wichtig?

Folgerungen:

Sicherheit durch Robustheit

Folgerungen:

Sicherheit des Java-Systems

Applet Sicherheit:

Sicheres Laden von Klassen:

Sicherheitslücken:

Sicherheitslücken, die bekannt sind, aber nicht viel Schaden anrichten können. Speicherallokation: Anlegen von immer neuen Objekten, so daß Speicher blockiert wird.Verwendung von vielen Threads: Verwaltungszeit wird benötigt. In die Gutmütigkeit des Anwenders vertrauen: "Speichere mich lokal und starte mich erneut."

Notwendigkeit von Sicherheitsmechanismen im Netz

Übersicht

Sicherheitsdienst

Mechanismen

Vertraulichkeit

Verschlüsselung

Verhinderung einer Verkehrsflußanalyse

Verschlüsselung, Fülldaten, Routingkontrolle

Erkennung der Datenunversehrtheit

Verschlüsselung, Elektronische Unterschrift, Datenunversehrtheitmechanismus

Authentifikation des Kommunikationspartners

Verschlüsselung, Elektronische Unterschrift, Authentifikationsprotokoll

Authentifikation des Ursprungs der Daten

Verschlüsselung, Elektronische Unterschrift

Zugangs- und Zugriffskontrolle

Zugangskontrollmechanismus

Urhebernachweis

Elektronische Unterschrift, Datenunversehrtheitmechanismus

Empfängernachweis

Elektronische Unterschrift, Datenunversehrtheitmechanismus

Integration in Java:


Vergleich mit einer anderen höheren Programmiersprache

Vergleich von ausgewählten einfachen Datentypen (in Java)

Vergleich

Java (mit Kommentar)

C++

Zeiger

nicht vorhanden: sicherer, Fehlervermeidung, weniger Möglichkeiten

vorhanden

Zeichen

Speicherung als 16-Bit-Unicode: Vorteile für internationale Zeichen

Speicherung als ein Byte

Zeichenketten

Unterscheidung in konstante und variable Zeichenketten: Fehlervermeidung

vorhanden

numerische Datentypen

nur vorzeichenbehaftet: Fehlervermeidung, weniger Möglichkeiten

vorzeichenbehaftete und vorzeichenlose

Boolsche Werte

vorhanden: irgendwie logisch

nicht vorhanden

Aufzählungstyp, Typdefinition, zusammengesetzte Datentypen und Varianten

nicht vorhanden: als Objekte formulierbar

vorhanden

Folgerung: Die bessere Objektorientierung, die aber bereits Eiffel und Smalltalk haben, und einfachere Handhabung werden durch weniger Möglichkeiten erkauft

Vergleich von ausgewählten Objekten (in Java)

Vergleich

Java(mit Kommentar)

C++

Felder (Arrays)

Zur Laufzeit wird eine Überprüfung auf korrekten Zugriff innerhalb der Dimensionen des Feldes durchgeführt: Felder werden wie Objekte behandelt, aber Fehler werden vom System überprüft

statische Feldalloziierung ohne Überprüfung auf Zugriffe außerhalb der definierten Grenzen des Feldes oder dynamisch über Objekte und programmierte Überprüfung

Mehrfachverer- bung

nicht vorhanden, nur Klassenerweiterung möglich

vorhanden

parametrische Module (Logik des Zugriffs ändert sich nicht [Stack, Liste, Schlange ...], aber für verschiedene Datentypen einsetzbar)

nicht vorhanden wegen dem Versuch eines statischen Typsystems: Sicherheit wird sich durch Codeökonomie erkauft, größter Mangel

vorhanden: templates

Speicherver- waltung

wird vom System übernommen, Garbage Collection durch Thread im Hintergrund: Fehlervermeidung aber wann erfolgt die Freigabe?

explizite Freigabe von Speicherblöcken durch den Programmierer

Typkonversion und -umwandlung

einschränkt: Sicherheit

Implizit und Explizit

Folgerung: Generelle Probleme objektorientierter Sprachen bleiben bestehen (z.B.negative Typrekursion: Die Klasse Dreieck erbt von der Klasse Polygon auch die Methode "Füge Ecke hinzu". Der Verzicht auf sprachliche Mittel (besonders der parametrischen Module) stellt einen Rückschritt dar.

weitere Vergleiche

Vergleich

Java (mit Kommentar)

C++

Namesräume

Packages, Klassen, Felder: zusammengehörende Klassen sind besser als Ausnahmeregeln

Global, Klassen

Thread-Support

vorhanden: im Netz notwendig um Client/Server zu unterstützen

nicht vorhanden

Folgerung: Java ist besser auf Netze ausgerichtet


... [Seminar WWW und Java] ... [Strategische Bedeutung von Java]... [Heutiger und zukünftiger Stand von Java] ... [Kampf um das zukünftige Java] ...