 |
Webdesignvon 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.
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:
- Objektorientiert
- Eigenschaften
- Architekturunabhängig und portabel
- Robustheit
- Multithreading
- Garbage Collection
- Sicherheit
Java ist objektorientiert
Java ist vollkommen object-orientiert. Jede objekt-orientierte Sprache
sollte Minimum der folgenden Charakteristiken in sich haben:
- Encapsulation: Informationen (oder genauer Attribute und Methoden) werden gekapselt, d.h. konkrete Implementierung und Strukturen sind f&uumr den Anwender nicht sichtbar. Lediglich Funktionalit&t und Interface eines Objektes werden bekanntgegeben.
- Inheritance: Subklassen "erben" Inhalte von Klassen
- Dynamic binding: ermöglich ein Maximum an Flexibilität zur Laufzeit
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
- Objektorientierung
- Multithreading
- Robustheit
- Sicherheit
- Erweiterbarkeit
- Plattformunabhängigkeit
Was Java hat
import
: vergleichbar dem IMPORT
von Modula-2.
interface
: ein geschickter Ersatz für die Mehrfachvererbung.
- Garbage Collection
- Verbesserte Ausnahmebehandlung
- Wohldefinierte Klassenhierarchie
Eigenschaften, die nicht von C oder C++ übernommen wurden:
- In Java gibt es keine Präprozessor-direktiven (wie z.B. #define) mehr.
- Es gibt keine Headerfiles, dafür aber interfaces, die die
Definition anderer Klassen und deren Methoden beinhalten.
- Multiple Inheritance wurde durch Interfaces ersetzt, die
Methodendefinitionen von Klassen gleichgesetzt werden können.
- Kein "goto"-statement (definiert, aber nicht implementiert).
- Kein Operator-overloading.
- Keine Pointer.
- Keine Typdefinitionen.
- Keine Variante Records (union).
- Keine generische Typen (templates).
- Keine Mehrfachvererbung.
- Keine vorzeichenlose Zahlentypen.
- Keinen direkten Hardwarezugriff.
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:
- alle Netzwerkzugriffe sind verboten
- Alle Netzwerkzugriffe sind erlaubt
- Netzwerkzugriffe sind nur jenen hosts erlaubt, von denen der Code importiert wurde
- Netzwerkzugriffe sind auf Zugriffe außerhalb des Firewalls beschränkt,
wenn der Code von dort kommt.
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.
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:
- Applikationen in Web-Browser einzubinden
- Den Web-Browser zur Schaltzentrale für Internet und Intranet zu machen
Die Active-X-Technologie besteht aus folgenden Komponenten:
- Active-X-Controls
- Active-X-Scripting
- Active-X-Dokumente
- Active-X-Conferencing
- ActiveMovie
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.
Zu dieser Sprache gibt es ein eigenes Skript:
Clientseitige Interaktion: JavaScript.
Copyright © FH München, FB 04, Prof. Jürgen Plate