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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Tech Talk: Groovy

  • 1,559 views
Published

Kurze Einführung in Groovy

Kurze Einführung in Groovy

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
1,559
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
17
Comments
1
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tech Talk: Groovy 26.02.2008
  • 2. 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
  • 3. 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
  • 4. 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…
  • 5. Warum Javas bester Freund? (2) andere andere andere andere Java friendly Feature rich (Quelle: „Groovy in Action“, D. Koenig)
  • 6. 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
  • 7. 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
  • 8. The Groovy way to say Hello (1)
    • public class SayHello {
    • public static void main (String[] args) {
    • System.out.println( " hello " );
    • }
    • }
    • Java kompatibel
  • 9. The Groovy way to say Hello (2)
    • class SayHello {
    • static void main (String[] args) {
    • System.out.println( " hello " );
    • }
    • }
    • public ist default
  • 10. The Groovy way to say Hello (3)
    • class SayHello {
    • static void main (args) {
    • System.out.println( " hello " )
    • }
    • }
    • Typangaben sind optional
    • Semikolon optional
  • 11. The Groovy way to say Hello (4)
    • class SayHello {
    • static void main (args) {
    • println( " hello " )
    • }
    • }
    • println kennt jeder Klasse
  • 12. The Groovy way to say Hello (5)
    • println( " hello " )
    • Keine Klassen für ausführbares Skript notwendig
  • 13. The Groovy way to say Hello (6)
    • println " hello "
    • Klammern meist optional bei Methodenaufrufen
  • 14.
    • 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
  • 15. 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
  • 16. 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
  • 17. 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
    • }
  • 18. 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 }
  • 19. 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
  • 20. 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)
    • }
    • }
    • }
  • 21. 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
  • 22. 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']
  • 23. Tolle andere Features von Groovy
    • Unterstützung von JUnit
    • Unterstützung von Datenbanken
    • Unterstützung für XML
  • 24. Fleisch und Knochen
    • Aufteilung von Systemen in
            • Java : Statische, stabile Komponenten, Laufzeit-kritisch (Knochen)
            • Groovy : Dynamische, flexible Komponenten, hohe Anpaßbarkeit (Fleisch)
  • 25. 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
  • 26.