Sicherheit in Netzen

Prof. Jürgen Plate

JAVA EINBLICK

Ein Referat von Antje König


Inhalt



Das ist Java

Java wurde von der Firma Sun Microsystems (Workstations, Unix) entwickelt. Java ist eine plattformunabhängige, objektorientierte Programmiersprache, die es ermöglicht, WorldWideWeb-Seiten interaktiv zu gestalten.
Mit Java programmierte Applikationen (Applets), die per HTML in Web-Seiten integriert werden, werden beim Öffnen der Seite übers Internet automatisch gestartet.

Damit ist es möglich, die bislang statische Informationsabfrage im Web durch die interaktiven Möglichkeiten dieser online ausführbaren Programme zu ergänzen.



zurück zum Inhaltsverzeichnis



Das kann Java

Theoretisch sind den Anwendungsmöglichkeiten keine Grenzen gesetzt. Da die Sprache noch relativ jung ist, experimentieren interessierte Programmierer zunächst mit einfachen Dingen, die als "normale", "nicht-online" Software nichts Neues wäre.

Zur Zeit finden sich verschiedene Kategorien von integrierten Applets im WWW. Hauptsächlich stößt man auf Animationen, wie Laufschriften, hüpfende Icons und bewegte Grafiken. Aber auch Spiele, Musik, Client/Server-Zugang, Finanzplanungs-Programme oder Börsenapplikationen kann man beim "surfen" finden. Und es wird ständig mehr.



zurück zum Inhaltsverzeichnis



Die Geschichte von Java

Ursprünglich wurde die Programmiersprache für die Gerätesteuerung entwickelt. Das Entwickler-Team bei Sun fand, daß die existierenden Sprachen C und C++ für Steuerungssoftware ungeeignet sind, da sie für bestimmte Chips kompiliert werden und bestimmte Bibliotheken benutzen. Für Geräte mit meist langer Lebensdauer, wie Toaster, Videorecorder, Telefone u.ä., mußte über eine neue Sprache nachgedacht werden. Die Sun-Leute waren überzeugt, daß die Zukunft in kleinen Programmen für diese Consumer devices liegen würde. 1990 entwickelte James Gosling eine neue objektorientierte Programmiersprache namens Oak, mit der dann das "Green" Projekt mit dem Kleinst-Computer *7 (Star seven) begonnen wurde.

Dabei entstand auch das Zeichentrick-Maskottchen Duke,
das die Anwender duch den virtuellen Haushalt navigierte.

Auch wurde an eine Verwendung für die SetTop Boxen des Interaktiven Fernsehens gedacht, doch 1994 kam das Aus, da niemand Oak lizensieren wollte. Zu diesem Zeitpunkt jedoch entdeckte die breite Masse das Internet. Das Sun-Team fand, daß diese neue plattformunabhängige Sprache hervorragend zur Programmierung von Web-Anwendungen geeignet wäre und stellte sie unter dem Namen Java im Frühjahr 1995 der Internet-Gemeinde vor. Ein Jahr später scheint sich die Prophezeihung der Java-Entwickler zu bewahrheiten, daß Java das Internet revolutionieren wird. Wie ein Mitarbeiter von Sun treffend formulierte: "Java ist eine Lösung, die nur noch auf das passende Problem gewartet hat."
Übrigens, die häufige Darstellung von Kaffeetassen im Zusammenhang mit der Sprache erklärt sich dadurch, daß Java in den USA umgangssprachlich "Kaffee" bedeutet, der auch das Hauptexportprodukt der gleichnamigen Insel darstellt.



zurück zum Inhaltsverzeichnis



Hot Java / Netscape Navigator

Die Anwendung der Java-Applets im WWW wird erst durch einen Browser ermöglicht, der die Tags (Anweisungen) und Parameter der HTML-Implementierung versteht. Hot Java von Sun war der erste Browser, der dies ermöglichte. Hot Java, der komplett in Java geschrieben ist, kann also nicht nur HTML interpretieren, sondern auch Java-Applets laden und ausführen. Er ist z.Zt. für Sun Solaris 2.3, 2.4, 2.5, für Windows NT, Windows 95 sowie für Apple Macintosh verfügbar.Auch Netscape hat seinen Navigator 2.0 Java-kompatibel gemacht. Das heißt konkret, daß die Java Virtual Machine, der Bytecode-Interpreter, in den Browser eingefügt wurde.



zurück zum Inhaltsverzeichnis



Die Programmiersprache

Java ist sehr stark an C++ angelehnt, hat aber Besonderheiten, die es für die geplante Anwendung im Netz bsonders 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

- 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.



zurück zum Inhaltsverzeichnis


Ein Beispielprogramm

Auf die Syntax von Java kann hier nicht näher eingegangen werden. Ausführliche Erläuterungen dazu findet man unter http://www.javasoft.com/hooked/language-ref.html.
Als exemplarisches Beispiel hier nur das obligatorische "Hello world" Programm.
1: /*2: *Datei: Helloworld.java3: */4: public class Helloworld5: {6:    public static void main (String args)7:    {8:         System.out.println("Hello world!");9:    }0: }

Erklärung:

Zeile 1-3: Kommentar

Zeile 4: Deklaration der Klasse, der Compiler übernimmt den Namen "HelloWorld" (und nennt das Programm helloworld.class)

Zeile 6:Aufruf der Methode / Funktion,

Zeile 8: Die Bildschirmausgabe "HelloWorld" erfolgt durch den Befehl println, der zu der Klasse out gehört, die Teil des System-Objekts ist. Der Befehl beinhaltet eine Zeilenschaltung.



Kompilierung:

Der Quellcode heißt hier Helloworld.java. Wird er mit dem Java-Compiler bzw. mit dem Befehl javac kompiliert, wird eine Datei mit dem Namen Helloworld.class erzeugt, die jetzt auf allen Plattformen mit Java-Interpreter die Bildschirmausgabe "Hello world!" erscheinen läßt.




zurück zum Inhaltsverzeichnis



HTML Implementierung

Alle HTML-Befehle stehen in sogenannten Tags, die durch diese <> spitzen Klammern definiert werden. Fast alle HTML-Anweisungen haben ein einleitendes und ein abschließendes Tag. Dazwischen ist die Gültigkeit der Anweisung angegeben.
So wird auch für die Einbindung der Java Applets ein bestimmtes Tag benštigt, welches die Browser, die Java-kompatibel sind (Netscape, HotJava), interpretieren kšnnen. Andere Browser ignorieren das unbekannte Tag und zeigen das Applet nicht an.
Dieses <applet> Tag schließt den Namen, die Breite und Höhe sowie die Parameter ein.

Als Beispiel:

1: <applet code="HelloWorld.class" width=100 height=30>
2: <param name=text value="Hallo, Welt!">
3: Sie benötigen einen Java-kompatiblen Browser!
4: ;/applet>

Erläuterung:

Zeile 1: Der Name des Applets sowie Breite und Höhe: die notwendigen Standardattribute (code, width, height)
Zeile 2: Die Applet-Parameter sind Attribute außerhalb des Standards, nur für dieses Applet gültig. Hier enthält Parameter "text" eine Zeichenkette
Zeile 3: Alternativer HTML-Inhalt, der angezeigt wird, wenn der Browser Java nicht versteht
Zeile 4: Ende des Applets


Attribute

Also, es gibt die Attribute, die in dem Start-Tag <applet> spezifiziert werden. Hier unterscheidet man die notwendigen (code, width, height) und die optionalen Attribute.
Optionale Attribute sind z.B.:

Parameter

Daneben werden oft Applet-spezifische Parameter angegeben. Sie werden in dem gesonderten <param>-Tag definiert. Das <param>-Tag hat zwei Attribute, name und value, so daß ein Name und der dazugehörige Wert spezifiziert werden kann.
Häufige Verwendung finden Parameter bei Animationen. Sie machen z.B. Angaben über: area, background, border, c_color, edges, font, highlight, images, maxwidth, model, orientation, positions, repeat, scale, sounds, speed, startup, text, u.s.w.

Bsp:

<applet code =ImageLoopItem width=80 height=90 align=right>
<param name=nimgs value=10>
<param name=img value=duke>
<param name=pause value=1000>
</applet>

Hier wird eine Imagesequenz wiederholt abgespielt, um eine Animation zu erzeugen.
Der Parameter img spezifiziert den URL (Uniform Ressource Locator), von dem die Bilder geladen werden.
Die Zahl der Bilder in der Animation wird durch den Parameter nimgs festgelegt.
Durch pause wird eine Pause in Millisekunden angegeben, die zwischen jeder Wiederholung der Sequenz liegt.



zurück zum Inhaltsverzeichnis



JDK - Java Development Kit

Das Entwicklerwerkzeug "Java Development Kit" von Sun ist ein Paket mit den wichtigsten Dingen um in Java zu programmieren. Das JDK kann man direkt über das Netz von Sun (http:// java.sun.com/) downloaden. Die andere Möglichkeit wäre, die Java-CD Edition 1 bei Sun Deutschland kostenlos anzufordern.
Die Bestandteile des JDK sind:

- der Java-Compiler javac

- der Java-Interpreter java

- der (nur zeichenorientierte) Debugger jdb

- der Applet Viewer als interaktives Testwerkzeug

- die umfangreiche API Documentation sowie API User's Guide.html

- die Standard-Bibliotheken Java shlb

In dem Paket sind auch diverse Applets mit vollem Quelltext enthalten.

Das JDK unterstützt zur Zeit die Plattformen Solaris (SPARC), Windows NT, Windows 95 und Apple Macintosh.Fremdfirmen kündigten bereits vollständige Entwicklungsumgebungen an. Borland plant etwas unter dem Codenamen Latte. Symantec hat eine C++ Compilererweiterung mit Namen Espresso veröffentlicht.



zurück zum Inhaltsverzeichnis



Kommerzialisierung?

Mit dem jeweiligen Browser oder der passenden Helper-Application ist es für jedeN NutzerIn möglich, die Source-Codes der aktuellen HTML-Site anzusehen. Das hat einen gewissen Charme, da es so möglich ist, von anderen zu lernen. Zusätzlich ist es ebenso kein Problem, die in den Seiten eingebauten Orginalbilder per Mausklick auf den eigenen Rechner zu kopieren.
Da von in Java geschriebenen Programmen nur der Bytecode aufs Netz gestellt wird, ist es hier nicht möglich, sich den Quellcode anzusehen. Das hat gewiß den Vorteil, daß die ProgrammiererInnen die Kontrolle über ihr geistiges Eigentum auch in kommerzieller Hinsicht behalten.
Doch dazu ein Kommentar aus der Zeitschrift Gateway:

"Eingriff in die Internet-Kultur

Bei der Verwendung im Internet ergeben sich jedoch einige negative Nebeneffekte: Durch Java wird es nicht mehr notwendig sein, den Source-Code der Applikationen zur Verfügung zu stellen, da die kompilierte Klasse voll ausreicht. Schon heute bietet kaum eine der kommerziellen Web-Sites, die Java-Spielereien in ihrer Homepage haben, den Zugriff auf den Source an. Auch viele Freizeitprogrammierer, werden der alten Tradition der "Free Software" den Rücken zuwenden und ihre Utilities nur binär zum Gebrauch zur Verfügung stellen. Sollte dann auch noch electronic Cash eingeführt sein, wird es eine neue Form von Shareware geben: der Code kannn nur gegen Geld per WWW geladen und ausgeführt werden. Hierzu plant Netscape übrigens, bei der †bertragung von Objektklassen ihr Secure-Socket-Layer-Protokoll (SSL) einzusetzen, welches vor unzulässigen Modifikationen des Codes schützen soll. Das könnte dazu beitragen, Java zu einem Medium für Netzwerkkommerz zu machen."



zurück zum Inhaltsverzeichnis



JavaScript

JavaScript ist eine Macrosprache, eine einfach zu verstehende Scriptsprache von Netscape Navigator. Andere Browser unterstützen JavaScript zur Zeit nicht. Java Applets werden als vorkompilierte Programme vom Netz geladen und vom jeweiligen Browser bzw. Java-Interpreter ausgeführt.
JavaScript dagegen ist im Klartext in der www-Seite eingebunden. Dadurch ist es möglich, ohne eine Netzwerkübertragung auf Interaktionen zu reagieren. Diese Scriptsprache ist auf keinen Fall mit der komplexen Programmiersprache Java von Sun zu verwechseln. Für das Script-Schreiben sind keine umfangreichen Programmierkenntnisse erforderlich, dafür werden jedoch auch nicht alle Elemente von Java unterstützt.
JavaScripts können auf viel mehr Daten auf dem lokalen Rechner zugreifen als normale Java-Applets. Es kann dadurch Sicherheitsprobleme geben. Netscape soll diese Probleme jedoch mit der neuesten Navigator-Version behoben haben.Weitere Informationen direkt von Netscape auf dessen JavaScript-Seite:
http://www.netscape.com/comprod/products/navigator/version_2.0/script/index.html


Syntax:

Mit dem <script language="LiveScript">-Tag wird das Script direkt in der HTML-Seite begonnen, und mit </script> beendet. Die JavaScript-Befehle sind durchaus sofort verständlich, wenn man denn der englischen Sprache mächtig ist. Neu programmierte Funktionen werden bereits im Head der Seite definiert, um dann von den NutzerInnen im Body an geeigneter Stelle im JavaScript aktiviert zu werden.Ein guter Einführungslehrgang ist hier zu finden:

INTRODUCTION TO JAVASCRIPT von Stefan Koch:
http://rummelplatz.uni-mannheim.de/~skoch/js/script.htm
http://www.webconn.com/java/javascript/intro

Und die Übersetzung ins Deutsche von Veikko Wuensche:
http://www.hansenet.de/vw/PW/


Auch hier ein Beispiel:

<script language="LiveScript">
<!-- Hiding
today = new Date()
document.write("Die aktuelle Uhrzeit ist: ",today.getHours(),":",today.getMinutes()) document.write("........")
document.write("Das heutige Datum ist: ",today.getDate(),". ", today.getMonth()+1,". ",today.getYear());
// end hiding contents -->
</script>

Hier ist das Script realisiert!

Hier wird also mit Standard-Funktionen , z.B. today.getDate(), auf die rechnerinternen Einstellungen von Datum und Uhrzeit zugegriffen und mit document.write auf dem Bildschirm angezeigt.Und um sicher zu stellen, da§ alte WWW-Clients den Code nicht versuchen als HTML-Text darzustellen, ist er als Kommentar (<!-- Hiding) eingerahmt.



zurück zum Inhaltsverzeichnis





Quellenangaben / Literatur:




Die wichtigsten LINKS:

Weitere interessante URLs sind bereits auf den angegebenen Seiten gut zusammengestellt.



zurück zum Inhaltsverzeichnis



Antje König, 08. Mai 1996

Homepage
Mail / Post
Copyright © Antje König