EE PR3 Vorlesung SS 15 Programmierung mit Java

Werbung
EE PR3 Vorlesung SS 15
 Programmierung mit Java
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 1
Literatur (1)
 Java™ Puzzlers: Traps, Pitfalls, and Corner Cases
Joshua Bloch, Neal Gafter
 Effective Java, 2.ed.
Joshua Bloch
 Java Language Specification, aktuelle Auflage
 Sprechen Sie Java?
Mössenböck, Hanspeter
dpunkt.verlag
 Java als erste Programmiersprache
Vom Einsteiger zum Profi
Heinisch, Cornelia; Müller, Frank; Goll, Joachim
Teubner
 Handbuch der Java-Programmierung
Nachfolger von »Go To Java 2«
03/04/15
Krüger, Guido
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 2
Literatur (2)
 Java ist auch eine Insel – aktuelle Version
Ullenboom, Christian
Galileo Computing, www.galileocomputing.de → openbook
 Java 6 Core Techniken
Esser, Friedrich
Galileo Computing, www.galileocomputing.de → openbook
Sehr informativ(!), aber nicht immer einfach zu lesen
 Java Tutorial
SUN
java.sun.com/docs/books/tutorial
 Thinking in Java, Eckel, Bruce
Prentice Hall, www.bruceeckel.com → Books
 Java will nur spielen, Sven Erik Panitz: Vieweg und Teubner
 Mehr, bibliographsich vollständige und z.T. kommentierte Angaben
Seite: 3
03/04/15
Vorlesung PR des
1 Fakultät Skripts.
TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
im Literaturverzeichnis
Literatur (3)
weiter Online-Bücher / Tutorials /
Dokumentation:
 JavaTM - Programmierhandbuch und Referenz für die Java
Plattform, SE 6.0
Middendorf,Stefan; Singer, Reiner; Heid, Jörn
www.dpunkt.de/java
 Java Tutorial interaktiv — Programmieren lernen mit Java
Kjell, Bradley
www.gailer-net.de, chortle.ccsu.edu/CS151/cs151java.html
 freewarejava.com/tutorials/index.shtml
 …
 es gibt ganz viele interessante und gute Quellen im WEB
 Ergänzungen werden gerne aufgenommen 
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 4
JAVA
 JAVA
 Version: JDK 8
 http://www.oracle.com/technetwork/java/
(JDK 8.0)
 Warum Java ?? und nicht xxx ?
-> J2SE Version 8.0
 Entwicklungsumgebung: ECLIPSE
 Version: 4.4 (Luna)
 http://www.eclipse.org
 Downloads
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 5
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 6
Lernziele
 Beherrschung von handwerklichen Programmier­
fertigkeiten und elementaren Programmier­
techniken
 Kennenlernen unterschiedlicher Konzepte und
Modelle von Programmiersprachen (Programmier­
paradigmen)
 Objektorientiert
 prozedural
 Objektorientierte Modellierung und technische
Realisierung von Systemen „im Kleinen“ durch­
führen können
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 7
Erfolgsfaktoren
 Aktive Mitarbeit in der Veranstaltung (Vorlesung
und Praktikum)
 Bearbeitung der Aufgaben
 Regelmäßige Arbeit mit Java
 Regelmäßige Arbeit mit der/dem Java API
Dokumentation und dem Sourcecode
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 8
Kapitel 0
Einführung:
Objektorientierung
Übersicht: OO - Paradigma
 Ein System besteht aus kooperierenden Objekten :
 Alles ist ein Objekt
 Ein System ist eine Ansammlung von Objekten, die sich
gegenseitig Aufträge in Form von Nachrichten senden.
 Jedes Objekt hat seinen eigenen Speicher, in dem sich
wieder andere Objekte aufhalten können.
 Jedes Objekt ist von einer bestimmten Klasse
 Alle Objekte einer bestimmten Klasse können dieselben
Nachrichten empfangen
 Auf eine Nachricht reagiert ein Objekt mit
 einer Änderung in seinem Speicher
 einer Reaktion
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 10
Lernziele
 Begriffe




Objekt,
Klasse,
Attribut,
Methode
kennen
 Begriffe
 Assoziation
 Delegation
 Vererbung (Generalisierung/Spezialisierung)
kennen
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 11
OO-Begriffe

OO-Programmierung erfordert solides Verständnis der
folgenden Begriffe:







Objekt
Attribut (Feld, engl. field)
Methode (Operation)
Klasse
Verbergen von Informationen (Kapselung, Geheimnisprinzip)
Vererbung
Polymorphismus
Alle Begriffe werden hier und im Laufe der Vorlesung erklärt.
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 12
Objekte
 Objekt (Object)
Das fundamentale Element in einem Programm
die Instanziierung einer Klasse
belegt Hauptspeicher, wird ausgeführt
repräsentiert die Eigenschaften (Attribute, Felder)
einer Klasse
 Bietet Methoden an, die aufgerufen werden können
(empfängt Nachrichten und führt diese aus)
 ist nicht allein auf der Welt - es kann viele Objekte
derselben Klasse geben




03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 13
Objektidentität
 Ein Objekt hat eine eindeutige Identität.
 Zwei Objekte können so auch unterschieden
werden, wenn alle ihre Attribute gleiche Werte
haben.
 Zwei Objekte mit identischen Attributwerten stellen
„das Gleiche“ dar, sind aber trotzdem nicht
„dasselbe“
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 14
Klassen

Klasse (class)
 Eine Klasse beschreibt alle Eigenschaften (Struktur,
Verhalten), die die ihre Objekte haben
 Eine Klasse ist eine Schablone (ein Muster), aus der Objekte
erzeugt werden können


Eine Klasse ist eine Beschreibung für den Aufbau eines Objekts
Die Klasse beschreibt die Schnittstelle („Interface“) nach
außen

d.h. die Attribute und Operationen bzw. Methoden, die von außen sichtbar sind
 Eine Klasse „lebt“ nicht, erst die aus der Schablone
erzeugten Objekte „leben“ (werden ausgeführt)
 Aus einer Klasse können beliebig viele Objekte erzeugt
werden - alle haben dieselben Eigenschaften
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 15
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 16
Beziehungen zwischen Klassen/Objekten
 Assoziation zwischen
Kunde
Klassen
 Links zwischen
Kunde:Meier
Objekten
1
*
erteilt
Kunde:Wang
Auftrag
Auftrag:43
Auftrag:4711
Auftrag:69
Auftrag:4712
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 17
Klassenelemente
 Klassenattribut
 Existiert nur einmal für die Klasse
 Wird von allen Objekten gemeinsam genutzt
 Klassenoperation
 Hat nur Bezug zur Klasse, nicht zu einem Objekt
 Wird mit dem Klassennamen aufgerufen, kein Objekt
notwendig
 Nutzung ohne Objekt, einfach
 KlassenName.Attributname
 KlassenName.Operationsname
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 18
Beziehungen zwischen Klassen
 Eine Klasse kann eine
andere spezialisieren
 Jedes Objekt der
spezielleren Klasse
 erbt alle Eigenschaften
der allgemeineren
 kann diese verändern
Partner
Kunde
Lieferant
 Ist-ein Beziehung
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 19
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 20
Teilsysteme (Pakete, packages)
 Zusammengehörige Klassen
werden zu Teilsystemen
(Pakete) gruppiert
 Im Beispiel:
 Human Interaction
Component – Klassen für
Benutzerinteraktion
 Problem Domain
Component –
Anwendungslogik
 Data Management
Component - Speicherung
03/04/15
HIC
«access»
PDC
«access»
DMC
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 21
Schnittstelle
 Sammlung öffentlicher
Operationen
 Kann spezialisiert
werden
 Wird von Klassen
implementiert
03/04/15
ITemperatur
Temperatur
getCelsius
getKelvin
…
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 22
Kapitel 1
Einführung in Java :
Grundbegriffe / Basiswerkzeuge
OO-Programmierung
 Vorteile:
 besserer, natürlicherer Entwurfsprozess für die
Software (Modellierungsprozess)
 höhere Produktivität bei der Entwicklung von SW
 bessere Beherrschbarkeit von großen
Programmsystemen
 Eleganz / Klarheit des Entwurfs erhöht den Spaß
 “C++ is … designed to make programming more enjoyable
for the serious programmer.” (Stroustrup) Java ist ähnlich,
vielleicht einfacher.
 aber: OO kann längere Lernkurve bedeuten!
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 24
Klassen und Objekte



03/04/15
Ein Java-Programm besteht aus einer Menge von
Klassendefinitionen
Ein ablaufendes Java-Programm besteht aus einer
Menge von Objekten, die miteinander kommunizieren
Jeder Programmierer kann Bibliotheken von Klassen
(Klassenbibliotheken) benutzen, sie sind -bei Java - in
„packages“ (Paketen) organisiert
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 25
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 26
Vorgehensweise




Überlegen, was die Klasse tun soll
Über die Schnittstelle entscheiden
Testfälle entwerfen und schreiben
Klasse ausprogrammieren
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 27
„Problemlöser“
Diese Schritte
müssen Sie
Aufgaben
dokumentieren
 Computerprogramme sollen bestimmte
durchführen – „Probleme lösen“
 Dazu sind generell folgende Schritte erforderlich:
1.
2.
3.
4.
5.
6.
Das Problem zu analysieren / zu verstehen
Eine Lösung zu entwerfen
Unterschiedliche Lösungs-Alternativen zu betrachten und zu bewerten
Sich für einen Lösungsweg zu entscheiden
Die Lösung ist zu implementieren
Die Lösung ist zu testen und Fehler/Probleme zu korrigieren
 OO-Programmierung eignet sich meist gut, weil die
reale Teilwelt in Objekten abgebildet werden kann!
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 28
Einfaches Beispiel
 Ein Glühbirne
Light lt = new Light();
lt.on();
lt.brighten();
lt.off();
03/04/15
Beispiel aus Bruce Eckel: Thinking in Java
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 29
Klasse – Attribute und Methoden
KlassenName
+|#|- type attributname
+|#|- type|void operationsname
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 30
Zugriffskontrolle
 Versteckte Implementierung
 Aufteilung der Programmiertätigkeit in: Klassen - Designer / Klassen Benutzer
 Zugriffskontrolle auf die Attribute einer Klasse ist möglich
 Klassen - Designer legt die von außen benutzbaren Attribute (das
Interface nach außen) fest
 Es gibt versteckte Attribute, die ein Klassen-Benutzer nicht verwenden
kann.
 Schlüsselwörter: public, protected, private steuern Zugriffsmöglichkeit auf
die Attribute
 Vorteil: Klassen können intern verändert werden, solange sich das
Interface nach außen nicht ändert
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 31
Java - Programme

Java Programme können :
 Eigenständige Anwendungen sein
 Anwendungen im Kontext eines anderen Programms
sein (Applets, Servlets, Beans)
 Applets sind „kleine Applikationen“ die unter der
Kontrolle eines Browsers ablaufen (Firefox /
Internet-Explorer / Chrome etc.)


Applets werden von dem Browser automatisch von
einem Server geladen und lokal ausgeführt
Applets haben weniger „Rechte“ als eigenständige
Programme


03/04/15
Beschränkung der Zugriffsrechte
Sicherheit des Anwenders bei der Nutzung
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 32
Standard Java - Klassenbibliotheken
 Standard-Klassenbibliothek
 Java enthält umfangreiche Klassenbibliotheken
 Kern - Bibliotheken, bei jeder Installation enthalten
 Klassen für







03/04/15
Textverarbeitung
Ein-/ Ausgabe
Oberflächenprogrammierung
Speicherung von Objekten
Kommunikation über das Internet
Datenbankzugriffe
u.s.w
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 33
Warum Java ?
 Wofür ist Java gut ?
Häufig in kommerzieller SW genutzt
Stark benutzt durch Applets
Großes Potential für:
Server-Side Web Architekturen (Servlets, JSP, XML)
Lösungen für unternehmensweite verteilte Objekte (JDBC,
Enterprice Java Beans, RMI, Corba)
 Embedded - und Consumer – Geräte





 Z.B. immer mehr Mobiltelefone, - gPhone / Android
 attraktiv für Programmierkurse
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 34
Java Eigenschaften











03/04/15
Einfach (na ja )
Objekt-orientiert
verteilt
interpretiert
robust
sicher
Architektur-neutral
portierbar
multithreaded
Dynamisch
Sauberer Entwurf ???
Und :
Sehr weit verbreitet !
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 35
Java Versionen (JDK)
 1.01
 1995 - 1997, eine sehr einfache Implementierung mit vielen Unzulänglichkeiten,
grundlegende Änderungen waren notwendig, hat zu vielen „deprecated“ - Klassen
geführt
 1.1
 1997 - 1998, komplett geändertes Ereignis-Modell (event) für die BenutzerOberfläche (GUI), viele neue Klassenbibliotheken
 1.2
 1999 - 2000, neue GUI-Klassenbibliothek (Swing / JFC), neue Container-Klassen
 1.3
 2000, Fehlerbereinigung, neuer „just in time“ Compiler (JIT) in der
Standardauslieferung (HotSpot) – längere Zeit stabile Version
 1.4
 2002 – 2004, keine Sprachänderungen, Erweiterung der Bibliotheken
 1.5
 Ab Ende 2004, einige tiefgreifende Sprachänderungen, z.B. „Generics“,
Erweiterung der Bibliotheken – manche sagen, seitdem sei Java nicht mehr
einfach !!
 1.6, 1.7
 Erweiterungen in den Bibliotheken
 1.8 Weitestgehende Neuerungen seit 1.5
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 36
Java Basis Werkzeuge
 JDK
 Compiler (javac), interpreter (java) und andere
Werkzeuge
 Standard Klassenbibliotheken
 Basis-Java-Implementierung, die jeder kennen sollte
 Wir lernen sie zu Anfang kennen
 frei verfügbar, in vielen kommerziellen Produkten
„versteckt“ enthalten
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 37
Eine typische JDK-Installation
 JDK-Verzeichnisbaum
 bin Verzeichnis enthält Java Werkzeuge
 beachten: Pfad muss im System bekannt sein
 lib, jre/lib Verzeichnisse enthalten
Klassenbibliotheken
 komprimiert in .jar (java - Archiv) Dateien
 doc Verzeichnis enthält Java-Dokumentation
 vollständige HTML-Dokumentation, Browser sollte mit
„index.html“ starten, Dokumentation ist mit „javadoc“ aus
dem Quellcode produziert
 src.zip enthält den gesamten Quellcode
 demo Verzeichnis enthält Beispielprogramme
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 38
CLASSPATH
 Eine wichtige Definition für die Java-Umgebung ist
der CLASSPATH
 Der Pfad, wo die VM die .class Dateien suchen soll
 sowohl der Java Interpreter als auch der Java
Compiler benutzen CLASSPATH
 CLASSPATH kann viele Verzeichnisse beinhalten
 CLASSPATH Verzeichnisse können .class Dateien und
.jar Dateien enthalten
 Java kennt den Pfad der eigenen Klassenbibliotheken,
als CLASSPATH müssen nur eigene Bibliotheken
angegeben werden
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 39
CLASSPATH II
 Beispiel für UNIX / LINUX CLASSPATH
 EXPORT CLASSPATH=.:/home/susi/Java/classes:/home/java/install.jar
 Beispiel für DOS CLASSPATH
 SET CLASSPATH=.;C:\tools\toolset.jar;D:\user\susi\java\classes
 Beispiel Windows
 Systemsteuerung > System > Erweitert >
Umgebungsvariable
 Dort CLASSPATH eintragen
 Die Suche erfolgt in der angegebenen Reihenfolge
 “.” Bedeutet das aktuelle Verzeichnis
 bei .class Dateien wird das Verzeichnis genannt
 bei .jar Dateien werden die Dateien selbst genannt
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 40
Java - ein Programm ausführen
 Der Java - Interpreter heißt „java“
 Um ein Programm auszuführen, wird die
Hauptklasse bekanntgegeben (in der „main“
enthalten ist)
 Es können Optionen übergeben werden
 java [Optionen] Hauptklassenname
 .class des Klassennamens wird nicht angegeben
 Ein Programm, das „HelloWorld.class“ heißt, wird
gestartet mit:
 java HelloWord
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 41
Java - Programmausführung I
 Wenn von dem Programm eine andere Klasse
benötigt wird, wird diese von „java“ automatisch
geladen (aber: CLASSPATH muss stimmen)
 Beispiel: Ein Programm „MyApp“. („main“ ist in MyApp):
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 42
Java - Programmausführung II
 Programmstart mit: java MyApp (Beispiel)
 MyApp benötigt die Klassen: myThread, PieChart,TextField und Animation
 Der Java-Interpreter lädt die Klassen automatisch, so daß das Programm
ablaufen kann, „main“ wird zuerst ausgeführt
 Ist das Programm in einem Paket enthalten, muss der Paketname vor dem
Applikationsnamen genannt werden
 später mehr zu Paketen !
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 43
Java Optionen
 Einige interessante Optionen
 „-classpath pfad „ überschreibt den Suchpfad, der
im Environment durch CLASSPATH gesetzt ist,
z.B.:
 java -classpath c:\home\willi\classes MyApp
 -version nennt die Version des Java-Interpreters
 -v bewirkt, dass der Interpreter jedesmal eine
Ausgabe macht, wenn eine Klasse geladen wird
 -help zeigt die möglichen Optionen
 Wichtig: den JIT-Compiler kann man aus- und
einschalten
 java -Djava.compiler=NONE .....
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 44
Javac - der Compiler




Übersetzt java - Quellcode in Bytecode
d.h.: erzeugt aus .java Dateien .class Dateien
javac muss einmal vor java gestartet werden
Aufruf:
 javac [ Optionen ] programm.java ...
 Es können mehrere Dateien gleichzeitig übersetzt werden
 Optionen:
 -classpath Pfad
 -directory name gibt das Wurzel-Verzeichnis an, wo die
.class Dateien gespeichert werden sollen. Sonst: .class
Dateien werden dort abgelegt, wo die .java - Dateien sind
 javac richtet sich nach CLASSPATH
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 45
“Hello World” in Java
 Das Programm:
// Dies ist mein Hallo Welt Programm
import java.lang.*;
public class HelloWorld {
public static void main (String args[]) {
System.out.println (”Hello world!”);
}
}
 import spezifiziert, welche packages und Klassen dieses
Programm benötigt. Diese Zeile bedeutet “Benutzung aller
Klassen aus java.lang package soll möglich sein.”
(Achtung: alle java.lang sind automatisch bekannt, das
obige import ist hier eigentlich unnötig und nur zur
Demonstation des Imports von Klassenbibliotheken gezeigt)
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 46
Hello World ...
 Das Programm:
// Dies ist mein Hallo Welt Programm
import java.lang.*;
public class HelloWorld {
public static void main (String args[]) {
System.out.println (”Hello, world!”);
}
}
 class - alles ist eine Klasse in Java, sogar das
einfachste Programm
 public - Diese Klasse ist sichtbar (benutzbar) für
alle anderen Klassen , ebenso die “Methode” main
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 47
Hello World ...
 Das Programm:
// Dies ist mein Hallo Welt Programm
import java.lang.*;
public class HelloWorld {
public static void main (String args[]) {
System.out.println (”Hello, world!”);
}
}
 main - eine Klasse braucht eine main() Methode, wenn sie
ein ausführbares Hauptprogramm sein soll (Startpunkt)
 void – Rückgabetyp von main - Java hat void Typen (void –
nichts)
 ; - alle Anweisungen enden mit einem Semikolon !
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 48
Hello World ...

Das Programm:
Dies ist mein Hallo Welt Programm
import java.lang.*;
public class HelloWorld {
public static void main (String
args[]) {
//
System.out.println (”Hello, world!”);
}
}
03/04/15
 String - Java unterstützt Zeichenketten (Strings) recht
bequem durch vorgefertigte Klassen
 // - Das ist eine Markierung für einen Kommentar
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 49
Hello World ...
import java.lang.*;
public class HelloWorld {
public static void main (String[] args) {
System.out.println (“Hello, world!”);
}
}
 [] - die Bezeichnung für ein Array (Feld)
 args - Wenn man dem Programm Parameter (Argumente)
übergeben will, so geschieht das als Array von Strings
(Zeichenketten)
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 50
Hello World ...
 Speichere HelloWorld.java
 Die Datei muss heißen wie die “public” Klasse in der Datei
 Eine Datei kann max. eine “public” Klasse enthalten
 Eine Klasse pro Datei sollte die Regel sein
 Übersetzen
 javac HelloWorld.java
 Jetzt sollte eine Datei erzeugt sein:
HelloWorld.class
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 51
Hello World ...
 Programm - Start
 java HelloWorld
 Achtung: .class wird nicht angegeben am
Ende von HelloWorld
 Es ist zu sehen: “Hello, World!”
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 52
main( )

Jedes eigenständige Java-Programm braucht einen
Startpunkt: dieser ist die Zeile:
public static void main (String [] args)




03/04/15
Man benennt die Klasse mit der main Methode, wenn
man java aufruft.
Das Argument-Array muss nicht args heißen, aber
es sollte so heißen (aus Konvention)
args[0] ist des erste Parameter, ein String
(Zeichenkette)
Mit Hilfe des Java-Interpreters kann so jede Java
Anwendung gestartet werden.
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 53
Kommentare
 Kommentare in einem Programm bilden eine “inline”
Dokumentation
 Sie sollten immer genutzt werden, um die Funktion des
Programms und die Rechenschritte zu erklären
 Kommentare beeinflussen nicht den Programmablauf
 Java Kommentare gibt es in 3 Formen:
// dieser Kommentar geht bis zum Zeilenende
/* Dieser kann auch über Zeilen hinaus
gehen, bis zur Endemarke */
/** dieses ist ein javadoc Kommentar (später mehr) */
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 54
Bezeichner

Bezeichner (Identifiers) sind die Worte, die ein Programmierer in dem
Programm benutzt

Ein Bezeichner kann aus Buchstaben, Zahlen, dem Unterstrich (_) und
dem Dollarzeichen $ bestehen

Bezeichner dürfen nicht mit einer Zahl anfangen

Java ist “case sensitive” - Total, total, und TOTAL sind
unterschiedliche Bezeichner

Es ist ein guter Stil, für unterschiedliche Typen von Bezeichnern eine
systematisch unterschiedliche Schreibweise zu wählen
 Klassennamen werden groß geschrieben - Circle
 Objekt-Variable und primitive Variable fangen mit kleinem Buchstaben an
 Konstanten werden mit Großbuchstaben geschrieben - MAXIMUM
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 55
Bezeichner
 Einen Großteil der Bezeichner muss der
Programmierer auswählen (wie Circle)
 Zusätzlich wird Code anderer Programmierer genutzt,
so daß wir die Bezeichner anderer benutzen (wie etwa
println)
 Häufig benutzen wir spezielle Bezeichner, die
reservierte Wörter genannt werden – vordefiniert in der
Programmiersprache
 Ein reserviertes Wort kann nicht in einer anderen
Weise als der vorgesehenen genutzt werden
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 56
Reservierte Wörter

Die in Java reservierten Wörter sind:
abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
03/04/15
else
enum
extends
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 57
White Space
 Leerzeichen, leere Zeilen und Tabulatoren werden
white space genannt
 “White space” wird benutzt, um Wörter in einem
Programm zu trennen
 Zusätzliche “White Spaces” werden ignoriert
 Ein gültiges Java-Programm kann auf verschiedenste
Weise formatiert werden
 Programme sollten so formatiert werden, dass die
Lesbarkeit optimiert wird
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 58
Weitere Werkzeuge
 Das JDK enthält viele andere Werkzeuge. Hier werden
diese nicht besprochen ! Nur z.B.:
 appletviewer – Zum Testen von Applets ohne Benutzung
eines Browsers
 javadoc - Generiert API-Programm-Dokumentation im HTMLFormat aus dem Quellcode – später mehr
 jar - packt und komprimiert .class Dateien in eine Java
Archiv (JAR) Datei. Syntax wie beim Unix - tar. (tape archive)
 Ist ein Komprimierer und Archivbauer wie Winzip
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 59
Weitere Werkzeuge II
 javap - Disassembliert übersetzte Java Dateien und druckt
eine Java Bytecode-Darstellung aus.
 rmic & rmiregistry - Remote Method Invocation (RMI)
Registrierung, ein Java remote procedure call (RPC)
Mechanismus, Vorlesung Rechnernetze / Verteilte Systeme
 Viele andere. . . Schauen Sie in die Dokumentation !
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 60
Entwicklungsumgebungen
 Es ist möglich, Java-Programme auf diese
primitive Art zu entwickeln
 Es gibt aber kostenlos bessere Möglichkeiten:
 NetBeans (von SUN/Oracle) (www.netbeans.org)
 Eclipse (von IBM) (www.eclipse.org)
 Beides sind komplexe Entwicklungsumgebungen,
in Java geschrieben
 Wir benutzen in diesem Semester Eclipse 4.4 mit
JSE 8.x
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 61
Eclipse






Automatischer (inkrementeller) Compile
Ausführen in der Entwicklungsumgebung
Console
Debugger
u.v.a.m.
Alles weitere können Sie im Laufe der Zeit lernen
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 62
Ein Java - Paradigma
Cross Plattform Design



Java Programme laufen auf jedem Computersystem, das
eine virtuelle Java Maschine (VM) implementiert hat - ohne
neu übersetzt (kompiliert) zu werden.
Die Java Sprachspezifikation ist standardisiert
Eine Standard-Klassenbibliothek ist in jeder Java-Distribution
enthalten


03/04/15
Sie enthält unterstützende Komponenten für die Speicherung von
Objekten, mathematische Hilfsmittel, Eingabe und Ausgabe u.s.w.
Die Klassenbibliothek enthält auch alle Komponenten für die
Programmierung von üblichen grafischen
Benutzeroberflächen
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 63
Virtuelle Java Maschine
 Java - Virtuelle Maschine (JVM)




03/04/15
Stellt konsistentes „Maschinen“-Interface bereit, dass alle
Basisfunktionen des Computersystems verdeckt
Ein Java-Programm „denkt“, dass es auf einer JavaMaschine läuft - nicht auf einem PC / Mac o.ä.
Die System-Aufrufe des Java-Programms werden von der
JVM bearbeitet, diese übergibt einige Aufgaben an das
Betriebssystem
JVM stellt Speicher für die Objekte eines Programms bereit
und gibt den Speicher auch wieder frei, wenn die Objekte
nicht mehr benutzt werden.
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 64
Java Code
 Java Code wird übersetzt und interpretiert

Byte Code






Dateien



03/04/15
Ein Programm wird übersetzt vom Programmcode in „Byte“-Code
Der Byte-Code wird von jeder JVM verstanden
Der Byte-Code wird in den Arbeitsspeicher geladen und von der JVM
interpretiert.
Dabei wandelt die JVM die Kommandos des Byte-Codes in
ausführbare Maschinenbefehle um und führt diese dann aus.
Problem : Byte-Code zu interpretieren ist langsam !
Java - Programme werden in xxx.java Dateien gespeichert
Byte-Code wird in xxx.class Dateien gespeichert
Der Benutzer schreibt xxx.java Dateien, diese werden in xxx.class
Dateien übersetzt
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 65
Der Java - Ausführungsprozess
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 66
Byte-Code von „HelloWorld“
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 67
Verarbeitungsmodell von Java
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 68
Java SE 6 Plattform
Aus: http://java.sun.com/javase/6/docs/
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 69
Java SE 8 Plattform
http://docs.oracle.com/javase/8/docs/
03/04/15
Vorlesung PR 1 Fakultät TI Dep Informatik Profs Klemke, Kahlbrandt WS 2014
Seite: 70
Herunterladen