REFERAT-MenüDeutschGeographieGeschichteChemieBiographienElektronik
 EnglischEpochenFranzösischBiologieInformatikItalienisch
 KunstLateinLiteraturMathematikMusikPhilosophie
 PhysikPolitikPsychologieRechtSonstigeSpanisch
 SportTechnikWirtschaftWirtschaftskunde  



Geschichte und Einfuhrung in Java

Geschichte und Einführung in Java


Java ist eine von Sun Microsystems entwickelte, vollkommen plattformunabhängige Programmiersprache mit spezieller Ausrichtung auf den Einsatz im World Wide Web. Die Sprache lehnt sich in Aufbau und Syntax an C/C++ an.

Java ist dazu geeignet, um Animationen, Simulationen, Echtzeitanwendungen, sowie interaktive Anwendungen wie Guided Tours, Spiele oder Kalkulationsanwendungen zu realisieren. All diese Dinge laufen im Anzeigefenster des java-fähigen WWW-Browsers ab.

Wichtige Eigenschaften von Java



o       Objektorientiert: Java ist durchgängig objektorientiert und stellt dem Programmierer eine Fülle elementarer und komplexer Objekte bereit.

o       Sichere Speicherverwaltung: Unter Java ist die Arbeitsspeicherverwaltung aus Programmierersicht wesentlich unkritischer als beispielsweise unter C. Es gibt keine durch Zeiger adressierten Speicherbereiche von unbestimmter Größe, sondern nur Speichervektoren von fest definierter Länge. Die fehlerarme Speicherverwaltung ist besonders wichtig, da Java-Programme ohne Portierungsaufwand in verschiedenen CPU-Umgebungen ablaufen sollen.

o       Plattformunabhängige Programmdateien: Java-Programme werden wie herkömmliche Programme zu Objektcode compiliert, jedoch nicht in eine bestimmte Prozessor- oder Betriebssystem-Umgebung eingebunden, also nicht 'gelinkt'. Java-Programme laufen daher auf allen Plattformen, wenn ein Java-Objektcode-Interpreter installiert ist (bei WWW-Browsern ist dies die sogenannte 'Java-Konsole').

Wie funktioniert Java?

Javaprogramme sind nicht für einen realen und von System zu System unterschiedlichen Prozessor geschrieben, sondern nur für einen virtuellen Prozessor, die Virtual Machine. Diese Virtual Machine setzt auf das Betriebssystem eines Rechners auf und läuft somit zwischen realem Prozessor und dem Javaprogramm. Der Programmcode wird dann ausgeführt und an den Prozessor angepaßt. Somit kann ein Javaprogramm auf jedem System ausgeführt werden, auf dem eine Virtual Machine läuft.

Eine Java Applikation besteht nicht aus einer lauffähigen und direktausführbaren Datei, sondern aus einer Anweisungsfolge von sogenannten Bytecode. Dieser Code wird dann von dem Java Interpreter interpretiert und zur Ausführung gebracht. Um mit dem von Sun mitgeliefertem Interpreter eine Applikation zu starten, gibt man folgenden Befehl ein: java programmname

Die Datei programmname.class enthält den Bytecode, der vom Interpreter interpretiert und somit zur Ausführung gebracht wird.

Java's Aufbau und Syntax lehnt sich sehr stark an die Programmiersprachen C, bzw. C++ an. Programmierer sind somit in der Lage sich schnell und ohne großen Aufwand von C oder C++ auf Java umzustellen.

Unterschiede zwischen Java und C ,bzw. C++

C++

Java

Konstanten
#define

Konstanten: final
Makros: import

Funktions-Prototypen

Reihenfolge der Methoden beliebig

Zeiger, Referenzen

Objektvariablen sind immer Referenzen

boolsche Werte mittels Integer

if (zahl=liefereWert())

boolean-Typ -> Konstanten True, False

if((zahl=liefereWert())!=0)

Bereichsauflösungs-Operator ::
z.B.: KlasseX::mache(x);

BasisKlasse::mache(x);

Punkt auch nach dem Klassennamen
KlasseX.mache(x);
Basismethode mittels super
super.mache(x);

Strichpunkt nach Klassendeklaration

Kein Strichpunkt mehr

Aufruf des Basiskonstruktors mittels Initialisierer-Syntax
XKLASSE (): BKLASSE()

Aufruf von super im Konstruktorrumpf
XKLASSE ()

virtual

automatisch späte Bindung ausser bei private,static,final-Methoen

Überladen von Operatoren

Überladen nicht mehr möglich

Default-Parameter

Keine Default-Parameter

const int max = 100;

final int max = 100;

Initalisierung direkt bei der Deklaration nicht möglich!
class X
const int X::max = 100;
X::X() : anz(10)

Initalisierung direkt bei der Deklaration möglich!
class X

Destruktor

finalize

Vererbung:
class A : public BasisKl

Vererbung:
class A extends BasisKl
Mehr zu diesem Thema

Zugriffsschutz
public,protected,private,
Angabe gilt für alle Eigenschaften und Methoden des Objectes
Default: private

Zugriffsschutz
public,protected,private,
muss bei jeder Eigenschaft und Methode angegeben werden
Default (=keine Angabe): freundlich für Klassen des eigenen package

Mehrfachvererbung

Interfaces
Mehr zu diesem Thema

Arrays

Arrays
Mehr zu diesem Thema

Strings

Strings
Mehr zu diesem Thema



Vererbung - Vererbung in Java

  1. Zweck:
    final-Klassen: können nicht Basisklasse für andere Klassen sein
    z.B.:
    • final class X
    • class Y extends X nicht erlaubt


'Bekannteste' final-Klasse: String
Vorteil: Optimierungsmöglichkeit für Compiler (frühe Bindung, )

  1. Konstruktor-'Verkettung':
    z.B.:
    class X
    public X (int i, int j)


INTERFACES - Mehrfachvererbung in Java

  1. Zweck:
    • Deklarationen von Methoden, die von 'abgeleiteten' Klassen implementiert werden
    • Interface definiert ein 'Verhalten', das von seinen abgeleiten Klassen realisiert wird
    • Ersatz für Mehrfach-Vererbung

  1. Unterschiede zu Klassen:
    • Interfaces enthalten nur abstrakte Methoden, abstract muss dabei nicht angegeben werden
    • Eigenschaften sind automatisch static und final (also nur Konstanten)
    • abgeleitete Klasse 'erbt' nicht sondern 'implementiert' das Interface
    • eine Klasse kann zwar nur von einer Klasse erben, aber beliebig viele Interfaces implementieren

  1. Beispiele aus der Klassenbibliothek:
    • Runnable: zur Implementierung von Threads, Methode Run muss den ausführbaren Code des Threads enthalten
    • KeyListener: zum Reagieren auf Tastatur-Ereignisse, Methoden: keyPressed, keyReleased, keyTyped

Arrays in Java

  • sind 'in die Sprache eingebaute' Objekte
  • 2-stufiges Anlegen
    1. Objekt-Referenz vereinbaren
    2. Speicher reservieren

Beispiel:

int iTab[];

iTab = new int[10];

for (int i=0; i < 10; i ++)
iTab[i] = i;

  • 2-dimensional
    int matrix[][] = new int[5][10];
    matrix[4][9] = 27;
  • Array-Größe:
    int anz = iTab.length;
  • Als Parameter
    void ausgabe(int m[][]) Aufruf: ausgabe(matrix);
  • Initialisieren:
    int iTab[] = ;
    int matrix[][] = ,};

Strings in Java

  • mittels eingebauten Datentyp (Standard-Klasse: java.lang.String)
  • Vereinbarung:
    String s1;
    String s2 = 'Karl';
  • Zuweisung
    s1 = s2;
  • Vergleich
    if (s1.equals(s2))
    if (s1.compareTo(s2)<0)
    // wie strcmp in C
  • Konventierung:
    String s = Integer.toString(i);
    int i = Integer.valueOf (s);
    char puf[] = new char[5];
    s.getChars(3,7,puf,0);
  • Zeichenweiser Zugriff:
    if (s.charAt(7) == 'x')
  • Stringlänge:
    s.length()
  • String-Methoden:
    charAt, compareTo, concat, copyValueOf, endWith, equals, equalsIgnoreCase, getBytes, getChars,
    indexOf, lastIndexOf, length, replace, startsWith, substring, toCharArray, toString, trim, valueOf

Was ist JavaScript?

JavaScript ist kein direkter Bestandteil von HTML, sondern eine eigene Scriptsprache. Diese Sprache wurde jedoch eigens zu dem Zweck geschaffen, HTML-Autoren ein Werkzeug in die Hand zu geben, mit dessen Hilfe sich WWW-Seiten optimieren lassen.

JavaScript-Programme werden wahlweise direkt in der HTML-Datei oder in separaten Dateien notiert. Sie werden nicht - wie etwa Java-Programme - compiliert, sondern als Quelltext zur Laufzeit interpretiert, also ähnlich wie Batchdateien bzw. Shellscripts. Dazu besitzen moderne WWW-Browser wie Netscape oder Microsoft Internet Explorer entsprechende Interpreter - Software.

JavaScript ist dazu hervorragend geeignet, weil es eine vergleichsweise einfache Sprache ist, bei der viele Aufgabenbereiche einer 'großen' Programmiersprache fehlen, z.B. Dinge wie Arbeitsspeicherverwaltung oder Dateioperationen. Außerdem setzt JavaScript auf einer bestimmten Umgebung auf, nämlich auf einer anzuzeigenden oder angezeigten WWW-Seite.

JavaScript in HTML

<html>
<head>
<title>Test</title>
<script language='JavaScript'>
<!--
alert('Mein 1. JavaScript Beispiel');
//-->
</script>
</head>
<body>
</body>
</html>

Erläuterung:

Mit <script language='JavaScript'> leiten Sie einen Bereich für JavaScript innerhalb einer HTML-Datei ein (script = Quelltext, language = Sprache). Dahinter - am besten in der nächsten Zeile - sollten Sie mit <!-- einen Kommentar einleiten. Dadurch erreichen Sie, daß ältere WWW-Browser, die JavaScript nicht kennen, den folgenden JavaScript - Code ignorieren und nicht irrtümlich als Text innerhalb der HTML-Datei interpretieren. Im obigen Beispiel wird mit Hilfe von JavaScript ein Meldungsfenster mit dem Text 'Mein 1. JavaScipt Beispiel' am Bildschirm ausgegeben.

Am Ende eines JavaScript - Bereichs schließen Sie mit //--> den Kommentar und mit </script> den Bereich für den Programmcode.

Anmerkung:

Es gibt keine festen Vorschriften dafür, an welcher Stelle einer HTML-Datei ein JavaScript - Bereich definiert werden muß. Es ist unter JavaScript - Programmierern zur Gewohnheit geworden, einen solchen Bereich im Kopf der HTML-Datei, also zwischen <head> und </head> zu definieren. Dadurch ist am ehesten sichergestellt, daß der Code vom WWW-Browser bereits eingelesen ist und zur Verfügung steht, wenn er ausgeführt werden soll.

JavaScript - Code kann automatisch beim Einlesen der HTML-Datei ausgeführt werden. Das ist dann der Fall, wenn JavaScript - Befehle in einem JavaScript - Bereich außerhalb jeder selbst definierten Funktion stehen, so wie im obigen Beispiel. In solchen Fällen ist es manchmal auch erforderlich, den Script - Bereich innerhalb des HTML - Dateikörpers, also innerhalb von <body></body>, zu notieren. Zum Beispiel, wenn Sie am Ende der Datei mit JavaScript dynamisch Datum und Uhrzeit der letzten Anderung an der Datei schreiben wollen .

Notationsregeln

Beispiel 1:

Zahl = 42;



Beispiel 2:


Quadrat = Zahl * Zahl;




Beispiel 3:



if(Zahl > 1000)

Zahl = 0;



Beispiel 4:


alert('Das Quadrat von ' + Zahl + ' = ' + Ergebnis);


Anweisungen

Beispiel 1:


if(Zahl > 1000)




Beispiel 2:



while(i <= 99)




Beispiel 3:



function SageQuadrat(x)




Beispiel 4:



function SagEinmaleins(x)


alert(Ergebnis);

}


Kommentare

while(i <= 99)



Event-Handler

onAbort (bei Abbruch)
onBlur (beim Verlassen)
onChange (bei erfolgter Anderung)
onClick (beim Anklicken)
onDblClick (bei doppeltem Anklicken)
onError (im Fehlerfall)
onFocus (beim Aktivieren)
onKeydown (bei gedrückter Taste)
onKeypress (bei erfolgtem Tastendruck)
onKeyup (bei losgelassener Taste)
onLoad (beim Laden einer Datei)
onMousedown (bei gedrückter Maustaste)
onMousemove (bei weiterbewegter Maus)
onMouseout (beim Verlassen des Elements mit der Maus)
onMouseover (beim Überfahren des Elements mit der Maus)
onMouseUp (bei losgelassener Maustaste)
onReset (beim Zurücksetzen des Formulars)
onSelect (beim Selektieren von Text)
onSubmit (beim Absenden des Formulars)
onUnload (beim Verlassen der Datei)
javascript: (bei Verweisen)

Objekt Window

Eigenschaften:

closed (geschlossenes Fenster)

defaultStatus (Normalanzeige in der Statuszeile)

innerHeight (Höhe des Anzeigebereichs)

innerWidth (Breite des Anzeigebereichs)

locationbar (URL-Adreßzeile)

menubar (Menüleiste)

name (Fenstername)

outerHeight (Höhe des gesamten Fensters)

outerWidth (Breite des gesamten Fensters)

pageXOffset (Fensterstartposition von links)

pageYOffset (Fensterstartposition von oben)

personalbar (Zeile für Lieblingsadressen)

scrollbars (Scroll-Leisten)

statusbar (Statuszeile)

status (Inhalt der Statuszeile)

toolbar (Werkzeugleiste)



Methoden:

alert() (Dialogfenster mit Infos)

back() (zurück in History)

blur() (Fenster verlassen)

captureEvents() (Ereignisse überwachen)

clearInterval() (zeitliche Anweisungsfolge abbrechen)

clearTimeout() (Timeout abbrechen)

close() (Fenster schließen)

confirm() (Dialogfenster zum Bestätigen)

disableExternalCapture() (Fremdüberwachung verhindern)

enableExternalCapture() (Fremdüberwachung erlauben)

find() (Text suchen)

focus() (Fenster aktiv machen)

forward() (vorwärts in History)

handleEvent() (Ereignis übergeben)

home() (Startseite aufrufen)

moveBy() (bewegen mit relativen Angaben)

moveTo() (bewegen mit absoluten Angaben)

open() (neues Fenster öffnen)

print() (ausdrucken)

prompt() (Dialogfenster für Werteingabe)

releaseEvents() (Ereignisse abschließen)

resizeBy() (Größe verändern mit relativen Angaben)

resizeTo() (Größe verändern mit absoluten Angaben)

routeEvent() (Event-Handler-Hierarchie durchlaufen)

scrollBy() (Scrollen um Anzahl Pixel)

scrollTo() (Scrollen zu Position)

setInterval() (zeitlische Anweisungsfolge setzen)

setTimeout() (Timeout setzen)

stop() (abbrechen)

Beispiele

Aufruf von JavaScript-Funktionen in HTML

<html>

<head>

<title>JavaScriptTest</title>

<script language='JavaScript'>

<!--

function Quadrat(Zahl)


//-->

</script>

</head>

<body>

<form>

<input type=button value='Quadrat von 3' onClick='Quadrat(3)'>

</form>

</body>

</html>



So schauts aus

For-Schleifen

<html>
<head>
<title>Sinn des Lebens zum Quadrat</title>
<script language='JavaScript'>
<!--
var Hinweis = 'Gleich werden Quadratzahlen ausgegeben';
alert(Hinweis);

function SchreibeQuadrate()

}
// -->
</script>
</head>
<body onLoad='SchreibeQuadrate()'>
</body>
</html>

Daten eines Objektes lesen (Browserdaten)

<html>
<head>
<title>Browser des Anwenders auslesen</title>
<script language='JavaScript'>
<!--
var BrowserName = navigator.appName;
var BrowserVersion = navigator.appVersion;
alert('Ah ja, Sie verwenden also den ' + BrowserName +
', und zwar in der Version ' + BrowserVersion);
// -->
</script>
</head>
<body>
</body>
</html>

Browserdaten lesen - So schauts aus

Objekt - Methoden

<html>
<head>
<title>Geh hin wo Du herkommst</title>
</head>
<body>
<a href='javascript:history.back();'>Geh hin wo Du herkommst</a>
</body>
</html>

Geh hin wo du herkommst

Funktion mit Rückgabewert und solche Funktion aufrufen

<html>
<head>
<title>Bruttobetrag aus Nettobetrag errechnen</title>
<script language='JavaScript'>
<!--
function BruttoBetrag(Netto, Prozente)


function SchreibeBrutto(Betrag, Prozentsatz)

//-->
</script>
</head>
<body>
<form name='BruttoForm'>
Nettobetrag: <input type=text name='NettoEingabe'><br>
Prozentsatz: <input type=text name='ProzentEingabe'><br>
<p>Kommabetrag mit Punkt eingeben!</p>
<input type=button value='Brutto ermitteln'
onClick='SchreibeBrutto(document.BruttoForm.NettoEingabe.value,document.BruttoForm.ProzentEingabe.value)'>
<p>
Ergebnis: <input type=text name='Ergebnisfeld'>
</form>
</body>
</html>

Bruttobetrag berechnen

Schleifen mit 'while'

<html>
<head>
<title>User checken</title>
<script language='JavaScript'>
<!--
var Passwort = 'Pamela';
var UserEingabe = '';
var Zaehler = 0;
while((UserEingabe != Passwort)&&(Zaehler <= 3))

if(UserEingabe != Passwort)
history.back();
else
document.location.href='geheim.htm';
// -->
</script>
</head>
<body>
</body>
</html>


Java - Applets

(applet = application snippet = Anwendungsschnipsel)

Java-Programme, die für den Einsatz im Internet gedacht sind, heißen Applets. Sie können Java-Applets in HTML-Dateien einbinden. Die Bildschirmausgaben bzw. die Interaktionen zwischen Anwender und Programm finden dann im Anzeigefensters des WWW-Browsers statt. Natürlich wird für die Ausführung des Applets ein javafähiger Browser benötigt.

Um selbst ausführbare Java-Applets erstellen zu können, brauchen Sie den Java Developer's Kit. Diesen Developer's Kit erhält man auf der Homepage von Sun Microsystems. Es sind verschiedene Versionen für Unix und Windows 95 bzw. Windows NT verfügbar. Der Kit enthält alle Klassenbibliotheken der Programmiersprache Java, einen Applet-Viewer und einen Compiler, der von der Unix-Shell- bzw. DOS-Shell aus gestartet wird.

Bei einem Java-Applet, das in einer HTML-Datei im WWW referenziert ist, wird der ausführbare Programmcode in den Arbeitsspeicher des aufrufenden Rechners geladen und dort vom Java-Interpreter des WWW-Browsers ausgeführt. Neben einem Compiler, der speziell Java-Applets zum Einsatz im WWW erzeugt, gibt es im Java Developer's Kit aber noch einen Compiler, der internet-unabhängige Programme für beliebige PCs oder andere Software-Träger erzeugt. Dieser Compiler erlaubt alle Möglichkeiten, um richtige Software mit zu erstellen.

Java - Applet - Beispiel

<applet code='AnimText' codebase='../' alt='Text'>
<param name=text value='Dieser Text wird animiert dargestellt'>
<param name=type value=wave>
<param name=bgcolor value=255:10:30>
<param name=fgcolor value=white>
<param name=style value=bold>
<param name=min value=14>
<param name=max value=48>
</applet>

Erläuterung:

Mit <applet > leiten sie ein Java-Programm auf einer HTML-Seite ein.

code='appletname' gibt den Dateinamen des auszuführenden Java-Programmes an. Angabe kann mit oder ohne Erweiterung erfolgen.

codebase='../' gibt das Verzeichnis an in dem das Applet liegt. Wenn Applet und HTML-Datei in dem gleichen Verzeichnis liegen, dann kann das Attribut weggelassen werden.

alt='Text' Text wird angezeigt, wenn der Browser das Applet nicht ausführen kann.

Zwischen dem einleitenden Tag und dem abschließenden notieren Sie in vielen Fällen Parameter, die dem Programm beim Aufruf übergeben werden. Welche

Parameter ein Java-Applet erwartet, entnehmen Sie der Dokumentation zu dem Applet. Jeder Parameter wird durch angegeben (param = Parameter,

value = Wert). Hinter name= geben Sie den Namen des Parameters an. Hinter value= geben Sie den gewünschten Wert des Parameters an, der dem Programm übergeben werden soll.

Beachten Sie dabei die Regeln für Attribute in HTML-Tags.

<applet code='AnimText.class' width=300 height=50 id=20>
<param name=text value='Dieser Text wird animiert dargestellt'>
<param name=type value=wave>
<param name=bgcolor value=255:10:30>
<param name=fgcolor value=white>
<param name=style value=bold>
<param name=min value=14>
<param name=max value=48>
</applet>

Erläuterung:

Mit width= [Pixel/Prozent] bestimmen Sie die Anzeigebreite des Java-Applets, mit height= die Höhe.

Mit align= [Pixel] können Sie ein Java-Applet beschriften oder Text um das Objekt fließen lassen. Mit align=top richten Sie einen nachfolgenden Text obenbündig zu Applet aus, mit align=middle mittig, und mit align=bottom untenbündig. Mit align=left können Sie nachfolgende Elemente rechts um das Java-Applet lassen, mit align=right richten Sie das Applet rechtsbündig aus und nachfolgende Elemente fließen links um das Applet.

Mit id= [Pixel] bestimmen Sie den horizontalen Abstand des Java-Applets zu seiner Umgebung, mit vspace=
public void paint(Graphics g)

public void setString(String aString)


Erläuterung:

Hier sehen Sie den Quellcode eines Java-Applets, das einen Text am Bildschirm ausgibt.
Mit public void setString(String aString) geben Sie den definierten Text am Bildschirm aus.

Beispiel Teil 2 - HTML-Datei mit Java-Applet und JavaScript-Zugriff:

<html><head><title>Test</title>
</head><body>
<applet code='hallo.class' name='Hallo' width=150 height=25>
</applet><br>
<script language='JavaScript'>
<form name='Eingabe'>
<input name='Text'>
<input type=button value='Test'
onclick='document.Hallo.setString(document.Eingabe.Text.value)'>
</form>
</script>
</body></html>

Erläuterung:

Im zweiten Teil des Beispiels wird angenommen, daß der Quellcode aus dem ersten Teil des Beispiels mit dem Java-Compiler zu einem Java-Applet mit dem Namen hallo.class compiliert wurde. Dieses Java-Applet wird in der HTML-Datei mit dem <applett>-Tag eingebunden. Dabei erhält das Applet mit name= den Namen 'Hallo'.

Unterhalb davon wird ein Formular mit einem Eingabefeld und einem Button definiert. In dem Eingabefeld läßt sich ein Text eingeben. Beim Klick auf den Button wird der eingegebene Text an das Java-Applet 'gesendet', und zwar so, daß der Text, den das Applet anzeigt, durch den eingegebenen Text ersetzt wird.

Dazu wird das Applet mit document.Hallo angesprochen. Dahinter wird keine JavaScript-Methode notiert, sondern direkt eine Methode aus dem Quellcode des Java-Applets, nämlich sie Methode setString(). Diese Methode erwartet als Parameter eine Zeichenkette (siehe Quellcode des Java-Applets). Das JavaScript übergibt als Zeichenkette den Wert aus dem Eingabefeld des Formulars.







Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen