JAX07: Dynamische Programmierung mit Groovy

Referent:

dierk.koenig@canoo.com
Autor von Groovy in Action

Sehr großes Interesse, Umzug in Halle 1

Groovy ist „feature rich“ und Java-friendly
Problem bei anderen Skriptsprachen:
statische typisierung notwendig um Java friendly zu sein
feature-rich meistens nur dynamische Typisierung

Groovy „optionale Typisierung“
Scripting patterns:
Weiches Herz, Alleskleber
Groovy verknüpft Infrastruktur und Anwendungslogik

Dynanische Programmierung:
Zur Laufzeit Eigenschaften und Fähigkeiten zur Laufzeit dynamisch hinzufügen und ändern
Bsp.: Neue Funktionalität (regex) zu java.land.String dynamisch hinzufügen

Methodenaufrufe abgreifen

Hello World ohne Klasse!
Bsp:
System.out.println(„Hello World“);
->?.size()
println“Hello World“

Typ optional
def vorname=“Christian“
println „$vorname, Wieland“ GString
„““ hallo
„““ String über mehrere Zeilen

assert 0.5 == 1/2     BigDecimal.equals

optionales duck typing
print obj?.size()    sage dereferencing (== null)
Regex
if („Hello World!“ =~ /Hello/)

Listen, Maps, Ranges
voll = [1,2,’JAX‘]
voll[0..1] = [0,1,2,3]
Maps
del voll = [a: 1. b: 2]
Closures
Anonyme Inner Classes

3.times{println ‚Hi‘}
new File(‚/data.txt‘).eachLine{print it}

def Houston(Closure machwas){

}

class Dir{
String name
List dirs
}
-> alle getter setter und konstruktoren
werden „automatisch erzeugt“
->Dir.methods.name.gret(/(g/s)/)

assert root.dirs[0].name == ‚a‘
assert root.dirs.name == [‚a‘,’b‘]

Builder Pattern

Kontrollstrukturen

Live Demo
Groovy Flickr client
swing = new groovy.swing.Swingbuilder()

dynamisch variablen hinzufügen Beispiel count++ , später count mit 0 initialisieren

Integrationsoptionen:
Groovy Objekte sind Java Objekte
GroovyClassLoader

GRAILs anschauen

Tools: unterstützung von Groovy in Eclipse vorhanden

http://www.infoq.com -> frei verfügbares Buch : getting started with grails
Groovy ist wegen dem Konzept immer langsamer als Java

Links:
groovy.codehaus.org
grails.org
svenhaiges.de

Groovy hat den JAX-Innovation Award gewonnen!

Advertisements



    Kommentar verfassen

    Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

    WordPress.com-Logo

    Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

    Twitter-Bild

    Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

    Facebook-Foto

    Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

    Google+ Foto

    Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

    Verbinde mit %s



%d Bloggern gefällt das: