Java Überblick Liste Programmieren – Java Überblick

Werbung
Liste Programmieren – Java
Überblick
1
2
3
4
5
6
7
8
9
10
11
Was ist Java?
Klassen und Objekte
Vererbung
Schnittstellen
Innere Klassen
Exceptions
Funktionsbibliothek
Datenstrukturen und Algorithmen
Ein-/Ausgabe
Threads
GUI-Programmierung mit SWING
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
11
Liste Programmieren – Java
Überblick: 1. Was ist Java?
1.1
1.2
1.3
Historie
Prinzipien
Änderungen gegenüber C++
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
12
1
1. Was ist Java?
1.1 Historie
„
Ursprünge in 1990 (Bill Joy)
‰
„
James Gosling
‰
„
„
Vorgänger Oak: Sprache für TV Set-Top Boxen
1993: Aus Oak wird Java
Entwickelt von Sun Microsystems
‰
‰
‰
„
„The Network is the Computer“
Erste Alpha-Version 1995
Zunächst um Applets zu schreiben
Ziel: Maschinen-unabhängige Programmiersprache
Von Applet-Programmierung zur vollständigen Programmiersprache
für breite Anwendungsgebiete
‰
‰
‰
Sehr umfangreiche Klassenbibliotheken
Swing zur Programmierung graphischer Benutzerschnittstellen
Netzprogrammierung, Verteilte Anwendungen (Servlets, Enterprise
Java Beans)
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
13
Liste Programmieren – Java
Überblick: 1. Was ist Java?
1.1
1.2
1.3
Historie
Prinzipien
Änderungen gegenüber C++
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
14
2
1. Was ist Java?
1.2 Prinzipien
„
Architektur
‰
‰
Java wird sowohl interpretiert als auch kompiliert
Java Quellcode wird in maschinen-unabhängigen Code kompiliert
„
Instruktionen für eine virtuelle Maschine (Java Virtual Machine –
JVM)
„
Java byte code
‰
„
Wird von Java runtime interpreter ausgeführt
Virtuelle Maschine
‰
‰
‰
‰
‰
Stack-basierter Instruktionssatz
Verwaltet Speicher (heap)
Primitive Datentypen
Verwaltet Speicherblöcke (dynamischer Speicher)
Offengelegte Spezifikation
„
Kann von jedermann implementiert werden
„
Nichts ist implementierungsabhängig
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
15
1. Was ist Java?
1.2 Prinzipien
„
Virtuelle Maschine (fortgesetzt)
‰
‰
‰
‰
‰
Interpreter ist relativ leichtgewichtig und klein
Oft in C oder C++ implementiert
Kann
„
separate Anwendung oder
„
in einen Browser eingebettet sein
Stellt hohe Portabilität von Java Code sicher
Fundamentale Einheit ist die Klasse (class)
„
Übersetzte Klasse enthält
‰
‰
„
Java byte code und
Informationen über die Klasse
Wird zur Laufzeit dynamisch gefunden und geladen
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
16
3
1. Was ist Java?
1.2 Prinzipien
„
Virtuelle Maschine (fortgesetzt)
‰
‰
Fundamentale Klassen
„
Architektur-abhängig
„
Native methods
„
In kompilierter Programmiersprache geschrieben
„
Schnittstelle zu Betriebssystem, Dateisystem, etc.
Sonstige Klassen
„
Voll in Java geschrieben
„
Portabel
„
Dazu gehört auch der Compiler und die Laufzeitumgebung für
Web-Browser
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
17
1. Was ist Java?
1.2 Prinzipien
„
Virtuelle Maschine (fortgesetzt)
‰
Laufzeitverhalten
„
Bei Interpretern üblicherweise schlecht
„
Aber: Java interpretiert bereits übersetzten byte code
„
Zusätzlich: Just-In-Time (JIT) Compiler
‰
„
Annähernd so schnell wie direkt in Maschinencode übersetzter Code
Plus: Suns HotSpot Technologie
‰
© Prof. Dr. Björn Dreher
Adaptive Compilierung
Liste Programmieren - Java
18
4
1. Was ist Java?
1.2 Prinzipien
„
Sicherheit
‰
‰
‰
Verschiedene Sicherheitsebenen
Java class loader
„
Lädt byte code der übersetzten Klassen
„
Bildet Schutz um nicht vertrauenswürdige Klassen
„
Basis für security policies
Im Detail später
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
19
Liste Programmieren – Java
Überblick: 1. Was ist Java?
1.1
1.2
1.3
Historie
Prinzipien
Änderungen gegenüber C++
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
20
5
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Kein Operator Overloading
‰
„
Kein Präprozessor
‰
‰
„
Keine #defines
Keine bedingte Kompilierung
Package Struktur
‰
‰
‰
‰
„
Ausnahme: + Operator (String Verkettung)
Organisation der Klassen in hierarchische Struktur
Fixiert in Verzeichnisstruktur
Zusätzliche Sichtbarkeitsebene
Übernimmt Teile des make-Prozesses
Keine Header-Dateien
‰
‰
Sämtliche Typinformationen für Attribute und Methoden sind in class
Files enthalten
Quellcode ist einfacher zu lesen!
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
21
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Keine Mehrfacherbung
‰
„
Strenge statische Typdefinition
‰
‰
‰
„
Zur Übersetzungszeit bekannt
Bei Zuweisung geprüft
Prüfung auf nicht initialisierte Variablen
Typprüfung auch zur Laufzeit
‰
‰
‰
„
Stattdessen: Schnittstellen (interfaces)
„
Rein abstrakte Klassen
„
Eine Klasse kann mehrere Interfaces implementieren
Polymorphe Objekte
Typumwandlung durch Type Casting
Inspection von Objekten zur Laufzeit
Späte Bindung
‰
Methoden entsprechen – bis auf wenige Ausnahmen – immer den
virtuellen Methoden in C++
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
22
6
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Dynamische Speicherverwaltung
‰
‰
Nur für Variablen von simplen Datentypen (int, float, ...) wird mit der
Deklaration auch der Speicher im Sinne von C++ definiert
Alle anderen Variablen sind Objekte und müssen dynamisch allokiert
werden
„
Mit dem new Operator
„
Auch Arrays sind Objekte
‰
‰
„
Kennen Typ und Größe
Das Vernichten von dynamisch allokiertem Speicher übernimmt die
garbage collection!
„
Es gibt keinen delete Operator
„
Programmierer muss sich darum nicht kümmern!
„
Es gibt keine Speicherlecks!
Generische Programmierung (Templates) erst ab Java 5
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
23
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Zeiger in Java
„
Referenzen
‰
‰
‰
‰
‰
„Es gibt keine Zeiger in Java “ ist nicht ganz richtig ...
Dynamisch allokierte Objekte werden über (konstante) Zeiger
referenziert
„
Variablenname eines Objektes bezeichnet eigentlich die Referenz
auf das Objekt
„
Streng typisierter Verweis auf das Objekt
„
Automatische Dereferenzierung wie in C++
Keine Zeigerarithmetik wie in C/C++
Wertzuweisung ist möglich!
„
Damit können beliebige Datenstrukturen typsicher aufgebaut
werden
Als Parameter werden Referenzen als Werte übergeben
„
Nur eine Ebene der Indirection
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
24
7
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Zeiger auf Methoden
‰
‰
„
Gibt es nicht in Java
Es gibt andere Wege, die Methode bei einem Aufruf dynamisch zu
wählen
„
Java reflection Mechanismus
Arrays
‰
‰
‰
Normale Objekte
Werden dynamisch allokiert
Kennen ihren Typ und Größe
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
25
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Fehlerbehandlung
‰
‰
‰
„
Ausnahmebehandlung (exception handling)
Ähnlich wie neuerdings auch in C++
Compiler verlangt, dass Methode entweder die exception fängt und
behandelt oder diese als möglich deklariert
„
Vergleichbar mit Schnittstellenbeschreibung für Parametertypen
und -anzahl
Nebenläufige Verarbeitung
‰
‰
Threads
Synchronisation
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
26
8
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Sicherheitssystem
‰
Ein Stück C++ Code
// C++ code
class Finanzen {
private:
char kreditKartenNummer[16];
...
};
main() {
Finanzen f;
// Ein Zeiger, um in das Objekt zu sehen
char *kartenNum = (char *) &f;
printf("Karten Nummer = %s\n", kartenNum);
}
‰
Das Sicherheitssystem von Java würde dies nicht zulassen
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
27
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Mehrschichtiges Sicherheitssystem
System Resources
Security Manager
Class Loader
Verifier
Nicht vertrauenswürdige Quelle
‰
Java Binary
Bytecode Verifier
„
Stellt sicher, dass der byte code sich „anständig verhält“ (is wellbehaved)
„
Sicherheit gegenüber Manipulation des übersetzten Codes
„
Z.B.:
‰
‰
© Prof. Dr. Björn Dreher
Code verletzt nicht die Zugriffsdefinitionen einer Klasse
Keine illegalen Casts
Liste Programmieren - Java
28
9
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Mehrschichtiges Sicherheitssystem
‰
Class Loader
„
Bringt die übersetzten Klassen in den Interpreter
„
Lädt ggf. auch über ein Netzwerk
„
Klasse bleibt mit ihrem Class Loader verknüpft
‰
‰
‰
Getrennte Namensräume basierend auf Herkunft der Klasse
Referenzen zu anderen Klassen müssen durch denselben Class
Loader aufgelöst werden
Suche nach Java Klassen beginnt immer bei den „eingebauten“
Klassen (Javas Classpath)
„
Diese Klassen werden nur einmal geladen und können nicht durch
Klassen von anderen Ursprüngen ersetzt werden
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
29
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Mehrschichtiges Sicherheitssystem
‰
Security Manager
„
Kann installiert sein
„
Entscheidet über Berechtigungen der Anwendung auf SystemRessourcen
‰
„
Dateisystem, Netzwerk-Ports, andere Prozesse
Typisch für Applets in Web-Browsern
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
30
10
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Kommentare
‰
„
Wie in C++
javadoc Kommentare
‰
‰
‰
Automatische Generierung von HTML-Dokumentation
Hilfsprogramm javadoc
Struktur:
/**
* Das ist eine tolle Klasse
* <p>
* Alles weitere folgt ...
*
* @see Klasse1
* @see Klasse2
* @author Hans Alleskoenner
* @version 0.95, 19 Dez 2002
*/
© Prof. Dr. Björn Dreher
31
Liste Programmieren - Java
1. Was ist Java?
1.3 Änderungen gegenüber C++
„
Tags in javadoc Kommentaren
Tag
Beschreibung
Anwendbar bei ...
@see
Verweis auf andere Klasse
Klasse, Methode, Attribut
@author
Name des Autors
Klasse
@version
Versionsbezeichnung
Klasse
@param
Parametername und –beschreibung Methode
@return
Rückgabewert
Methode
@exception
Name der geworfenen Exception
und Beschreibung
Methode
@deprecated
Sollte nicht mehr verwendet
werden; veraltet
Klasse, Methode, Attribut
© Prof. Dr. Björn Dreher
Liste Programmieren - Java
32
11
Herunterladen