|
Geschichte und Einführung 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 46684fml78ulm3z
Objektorientiert: Java ist durchgängig objektorientiert und stellt dem Programmierer eine Fülle elementarer und komplexer Objekte bereit.
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.
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? ml684f6478ullm
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 () { super(); ...} |
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 {
int anz;
static const int max;
... }
const int X::max = 100;
X::X(...) : anz(10) {...} |
Initalisierung direkt bei der Deklaration möglich!
class X {
int anz = 10; static final int max = 100; ... } |
Destruktor |
finalize |
Vererbung:
class A : public BasisKl {
... } |
|
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 |
|
Arrays |
|
Strings |
|
Vererbung - Vererbung in Java
Zweck:
final-Klassen: können nicht Basisklasse für andere Klassen sein
z.B.:
"Bekannteste" final-Klasse: String
Vorteil: Optimierungsmöglichkeit für Compiler (frühe Bindung, ...)
Konstruktor-"Verkettung":
z.B.:
class X {
public int i;
public int j;
public X (int i) { this.i = i;}
public X (int i, int j)
{ this(i);
this.j = j;
}
}
INTERFACES - Mehrfachvererbung in Java
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
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
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
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[] = {1,3,5};
int matrix[][] = {{1,2,3},{2,4,6}};
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 Änderung 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)
{
Zahl = 0;
Neustart();
}
Beispiel 2:
while(i <= 99)
{
Quadrat(i);
i = i + 1;
}
Beispiel 3:
function SageQuadrat(x)
{
var Ergebnis = x * x;
alert(Ergebnis);
}
Beispiel 4:
function SagEinmaleins(x)
{
var Ergebnis = x * x;
if(Ergebnis > 100)
{
Ergebnis = 0;
Neustart();
}
alert(Ergebnis);
}
|
Kommentare
|
while(i <= 99)
{
Quadrat = i * i; /* solange i kleiner gleich 99, Quadrat von i bilden */
i = i + 1; /* i um eins erhoehen, damit es irgendwann 99 ist */
}
|
Event-Handler
|
onAbort (bei Abbruch)
onBlur (beim Verlassen)
onChange (bei erfolgter Änderung)
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)
{
Ergebnis = Zahl * Zahl;
alert("Das Quadrat von " + Zahl + " = " + Ergebnis);
}
//-->
</script>
</head>
<body>
<form>
<input type=button value="Quadrat von 3" onClick="Quadrat(3)">
</form>
</body>
| | |
|