Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung Seite 1 Th Letschert Allgemeines Dozent Dr. Th. Letschert Lernziel Einführung in die Software-Entwicklung und Programmierung Kenntnisse einer modernen Programmiersprache Literatur Folien / Skript / Anleitungen • Software Java SE 6 Groovy [ http://java.sun.com/javase/downloads ] [ http://groovy.codehaus.org/Download ] Seite 2 Th Letschert Allgemeines Entwicklungsplattform beliebiges Betriebssystem Java Groovy Seite 3 Th Letschert 2 Arten der Programmausführung: Compiler, Interpreter Programm Programm Festlegung von Aktionen in einer festen Notation (Programmiersprache) Interpretierer Daten Interpreter führt das Programm aus Interpreter als Hardware: Computer (Maschine) Compiler Ergebnis Compiler übersetzt Programme von einer Sprache in die andere Quellsprache: für Menschen verstehbar Zielsprache: für Maschinen verstehbar Seite 4 MaschinenProgramm Maschine Daten Th Letschert Moderne Programmausführung: Virtuelle Maschine ~ Compiler + Interpreter Programm (Sprache A) Compiler ist ein Maschinenprogramm wird von Maschine ausgeführt Virtuelle Maschine Compiler Maschine ist Software führt übersetzte Programm aus ist ein 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 5 Th Letschert Programmiersprache Java: 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 Hallo.class java/lang/System out Ljava/io/ Pr ............. virtuelle Maschine java Hallo Hallo Seite 6 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 7 Th Letschert Java: Entwicklung 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 8 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 9 Th Letschert Java: Programme Beispiel: ein einfaches Programm bestehend aus einer Methode (main) in einer Klasse (MyClass) in einem Paket (myPackage) package myPackage; public final class 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 10 Th Letschert Java: Programme Java-Programm Ein Java-Programm besteht aus mindestens einem Paket (package) kann das namenlose default-Paket sein mindestens einer öffentlichen Klasse in diesem Paket mindestens einer Methode in dieser Klasse eine der Methoden einer Klasse muss öffentlich sein, den Namen main tragen und ein String-Array als Parameter haben ein Methode enthält üblicherweise mindestens eine Anweisung package myPackage; ein Paket: public final class MyClass { public static void main( final String[] args) { System.out.println("Hallo"); } } Seite 11 myPackage eine Klasse im Paket: MyClass eine Methode in der Klasse: main eine Anweisung: System.out.println 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 12 Th Letschert Java Argumentation gilt ähnlich für C# Java: warum moderne Sprache in stetiger Weiterentwicklung sichert Programme gegen etliche Programmierfehler ab Standardsprache für Programmierunterricht Plattform-unabhängig Standardsprache für große kommerzielle Serversysteme sehr reichhaltige Sprachmittel Java: warum nicht teils umständliche Ausdrucksmittel teils sehr komplex Konstrukte korrekte Verwendung erfordert umfangreiches Informatik-Wissen Seite 13 Th Letschert Groovy Groovy interpretierte (Skript-) Sprache, basiert auf Java vereinfachte Ausdrucksmittel zielt auf schnelle Produktivität der Programmierer für sehr große, langlebige und maximal effiziente Programme nicht geeignet Aktivierung mit Kommando (Programm) groovyConsole Crtl-R > groovyConsole Seite 14 Th Letschert Sprachelemente: Variable, Zuweisung, Ausdruck Variable : Ablageplatz für Werte Zuweisung : Speichern eines Werts in einer Variablen Ausdruck : Sprachkonstrukt mit dem ein Wert angegeben (berechnet) wird Variablen: - radius, - flaeche Ausdrücke: -5 - radius*radius * Math.PI Zuweisungen: - radius = 5 - flaeche = radius*radius * Math.PI Seite 15 Th Letschert Sprachelemente: Variable, Zuweisung, Ausdruck Variablendefinition def radius radius = 5 Speicherplatz anlegen // Variablendefinition // Zuweisung def radius = 5 // Variablendefinition mit Zuweisung Zuweisung radius = 5 Ausdruck Wert in Variable speichern // Wert 5 in der Variablen radius speichern Sprachkonstrukt das einen Wert bezeichnet radius 5 Math.PI radius*radius Seite 16 Th Letschert Programm in Datei speichern und ausführen Speichern über File-Menü Ausführen von einer Konsole mit Groovy-Kommando > groovy kreisflaeche.groovy 78.53981633974483 direkt aus der Datei ausführen z.B. in kreisflaeche.groovy speichern Seite 17 Th Letschert Programm mit Komandozeilen-Argument Kommandozeilen-Argument Argument (Wert für das Programm) das als Teil den Ausführungskommandos eingegeben wird Beispiel: Double.parseDouble(args[0]) Nimm das erste Argument (an Position 0) und wandle es in eine gebrochene Zahl um. Ausführung aus GroovyConsole ist nicht möglich (Wert für radius fehlt) Ausführung an der Kommandozeile mit Argument > groovy kreisflaeche.groovy 5 78.53981633974483 Seite 18 Th Letschert Programm mit graphischer Ein- / Ausgabe Dialog-Eingabe und -Ausgabe Argument (Wert für das Programm) über Dialog-Fenster eingegeben Ergebnis in Dialog-Fenster ausgeben > groovy kreisflaeche.groovy Aktivierung mit GroovyConsole Seite 19 Aktivierung als Kommando Th Letschert Programm mit graphischer Ein- / Ausgabe Dialog-Eingabe und -Ausgabe Beispiel-Programm: Wert via Dialog vom Benutzer erfragen import javax.swing.JOptionPane def radiusString = JOptionPane.showInputDialog("Bitte Radius eingeben:"); def radius = Double.parseDouble(radiusString); def flaeche = radius*radius * Math.PI JOptionPane.showMessageDialog(null, flaeche) Berechnungsergebnis via Dialog dem Benutzer mitteilen Seite 20 Th Letschert Rückblick : was ist ein Programm und wie wird es ausgeführt Programm Anweisungen, Variablen Programmausführung Interpretierer Compiler virtuelle Maschine Programmiersprache Syntax und Semantik compilierte Sprache interpretierte Sprache Beispiel Java Beispiel Groovy Seite 21 Th Letschert Rückblick : was ist ein Programm und wie wird es ausgeführt Praktisch Programm schreiben Editor => xy.groovy groovyConsole + Speichern in einer Datei Programm ausführen Kommando: groovy xy.groovy mit groovyConsole Programmeingabe Kommandoargumnete: groovy xy.groovy 1 2 3 Dialog-Eingabe Programmausgabe println Dialogausgabe Seite 22 Th Letschert