Webdesign

von Prof. Jürgen Plate

Skript-Sprachen

Über Bilder, Animationen, VRML hinaus kann in Webseiten auch Programmcode für Interaktionen mit Formularen oder zur direkten Ausführung durch den Benutzer eingefügt werden. Typische Vertreter sind Programmiersprachen wie Java, JavaScript oder ActiveX. Neuestes Lieblingskind der "Zappel-Fraktion" ist FLASH, denn hier wird Interaktion und Animation vereint.

Java

In Java wurden zum zum einen erfolgreiche Konzepte aus bereits bestehenden Sprachen (z.B. C, C++, Smalltalk, Eiffel, Ada, Objectiv-C) übernommen, zum anderen neue Konzepte verwirklicht.

Java ist eine junge Interpretersprache, die viele mächtige Konzepte in sinnvoller Weise integriert. Sie völlig objekt-orientiert, interpretiert, einfach, architekturneutral, portabel und sicher. Eine gute Performance kann durch Multithreading und optionalen Nativecode erreicht werden. Ausgiebige Compilierzeitüberprüfungen und strikte Laufzeitckecks garantieren ein robustes und sicheres Verhalten der Applikationen. Sie kann somit neben der Möglichkeit des schnellen Prototyping als eine stabile Basis für verteilte und erweiterbare Systeme dienen.

Die wesentlichen Gesichtspunkte sind:

Java ist objektorientiert

Java ist vollkommen object-orientiert. Jede objekt-orientierte Sprache sollte Minimum der folgenden Charakteristiken in sich haben: All diese Anforderungen werden von Java in hohem Maße erfüllt. Es werden sogar zusätzlich weitere runtime-features geboten, die die Software-Entwicklung einfacher machen können.

Wichtige Begriffe in diesem Zusammenhang die auch in Java vorkommen sind:

Klassen:Definiert Attribute und Methoden
Object :instanzierte Klasse
Message:Aufruf einer Methode eines anderen Objektes
Constructor:Methode, die die Initialisierung eines einer Klasse instanzierten Objektes vornimmt
Destructor:Gegenstück zum constructor.
Access Control:Bei der Deklarierung einer Klasse können Attribute und Methoden mit verschiedenen Zugriffsleveln (public, protected, private, friendly) versehen werden.
Abstract Methods:Methoden, die in einer Klasse deklariert werden, deren Implementierung aber erst in einer Subklasse erfolgt.
Packages:Java-konstrukt, das eine Sammlung von zusammengehörenden Klassen bildet.

Wichtige Eigenschaften von Java

Was Java hat

Eigenschaften, die nicht von C oder C++ übernommen wurden:

Java ist architekturunabhängig und portabel

Durch die Verwendung von byte-code im Gegensatz zum Binärcode ist Java völlig architekturneutral. Java-Programme lassen sich auf allen Plattformen ausführen, auf welche die Virtual Machine portiert wurde. Portierungen werden durch die strikte Sprachspezifikation unterstützt.

Java ist robust

Java ist eine Sprache, die gedacht ist für robuste, zuverlässige und sichere Applikationen. Um dies zu erreichen wird ein striktes compile-time checking durchgeführt, das es ermöglicht Syntaxfehler früh zu entdecken. Java ist eine sehr typorientierte Sprache. Viele C-Freiheiten, wie etwa implizite Deklaration von Funktionen sind nicht erlaubt. Besondere Stützen der Robustheit sind die Abschaffung von Pointern, die Verwendung von echten Arrays, ein Speichermodell, das die unerlaubte Überschreibung von Speicherbereichen verhindert und strengere Casting-Regeln.

Java ist multithreaded

'Multithreaded programming' ist in den meisten bisherigen Programmiersprachen sehr oft ein schwieriges (oft sogar unmögliches) Unterfangen. Java stellt zur Programmierung und Verwaltung von threads eine eigene Klasse zur Verfügung. Von dieser können threads als ein neues Objekt instanziert werden. In ihr werden Methoden zum Starten, Stoppen und Abfragen des Statuses des threads bereitgestellt.

Die größten Probleme tauchten bisher bei der Synchronisation der threads und bei der Vermeidung von deadlocks auf. Java stellt eine Menge von synchronization primitives zur Verfügung, die im Wesentlichen auf das von C.A.R. Hoare eingeführte monitor and condition variable-Paradigma basieren.

Java stellt eine auf Sprachebene integrierte Multithreadingunterstützung bereit. Damit können Methoden auf einfache Weise synchronisiert und das Problem der concurrency gelöst werden. Methoden laufen dann unter Aufsicht eines 'Monitors', der sicherstellt, daß Variablen in einem konsistenten Zustand bleiben.

Java hat einen Garbage Collector

Java hat einen integrierten Garbage Collector, der als ein Hintergrundthread mit niederer Priorität implementiert ist. Der GC dealloziert Objekte, die nicht mehr referenziert werden. Bei der Programmierung äussert sich dies darin, dass Objekte nicht explizit dealloziert werden müssen (z. B. im Destructor). Letzteres ist zwar möglich, aber es entscheidet der GC.

Java ist sicher

Bereits bei der Konzeption von Java wurden grundlegende Überlegungen bezüglich der Sicherheit angestellt. Der Java-Compiler und das Laufzeitsystem integrieren mehere Abwehrschichten gegen potentiell gefährlichen Code. Am wichtigsten ist sicherlich das Speicherallozierungs- und -referenzierungsmodell. Entscheidungen über die Speicherbelegung werden nicht vom Compiler (wie in C oder C++), sondern erst zur Laufzeit vorgenommen. Intern verwendet Java sogenannte 'handles' die zur Laufzeit in physikalische Addressen aufgelöst werden. Dies geschieht sehr spät und z. T. auch abhängig von der Architektur, jedoch völlig transparent für den Programmierer.

Was passiert, wenn gefährlicher Code auf einen Server generiert und zur Laufzeit auf dem client ausgeführt wird? Obwohl der Java-Compiler beim übersetzen das Einhalten von bestimmten Sicherheitsregeln garantiert, bleibt er natürlich machtlos, wenn Code-Fragmente zur Laufzeit on-the-fly gelinkt werden. Wie kann also das Laufzeitsystem dem hereinkommenden byte-code stream vertrauen, der vielleicht von einem nicht vertrauenswürdigen Compiler erzeugt wurde? Die Antwort ist einfach: Java traut dem Code nicht und unterwirft ihn deshalb dem byte-code-Verifizierungsprozeß. Dieser beinhaltet eine Reihe von sinnvollen, restriktiven Maßnahmen. Darunter sind einfache Typüberprüfungen, Ausklammerung von Pointern, Ausschluß von Stack-Über- und -Unterläfen, strikte Parameterüberprüfung, strikte Typkonvertierungen, Überprüfung der Speicherzugriffsrestriktionen. Weiter wird getestet, daß Objekte wirklich nur als solche verwendet werden.

Daten- und Kontrollfluß vom Java-Quellcode bis zur Ausführung.

Trotz der ausgedehnten Verifizierungsprozeß bleibt Java (laut Sun) immer noch schnell genug, da der Java-Interpreter von jeder weiterer Überprüfung hinsichtlich der Sicherheit befreit ist und damit mit vollen Geschwindigkeit arbeiten kann.

Weitere Sicherheitsaspekte sind im Java Networking Package implementiert, welches es erlaubt verschiedene Sicherheitsebenen zu konfigurieren. Diese sind:

Zum Weiterlesen über Java ein Vortragsmanuskript von Antje König.

Wer sich für Java interessiert, findet Java-Seiten mit vielen Demos, den HotJava-Browser (für SUNs) und Java-Entwicklersoftware auf dem Server von SUN Microsystems unter http://java.sun.com.

Active-X

Microsoft will mit eigener Internet-Technologie Standards setzen und hat, gewissermaßen als Konkurrent zu Java, seine Active-X-Technik entwickelt. Active-X ist eine Microsoft-Technik zur Erzeugung interaktiver Web-Seiten mithilfe von Controls, Skripts und Softwarepaketen, wie zum Beispiel Textverarbeitungen und Tabellenkalkulationen.

Was ist Active-X?

Ein Active-X-Control ist ein kleines Windows-Programm, das sich nur mit Hilfe eines Web-Browsers ausführen läßt. Wenn Sie im Internet auf eine mit einem Active-X-Control ausgestattete Seite kommen, werden nicht nur Text und bunte Bilder angezeigt, sondern auch ein Programm auf Ihren Rechner geladen und ausgeführt. Im ungünstigsten Fall merken Sie gar nicht, daß ein Active-X-Control in eine Web-Seite eingebunden ist und automatisch ausgeführt wird, während Sie die Seite anschauen und sich in trügerischer Sicherheit wähnen.

Der Sinn von Active-X ist aus Sicht von Microsoft:

Die Active-X-Technologie besteht aus folgenden Komponenten:

Active-X-Controls

sind Elemente wie Schaltflächen, Listboxen, Bildlaufleisten usw., die auf Web-Seiten plaziert und dort benutzt werden können. Dadurch wird ein hoher Grad an Interaktion mit dem Anwender erreicht.

Active-X-Scripting

Active-X-Controls werden mit sogenannten Skripts gesteuert. Skripts sind Programme, die in HTML-Seiten eingebaut und somit für jedermann lesbar sind. Skriptsprachen sindVisual-Basic-Script (VB-Script) und Java-Script.

Active-X-Dokumente

Sie funktionieren wie OLE-Verbunddokumente. Ein Browser (Container) kann zum Beispiel ein Excel-Sheet anzeigen (Excel ist dann der Server), ohne das man den Browser verlassen muß - sofern man Excel hat. Man kann so Dokumente ganz verschiedener Formate in das Netz posten und jeder, der auch den entsprechenden Server hat, kann sie betrachten. Damit wird aber der Nutzerkreis aber auf die Anwender von Microsoft-Produkten eingeschränkt und die gemeinsame Sprache des WWW, HTML, ausgegrenzt.

Active-X-Conferencing

Eine Kommunikations-Technik, die noch in der Entwicklung ist. Active-X-Conferencing erlaubt die Anwendung einer Software, die auf einem einzigen Rechner läuft, durch mehrere Personen gleichzeitig, die über ein Netzwerk verbunden sind. Dieses Netzwerk kann das Internet aber auch das Intranet sein. Damit sich die teilnehmenden Personen auch von "Mensch zu Mensch" unterhalten können, während sie gemeinsam eine Software steuern, gibt es eine Voice-Verbindung. Diese Voice-Verbindung funktioniert bisher aber nur zwischen zwei Teilnehmern. Für die Zukunft ist auch eine Video-Verbindung geplant.

ActiveMovie

Zur Übertragung von Audio und Video-Daten über Netze gibt ist ActiveMovie. ActiveMovie soll ermöglichen, daß die Audio- und Video-Daten nicht erst komplett auf den eigenen Rechner geladen werden müssen bevor man sie abspielen kann (was unter Umständen ziemlich lange dauern kann), sondern die Übertragung erfolgt in Echtzeit. Voraussetzung ist natürlich, daß die Verbindung schnell genug ist.

Gefahren von Active-X

Im Gegensatz zu Java lauern hier Gefahren für den Computer des Websurfers. Hinter einem Active-X-Control verbirgt sich ja nichts anderes als ein normales Windows-Programm. Es kann also alles tun, was auch jedes andere Windows-Programm tun kann: Daten von Ihrer Festplatte übers Netz versenden, Viren installieren - oder einfach nur die Festplatte formatieren. Active-X-Programme sind also ein Risikofaktor und sollten nur unter bestimmten Voraussetzungen eingesetzt werden.

Der Chaos Computer Club demonstrierte der Öffentlichkeit die Risiken von Active X: Die Hacker programmierten ein Active-X-Control, das der Finanz-Software Quicken einen Überweisungsauftrag unterjubelte. Der Auftrag wurde so gespeichert, daß er beim nächsten T-Online-Connect automatisch ausgeführt würde.

Active-X-Programme laufen derzeit nur mit dem Microsoft Internet-Explorer ab Version 3. Damit Active-X-Controls mit einem Netscape-Browser funktionieren, muß man ein spezielles Active-X-Plug-in installieren.

Beim Installieren von Active-X-Komponenten wird manchmal ein 'Zertifikat' angezeigt. Wer Active-X-Programme schreibt, kann sich ein solches 'Zertifikat' besorgen, das nach dem Laden der Webseite angezeigt wird. Dieses Zertifikat soll garantieren, daß das Active-X-Control wirklich im Originalzustand vorliegt. Gewährleistet wird das durch eine verschlüsselte Quersumme, die beim Herausgeber des Zertifikats hinterlegt ist und die mit der des Programms verglichen wird. Ein gültiges Zertifikat heißt jedoch keinesfalls, daß Sie einem Active-X-Control blind vertrauen können. Der bisher einzige Zertifizierer, Verisign Commercial Software Publishers CA, prüft nicht, was ein Active-X-Control auf einem Rechner anstellt, sondern nur, ob das Programm nach der Zertifizierung verändert wurde. Nachdem jeder sein Active-X-Control zertifizieren lassen kann, besteht auch die Möglichkeit, daß gefährliche oder schädliche Active-X-Controls ein Zertifikat bekommen. Dabei muß nicht einmal böse Absicht des Programmierers im Spiel sein, denn "Man soll nie Absicht vermuten, wo Dummheit als Begründung ausreicht." Insofern hat das Zertifikat höchst zweifelhaften Wert.

Wird auf einer Webseite ein Zertifikat angezeigt, hängt es davon ab, wo Sie sich befinden: Handelt es sich um eine renommierten Firma, können Sie ein zertifiziertes Active-X-Control ohne großes Risiko installieren. Befinden Sie sich dagegen auf einer privaten oder halbprivaten Seite, sollten Sie auch mit zertifizierten Komponenten sehr vorsichtig sein. Programmierfehler können sich natürlich auch in Controls großer Unternehmen befinden.

Wie erfahre ich, welche Active-X-Controls schon auf meinem PC sind?
Wenn Sie schon massenhaft Active-X-Controls auf Ihrer Platte haben, hilft die Freeware 'Active-XCavator'. Sie listet alle installierten Controls einschließlich diverser Dateiinformationen (Verzeichnis, Größe) auf und kann auch einzelne Controls löschen. Das Programm gibt es unter http://www.winmag.com/software/xcavate.htm.

JavaScript

Zu dieser Sprache gibt es ein eigenes Skript: Clientseitige Interaktion: JavaScript.

Zum vorhergehenden Abschnitt Zum Inhaltsverzeichnis Zum nächsten Abschnitt


Copyright © FH München, FB 04, Prof. Jürgen Plate