Struktur und Syntax


2.6 Unterschiede zwischen Java und JavaScript

Ursprünglich hieß JavaScript LiveScript, und wurde von Netscape als Neuerung in die Version 2 ihres Browsers eingebunden. Nach einer Vereinbarung mit Sun Microsystems wurde sie umbenannt und soll nun die Lücke zwischen HTML und Java schließen. Java wird vom Programmierer in systemunabhängigen Bytecode compiliert, der dann vom Benutzer geladen und auf seinem lokalen Rechner ausgeführt wird. JavaScript hingegen wird direkt in das HTML-Dokument eingebunden und kann auch mit HTML-Elementen arbeiten, benutzt aber eine stark eingeschränkte Java-ähnliche Syntax. Der Programmierer ist z.B. nicht in der Lage eigene Objekte oder Methoden zu konstruieren, sondern muß auf die vorgegebene Objekthierarchie zurückgreifen. Die eigentliche Funktion von JavaScript besteht laut Bill Joy ( SUN Micros. ) in der Verbindung von HTML-Seiten zu den Java-Applets. Im Moment ist diese Funktion allerdings noch nicht implementiert und auch andere Eigenschaften sind noch nicht ausgereift. Sowohl Java als auch JavaScript sollen dem W3C und der IETF als Standard vorgeschlagen werden. Unterschiede zwischen Java und JavaScript: Der folgende JavaScript oder LiveScript-Code und das weiter unten stehende Form-Tag erzeugen 2 Textfelder und einen Button um einen Rechenausdruck zu berechnen.

<SCRIPT LANGUAGE="LiveScript">
function compute(form)
{
if (confirm ("Sind sie sicher?"))
form.result.value = eval (form.expr.value)
else
alert ("Komm wieder...")
}
</SCRIPT>

Und hier die Einbindung in das HTML-Dokument.

<FORM>
Bitte einen Rechenausdruck eingeben:
<INPUT TYPE="text" NAME="expr" SIZE=15>
<INPUT TYPE="button" VALUE="Berechne" ONCLICK="compute(this.form)">
<BR>
Ergebnis:
<INPUT Type="text" Name="result" SIZE=15>
<BR>
</FORM>

Bitte einen Rechenausdruck eingeben:

Ergebnis:


2.7 Sicherheit

Weil sich das Internet in den letzten Jahren so rasant ausgebreitet hat, konnte die Sicherung von Datenübertragungen leider nicht mithalten. Neben einigen Ansätzen, um z.B. Geldüberweisungen über das Internet tätigen zu können, werden die Daten im Wesentlichen immer noch unverschlüsselt über die Leitungen gespielt. Java muß also selbst dafür sorgen, das keine Viren über das WWW übertragen werden und das die lokalen Daten unbehelligt bleiben. Desweiteren dürfen auch keine Daten ohne die Zustimmung des Benutzers an Dritte übertragen werden. Java bietet verschiedene Sicherheitsansätze, um solchen Mißbrauch zu verhindern.
  1. Java ist wohldefiniert. Da alle Datentypen auf allen Plattformen dieselbe Speicherbelegung besitzen und die Abarbeitungsfolge von Ausdrücken genau definiert ist, spielt es keine Rolle, auf welcher Plattform wir ein Programm übersetzen. Der Bytecode ist immer identisch und das Verhalten des Programms konsistent.
  2. Fehlende Zeigerarithmetik Viele Viren verbreiten sich, indem sie direkt auf bestimmte Speicheradressen zugreifen, um sich zum Beispiel zu kopieren oder Sicherheitsabfragen zu umgehen.. Ein Java-Programm hat keine Möglichkeit auf Speicherplätze zuzugreifen, die nicht zu seinem Datenbereich gehören.
  3. Strikte Syntaxüberprüfung. Zur Übersetzung prüft der Compiler genau, ob die Typen für Variablenzugriffe übereinstimmen und ob Variablen beim Lesen überhaupt initialisiert sind. Typkonvertierungen sind nur in einem engem Rahmen erlaubt.
  4. Garbage Collection. Wird angeforderter Speicher in einem Programm nicht mehr freigegeben, geht dieser für das System über das Programmende hinaus verloren. Dies kann zu Instabilität führen. Durch die Garbage Collection, die nicht mehr benötigten Speicherplatz automatisch wieder friegibt, wird gewährleistet, das ein Java-Programm über seine Lebensdauer hinaus keinen Speicherplatz belegt.
Der Compiler kann also kaum "mißbraucht" werden. Wenn aber der Java-Compiler nachgebildet wurde und einige Sicherheitsvorkehrungen weggelassen wurden, oder bei der Übertragung über das Netz Programme dazwischenhängen, ist es immer noch möglich Schaden anzurichten. Deswegen beinhaltet auch das Laufzeitsystem Sicherheitsvorkehrungen. Nach 4 Schritten der Überprüfung weiß das Laufzeitsystem darüber Bescheid, daß Zum Schluß bieten noch die Bibliotheken in java.net die Möglichkeit, die Zugriffsberechtigung zu staffeln.