Programmieren lernen mit Groovy

Werbung
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
Herunterladen