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.

Objektorientierung

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 Kommentar

/** 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
Topic revision: r2 - 2003-11-07, ChristopherHuhn
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding GSI Wiki? Send feedback | Legal notice | Privacy Policy (german)