Übungen Informatik I JAVA - Einführung Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 1 Warum Java? Java ist derzeit die Programmiersprache für das Internet. Java ist ein Programmierkonzept der Zukunft. Objekt-orientierte Programmierung ist für komplexe und umfangreiche Aufgaben unerlässlich. Plattformunabhängigkeit und Netzwerkfähigkeit sind Voraussetzungen für eine weltweite Verfügbarkeit einer Anwendung. Sehr umfangreiche und gute Klassenbibliothek als Standard vorhanden. Java macht Spaß. Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 2 Einsatzmöglichkeiten von Java Java-Einsatzgebiete Geeignet für prinzipiell alle programmierbaren Anwendungen: Benutzeroberflächen Grafik und Animation verteilte Anwendungen Information, Animation, Kunst, Unterhaltung im WWW Beispiele: Intelligente Information mit Multimedia und Interaktion in Wissenschaft und Ausbildung. Benutzeroberflächen für Datenbankzugriffe Kommunikations- und Büroanwendungen Java ist ungeeignet für Hardware-nahe Anwendungen (Treiber), da das Sicherheitskonzept einen Hardwarezugriff verbietet. Ausweg: Java Native Interface (Kombination aus Java und C/C++/Assembler). Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 3 Java ist interpretierte Sprache Compiler Code Compiler (Win32) Ausführbare Datei (Win32) Compiler (Sparc) Ausführbare Datei (Sparc) import java.text.*; class Test { void print(){} } Compiler (PowerPC) Ausführbare Datei (PowerPC) Interpreter Code Interpreter (Win32) import java.text.*; class Test { void print(){} } Interpreter (Sparc) Compiler Java Bytecode (plattformunabhängig) Interpreter (PowerPC) Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 4 JAVA Java-Byte-Code und die Java Virtuelle Machine (JVM) o.g. Eigenschaften Quelldatei x.java Java-Compiler javac x.java Java-Byte-Code x.class JVM write once <-> run everywhere (Applet od. Applikation) Der Java-Compiler erzeugt Java-Bytecode. Der Java-Bytecode ist - plattformunabhängig, - im Internet verteilbar und - auf jedem Rechner mit einer JVM lauffähig. Die Java Virtual Machine besteht aus: - Bytecode-Lader (lädt den Byte-Code inkl. der benötigten Bibliotheken) - Bytecode-Verifizierer (überprüft die Sicherheitsregeln) - Bytecode-Interpreter (interpretiert den Byte-Code und führt ihn als machinenspez. Code aus) - eventuell Hotspot-Compiler oder JIT: Übersetzung des Bytecodes in Maschinencode zur Laufzeit! Folie 5 Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 JAVA Werkzeuge Editor: DOS-Fenster javac java: z.B. Notepad, Textpad, Eclipse, joe, ... Schreiben des Java-Quellcodes und Speichern unter einem Namen mit der Endung “.java“ . Der Dateiname muß gleich dem Klassennamen in der Datei sein. Verzeichnis wechseln mit cd \Java\Arbeitsverzeichnis doskey ermöglicht Rückgriff auf vorhergehende Befehle über Richtungstasten. Mit Strg + c kann ein laufendes Java-Programm abgebrochen werden. Java-Compiler Erzeugt Java-Bytecode aus Java-Quellcode Aufruf: javac BeispielKlasse.java Es wird eine neue Datei BeispielKlasse.class erzeugt Java-Interpreter für Bytecode (Zum Ausführen von Java-Programmen) (enthält ab JDK 1.1.7 einen Just-In-Time-Compiler und ab JDK 1.2.2 einen Hotspot-Compiler) Aufruf: java BeispielKlasse (Achtung: Die Endung „.class“ wird nicht angegeben) Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 6 JAVA Java Code Convention public class HalloJava { public static void main ( String [] args ) { System.out.println ("Hallo Java"); } } oder so public class HalloJava {public static void main ( String [] args ) { System.out.println ("Hallo Java");}} Anweisungen müssen mit ; abgeschlossen werden Anweisungsblöcke müssen in { } eingeschlossen werden ( Erste Form wird dringend empfohlen) Groß-/Kleinschreibung relevant!! Schlüsselwörter hier: public, class, static, void (nicht als Variablennamen verwenden) Namen der Methoden hier: Helga Gabler, Holger Vogelsang, Christian Pape main() System.out.println() Übungen Informatik 1 Folie 7 JAVA Java Code Convention „Klammerung“ Klammern wie im Beispielprogramm. public class ErsteKlasse { public static void main (String [] args ) { for (int i = 0; i <args.length ; i++) { System.out.println (args [i] ); } } } Abschluss durch Semikolon, außer nach „}“ Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 8 JAVA Java Code Convention „Groß-/Kleinschreibweise“ Mit kleinem Buchstaben beginnen Variable int meineZahl String s *************************************************************************** Mit großem Buchstaben beginnen: Klassennamen Helga Gabler, Holger Vogelsang, Christian Pape BeispielKlasse, Vector System Übungen Informatik 1 Folie 9 JAVA Java Code Convention „Bezeichner“ Regeln Bezeichner beginnen mit Buchstaben, Unterstrich_ oder Dollarzeichen $, dahinter Buchstaben und Ziffern; Bezeichner sind „case-sensitiv“ Groß-/Kleinschreibung beachten Schlüsselwörter dürfen nicht für Bezeichner verwendet werden Konventionen Klassen sollen mit einem Großbuchstaben beginnen Methoden und Variablen sollen mit einem Kleinbuchstaben beginnen Konstanten sollen nur aus Großbuchstaben bestehen. public class BeispielBezeichner { public static void main ( String [] args ) { String ga; int r; ga = "Asterix"; r = 3; final float PI = 3.14; System.out.println (ga + " sieht Roemer."); } } Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 10 JAVA Java-Programmkomponenten Quelltext-Dateien in Java bestehen aus einer Folge von KlassenDeklarationen class ... { ... } (Außerhalb von Klassendeklarationen sind im Java-Quelltext nur die Anweisungen import und package sowie Kommentare zulässig) Wird im Quelltext eine Klasse public deklariert, muss der Name der Quelltext-Datei mit dem Namen der public-Klasse übereinstimmen. Eine Quelltextdatei darf maximal eine Klasse vom Typ public enthalten. public class Hallo { ... } Hallo.java Üblicherweise wird der Quelltext jeder Klasse in einer eigenen Datei gespeichert. Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 11 JAVA Java-Programmkomponenten „Hierarchie“ Package Klasse Methoden Klasse Variablen Helga Gabler, Holger Vogelsang, Christian Pape Methoden Übungen Informatik 1 Variablen Folie 12 JAVA Java-Programmkomponenten import java.lang; public class HalloAsterix { public static void main ( String [] args ) { String asterix = “Hallo, Asterix”; System.out.println (asterix); } } Das Programm besteht aus folgenden Bausteinen: package java.lang; Klasse HalloAsterix Methode main() Variable asterix vom Typ String Ausgabeanweisung System.out.println () Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 13 JAVA Java-Programmkomponenten „Klassen“ Jedes Java-Programm besteht aus mindestens einer Klasse: Klasse wird gebildet: Modifikator(en) public Typ class Name HalloAsterix Modifikatoren: legen die Eigenschaften (Sichtbarkeitsbereich und Lebensdauer) des Typs fest. public nach außen sichtbar Typ: wird durch Schlüsselwort festgelegt: class Klasse Name: Bezeichner der Klasse HalloAsterix Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 14 JAVA Java-Programmkomponenten „Klasse HalloAsterix“ public class HalloAsterix { public static void main ( String [] args ) { String asterix = “Hallo, Asterix”; System.out.println (asterix); } } - Der Klassenrumpf wird durch {} gebildet. Im Klassenrumpf stehen die weiteren Programmteile Klassen, die als Applikation ausgeführt werden, müssen public („öffentlich“) sein, damit die Java-VM auf die Klasse zugreifen kann. wesentliches Merkmal einer Klassse aus Klassen können Objekte, bzw. Instanzen gebildet werden. ⇒ API (Application Programming Interface) ist eine Sammlung von Klassen für bestimmte Programmieraufgaben Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 15 JAVA Java-Programmkomponenten „Die main-Methode“ Jedes Java-Programm besteht aus maximal einer main-Methode. Die main-Methode ist der Startpunkt einer Anwendung, d.h. sie wird ausgeführt. Modifikator(en) public static Modifikatoren: Typ: Name: Typ void Name main (String[] args) Sichtbarkeitsbereich und Lebensdauer, hier: public static Klasse kann als Applikation ablaufen. wird durch Schlüsselwort festgelegt: void main-methode liefert keinen Rückgabewert main: Bezeichner der Methode String[] args : Feld für Kommandozeilenparameter. public class HalloAsterix { public static void main (String[] args) ... } } Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 { Folie 16 JAVA Aufbau des Quelltextes „Kommentare“ Kommentare Kommentare werden vom Compiler ignoriert. Es gibt drei Arten von Kommentaren: /* Kommentar */ Alle Zeichen zwischen Anfang und Ende des Kommentars werden ignoriert. Standardkommentar // Kommentar Alle Zeichen vom Anfang des Kommentars bis zum Zeilenende werden ignoriert. Zeilenkommentar /** Kommentar */ Kommentar, der durch das Werkzeug javadoc ausgewertet werden kann. Dazu müssen spezielle Schlüsselwörter in den Kommentar eingefügt werden. javadoc kann daraus beispielsweise HTML-Dokumente erstellen. Bsp.: @author autorin, @version text, ... (Tags für Dokumentation von Klassen) @return beschreibung, ... (Tags für die Dokumentation von Methoden) Dokumentations-Kommentar Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 17 JAVA Aufbau des Quelltextes „Schlüsselwörter“ Schlüsselwörter sind in Java reservierte Wörter. Sie dürfen beispielsweise nicht als Variablennamen verwendet werden. Namen wie String, Button, Point, System, println() sind keine Schlüsselwörter, aber aus der API - Bibliothek, deshalb nicht verwenden. Ebenso null, true, false (vorbelegt) Die Schlüsselwörter sind: boolean break byte case catch char class const continue do double else extends final finally float for goto weitere Schlüsselwörter sind: Helga Gabler, Holger Vogelsang, Christian Pape implements import instanceof int interface long native new package protected public return short static super switch synchronized throws transient try void volatile while abstract, assert, default, if, this, throw, ... Übungen Informatik 1 Folie 18 JAVA Java-API java.applet java.awt java.awt.image java.io java.lang java.net java.util Applets Abstract Windowing Toolkit AWT-Bildverarbeitung Bildschirm- und Datei-I/O Elementare Sprachunterstützung Netzwerkunterstützung Div. Utilities und Datenstrukturen weitere Packages unter http://java.sun.com/j2se/1.3/docs/api/index.html Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 19 JAVA Java-API http://java.sun.com/j2se/1.3/docs/api/index.html Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 20 JAVA Literatur Bruce Eckel, „Thinking in Java“, second Edition, Prentice Hall, 2000. (Kostenlos unter www.bruceeckel.com als PDF-Datei) Christian Ullenboom, „Java ist auch eine Insel“ (Kostenlos unter www.java-tutor.com/javabuch/ als PDF-Datei) Guido Krüger, „GoTo Java 2 - Handbuch der Java-Programmierung“, Addison-Wesley (Kostenlos unter www.javabuch.de als HTML-Dateien) Java-Tutorial (java.sun.com/docs/books/tutorial/index.html) Java JDK-Referenz (java.sun.com/products/jdk/1.4/index.html) Helmut Balzert, „Lehrbuch Grundlagen der Informatik“, Spektrum Akademischer Verlag, 1999 Steve Wilson, „Java Platform Performance Strategies and Tactics“, Sun Microsystems, http://java.sun.com/docs/books/performance/ Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 21 JAVA Interessante Links Online-Kurse von Sun Go To Java 2 (G. Krüger) der Uni Hannover der Uni Wien (H. Partl) Download-Seiten Java-API Java-Zertifizierung http://java.sun.com/docs/books/tutorial/ http://www.rz.fh-karlsruhe.de/intern/Kurse/java/gj22/html/cover.html http://java.rrzn.uni-hannover.de http://boku.ac.at/javaeinf/jein.html http://java.sun.com http://java.sun.com/products/ http://java.sun.com/products/archive/ http://java.sun.com/j2se/1.3/docs/api/index.html http://www.lanw.com/java/javacert Helga Gabler, Holger Vogelsang, Christian Pape Übungen Informatik 1 Folie 22