Tech Talk: Groovy
Upcoming SlideShare
Loading in...5
×
 

Tech Talk: Groovy

on

  • 2,731 views

Kurze Einführung in Groovy

Kurze Einführung in Groovy

Statistics

Views

Total Views
2,731
Views on SlideShare
2,721
Embed Views
10

Actions

Likes
1
Downloads
16
Comments
1

2 Embeds 10

http://www.slideshare.net 7
https://wiki.sistec.dlr.de 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tech Talk: Groovy Tech Talk: Groovy Presentation Transcript

    • Tech Talk: Groovy 26.02.2008
    • Was ist Groovy?
      • Dynamische Programmier- und Skriptsprache für die Java-VM
      • Konzepte von Python, Ruby, Smalltalk
      • Durch hohe Integrationsmöglichkeiten mit Java
      •  „ Javas bester Freund“
      • Open-Source Projekt bei codehaus.org
    • Eine Groovy Geschichte
      • 2003 - Start durch James Strachan & Bob McWriter „Eleganz von Ruby in Java“
      • 2004 - Beginn der Standardisierung Java Specification Requests – 241
      • 2004 - GroovyOne Groovy Entwicklertreffen in London
      • Aktueller Projektleiter: Guillaume Laforge
      • Anfang 2007 - Release 1.0
      • Ende 2007 - Release 1.5
    • Warum Javas bester Freund? (1)
      • … läuft in der Java Virtual Machine
      • … erweitert und nutzt die Bibliotheken des JDK
      • … kann auf Java-Klassen zugreifen
      • … kann von Java aufgerufen werden
      • … kann nach Java Classfiles compiliert werden
      Groovy…
    • Warum Javas bester Freund? (2) andere andere andere andere Java friendly Feature rich (Quelle: „Groovy in Action“, D. Koenig)
    • Was macht Groovy groovy? (1)
      • Einfache Syntax: Semikolon, Klammern bei Methodenaufruf, Typangaben, Exception-Deklaration optional
      • Closures
      • Einfache Notation für Ranges, Listen und HashMaps
      • „ public“ ist default
      • Erweiterte switch- Anweisungen
    • Was macht Groovy groovy? (2)
      • Alles ist ein Objekt
      • getter- und setter-Methoden werden automatisch erzeugt und beim Attribut-Zugriff automatisch genutzt
      • Operator-Overloading
      • Automatisch importierte Pakete: groovy.lang.*, groovy.util.*, java.lang.*, java.util.*, java.net.*, java.io.*, java.math.BigInteger, BigDecimal
    • The Groovy way to say Hello (1)
      • public class SayHello {
      • public static void main (String[] args) {
      • System.out.println( " hello " );
      • }
      • }
      • Java kompatibel
    • The Groovy way to say Hello (2)
      • class SayHello {
      • static void main (String[] args) {
      • System.out.println( " hello " );
      • }
      • }
      • public ist default
    • The Groovy way to say Hello (3)
      • class SayHello {
      • static void main (args) {
      • System.out.println( " hello " )
      • }
      • }
      • Typangaben sind optional
      • Semikolon optional
    • The Groovy way to say Hello (4)
      • class SayHello {
      • static void main (args) {
      • println( " hello " )
      • }
      • }
      • println kennt jeder Klasse
    • The Groovy way to say Hello (5)
      • println( " hello " )
      • Keine Klassen für ausführbares Skript notwendig
    • The Groovy way to say Hello (6)
      • println " hello "
      • Klammern meist optional bei Methodenaufrufen
      • Die primitiven Datentypen (int, short byte, long, etc.) sind echte Groovy Objekte: def i = 1
      • Gleichheit von Objekten wird mit dem Operator == abgefragt assert i == new Integer(1)
      • Identität von Objekten kann mit der Methode is() geprüft werden: def k = i assert i.is(k) assert !( i.is(new Integer(1)) )
      Alles ist ein Objekt
    • Closure
      • Einfache Closure: def c = { println 'hello' } c()
      • Closure mit Parameter: sqare = { f -> return f * f} assert sqare(5) == 25 alternativ: degree = { it * it }
      • Schleifen: 5.times { println 'hello' } oder: def sum = 0 1.upto(5) { sum += it } assert sum == 15
    • Ranges, Lists & Maps
      • Wertebereiche als eigener Datentyp 5..10 Beispiel: sum = 0 (1..10).each { sum += it }
      • (Array)Listen mit eigener Notation Beispiel: def list = [1, 2, 3] list.each { sum += it } assert list << 9 == [1, 2, 3, 9] assert [1, 2, 3] - [2] == [1, 3] assert [1, 2] * 2 == [1, 2, 1, 2]
      • Direkte Notation für (Hash)Maps Beispiel: def map = [a: 1, b: 2, c: 3] assert map.get('a') == 1 assert map['a'] == 1 assert map.a == 1
    • Switch in Groovy
      • switch(v) {
      • // Zahlen
      • case 1: println 'Zahl 1'; break;
      • // String
      • case 'test': println 'String test'; break;
      • // Range
      • case 10..15: println 'In Range 1..15'; break;
      • // Auswahl aus Liste
      • case [1, '1', 'Eins']: println 'Irgenwie 1'; break;
      • // Regular Expression
      • case ~/Ein.*/: println 'Fängt mit Ein an'; break;
      • default: println 'Default-Zweig'; break
      • }
    • Groovy Strings
      • GStrings erlauben Ausdrücke in Strings: def cal = new GregorianCalendar() println &quot;Monat: ${cal.get(Calendar.MONTH)+1}&quot; println &quot;Datum: $cal.time&quot;
      • GStrings über mehrere Zeilen: def gs = &quot;&quot;&quot;Dieser GString hat zwei Zeilen. &quot;&quot;&quot;
      • Klassische Java Strings (mehrzeilig mit ''' '''): def s = 'Java String'
      • Strings für Regular Expressions (kein Escape für Backslash nötig): assert 'Alles nur Worte' ==~ /((w*) *)*/ //Vollständigen Bereich prüfen assert 'Alles nur Worte' =~ /w*/ // Auf einzelnen Treffer prüfen def matcher = 'Alles nur Worte' =~ /w*/ // Alle Treffer ausgeben matcher.each { println it }
    • Builder
      • Builder erlauben es, komplexe Datenstrukturen aufzubauen. (GOF Pattern)
      • Builder für:
        • Groovy-Objekte: NodeBuilder
        • XML, HTML: groovy.xml.MarkupBuilder
        • Swing: SwingBuilder
        • Ant: AntBuilder
      • Eigene Builder über BuilderSupport
    • Builder (Beispiel)
      • XML
      • <tiere>
      • <tier>
      • <art text='Hund' />
      • </tier>
      • <tier>
      • <art text='Katze' />
      • </tier>
      • <tier>
      • <art text='Maus' />
      • </tier>
      • </tiere>
      • XML – Builder
      • def b = new groovy.xml.MarkupBuilder()
      • b.tiere {
      • for (n in ['Hund','Katze','Maus']){
      • tier {
      • art(text: n)
      • }
      • }
      • }
    • XML Unterstützung in Groovy
      • Einfaches Einlesen durch eingebauten Xml-Parser
      • Zugriff auf XML-Daten durch GPath-Ausdrücke
      • Erzeugen von XML durch XML-Builder
      • Groovy als Alternative zu XSLT
    • XML-Parser (Beispiel)
      • XML
      • <tiere>
      • <tier>
      • <art text='Hund' />
      • </tier>
      • <tier>
      • <art text='Katze' />
      • </tier>
      • <tier>
      • <art text='Maus' />
      • </tier>
      • </tiere>
      • XML – Parser
      • def t = new XmlParser().parseText(xml)
      • // GPath auf das Object-Netz
      • assert t.tier.art.'@text' ==
      • ['Hund', 'Katze', 'Maus']
    • Tolle andere Features von Groovy
      • Unterstützung von JUnit
      • Unterstützung von Datenbanken
      • Unterstützung für XML
    • Fleisch und Knochen
      • Aufteilung von Systemen in
              • Java : Statische, stabile Komponenten, Laufzeit-kritisch (Knochen)
              • Groovy : Dynamische, flexible Komponenten, hohe Anpaßbarkeit (Fleisch)
    • Quellen
      • Wikipedia: http://de.wikipedia.org/wiki/Groovy
      • Vortrag von Christof Vollrath beim 23rd Chaos Communication Congress, Dezember 2006 http://events.ccc.de/congress/2006/Fahrplan/events/1419.en.html
    •