CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Allgemeines Java-Programme erstellen und ausführen Seite 1 © Th Letschert Allgemeines Dozenten Dr. Th. Letschert Dr. Andreas Dominik Tutoren Lernziel / Inhalt Einführung in die objektorientierte Programmierung Grundbegriffe der Softwaretechnik Literatur Folien / Skript / Anleitungen [ https://estudy.fh-giessen-friedberg.de ] Jedes beliebige neuere Java Buch Sun Dokumentation [ http://java.sun.com/javase/reference ] Software Java SE 6 [ http://java.sun.com/javase/downloads ] Entwicklungsumgebung Eclipse 3.5 [ http://eclipse.org ] Seite 2 Th Letschert Allgemeines Organisation Vorlesung in 2 Zügen Übung / Praktikum mit testierten Hausaufgaben einer Projektaufgabe Abgabe von Lösungen ist Voraussetzung zur Klausurzulassung Informationen / Forum: estudy estudy-Plattform: https://estudy.fh-giessen-friedberg.de Kurs: CS1005, Objektorientierte Programmierung (OOP) enthält alle Unterlagen, Dokumente, Hinweise, etc. zum Kurs ein Form für die Kursteilnehmer (bitte nutzen für Fragen und Antworten ! ) Seite 3 Th Letschert Allgemeines Entwicklungsplattform beliebiges Betriebssystem Java Version 6 Texteditor, Shell Eclipse 3.5 Rechner Rechner stehen in den in den Übungsräumen zur Verfügung eigenes Notebook bevorzugt Seite 4 Th Letschert Programmausführung: Compiler, Interpretierer Programm Programm Festlegung von Aktionen in einer festen Notation (Programmiersprache) Interpretierer Daten Interpretierer führt das Programm aus Interpretierer als Hardware: Computer (Maschine) Compiler Ergebnis Compiler übersetzt Programme von einer Sprache in die andere Quellsprache: für Menschen verstehbar Zielsprache: für Maschine verstehbar Seite 5 MaschinenProgramm Maschine Daten Th Letschert Programmausführung: Virtuelle Maschine Programm (Sprache A) Compiler Maschinenprogramm wird von Maschine ausgeführt Virtuelle Maschine Compiler Maschine Software führt übersetzte Programm aus Maschinenprogramm wird von Maschine ausgeführt virtuelle Maschine ~ Interpretierer für MaschinenProgramme ~ simuliert Maschine in SW Programm (Sprache B) Daten Interpretierer Maschine virtuelle Maschine Ergebnis Seite 6 Th Letschert Was ist Java Programmiersprache public class Hallo { public static void main(String[] args) { System.out.println(''Hallo''); } Hallo.java } Syntax: Form Semantik: Inhalt Klassenbibliothek vorgefertigte Klassen (Programmkomponenten) Compiler javac Hallo.java Compiler Quellcode (Java) Zielcode: Bytecode Virtuelle Maschine Software (Maschinenprogramm) simuliert Maschine die Bytecode ausführen kann. (Beliebige Plattform) � 1 ! Hallo java/lang/Object <init> ()V Code LineNumberTable LocalVariableTable this LHallo; main ([Ljava/lang/String;)V java/lang/System out Ljava/io/Pr ............. virtuelle Maschine Hallo.class java Hallo Hallo Seite 7 Th Letschert Java: Compiler, virtuelle Maschine Compiler übersetzt Java-Code in Quelltext-Datei (.java-Datei) in Bytecode (Code für virtuelle Maschine) javac-Programm Java-code Virtuelle Maschine, JVM (Java Virtual Maschine) gedachte Maschine Compiler führt Bytecode (in .class-Datei)) aus virtuelle Maschine realisiert durch Bytecode reale Maschine (physischer Prozessor) Bytecode-Interpretierer / java-Programm java (JVM) auch „Virtuelle Maschine“ / JVM genannt Betriebssystem Warum virtuelle Maschine Keine Anpassung des Compilers notwendig CPU / HW Übersetzte Programme überall lauffähig reale Maschine Nachteil: Ausführung langsamer Klassisch: Compiler / Bibliotheken an Plattform anpassen, Quellcode transferieren Java: Ablaufumgebung (JVM) an Plattform anpassen, Bytecode transferieren Seite 8 Th Letschert Java: Wichtige Versionen project green / Sprache Oak / ~ 1991 Konzept: Programmierung von „eingebetteten“ Geräten (Toaster mit Internetanschluss und Web-Server) Beweglicher Code, Virtuelle Maschine Java 1.02 (erste offizielle Version) ~ 1995 Klassenbibliothek : 250 Klassen Einsatz : Fun / Applets Java 1.1 ~ 1997 Klassenbibliothek : 500 Klassen Einsatz : Unterricht / GUI / erste ernsthafte Anwendungen Java 2 ( ~ Version 1.2 – Version 1.4 ) ~ ab 1998 Klassenbibliothek : 2300 Klassen Einsatz : Server- (Geschäfts-) Anwendungen (!) Java 5 ( ~ Version 1.5) ~ ab 2005 Wesentliche Erweiterung/Modifikation (ca. 3500 Klassen) Java 6 ~ ab 2007 Leichte Weiterentwicklung Seite 9 Th Letschert Java: Installation JRE Java SE (= Standard Edition) Runtime Environment Enthält Dinge die zur Ausführung von (bereits übersetzen) JavaProgrammen benötigt werden: virtuelle Maschine (JVM, Programm java) Bibliotheken JDK Java SE Development Kit Enthält JRE Java-Compiler (Programm javac) Weitere Entwicklerwerkzeuge Für Java-Entwicklungen muss das JDK installiert werden API-Dokumentation Enthält Beschreibung der Klassen der Bibliothek Wichtige Dokumentation bei der Programmentwicklung http://java.sun.com/javase/6/docs/api/ Download als java-d.doc.zip Seite 10 Th Letschert Java: Programme und ihre Komponenten Beispiel: ein einfaches Programm bestehend aus zwei Methoden (main und einem Konstruktor MyClass) in einer Klasse (MyClass) in einem Paket (myPackage) Entspricht den peniblen Codier-Richtlinien des FB MNI. package myPackage; public final class MyClass { private MyClass() {} /** * @param args wird ignoriert. */ public static void main(final String[] args) { System.out.println("Hallo Java"); } } Programm mit 2 Klassen in einem Paket Seite 11 Th Letschert Java: Programme und ihre Komponenten Methode Hauptklasse package hallo; public class Hallo { public static void main(String[] args) { sayHello(); Haupt-Methode Dog.sayHello(); } public static void sayHello() { Methode System.out.println(„Hallo“); } Klasse mit 2 Methoden } Bestandteil einer Klasse Folge von Anweisungen Klasse Komponente von JavaProgrammen Sammlung von Methoden / Variablen Paket Sammlung von Klassen Programm Haupt-Klasse mit main-Methode plus beliebig viele (im einfachsten Fall keine) weitere Klassen in beliebig vielen Paketen Seite 12 Klasse package hallo; class Dog { public static void sayHello() { Methode System.out.println(„Hallo“); } Klasse mit 1 Methode } Programm mit 2 Klassen in einem Paket Th Letschert Java: Programme und ihre Komponenten Programm Ein Java-Programm besteht aus mindestens einem Paket (package) kann das namenlose default-Paket sein mindestens einer Klasse in diesem Paket mindestens einer Methode in dieser Klasse eine der Methoden einer Klasse muss die main-Methode sein ein Methode enthält üblicherweise mindestens eine Anweisung package myPackage; public final class MyClass { public static void main( final String[] args) { System.out.println("Hallo"); } } Seite 13 ein Paket: myPackage eine Klasse im Paket: MyClass eine Methode in der Klasse: main eine Anweisung: System.out.println Th Letschert Java: Programme, Dateien, Verzeichnisse Datei Java-Code in Quelltext-Datei Dateiname: KlassenName.java Datei kann mehrere Klassen enthalten, davon darf nur eine public sein Verzeichnis enthält die Bestandteile eines Pakets: Klassen des Pakets: Java- / ClassDateien Sub-Pakete Paket-Zugehörigkeit einer Klasse durch Package-Deklaration: package <Paket-Name>; in der Datei eines Pakets (Relation Paket/Sub-Paket): Hierarchische Paketnamen: <Paket>.<Sub-Paket>.<Sub-Sub-Paket> Programm keine direkte Repräsentation Paket Klasse1 Sub-Paket Klasse2 logische Struktur Verzeichnis ~ Paket Klasse1.java Java-Datei Klasse1.class Class-Datei Unter-Verz. ~ Sub-Paket Klasse2.java Java-Datei Klasse2.class Class-Datei Verzeichnis-Struktur Seite 14 Th Letschert Java: Programm erstellen, übersetzen und ausführen Programm erstellen Verzeichnis erstellen: myPackage Datei erstellen (beliebiger Text-Editor): MyClass und in diesem Verzeichnis in der Datei MyClass.java speichern Programm übersetzen Kommando z.B.: javac myPackage/MyClass.java erzeugt die Datei myPackage/myClass.class Programm ausführen Kommando z.B.: java myPackage.MyClass Editor package myPackage; public final class MyClass { public static void main(final String[] args) { System.out.println("Hallo Java"); } } Compiler (javac) JVM (java) Hallo Java Seite 15 Th Letschert Java: Programm erstellen, übersetzen und ausführen Pfad und Klassenpfad Pfad, engl. Path ein Ausdruck der dem System hilft Programme zu finden C:\Programme\Java\jdk1.6.0_01\bin könnte der Pfad zu den Programmen javac und java sein. Klassenpfad, engl. Classpath ein Ausdruck der java (der JVM) hilft die Klassendateien zu finden home Klassenpfad als Kommando- (Programm-) Argument: thomas java -cp /pfad/zum/Verzeichnis myPackage.MyClass z.B.: java -cp /home/thomas/classes myPackage.MyClass als Umgebungsvariable CLASSPATH z.B.: set CLASSPATH=C:\home\thomas\classes Klassenpfad classes myPackage MyClass. class java myPackage.MyClass default: aktuelles Verzeichnis der Klassenpfad endet immer vor den Paket-Verzeichnissen Seite 16 Th Letschert Java: Programm erstellen, übersetzen und ausführen http://java.sun.com/docs/books/tutorial/deployment/jar/ Jar-Archiv Sammlung von Java-Dateien (Class-Dateien und eventuell Quell—Dateien) (zip-codierte Archiv-Datei) Verwendung: Transport und Installation von java-Code ~ ausführbare Datei oder Bibliothek Erzeugung mit Kommando (Programm) jar Beispiel: jar -cvf myJarArchive.jar myPackage erzeugt ein Archiv des Verzeichnisses mypackage Nutzung als „Klassen-Bibliothek“ Beispiel: jar -cvf myJarArchive.jar myPackage java -cp myJarArchive.jar myPackage.MyClass als „ausführbare Datei“ Beispiel: jar -cvfe myJarArchive.jar myPackage.MyClass myPackage java -jar myJarArchive.jar Manifestdatei: enthält Infos zum Archiv z.B.: Angabe Haupt-Klasse Seite 17 Th Letschert Java: Programm erstellen, übersetzen und ausführen Getrennte Verzeichnisse für Quell- und Binärdateien HalloWeltProject javac -d <Zielverzeichnis> <Quelldatei> z.B.: javac -d bin src/hallo/HalloWelt.java + src | + hallo | + HalloWelt.java + bin + hallo Verzeichnis eventuell mehrere Verzeichnisse + HalloWelt.class Archiv Klasse Jar-Datei erzeugen: cd bin jar -cvfe HalloWelt.jar hallo.HalloWelt hallo Jar-Datei aus einem anderen als dem aktuellen Verzeichnis bin heraus erstellen jar -cvfe HalloWelt.jar hallo.HalloWelt -C bin hallo Jar-Datei ausführen: java -jar HalloWelt.jar Gibt Verzeichnis des nachfolgenden KommandoArguments an Mainfest-Datei in HalloWelt.jar : Manifest-Version: 1.0 Created-By: 1.6.0_0 (Sun Microsystems Inc.) Main-Class: hallo.HalloWelt Seite 18 Th Letschert Java: Programm erstellen, übersetzen und ausführen Ausführbare Jar-Datei mit Eclipse erstellen (ohne Quelldateien) Rechts-Klick auf auf das zu exportierende Paket: → Export → Runnable JAR file auszuführende Klasse an geben (Launch configuratution) Zielverzeichnis und Datei angeben → Finish Export Seite 19 Th Letschert Java: Programm erstellen, übersetzen und ausführen Ausführbare Jar-Datei mit Eclipse erstellen (mit Quelldateien) Rechts-Klick auf auf das zu exportierende Paket: → Export → JAR file Class-Files und Sources auswählen Zieldatei angeben 2 x Weiter → next → next Seite 20 Th Letschert Java: Programm erstellen, übersetzen und ausführen Ausführbare Jar-Datei mit Eclipse erstellen (mit Quelldateien) Manifest-Datei erzeugen lassen Main-Klasse auswählen OK Finish Seite 21 Th Letschert