Empfehlenswerte Literatur • Flanagan, David: Java in a Nutshell, Nutshell O‘Reilly, UK, 2002 (50 €) • Online Referenzen unter • http://www.wi3.uni-erlangen.de/lehre/ • http://java.sun.com • http://www.javaworld.com/ • Online Tutorials: Tutorials • http://java.sun.com/docs/books/ 1 Entwicklung der Programmiersprachen Ada 9 2 Java Object COBOL 1990 Eiffel Oberon C++ ObjectPaskal ObjectiveC CLOS Modula2 SmalTalk80 Ada 1980 Loops SmalTalk76 Paskal C Prolog SmalTalk72/74 Agenda: - OOP 1970 - Kein OOP PL/1 Simula COBOL 1960 LISP Algol Fortran Java - Eine objektorientierte Programmiersprache • 1991 durch SUN Microsystems initiiert. Green Team Quelle: SUN • Java auch unabhängig von Webapplikationen. • Java Virtual Machine (JVM) Designziele: • Java Software Development • Objektorientiert Kit (J2SDK) • Einfach • Robust • Plattformunabhängig • Sicher • Verteilt • Performant • Multithreaded • Frei verfügbar 3 Java-Editionen - Übersicht 4 Vergleich: Java vs. „Der Rest“ (1) 5 Vorgehensweise in „anderen“ Programmiersprachen Sourcecode Compiler für Prozessortyp A Compiler für Prozessortyp B Compiler für Prozessortyp C Objekt-Programm (Binär-Code) für Prozessortyp A Objekt-Programm (Binär-Code) für Prozessortyp B Objekt-Programm (Binär-Code) für Prozessortyp C (+)Optimale Ausnutzung der jeweiligen Prozessoreigenschaften; dadurch hohe Abarbeitungsgeschwindigkeit der kompilierten Programme (–) Das kompilierte Programm läuft nur auf dem jeweiligen Prozessortyp (–) Für jeden Prozessortyp muss das Programm mit einem anderen Compiler neu kompiliert werden (–) Programmiersprachen nicht plattformübergreifend definiert Vergleich: Java vs. „Der Rest“ (2) 6 Vorgehensweise in Java Sourcecode (Java) Compiler für Java Objekt-Programm (Byte - Code) Plattformunabhängig Java Interpreter für Prozessortyp A Java Interpreter für Prozessortyp B Java Interpreter für Prozessortyp C (+)Für alle Prozessortypen ein Compiler (+)Unabhängig von allen Plattformen exakt definiert (gleiche Funktionen überall) (+)Nur einmaliges Kompilieren (–) Die übersetzten Programme laufen im Vergleich zu kompilierten langsamer (–) Für jeden Prozessortyp ist ein Java-Interpreter nötig Vergleich: Java vs. „Der Rest“ (3) 7 Sprachmerkmale • • • • Garbage Collector Spezielle Fehlerbehandlungsroutinen Unterscheidung zwischen „eigene“ und „fremde“ Komponenten Mehrstufige Prüfung der Klassen/Programmmodulen Compiler Class Loader Class-/Bytecode-Verifier Security Manager Laufzeitumgebung Sichere Sprache Java, keine gefährlichen Konstrukte Klasse stammt aus zuverlässigem Bereich Format der Klassendatei sowie Bytecode werden überprüft Implementierung der Sicherheitsstrategien Implementierung der sicheren Semantik von Java Java 2 Software Development Kit 8 Laufzeit- und Entwicklungsumgebung • Werkzeuge J2SDK • • • • • • • • • Javac è Compiler (.java) Java è Interpreter (.class) Appletviewer (.html) Javadoc è Erstellung von HTML – Dokumentationen Jdb è Debugger Jar è Java Archiver (.jar) Diverse Tools zum Signieren und Policy-Verwaltung Tools zum Kompilieren von Verteilten Anwendungen Tools zum Erzeugen von C/C++ Interface Dateien J2SDK-Doc • HTML-Dokumentation Java und seine Vielfältigkeit • Unterschiedliche Struktur / Konzepte / Aufbau der Javaprogramme je nach Einsatzgebiet • Es wird unterschieden zwischen: • • • • • • • Java Standalone Application Java Applet Java Servlets Java Ser ver Pages Enterprise Java Beans Verteilte (Client/Server) Anwendungen ... • Für jede Art genaue Spezifikation in Form von API + „Vorschriften“ • Diverse APIs für Unterschiedliche Techniken: • • • • • • JAAS JCE Java Speech API Java 3D API JAXP ... 9 Agenda • Motivation, Einführung: • Allgemeines • Die ersten Schritte 10 Erste Schritte Programmaufruf Ausgabe 11 12 Aufbau eines Java Programms (1) Paketdeklaration Klassendeklaration Der Sourcecode befindet sich in der Textdatei mit dem Namen „FirstApp.java“. Die Datei liegt in der gleichen Verzeichnisstruktur, wie auch der Paketname. 13 Aufbau eines Java Programms (2) Methodendeklaration Klassenrumpf Methodenrumpf Anweisung Merke: • Immer eine Klasse in einer SourceSource-Datei. Datei • Methoden immer innerhalb der Klasse. 14 Aufbau eines Java Programms (3) • Mindestens 1 Klasse, die durch class gekennzeichnet wird. • Hinter class steht der spezifische Klassenname. • Alles was dahintersteht und zur Klasse gehört, wird in geschweifte Klammern {} eingeschlossen. • Eine Klasse kann mehrere Operationen (in Java Methoden) enthalten (z.B. main) • Alles was anschließend folgt, die Methode also näher beschreibt, wird wieder in geschweifte Klammern eingebunden. 15 Kompilieren eines Java Programms • Setzen der Umgebungsvariablen: • path – legt fest, in welchen Verzeichnissen das Betriebssystem die ausführbaren Programme und Programmressourcen suchen soll • classpath – legt fest, wo die JVM die benötigten .java und .class Dateien suchen soll • Aufruf in der Kommandozeile: set path=d:\j2sdk1.4\bin;%path% set classpath=d:\myDir\classes;d:\myDir\libs;%classpath% • Kompilieren: javac –d <zielverzeichnis> datei1.java javac –d <zielverzeichnis> dir1/dir2/datei2.java javac –d <zielverzeichnis> dir1/dir2/*.java Aufruf eines Java Programms Starten der JVM mit dem Programmnamen (Klassennamen) als Parameter Ablauf: • Laden der JVM durch Betriebssystem • Übergabe des Parameters an JVM • Suchen und Laden der Klasse durch JVM • Identifizieren und Ausführen der Methode: public static void main(String args[]) • Ausführen der Anweisungen • Bereinigen des reservierten Speichers • Entladen der JVM durch Betriebssystem 16 17 Schlüsselwörter Java- Schlüsselwörter Klassen/ Objekte -class -interface -new -extends -implements -instanceof -return Schleifen -do -while -for -break -continue Modifier -private -protected -public -abstract -final -native -static -synchronized -transient -volatile Bedingungen -if -else -switch -case -default primitive Datentypen Fehlerbehandlung -byte -short -int -long -float -double -boolean -char -try -catch -throw -throws -finally Packaging/ Module -package -import Konstanten/ Referenzen -this -super -void -null -true -false