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