programmieren lernen mit groovy -...
TRANSCRIPT
Seite 1
Programmieren lernen mit Groovy
AllgemeinesProgramme und ihre Ausführung
Th Letschert
Seite 2
Allgemeines
Dozent Dr. Th. Letschert
Lernziel Einführung in die Software-Entwicklung und ProgrammierungKenntnisse einer modernen Programmiersprache
LiteraturFolien / Skript / Anleitungen
• SoftwareJava SE 6 [ http://java.sun.com/javase/downloads ]Groovy [ http://groovy.codehaus.org/Download ]
Th Letschert
Seite 3
Allgemeines
Entwicklungsplattform
beliebiges Betriebssystem
Java
Groovy
Th Letschert
Seite 4
2 Arten der Programmausführung: Compiler, Interpreter
ProgrammFestlegung von Aktionenin einer festen Notation (Programmiersprache)
Interpreterführt das Programm ausInterpreter als Hardware: Computer (Maschine)
Compilerübersetzt Programme von einer Sprache in die andereQuellsprache: für Menschen verstehbarZielsprache: für Maschinen verstehbar
Th Letschert
Programm
Interpretierer
Daten
ErgebnisCompiler
Maschinen-Programm
Daten
Maschine
Seite 5
Moderne Programmausführung: Virtuelle Maschine ~ Compiler + Interpreter
Compilerist ein Maschinenprogrammwird von Maschine ausgeführt
Virtuelle Maschineist Softwareführt übersetzte Programm ausist ein Maschinenprogrammwird von Maschine ausgeführtvirtuelle Maschine: ~ Interpretierer für Maschinen- Programme~ simuliert Maschine in SW
Th Letschert
Programm(Sprache A)
Interpretierer
Ergebnis
Programm(Sprache B)
DatenMaschine
virtuelle Maschine
Maschine
Compiler
Seite 6
Programmiersprache Java: Was ist Java
ProgrammierspracheSyntax: FormSemantik: Inhalt
Klassenbibliothekvorgefertigte Klassen (Programmkomponenten)
CompilerQuellcode (Java)Zielcode: Bytecode
Virtuelle MaschineSoftware (Maschinenprogramm)simuliert Maschine die Bytecode ausführen kann. (Beliebige Plattform)
public class Hallo { public static void main(String[] args) { System.out.println(''Hallo''); }}
Compiler
� 1 ! Hallo java/lang/Object <init> ()V Code LineNumberTable LocalVariableTable this LHallo; main ([Ljava/lang/String;)V java/lang/System out Ljava/io/Pr .............
virtuelleMaschine
Hallo
Hallo.java
Hallo.class
javac Hallo.java
java Hallo
Th Letschert
Seite 7
Java: Compiler, virtuelle Maschine
Compilerübersetzt Java-Code in Quelltext-Datei (.java-Datei)in Bytecode (Code für virtuelle Maschine)
javac-Programm
Virtuelle Maschine, JVM (Java Virtual Maschine)gedachte Maschineführt Bytecode (in .class-Datei)) ausrealisiert durch
reale Maschine (physischer Prozessor)Bytecode-Interpretierer / java-Programm
auch „Virtuelle Maschine“ / JVM genannt
Warum virtuelle MaschineKeine Anpassung des Compilers notwendigÜbersetzte Programme überall lauffähigNachteil: Ausführung langsamer
Klassisch: Compiler / Bibliotheken an Plattform anpassen, Quellcode transferieren
Java: Ablaufumgebung (JVM) an Plattform anpassen, Bytecode transferieren
CPU / HW
Betriebs-system
java (JVM)
Bytecode
virtuelle Maschine
Java-code
Compiler
reale Maschine
Th Letschert
Seite 8
Java: Entwicklung
project green / Sprache Oak / ~ 1991Konzept: Programmierung von „eingebetteten“ Geräten(Toaster mit Internetanschluss und Web-Server)Beweglicher Code, Virtuelle Maschine
Java 1.02 (erste offizielle Version) ~ 1995Klassenbibliothek : 250 KlassenEinsatz : Fun / Applets
Java 1.1 ~ 1997Klassenbibliothek : 500 KlassenEinsatz : Unterricht / GUI / erste ernsthafte Anwendungen
Java 2 ( ~ Version 1.2 – Version 1.4 ) ~ ab 1998Klassenbibliothek : 2300 KlassenEinsatz : Server- (Geschäfts-) Anwendungen (!)
Java 5 ( ~ Version 1.5) ~ ab 2005Wesentliche Erweiterung/Modifikation (ca. 3500 Klassen)
Java 6 ~ ab 2007Leichte Weiterentwicklung
Th Letschert
Seite 9
Java: Installation
JRE Java SE (= Standard Edition) Runtime EnvironmentEnthält Dinge die zur Ausführung von (bereits übersetzen) Java-
Programmen benötigt werden:virtuelle Maschine (JVM, Programm java) Bibliotheken
JDK Java SE Development KitEnthält
JREJava-Compiler (Programm javac)Weitere Entwicklerwerkzeuge
Für Java-Entwicklungen muss das JDK installiert werden
API-Dokumentation Enthält Beschreibung der Klassen der BibliothekWichtige Dokumentation bei der Programmentwicklung
http://java.sun.com/javase/6/docs/api/Download als java-d.doc.zip
Th Letschert
Seite 10
Java: Programme
Beispiel: ein einfaches Programm bestehend aus
einer Methode (main)in einer Klasse (MyClass)in einem Paket (myPackage)
Programm mit 2 Klassenin einem Paket
Th Letschert
package myPackage;
public final class MyClass {
/** * @param args wird ignoriert */public static void main(final String[] args) {
System.out.println("Hallo Java");}
}
Seite 11
Java: Programme
Java-ProgrammEin Java-Programm besteht aus
mindestens einem Paket (package)kann das namenlose default-Paket sein
mindestens einer öffentlichen Klasse in diesem Paketmindestens einer Methode in dieser Klasseeine der Methoden einer Klasse muss öffentlich sein, den Namen main tragen und ein String-Array als Parameter habenein Methode enthält üblicherweise mindestens eine Anweisung
Th Letschert
package myPackage;
public final class MyClass {public static void main(
final String[] args) {System.out.println("Hallo");
}}
ein Paket: myPackage
eine Klasse im Paket: MyClass
eine Methode in der Klasse: main
eine Anweisung: System.out.println
Seite 12
Java: Programm erstellen, übersetzen und ausführen
Programm erstellen
Verzeichnis erstellen: myPackageDatei 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
Th Letschert
package myPackage;public final class MyClass { public static void main(final String[] args) { System.out.println("Hallo Java"); }}
Editor
Compiler(javac)
JVM(java)
Hallo Java
Seite 13
Java
Java: warummoderne Sprache in stetiger Weiterentwicklungsichert Programme gegen etliche Programmierfehler abStandardsprache für ProgrammierunterrichtPlattform-unabhängigStandardsprache für große kommerzielle Serversystemesehr reichhaltige Sprachmittel
Java: warum nichtteils umständliche Ausdrucksmittelteils sehr komplex Konstruktekorrekte Verwendung erfordert umfangreiches Informatik-Wissen
Th Letschert
Argumentation gilt ähnlich für C#
Seite 14
Groovy
Groovyinterpretierte (Skript-) Sprache, basiert auf Javavereinfachte Ausdrucksmittelzielt auf schnelle Produktivität der Programmiererfür sehr große, langlebige und maximal effiziente Programme nicht geeignet Aktivierung mit Kommando (Programm) groovyConsole
Th Letschert
Crtl-R
> groovyConsole
Seite 15
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
Th Letschert
Variablen: - radius, - flaeche
Ausdrücke: - 5 - radius*radius * Math.PI
Zuweisungen: - radius = 5 - flaeche = radius*radius * Math.PI
Seite 16
Sprachelemente: Variable, Zuweisung, Ausdruck
Variablendefinition Speicherplatz anlegen
def radius // Variablendefinitionradius = 5 // Zuweisung def radius = 5 // Variablendefinition mit Zuweisung
Zuweisung Wert in Variable speichern
radius = 5 // Wert 5 in der Variablen radius speichern
Ausdruck Sprachkonstrukt das einen Wert bezeichnet
radius5Math.PIradius*radius
Th Letschert
Seite 17
Programm in Datei speichern und ausführen
Speichern über File-Menü
Ausführen von einer Konsole mit Groovy-Kommando
Th Letschert
> groovy kreisflaeche.groovy78.53981633974483
z.B. in kreisflaeche.groovy
speichern
direkt aus der Datei ausführen
Seite 18
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])
Th Letschert
> groovy kreisflaeche.groovy 578.53981633974483
Ausführung aus GroovyConsole ist nicht möglich (Wert für radius fehlt)
Ausführung an der Kommandozeile mit Argument
Nimm das erste Argument (an Position 0) und wandle es in eine gebrochene Zahl um.
Seite 19
Programm mit graphischer Ein- / Ausgabe
Dialog-Eingabe und -Ausgabe
Argument (Wert für das Programm) über Dialog-Fenster eingegeben
Ergebnis in Dialog-Fenster ausgeben
Th Letschert
Aktivierung mit GroovyConsole
> groovy kreisflaeche.groovy
Aktivierung als Kommando
Seite 20
Programm mit graphischer Ein- / Ausgabe
Dialog-Eingabe und -Ausgabe
Beispiel-Programm:
Th Letschert
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)
Wert via Dialog vom Benutzer erfragen
Berechnungsergebnis via Dialog dem Benutzer mitteilen
Seite 21
Rückblick : was ist ein Programm und wie wird es ausgeführt
ProgrammAnweisungen, Variablen
ProgrammausführungInterpretierer Compilervirtuelle Maschine
ProgrammierspracheSyntax und Semantikcompilierte Sprache Beispiel Javainterpretierte Sprache Beispiel Groovy
Th Letschert
Seite 22
Rückblick : was ist ein Programm und wie wird es ausgeführt
PraktischProgramm schreiben
Editor => xy.groovygroovyConsole + Speichern in einer Datei
Programm ausführenKommando: groovy xy.groovymit groovyConsole
ProgrammeingabeKommandoargumnete: groovy xy.groovy 1 2 3 Dialog-Eingabe
Programmausgabe printlnDialogausgabe
Th Letschert