Start presentation
Slide 1: Schöpfungsgeschichte
Java ist eine Entwicklung von
Sun Microsystems.
Java wurde dort ab 1991 zunächst unter dem Namen
Oak von James Gosling als "Abfallprodukt" des
Green Project, einer TV Set-Top-Box mit intelligenter Fernbedienung für Home Entertainment, entwickelt.
Die Entwicklungen des
Green Project stießen aber nicht auf das erhoffte Interesse der anvisierten Zielgruppe.
Mit dem Aufkommen des WWW wurde deutlich, dass HTTP/HTML und Java sich sehr gut ergänzen könnten; ab 1994 wurde daher der HotJava-Browser entwickelt.
1995 wurde der Java-Sourcecode in einer Alpha-Version zum kostenlosen Download freigegeben.
Im Laufe des Jahres wird Java zum
buzzword. Netscape kündigt die Integration von Java in ihren marktführenden Browser Navigator an.
Slide 2: Changelog
Der heutige Versionsstand von Java, d. h. des Sun JDK, ist 1.4.2.
In der Abfolge der Java-Versionen gibt es einen deutlichen Bruch zwischen den Versionen 1.1 und 1.2 mit zum Teil erheblichen Veränderungen im API . Seither nennt Sun Java auch "Java 2 Standard Edition" (
J2SE).
Seit der Version 1.2 ist das API größtenteils abwärtskompatibel.
Weiter Infos:
-- Main.christo - 05 Nov 2003
Slide 3: Objektorientierung
Das Ziel objektorientierter Sprachen ist es, Dinge der realen Welt programmatisch abbilden zu können.
Die aus prozeduralen Sprachen bekannten Datenstrukturen werden dazu mit den sie bearbeitenden Funktionen zu einer Einheit verknüpft, dem
Objekt.
Einen vom Programmierer so definierten Datentyp nennt man eine
Klasse. Die zu dieser gehörigen Daten nennt man
Instanzvariablen, ihre Funktionen
Methoden.
Jede Methode hat eine eindeutige
Signatur, bestehend aus dem Namen, dem Ergebnistyp und den Argumenttypen. Es können also mehrere Methoden gleichen Namens in einer Klasse definiert werden, diese müssen jedoch denselben Ergebnistyp haben (
Methoden-Überladung).
Die Menge der Werte der Instanzvariablen eines Objektes nennt man dessen
Zustand.
Eine Klasse kann ihre Eigenschaften und ihr Verhalten an eine andere Klasse weitergeben. Diesen Mechanismus nennt man
Vererbung.
Objekte können ihre Instanzvariablen vor dem Zugriff anderer Objekte schützen (
Kapselung). Diese sind dann gegebenenfalls nur über entsprechende Zugriffsmethoden von außen zugänglich.
-- Main.christo - 06 Nov 2003
Slide 4: Eigenheiten der Sprache Java
Hinter Java verbirgt sich nicht nur eine moderne Programmiersprache, sondern eine ganze Reihe neuartiger Technologien:
Java schänkt die Freiheiten des Programmierers relativ stark ein; hält ihn dadurch aber gleichzeitig davon abhält, eine Vielzahl von ansonsten häufigen Fehlern zu begehen.
Java ist eine konsequent objektorientierte Sprache. Jeder Schnipsel Programmcode muss daher logisch in einen Objekt- oder Klassenkontext geklammert werden.
Vererbung
Java verwendet das Konzept der Objektklassen. Die Klassen sind durch (Einfach-)Vererbung in einer Hierarchie organisiert. Implizite Basisklasse ist dabei stets java.lang.Object.
Neben den Klassen gibt es in Java das Konzept der
Interfaces. Klassen können beliebig viele
Interfaces implementieren.
Typisierung
Java verwendet das Konzept der Objektklassen und besteht auf strikter Typisierung. Das bedeutet insbesondere, dass es in Java keine Zeiger und somit keine Zeigerarithmetik gibt, sondern nur Referenzen.
Slide 5: Die Laufzeitumgebung
In Java geschriebene Programme werden i. A.
nicht mit Hilfe eines Kompilers in den Maschinencode eines bestimmten Prozessors übersetzt, sondern in einen abstrakten
Bytecode.
Dieser Code wird dann von einem Interpreter, der
Java Virtual Machine (JVM), auf der tatsächlichen Hardware ausgeführt (
"Compile once, run anywhere").
Just-in-Time Kompilierung (JIT)
Interpretierte Programme laufen wesentlicht langsamer ab als zuvor in Maschinencode übersetzte. Die Java-VM verwendet daher einen
Just-in-time Compiler der den
Bytecode beim Laden des Programms in Maschinencode übersetzt, der später wesentlich schneller ausgeführt werden kann.
Der Garbage Collector
Alle von einem Programm erzeugten Java-Objekte landen auf dem
Heap der JVM. Nicht mehr benötigte Objekte müssen dabei nicht von Hand vernichtet werden, sondern werden vom
Garbage Collector automatisch entsorgt.
Slide 6: Hello World!
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
Slide 7: Was heißt das?
class HelloWorld
deklariert die Klasse HelloWorld.
public static void main(String[] args)
deklariert die Funktion main, die ein Array von %JAVADOC{java.lang.String}%-Objekten als Argument erwartet, nichts ("void") zurückgibt und mit den Attributen "public" und "static" gekennzeichnet ist.
System.out.println("Hello world!");
ruft die Methode println des Objekts
%JAVADOC{java.lang.System}%.out
mit einem %JAVADOC{java.lang.String}%-Objekt als Argument auf.
Slide 8: Kompilieren und ausführen
Die Klasse HelloWorld wird in der Datei
HelloWorld.java gespeichert.
Dann wird der Java Compiler aufgerufen mit
javac HelloWorld.java
. Dieser erzeugt die Datei HelloWorld.class im gleichen Verzeichnis.
Diese kann nun durch
java HelloWorld
aufgerufen werden.
-- Main.christo - 05 Nov 2003
Java orientiert sich sehr stark and der Syntax von
C.
Slide 9: Kommentare
Kommentar bis zum Zeilenende:
//
Mehrzeiliger Kommentar
/* blabla
mehr blabla
noch mehr blabla */
/** javadoc erzeugt hieraus später eine schöne API-Dokumentation!
@see woanders
*/
Slide 10: Anweisungen
Anweisungen werden durch ein Semikolon beendet, nicht aber durch einen Zeilenumbruch!
Deklarationen
Hund waldi = new Hund();
Mit Hilfe des
new
Operator wird Speicherplatz für ein
=Hund= Objekt reserviert und eine Referenz darauf zurückgegeben.
Datentypen
Jede Java-Klasse ist gleichzeitig ein Datentyp.
Neben den Java-Klassen gibt es noch eine Reihe von
primitiven Typen:
Typ |
Wertebereich |
Literale |
boolean |
false , true |
byte |
8 bit (vorzeichenbehaftet) |
42, 0x42 |
char |
16 bit (Unicode) |
'C' , \u0042 |
short |
16 bit (vorzeichenbehaftet) |
12345 |
int |
32 bit (vorzeichenbehaftet) |
1234567890, 0x1A2B3C4D |
long |
64 bit (vorzeichenbehaftet) |
9223372036854775807, 0x1...F |
float |
32 bit Fließkommazahl |
0.815F |
double |
64 bit Fließkommazahl |
0.1D, 0.1, =2.3e42 |
--
Christo - 14 Nov 2003
Slide 11: Fallunterscheidungen
if
if (bedingung) {
... //then
} else {
... //else
}
switch
switch (ausdruck) {
case fall1:
...
break;
case fall2:
...
default:
...
}
(funktionale) Fallunterscheidung für Ausdrücke
(bedingung)?dann_ausdruck:sonst_ausdruck
Slide 12: Schleifen
while
while (bedingung) {
...
}
do
do {
...
} while (bedingung);
for
for (initialisierung, fortlaufbedingung, anweisung) {
...
}
klassisch:
for (int i = 0, i < 42, i++) {
...
}
objektorientiert:
for (Iterator i = eineListe.iterator(), i.hasNext(),) {
Object elem = i.next();
...
}
Siehe %JAVADOC{java.util.Iterator}%
Slide 13: Operatoren
Operatoren sind typabhängig.
boolean
== , != | Gleichheit, Ungleichheit |
! | Negation |
&, | | Und, oder (vollständige) Ausführung |
&&, || | Und, oder (Abkürzung) |
^ | Exclusives oder |
Numerische Typen
== , != | Gleichheit, Ungleichheit |
<, > <= >= | Ordnung |
+, - | Vorzeichen |
+, -, *, / | Grundrechenarten |
% | Modulo |
++, -- | In-,Dekrement |
<<,>> | Links-, Rechts-Shift mit Vorzeichenerhaltung | nur Ganzzahlen |
>>> | Rechts-Shift ohne Vorzeichenerhaltung |
~ | Bitweise Negation |
&, | | Bitweises Und, Oder |
^ | Bitweises exklusives Oder |
Siehe
http://developer.java.sun.com/developer/onlineTraining/JavaIntro/
-- Main.christo - 07 Nov 2003
-- Main.christo - 06 Nov 2003