Sie sind auf Seite 1von 6

2. Was ist Java?

2. Was ist Java?

Lernziele
Das Verarbeitungsmodell von Java kennen. Die Entstehungsgeschichte von Java kennen lernen. Wissen, welche besonderen Merkmale die Sprache auszeichnen.

Quizfrage
Was ist Java? A: Tropische Sdseeinsel B: Amerikanische Umgangssprache fr Kaffee C: Objektorientierte Programmiersprache D: Die Frau von Bill Gates
Lsung: A, B, C

2.1 Wie Java funktioniert


Nehmen wir an, Sie mchten eine Anwendung (z.B. eine interaktive Partyeinladung) schreiben, die auf den beliebigen Gerten, die Ihre Freunde besitzen, funktionieren soll.
ss Party { public cla ic void public stat args) { g[] main(Strin .println( System.out ); Tim Party bei

Quellcode fr interaktive Partyeinladung


l cia _0 pe () ad kes od ect alo o th bj 0 inv Me g.O 1 < 1 lan # ava. J

Method Party() 0 aload_0 1 invokespecial # 1 <Method java.lang.Object()> 4 return Method void

Party bei Tim

Party b ei Tim

Party bei Tim

Quelle
Erstellen Sie ein Quelldokument. Verwenden Sie als Programmiersprache Java.

Compiler
Lassen Sie Ihren Quellcode durch einen Quellcode-Compiler laufen. Der Compiler prft, ob Fehler vorhanden sind und kompiliert erst, wenn er sicher ist, dass alles richtig luft.

Code
Der Compiler erstellt ein neues Dokument, das in Java-Bytecode kodiert ist. Jedes Gert, das Java ausfhren kann, kann diese Datei interpretieren bzw. in etwas bersetzen, das es ausfhren kann. Der kompilierte Bytecode ist plattformunabhngig.

Virtuelle Maschinen
Ihre Freunde haben keine physische Java-Maschine, sondern alle haben eine virtuelle (in Software implementierte) JavaMaschine, die innerhalb Ihrer elektronischen Gerte luft. Die virtuelle Maschine liest den Bytecode und fhrt ihn aus.

C. Endre

1/6

07/2006

2. Was ist Java?

2.2 Was Sie in Java machen


Sie geben eine Quellcode-Datei ein, kompilieren diese mit dem javac-Compiler und fhren den kompilierten Bytecode anschlieend auf einer virtuellen Java-Maschine aus.
import java.awt.* import java.awt.event; class Party{ public void erstelleEinladung(){ Frame f = new Frame(); Label l = new Label(Party bei Tim); Button a = new Button(Sicher doch); Button b = new Button(Ohne mich); Panel p = new Panel(); p.add(l); p.add(a); p.add(b); } // mehr Code }

Quelle
Geben Sie Ihren Quellcode ein. Dazu reicht ein einfacher Texteditor. Speichern Sie den Quellcode unter Party.java.

Compiler
Kompilieren Sie die Datei Party.java, indem Sie auf der Kommandokonsole mit dem Befehl javac die Compiler-Anwendung aufrufen. Wenn der Compiler keinen Fehler im Quellcode findet, generiert er die Bytecode-Datei Party.class.

Code
Kompilierter Code Party.class.

Method Party() 0 aload_0 1 invokespecial #1 <Method java.lang.Object()> 4 return Method void erstelleEinladung() 0 new #2 <Class.java.awt.Frame> 3 dup 4 invokespecial #3 <Method java.awt.Frame>

Virtuelle Maschinen
Fhren Sie das Programm aus, indem Sie die Java Virtual Maschine (JVM) mit der Datei Party.class starten. Die JVM bersetzt die Datei in etwas, das die zugrunde liegende Plattform versteht, und fhrt das Programm aus. Hinweis: Diese Darstellung soll keine Anleitung fr Ihr erstes Programm sein, sondern Ihnen nur ein Gefhl fr die Verarbeitung von Java-Programmen vermitteln.
C. Endre 2/6 07/2006

2. Was ist Java?

2.3 Historisches zu Java

Klassen in der Java-Standardbibliothek

3500 3000 2500 2000 1500 1000 500 0 Duke das Java-Maskottchen

Java 1.02
250 Klassen Langsam Hbscher Name, hbsches Logo. Spa beim Arbeiten, viele Fehler. Applets sind die groe Sache.

Java 1.1
500 Klassen Etwas schneller Mehr Fhigkeiten, freundlicher. Beginnt, sehr beliebt zu werden. Besserer GUI-Code

Java 2 (Version 1.2 1.4)


2300 Klassen Viel schneller Kann (manchmal) mit nativer Geschwindigkeit laufen. Ernsthaft, mchtig. Kommt in drei Varianten: Micro Edition (J2ME), Standard Edition (J2SE) und Enterprise Edition (J2EE). Wird zur Sprache der Wahl fr neue EnterpriseAnwendungen (insbesondere webbasierte) und mobile Anwendungen.

Java 5.0 (Version 1.5 und hher)


3500 Klassen Mehr Power. Erleichtert die Entwicklung Neben dem Hinzufgen von mehr als 1000 Klassen werden in Java 5.0 grere nderungen an der Sprache selbst vorgenommen, um das Programmieren zu vereinfachen. Auerdem werden neue Features hinzugefgt, die in anderen Sprachen beliebt sind.

1991

Alles begann mit einer E-Mail, in der der 25-jhrige SUN-Programmierer Patrick Naughton die Firmen- und Produktpolitik seines Arbeitgebers anprangerte. Die Produkte seien zu akademisch, die Benutzung zu kompliziert. Die Klagen wurden von den SUN-Bossen Scott McNealy und Bill Joy erhrt. Naughton begann, mit James Gosling und Mike Sheridan in einem neuen Projekt einen Prototyp zur Steuerung und Integration von elektronischen Konsumgerten (Toaster, Videorekorder, Fernseher etc.) zu entwickeln.

C. Endre

3/6

07/2006

2. Was ist Java?

1992

Naughton und sein Team bauten ein Gert, das zur Fernbedienung unterschiedlicher
elektronischer Konsumgerte eingesetzt werden konnte. ein Betriebssystem (Green-OS) einen Portabler Interpreter (Oak) ein graphisches Subsystem, das eine tastaturlose graphische Oberflche realisierte eine Drahtlose Datenbertragung Dieser Prototyp (*7 StarSeven) glich heutigen Palm-Computern. Er verfgte ber

1994

*7 wurde zwar zur Serienreife entwickelt, die Vermarktung scheiterte jedoch. Zu dieser Zeit erkannte Bill Joy das Potential des rasant wachsenden World-Wide-Webs und die Bedeutung einer plattformunabhngigen Programmiersprache, mit der neben aktuellen Inhalten auch Programme transportiert und ohne Installations- und Portierungsaufwand auf einem beliebigen Zielrechner ausgefhrt werden knnen. Daraufhin entwickelten Naughton und Gosling mit der Programmiersprache Oak im Herbst 1994 die erste Version des Browsers WebRunner, der neben der Darstellung von HTMLSeiten auch kleine Java-Programme (Applets) aus dem WWW laden und innerhalb des Browserfensters ausfhren konnte.

1995

Oak wurde unter dem Namen HotJava stabilisiert und weiterentwickelt. Der Durchbruch fr HotJava kam jedoch erst, als die Firma Netscape, die mit dem Navigator den fhrenden Browser besa, sich entschied, die Java-Technologie von SUN zu lizenzieren. Diese Ankndigung von Netscape am 23. Mai 1995
wird von SUN als offizielle Geburtsstunde von Java gesehen.

1996 1999

SUN gab JDK 1.0 (Java Development Kit) frei. JDK 1.2 wurde auf den Markt gebracht und in Java 2 Platform umbenannt. Wichtigste Neuerungen: Swing Toolset, Java 2D API, Drag-and-Drop API JDK 1.4 bringt Performance-Verbesserungen, neue Bibliotheken, XML-Untersttzung JDK 1.5 bringt weitere Verbesserungen und Ergnzungen wie u.a. generische Klassen und Enumerations. Sun ndert die Bezeichnung von JDK 1.5 in J2SE 5.0.

2002 2004

2.4 Java-Programme Applications


Applications sind Anwendungen, die selbstndig auf einem Computer laufen. Voraussetzung: Eine Java-Laufzeit-Umgebung (JRE = Java-Runtime-Environment) ist auf dem System installiert.

Applets
Applets sind Programme, die ber das Internet von einem Web-Server geladen und in einem WebBrowser ausgefhrt werden. Das Sicherheitskonzept der Java-Applets verhindert, dass Applets auf lokale Daten des Systems, auf das sie geladen werden, zugreifen. Voraussetzung: JRE im Browser oder externes JRE durch Java-PlugIn vorhanden.
C. Endre 4/6 07/2006

2. Was ist Java?

2.5 Eigenschaften von Java


Einfach Objektorientiert Plattformunabhngig Robust Interpretiert Nebenlufig (untersttzt multi-threading) Verteilt Sicher Dynamisch

2.5.1

Java ist einfach

Zu groen Teilen wurde Java von C / C++ abgeleitet. Viele potentielle Fehlerquellen von C & C++ wurden jedoch entfernt. So gibt es in Java z.B. keine Zeiger. Java kennt nur 8 elementare Datentypen. Es gibt nur 50 reservierte Wrter. Java verfgt ber ein Memory Management und eine Garbage Collection: Nicht mehr referenzierte Objekt werden automatisch durch die Garbage Collection aus dem Speicher entfernt. Das vermeidet memory leaks. Man bekommt insgesamt eine bessere Performance durch effizientes Memory Management. Java verfgt ber eine integrierte Synchronisation von Threads.

2.5.2

Java ist objektorientiert

Java Programme bestehen aus Klassen. Jedes Programm besitzt mindestens eine Klasse.

private, public, protected ).

Java verfgt ber den Mechanismus der Datenkapselung (durch Klassen und Zugriffsbeschrnkungen Polymorphismus (Abstrakte Klassen und Methoden) ist mglich. Vererbung ist mglich. Dynamic binding ist mglich.

2.5.3

Java ist plattformunabhngig


Der Java Compiler erzeugt Byte Code und nicht Maschinencode. Java Programme knnen auf jeder Plattform ausgefhrt werden, die eine Virtuelle Maschine besitzt.

Java ist plattformunabhngig.

Java-Programme sind portierbar auf jede Plattform, fr die eine JVM existiert. Datentypen sind unabhngig von der Implementierung der JVM.

C. Endre

5/6

07/2006

2. Was ist Java?

2.5.4

Java ist robust


Strikte Typberprfung zur bersetzungs- und Laufzeit Automatisches Memory Management Automatische Prfung von Zugriffen auf Arrays und Strings

Folgende Grnde machen Java robust:

2.5.5

Java ist sicher

Speicheranforderungen und Referenzen werden von der JVM verwaltet. Entwickler haben keinen direkten Zugriff auf den Speicher (keine Pointer). Es wird eine berprfung durchgefhrt, ob der Byte-Code Zeiger verndert Zugriffsbeschrnkungen verletzt Der Byte-Code-Verifier stellt sicher, dass kein Stack-berlauf oder -Unterlauf stattfindet und die Typen smtlicher Parameter korrekt sind.

2.5.6

Java ist nebenlufig

Mit Nebenlufigkeit bezeichnet man die Fhigkeit eines Systems, zwei oder mehr Vorgnge gleichzeitig oder quasi-gleichzeitig ausfhren zu knnen. Ein Thread ist ein eigenstndiges Programmfragment, das parallel zu anderen Threads laufen kann. Ein Thread hnelt damit einem Prozess, arbeitet aber auf einer feineren Ebene. Whrend ein Prozess das Instrument zur Ausfhrung eines kompletten Programms ist, knnen innerhalb dieses Prozesses mehrere Threads parallel laufen. Der Laufzeit-Overhead zur Erzeugung und Verwaltung eines Threads ist relativ gering und kann in den meisten Programmen vernachlssigt werden. Ein wichtiger Unterschied zwischen Threads und Prozessen ist, dass sich alle Threads eines Programms einen gemeinsamen Adressraum teilen, also auf dieselben Variablen zugreifen, whrend die Adressrume unterschiedlicher Prozesse streng voneinander getrennt sind. Java hat Threads direkt in der Sprache integriert. Die Klasse Thread enthlt Methoden zum Starten, Stoppen und Verwalten von Threads. Die Synchronisation mehrerer Threads ist mglich. Java Laufzeitbibliotheken sind threadsicher.

2.5.7

Java ist dynamisch

Klassen knnen zur Laufzeit geladen werden, weil die Programme interpretiert werden. Anwendungen knnen auf nderungen ihrer Laufzeitumgebung reagieren, ohne dass der Code verndert und neu bersetzt werden muss.

C. Endre

6/6

07/2006