Na jawie frapujący, czyli grooviego zarys wabiący

177
. . Na Jawie Frapujący Czyli Grooviego zarys wabiący. Filip „Filus” Pająk Szczecińska JUG 20 września 2012 Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 1 / 39

description

Wprowadzenie do języka Groovy przygotowane na XVIII spotkanie Szczecińskiej JUG.

Transcript of Na jawie frapujący, czyli grooviego zarys wabiący

Page 1: Na jawie frapujący, czyli grooviego zarys wabiący

.

......

Na Jawie FrapującyCzyli Grooviego zarys wabiący.

Filip „Filus” Pająk

Szczecińska JUG

20 września 2012

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 1 / 39

Page 2: Na jawie frapujący, czyli grooviego zarys wabiący

Agenda

1 Wstęp

2 Zaczynamy

3 Głębsze wody

4 Koniec

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 2 / 39

Page 3: Na jawie frapujący, czyli grooviego zarys wabiący

Agenda

1 Wstęp

2 Zaczynamy

3 Głębsze wody

4 Koniec

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 2 / 39

Page 4: Na jawie frapujący, czyli grooviego zarys wabiący

Agenda

1 Wstęp

2 Zaczynamy

3 Głębsze wody

4 Koniec

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 2 / 39

Page 5: Na jawie frapujący, czyli grooviego zarys wabiący

Agenda

1 Wstęp

2 Zaczynamy

3 Głębsze wody

4 Koniec

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 2 / 39

Page 6: Na jawie frapujący, czyli grooviego zarys wabiący

Zastrzeżenia

Ograniczona Gwarancja

Prezentacja jest dostarczona tak jak jest.Autor zastrzega sobie prawo do tremy.Autor starał się nie popełniać błędów językowych, ale nikt nie jestdoskonały.Autor nie jest guru jeśli chodzi o prezentowany temat.Autor zastrzega sobie prawo do nieznajomości odpowiedzi nazadane pytanie.Aczkolwiek postara się nie rozmijać z rzeczywistością ;)

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 3 / 39

Page 7: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Co teraz?

1 Wstęp

2 Zaczynamy

3 Głębsze wody

4 Koniec

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 4 / 39

Page 8: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 9: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...jest dynamicznym językiem obiektowym dla maszyny wirtualnej Javy.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 10: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...daje dodatkowe możliwości inspirowane językami takim jak Python,Ruby czy Smalltalk.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 11: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...udostępnia cechy „nowoczesnego” programowania programistomjavy z prawie zerową krzywą nauki.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 12: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...dostarcza możliwości statycznego sprawdzania typu i statycznejkompilacji kodu.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 13: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...wspiera DSL i inne kieszonkowe składnie, aby kod był łatwy doczytania i utrzymania.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 14: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...ułatwia pisanie skryptów powłoki i budujących.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 15: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...zwiększa produktywność przez redukcję „szkieletowego” kodu przyrozwijaniu aplikacji sieciowych, GUI, bazodanowych i konsolowych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 16: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...upraszcza testowanie przez wsparcie dla testów jednostkowych iimitowania „wprost z pudełka”

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 17: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...gładko integruje się ze wszystkimi istniejącymi klasami i bibliotekamiJavy.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 18: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Groovy...

...kompiluje się wprost do bajtkodu.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 5 / 39

Page 19: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Po co?

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 6 / 39

Page 20: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Po co?

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 6 / 39

Page 21: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2003 –James Strachan pierwszy raz wzmiankuje o projekcie.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 22: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2004 –Opublikowana pierwsza wersja.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 23: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2006 –Z projektu odchodzi Strachan.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 24: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2007 – styczeńOpublikowana pierwsza „stabilna” wersja - 1.0.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 25: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2007 – grudzieńOpublikowana wersja - 1.5 (1.1).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 26: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2009 – lutyOpublikowana wersja - 1.6.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 27: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2009 – grudzieńOpublikowana wersja - 1.7.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 28: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2011 – kwiecieńOpublikowana wersja - 1.8.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 29: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2012 – czerwiecOpublikowana wersja - 2.0 (1.9).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 30: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2013 –Planowana wersja - 3.0

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 31: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Trochę historii

2014 –Planowana wersja - 4.0.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 7 / 39

Page 32: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Ekosystem

W skład ekosystemu Grooviego wchodzą:

Język.Groovy JDK (GDK).Biblioteki.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 8 / 39

Page 33: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Ekosystem

W skład ekosystemu Grooviego wchodzą:

Język.Groovy JDK (GDK).Biblioteki.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 8 / 39

Page 34: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Ekosystem

W skład ekosystemu Grooviego wchodzą:

Język.Groovy JDK (GDK).Biblioteki.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 8 / 39

Page 35: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Podstawowe informacje

Składnia w dużej mierze identyczna ze składnią Javy.Operator == oznacza równość, nie identyczność.Każda operacja zwraca jakąś wartość.Słowo kluczowe return nie jest wymagane.Wszystkie wyjątki obsługiwane jak RuntimeException w Javie.Nie są wymagane średniki na końcu linii, nawiasy przy podawaniuargumentów funkcji ani kropki w łańcuchach wywołań.Można definiować więcej niż jedną klasę publiczną na plikźródłowy.Możliwe jest stosowanie aliasów do importowanych typów (as).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 9 / 39

Page 36: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Podstawowe informacje

Składnia w dużej mierze identyczna ze składnią Javy.Operator == oznacza równość, nie identyczność.Każda operacja zwraca jakąś wartość.Słowo kluczowe return nie jest wymagane.Wszystkie wyjątki obsługiwane jak RuntimeException w Javie.Nie są wymagane średniki na końcu linii, nawiasy przy podawaniuargumentów funkcji ani kropki w łańcuchach wywołań.Można definiować więcej niż jedną klasę publiczną na plikźródłowy.Możliwe jest stosowanie aliasów do importowanych typów (as).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 9 / 39

Page 37: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Podstawowe informacje

Składnia w dużej mierze identyczna ze składnią Javy.Operator == oznacza równość, nie identyczność.Każda operacja zwraca jakąś wartość.Słowo kluczowe return nie jest wymagane.Wszystkie wyjątki obsługiwane jak RuntimeException w Javie.Nie są wymagane średniki na końcu linii, nawiasy przy podawaniuargumentów funkcji ani kropki w łańcuchach wywołań.Można definiować więcej niż jedną klasę publiczną na plikźródłowy.Możliwe jest stosowanie aliasów do importowanych typów (as).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 9 / 39

Page 38: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Podstawowe informacje

Składnia w dużej mierze identyczna ze składnią Javy.Operator == oznacza równość, nie identyczność.Każda operacja zwraca jakąś wartość.Słowo kluczowe return nie jest wymagane.Wszystkie wyjątki obsługiwane jak RuntimeException w Javie.Nie są wymagane średniki na końcu linii, nawiasy przy podawaniuargumentów funkcji ani kropki w łańcuchach wywołań.Można definiować więcej niż jedną klasę publiczną na plikźródłowy.Możliwe jest stosowanie aliasów do importowanych typów (as).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 9 / 39

Page 39: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Podstawowe informacje

Składnia w dużej mierze identyczna ze składnią Javy.Operator == oznacza równość, nie identyczność.Każda operacja zwraca jakąś wartość.Słowo kluczowe return nie jest wymagane.Wszystkie wyjątki obsługiwane jak RuntimeException w Javie.Nie są wymagane średniki na końcu linii, nawiasy przy podawaniuargumentów funkcji ani kropki w łańcuchach wywołań.Można definiować więcej niż jedną klasę publiczną na plikźródłowy.Możliwe jest stosowanie aliasów do importowanych typów (as).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 9 / 39

Page 40: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Podstawowe informacje

Składnia w dużej mierze identyczna ze składnią Javy.Operator == oznacza równość, nie identyczność.Każda operacja zwraca jakąś wartość.Słowo kluczowe return nie jest wymagane.Wszystkie wyjątki obsługiwane jak RuntimeException w Javie.Nie są wymagane średniki na końcu linii, nawiasy przy podawaniuargumentów funkcji ani kropki w łańcuchach wywołań.Można definiować więcej niż jedną klasę publiczną na plikźródłowy.Możliwe jest stosowanie aliasów do importowanych typów (as).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 9 / 39

Page 41: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Podstawowe informacje

Składnia w dużej mierze identyczna ze składnią Javy.Operator == oznacza równość, nie identyczność.Każda operacja zwraca jakąś wartość.Słowo kluczowe return nie jest wymagane.Wszystkie wyjątki obsługiwane jak RuntimeException w Javie.Nie są wymagane średniki na końcu linii, nawiasy przy podawaniuargumentów funkcji ani kropki w łańcuchach wywołań.Można definiować więcej niż jedną klasę publiczną na plikźródłowy.Możliwe jest stosowanie aliasów do importowanych typów (as).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 9 / 39

Page 42: Na jawie frapujący, czyli grooviego zarys wabiący

Wstęp

Podstawowe informacje

Składnia w dużej mierze identyczna ze składnią Javy.Operator == oznacza równość, nie identyczność.Każda operacja zwraca jakąś wartość.Słowo kluczowe return nie jest wymagane.Wszystkie wyjątki obsługiwane jak RuntimeException w Javie.Nie są wymagane średniki na końcu linii, nawiasy przy podawaniuargumentów funkcji ani kropki w łańcuchach wywołań.Można definiować więcej niż jedną klasę publiczną na plikźródłowy.Możliwe jest stosowanie aliasów do importowanych typów (as).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 9 / 39

Page 43: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Co teraz?

1 Wstęp

2 Zaczynamy

3 Głębsze wody

4 Koniec

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 10 / 39

Page 44: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Skrypty

Skrypt – kod zapisany bezpośrednio w pliku bez deklaracji klas imetod.Możliwe łączenie kodu skryptu z kodem klas w ramach jednegopliku.Skrypt to tak naprawdę metoda statyczna main() klasy o nazwiejak plik źródłowy skryptu.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 11 / 39

Page 45: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Skrypty

Skrypt – kod zapisany bezpośrednio w pliku bez deklaracji klas imetod.Możliwe łączenie kodu skryptu z kodem klas w ramach jednegopliku.Skrypt to tak naprawdę metoda statyczna main() klasy o nazwiejak plik źródłowy skryptu.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 11 / 39

Page 46: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Skrypty

Skrypt – kod zapisany bezpośrednio w pliku bez deklaracji klas imetod.Możliwe łączenie kodu skryptu z kodem klas w ramach jednegopliku.Skrypt to tak naprawdę metoda statyczna main() klasy o nazwiejak plik źródłowy skryptu.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 11 / 39

Page 47: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Modyfikatory

Dopuszczone modyfikatory takie jak w javie.Domyślnym modyfikatorem jest modyfikator public dla metod iklas. Dla pól publiczny „w pewnym sensie”.Modyfikator pakietowy definiowany adnotacją @PackageScope.Z powodu błędu (GROOVY-3010) w mechanizmach MOPmodyfikatory dostępu spełniają swoją rolę jedynie poza Groovym.Z tego samego powodu modyfikator final nie działa poprawniedla zmiennych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 12 / 39

Page 48: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Modyfikatory

Dopuszczone modyfikatory takie jak w javie.Domyślnym modyfikatorem jest modyfikator public dla metod iklas. Dla pól publiczny „w pewnym sensie”.Modyfikator pakietowy definiowany adnotacją @PackageScope.Z powodu błędu (GROOVY-3010) w mechanizmach MOPmodyfikatory dostępu spełniają swoją rolę jedynie poza Groovym.Z tego samego powodu modyfikator final nie działa poprawniedla zmiennych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 12 / 39

Page 49: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Modyfikatory

Dopuszczone modyfikatory takie jak w javie.Domyślnym modyfikatorem jest modyfikator public dla metod iklas. Dla pól publiczny „w pewnym sensie”.Modyfikator pakietowy definiowany adnotacją @PackageScope.Z powodu błędu (GROOVY-3010) w mechanizmach MOPmodyfikatory dostępu spełniają swoją rolę jedynie poza Groovym.Z tego samego powodu modyfikator final nie działa poprawniedla zmiennych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 12 / 39

Page 50: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Modyfikatory

Dopuszczone modyfikatory takie jak w javie.Domyślnym modyfikatorem jest modyfikator public dla metod iklas. Dla pól publiczny „w pewnym sensie”.Modyfikator pakietowy definiowany adnotacją @PackageScope.Z powodu błędu (GROOVY-3010) w mechanizmach MOPmodyfikatory dostępu spełniają swoją rolę jedynie poza Groovym.Z tego samego powodu modyfikator final nie działa poprawniedla zmiennych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 12 / 39

Page 51: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Modyfikatory

Dopuszczone modyfikatory takie jak w javie.Domyślnym modyfikatorem jest modyfikator public dla metod iklas. Dla pól publiczny „w pewnym sensie”.Modyfikator pakietowy definiowany adnotacją @PackageScope.Z powodu błędu (GROOVY-3010) w mechanizmach MOPmodyfikatory dostępu spełniają swoją rolę jedynie poza Groovym.Z tego samego powodu modyfikator final nie działa poprawniedla zmiennych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 12 / 39

Page 52: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Definicje

Definiowanie klas, interfejsów, pól i metod praktycznie tak jak wJavie.Nie jest wymagane podawanie wszystkich modyfikatorów.

Przykładpublic class Klasa extends InnaKlasa implements Interfejs {

private def pole;

public final String polePubliczne = ...;

public String metoda(Object arg1) {...

}}

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 13 / 39

Page 53: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Definicje

Definiowanie klas, interfejsów, pól i metod praktycznie tak jak wJavie.Nie jest wymagane podawanie wszystkich modyfikatorów.

Przykładclass Klasa extends InnaKlasa implements Interfejs {

private pole;

final String polePubliczne = ...;

String metoda(Object arg1) {...

}}

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 13 / 39

Page 54: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Prawda

Prawdą w Groovy jest:Wartość true dla wyrażeń logicznych (w tym typu Boolean).Niezerowa wartość dla typów numerycznych.Niepusty łańcuch.Niepusta kolekcja lub mapa.Iterator lub enumeracja wskazująca na następny element.Referencja obiektu nie będąca wartością null.Obiekt o wartości true zwracanej przez metodę asBoolean().

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 14 / 39

Page 55: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Prawda

Prawdą w Groovy jest:Wartość true dla wyrażeń logicznych (w tym typu Boolean).Niezerowa wartość dla typów numerycznych.Niepusty łańcuch.Niepusta kolekcja lub mapa.Iterator lub enumeracja wskazująca na następny element.Referencja obiektu nie będąca wartością null.Obiekt o wartości true zwracanej przez metodę asBoolean().

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 14 / 39

Page 56: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Prawda

Prawdą w Groovy jest:Wartość true dla wyrażeń logicznych (w tym typu Boolean).Niezerowa wartość dla typów numerycznych.Niepusty łańcuch.Niepusta kolekcja lub mapa.Iterator lub enumeracja wskazująca na następny element.Referencja obiektu nie będąca wartością null.Obiekt o wartości true zwracanej przez metodę asBoolean().

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 14 / 39

Page 57: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Prawda

Prawdą w Groovy jest:Wartość true dla wyrażeń logicznych (w tym typu Boolean).Niezerowa wartość dla typów numerycznych.Niepusty łańcuch.Niepusta kolekcja lub mapa.Iterator lub enumeracja wskazująca na następny element.Referencja obiektu nie będąca wartością null.Obiekt o wartości true zwracanej przez metodę asBoolean().

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 14 / 39

Page 58: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Prawda

Prawdą w Groovy jest:Wartość true dla wyrażeń logicznych (w tym typu Boolean).Niezerowa wartość dla typów numerycznych.Niepusty łańcuch.Niepusta kolekcja lub mapa.Iterator lub enumeracja wskazująca na następny element.Referencja obiektu nie będąca wartością null.Obiekt o wartości true zwracanej przez metodę asBoolean().

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 14 / 39

Page 59: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Prawda

Prawdą w Groovy jest:Wartość true dla wyrażeń logicznych (w tym typu Boolean).Niezerowa wartość dla typów numerycznych.Niepusty łańcuch.Niepusta kolekcja lub mapa.Iterator lub enumeracja wskazująca na następny element.Referencja obiektu nie będąca wartością null.Obiekt o wartości true zwracanej przez metodę asBoolean().

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 14 / 39

Page 60: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Prawda

Prawdą w Groovy jest:Wartość true dla wyrażeń logicznych (w tym typu Boolean).Niezerowa wartość dla typów numerycznych.Niepusty łańcuch.Niepusta kolekcja lub mapa.Iterator lub enumeracja wskazująca na następny element.Referencja obiektu nie będąca wartością null.Obiekt o wartości true zwracanej przez metodę asBoolean().

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 14 / 39

Page 61: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Łańcuchy

W Groovy mamy pięć rodzajów łańcuchów:Zwykły łańcuch, zapisywany w ’uszach’.Zwykły łańcuch, zapisywany w /ukośnikach/GString zapisywany w ”cudzysłowie”.Wariant wielowierszowy zapisu w uszach.Wariant wielowierszowy zapisu w cudzysłowie.

Przykładdef string = ’Zwykły łańcuch’

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 15 / 39

Page 62: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Łańcuchy

W Groovy mamy pięć rodzajów łańcuchów:Zwykły łańcuch, zapisywany w ’uszach’.Zwykły łańcuch, zapisywany w /ukośnikach/GString zapisywany w ”cudzysłowie”.Wariant wielowierszowy zapisu w uszach.Wariant wielowierszowy zapisu w cudzysłowie.

Przykładdef string = /Zwykły łańcuch/

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 15 / 39

Page 63: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Łańcuchy

W Groovy mamy pięć rodzajów łańcuchów:Zwykły łańcuch, zapisywany w ’uszach’.Zwykły łańcuch, zapisywany w /ukośnikach/GString zapisywany w ”cudzysłowie”.Wariant wielowierszowy zapisu w uszach.Wariant wielowierszowy zapisu w cudzysłowie.

Przykładdef string = ”Łańcuch GString”

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 15 / 39

Page 64: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Łańcuchy

W Groovy mamy pięć rodzajów łańcuchów:Zwykły łańcuch, zapisywany w ’uszach’.Zwykły łańcuch, zapisywany w /ukośnikach/GString zapisywany w ”cudzysłowie”.Wariant wielowierszowy zapisu w uszach.Wariant wielowierszowy zapisu w cudzysłowie.

Przykładdef string = ”’Zwykły łańcuchwielowierszowy”’

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 15 / 39

Page 65: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Łańcuchy

W Groovy mamy pięć rodzajów łańcuchów:Zwykły łańcuch, zapisywany w ’uszach’.Zwykły łańcuch, zapisywany w /ukośnikach/GString zapisywany w ”cudzysłowie”.Wariant wielowierszowy zapisu w uszach.Wariant wielowierszowy zapisu w cudzysłowie.

Przykładdef string = ”””Łańcuch GStringwielowierszowy”””

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 15 / 39

Page 66: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Wartości numeryczne

Wartości numeryczne są obiektami.Domyślnie używane są typy Integer i BigDecimal.Przy operacjach dodawania, odejmowania i mnożenia wynik jesttego samego typu co „największy” typ użytych operandów.Chyba, że jednym z operandów jest typu Float lub Double. Wtedywynik jest typu Double.Przy operacji dzielenia wynik jest typu Double lub BigDecimal.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 16 / 39

Page 67: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Wartości numeryczne

Wartości numeryczne są obiektami.Domyślnie używane są typy Integer i BigDecimal.Przy operacjach dodawania, odejmowania i mnożenia wynik jesttego samego typu co „największy” typ użytych operandów.Chyba, że jednym z operandów jest typu Float lub Double. Wtedywynik jest typu Double.Przy operacji dzielenia wynik jest typu Double lub BigDecimal.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 16 / 39

Page 68: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Wartości numeryczne

Wartości numeryczne są obiektami.Domyślnie używane są typy Integer i BigDecimal.Przy operacjach dodawania, odejmowania i mnożenia wynik jesttego samego typu co „największy” typ użytych operandów.Chyba, że jednym z operandów jest typu Float lub Double. Wtedywynik jest typu Double.Przy operacji dzielenia wynik jest typu Double lub BigDecimal.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 16 / 39

Page 69: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Wartości numeryczne

Wartości numeryczne są obiektami.Domyślnie używane są typy Integer i BigDecimal.Przy operacjach dodawania, odejmowania i mnożenia wynik jesttego samego typu co „największy” typ użytych operandów.Chyba, że jednym z operandów jest typu Float lub Double. Wtedywynik jest typu Double.Przy operacji dzielenia wynik jest typu Double lub BigDecimal.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 16 / 39

Page 70: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Wartości numeryczne

Wartości numeryczne są obiektami.Domyślnie używane są typy Integer i BigDecimal.Przy operacjach dodawania, odejmowania i mnożenia wynik jesttego samego typu co „największy” typ użytych operandów.Chyba, że jednym z operandów jest typu Float lub Double. Wtedywynik jest typu Double.Przy operacji dzielenia wynik jest typu Double lub BigDecimal.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 16 / 39

Page 71: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Tablice, listy, mapy…

Domyślnie zamiast tablic używane są listy i mapy.Do zapisu list stosuje się notację [ wartość1, wartość2, …].Identycznie zapisuje się tablice, z tym, że trzeba jawnie określić,że to tablica.Do zapisu map stosuje się notację [ klucz1 : wartość1,klucz2 : wartość2, …].Specjalnym rodzajem listy są zakresy (Range).Dostęp do elementów poprzez wskazanie indeksu lub klucza wnawiasach kwadratowych.Indeksy mogą być ujemne, oraz mogą być zakresami.W przypadku map możliwe użycie klucza jako nazwy pola.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 17 / 39

Page 72: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Tablice, listy, mapy…

Domyślnie zamiast tablic używane są listy i mapy.Do zapisu list stosuje się notację [ wartość1, wartość2, …].Identycznie zapisuje się tablice, z tym, że trzeba jawnie określić,że to tablica.Do zapisu map stosuje się notację [ klucz1 : wartość1,klucz2 : wartość2, …].Specjalnym rodzajem listy są zakresy (Range).Dostęp do elementów poprzez wskazanie indeksu lub klucza wnawiasach kwadratowych.Indeksy mogą być ujemne, oraz mogą być zakresami.W przypadku map możliwe użycie klucza jako nazwy pola.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 17 / 39

Page 73: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Tablice, listy, mapy…

Domyślnie zamiast tablic używane są listy i mapy.Do zapisu list stosuje się notację [ wartość1, wartość2, …].Identycznie zapisuje się tablice, z tym, że trzeba jawnie określić,że to tablica.Do zapisu map stosuje się notację [ klucz1 : wartość1,klucz2 : wartość2, …].Specjalnym rodzajem listy są zakresy (Range).Dostęp do elementów poprzez wskazanie indeksu lub klucza wnawiasach kwadratowych.Indeksy mogą być ujemne, oraz mogą być zakresami.W przypadku map możliwe użycie klucza jako nazwy pola.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 17 / 39

Page 74: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Tablice, listy, mapy…

Domyślnie zamiast tablic używane są listy i mapy.Do zapisu list stosuje się notację [ wartość1, wartość2, …].Identycznie zapisuje się tablice, z tym, że trzeba jawnie określić,że to tablica.Do zapisu map stosuje się notację [ klucz1 : wartość1,klucz2 : wartość2, …].Specjalnym rodzajem listy są zakresy (Range).Dostęp do elementów poprzez wskazanie indeksu lub klucza wnawiasach kwadratowych.Indeksy mogą być ujemne, oraz mogą być zakresami.W przypadku map możliwe użycie klucza jako nazwy pola.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 17 / 39

Page 75: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Tablice, listy, mapy…

Domyślnie zamiast tablic używane są listy i mapy.Do zapisu list stosuje się notację [ wartość1, wartość2, …].Identycznie zapisuje się tablice, z tym, że trzeba jawnie określić,że to tablica.Do zapisu map stosuje się notację [ klucz1 : wartość1,klucz2 : wartość2, …].Specjalnym rodzajem listy są zakresy (Range).Dostęp do elementów poprzez wskazanie indeksu lub klucza wnawiasach kwadratowych.Indeksy mogą być ujemne, oraz mogą być zakresami.W przypadku map możliwe użycie klucza jako nazwy pola.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 17 / 39

Page 76: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Tablice, listy, mapy…

Domyślnie zamiast tablic używane są listy i mapy.Do zapisu list stosuje się notację [ wartość1, wartość2, …].Identycznie zapisuje się tablice, z tym, że trzeba jawnie określić,że to tablica.Do zapisu map stosuje się notację [ klucz1 : wartość1,klucz2 : wartość2, …].Specjalnym rodzajem listy są zakresy (Range).Dostęp do elementów poprzez wskazanie indeksu lub klucza wnawiasach kwadratowych.Indeksy mogą być ujemne, oraz mogą być zakresami.W przypadku map możliwe użycie klucza jako nazwy pola.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 17 / 39

Page 77: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Tablice, listy, mapy…

Domyślnie zamiast tablic używane są listy i mapy.Do zapisu list stosuje się notację [ wartość1, wartość2, …].Identycznie zapisuje się tablice, z tym, że trzeba jawnie określić,że to tablica.Do zapisu map stosuje się notację [ klucz1 : wartość1,klucz2 : wartość2, …].Specjalnym rodzajem listy są zakresy (Range).Dostęp do elementów poprzez wskazanie indeksu lub klucza wnawiasach kwadratowych.Indeksy mogą być ujemne, oraz mogą być zakresami.W przypadku map możliwe użycie klucza jako nazwy pola.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 17 / 39

Page 78: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Tablice, listy, mapy…

Domyślnie zamiast tablic używane są listy i mapy.Do zapisu list stosuje się notację [ wartość1, wartość2, …].Identycznie zapisuje się tablice, z tym, że trzeba jawnie określić,że to tablica.Do zapisu map stosuje się notację [ klucz1 : wartość1,klucz2 : wartość2, …].Specjalnym rodzajem listy są zakresy (Range).Dostęp do elementów poprzez wskazanie indeksu lub klucza wnawiasach kwadratowych.Indeksy mogą być ujemne, oraz mogą być zakresami.W przypadku map możliwe użycie klucza jako nazwy pola.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 17 / 39

Page 79: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Instrukcje warunkowe

Składnia instrukcji if - else identyczna jak w Javie.Składnia instrukcji switch - case również identyczna.Aczkolwiek parametrem dla case może być dowolny obiekt mającymetodę isCase(switchValue).Oprócz wyrażenia warunkowegowarunek?wartośćDlaPrawdy:wartośćDlaFałszu istniejeoperator Elvisa: (warunek)?:wartośćDlaFałszu

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 18 / 39

Page 80: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Instrukcje warunkowe

Składnia instrukcji if - else identyczna jak w Javie.Składnia instrukcji switch - case również identyczna.Aczkolwiek parametrem dla case może być dowolny obiekt mającymetodę isCase(switchValue).Oprócz wyrażenia warunkowegowarunek?wartośćDlaPrawdy:wartośćDlaFałszu istniejeoperator Elvisa: (warunek)?:wartośćDlaFałszu

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 18 / 39

Page 81: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Instrukcje warunkowe

Składnia instrukcji if - else identyczna jak w Javie.Składnia instrukcji switch - case również identyczna.Aczkolwiek parametrem dla case może być dowolny obiekt mającymetodę isCase(switchValue).Oprócz wyrażenia warunkowegowarunek?wartośćDlaPrawdy:wartośćDlaFałszu istniejeoperator Elvisa: (warunek)?:wartośćDlaFałszu

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 18 / 39

Page 82: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Instrukcje warunkowe

Składnia instrukcji if - else identyczna jak w Javie.Składnia instrukcji switch - case również identyczna.Aczkolwiek parametrem dla case może być dowolny obiekt mającymetodę isCase(switchValue).Oprócz wyrażenia warunkowegowarunek?wartośćDlaPrawdy:wartośćDlaFałszu istniejeoperator Elvisa: (warunek)?:wartośćDlaFałszu

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 18 / 39

Page 83: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Pętle

Instrukcja while identyczna jak w Javie.Działają wszystkie formy instrukcji for znane z Javy.Dodatkowo możliwy zapis pętli for z wykorzystaniem słowakluczowego in do iteracji po kolekcjach, mapach, tablicach.Brak pętli do...while.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 19 / 39

Page 84: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Pętle

Instrukcja while identyczna jak w Javie.Działają wszystkie formy instrukcji for znane z Javy.Dodatkowo możliwy zapis pętli for z wykorzystaniem słowakluczowego in do iteracji po kolekcjach, mapach, tablicach.Brak pętli do...while.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 19 / 39

Page 85: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Pętle

Instrukcja while identyczna jak w Javie.Działają wszystkie formy instrukcji for znane z Javy.Dodatkowo możliwy zapis pętli for z wykorzystaniem słowakluczowego in do iteracji po kolekcjach, mapach, tablicach.Brak pętli do...while.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 19 / 39

Page 86: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Pętle

Instrukcja while identyczna jak w Javie.Działają wszystkie formy instrukcji for znane z Javy.Dodatkowo możliwy zapis pętli for z wykorzystaniem słowakluczowego in do iteracji po kolekcjach, mapach, tablicach.Brak pętli do...while.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 19 / 39

Page 87: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Domknięcia

DefinicjaDomknięcie – w metodach realizacji języków programowania jest toobiekt wiążący funkcję oraz środowisko, w jakim ta funkcja ma działać.

Blok kodu zawarty w nawiasach klamrowych przypisany (może byćniejawnie) do literału.Może być również użyta metoda danego obiektu za pomocąoperatora .&.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 20 / 39

Page 88: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Domknięcia

DefinicjaDomknięcie – w metodach realizacji języków programowania jest toobiekt wiążący funkcję oraz środowisko, w jakim ta funkcja ma działać.

Blok kodu zawarty w nawiasach klamrowych przypisany (może byćniejawnie) do literału.Może być również użyta metoda danego obiektu za pomocąoperatora .&.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 20 / 39

Page 89: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Domknięcia

DefinicjaDomknięcie – w metodach realizacji języków programowania jest toobiekt wiążący funkcję oraz środowisko, w jakim ta funkcja ma działać.

Blok kodu zawarty w nawiasach klamrowych przypisany (może byćniejawnie) do literału.Może być również użyta metoda danego obiektu za pomocąoperatora .&.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 20 / 39

Page 90: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 91: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 92: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 93: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 94: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 95: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 96: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 97: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 98: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 99: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 100: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 101: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 102: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 103: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 104: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Operatory

Groovy wprowadza przeciążanie operatorów.oraz kilka tychże nowych względem javy:

** potęgowanie <=> porównanie.@ dostęp do pola .& referencja metody?: Elvis ?. bezpieczne nawigowanie*. rozpiętość *.@ rozpiętość po polach=~ znalezienie wyrażenia ==~ dopasowanie wyrażenia

regularnego regularnegoas rzutowanie in zawieranieis identyczność

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 21 / 39

Page 105: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Groovy Beans

W praktyce każdy obiekt w Groovy jest ziarnem (bean).Właściwości (Properties) ziaren okraślane przez metodyset/get/is....Autokreacja właściwości przez deklarację pól.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 22 / 39

Page 106: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Groovy Beans

W praktyce każdy obiekt w Groovy jest ziarnem (bean).Właściwości (Properties) ziaren okraślane przez metodyset/get/is....Autokreacja właściwości przez deklarację pól.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 22 / 39

Page 107: Na jawie frapujący, czyli grooviego zarys wabiący

Zaczynamy

Groovy Beans

W praktyce każdy obiekt w Groovy jest ziarnem (bean).Właściwości (Properties) ziaren okraślane przez metodyset/get/is....Autokreacja właściwości przez deklarację pól.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 22 / 39

Page 108: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Co teraz?

1 Wstęp

2 Zaczynamy

3 Głębsze wody

4 Koniec

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 23 / 39

Page 109: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Łańcuch wywołań

Nawiasy określające argumenty wywołania nie są wymagane.Kropki określające wywołanie metody nie są wymagane.Średniki na końcu linii również opcjonalne.Aczkolwiek czasem trzeba uważać.

Przykład’ala ma kota’.replaceAll(’a’, ’b’)

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 24 / 39

Page 110: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Łańcuch wywołań

Nawiasy określające argumenty wywołania nie są wymagane.Kropki określające wywołanie metody nie są wymagane.Średniki na końcu linii również opcjonalne.Aczkolwiek czasem trzeba uważać.

Przykład’ala ma kota’.replaceAll ’a’, ’b’

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 24 / 39

Page 111: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Łańcuch wywołań

Nawiasy określające argumenty wywołania nie są wymagane.Kropki określające wywołanie metody nie są wymagane.Średniki na końcu linii również opcjonalne.Aczkolwiek czasem trzeba uważać.

Przykład2.plus(2).minus(1).multiply(4)

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 24 / 39

Page 112: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Łańcuch wywołań

Nawiasy określające argumenty wywołania nie są wymagane.Kropki określające wywołanie metody nie są wymagane.Średniki na końcu linii również opcjonalne.Aczkolwiek czasem trzeba uważać.

Przykład2.plus 2 minus 1 multiply 4

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 24 / 39

Page 113: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Łańcuch wywołań

Nawiasy określające argumenty wywołania nie są wymagane.Kropki określające wywołanie metody nie są wymagane.Średniki na końcu linii również opcjonalne.Aczkolwiek czasem trzeba uważać.

Przykładdef a = 10;println a;

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 24 / 39

Page 114: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Łańcuch wywołań

Nawiasy określające argumenty wywołania nie są wymagane.Kropki określające wywołanie metody nie są wymagane.Średniki na końcu linii również opcjonalne.Aczkolwiek czasem trzeba uważać.

Przykładdef a = 10println a

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 24 / 39

Page 115: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Łańcuch wywołań

Nawiasy określające argumenty wywołania nie są wymagane.Kropki określające wywołanie metody nie są wymagane.Średniki na końcu linii również opcjonalne.Aczkolwiek czasem trzeba uważać.

Przykład

class Trial {private final thing = new Thing ( ){ thing.doSomething ( ) }

}

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 24 / 39

Page 116: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Łańcuch wywołań

Nawiasy określające argumenty wywołania nie są wymagane.Kropki określające wywołanie metody nie są wymagane.Średniki na końcu linii również opcjonalne.Aczkolwiek czasem trzeba uważać.

Przykładclass Trial {

private final thing = new Thing ( ){ thing.doSomething ( ) }

}

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 24 / 39

Page 117: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Wyrażenia regularne

Do zapisu wyrażeń regularnych przeznaczony łańcuchukośnikowy.Operator ==~ sprawdza spełnianie wyrażenia regularnego.Operator =~ zwraca obiekt typu java.util.regex.Matcher zpary łańcuch i wyrażenie regularne.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 25 / 39

Page 118: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Wyrażenia regularne

Do zapisu wyrażeń regularnych przeznaczony łańcuchukośnikowy.Operator ==~ sprawdza spełnianie wyrażenia regularnego.Operator =~ zwraca obiekt typu java.util.regex.Matcher zpary łańcuch i wyrażenie regularne.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 25 / 39

Page 119: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Wyrażenia regularne

Do zapisu wyrażeń regularnych przeznaczony łańcuchukośnikowy.Operator ==~ sprawdza spełnianie wyrażenia regularnego.Operator =~ zwraca obiekt typu java.util.regex.Matcher zpary łańcuch i wyrażenie regularne.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 25 / 39

Page 120: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Przeciążanie operatorów

Większośc operatorów w Groovy można przeciążyć.Operatory te po prostu wywołują konkretną metodę na obiekcie.

Przykłada + b ==> a.plus(b)

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 26 / 39

Page 121: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Przeciążanie operatorów

Większośc operatorów w Groovy można przeciążyć.Operatory te po prostu wywołują konkretną metodę na obiekcie.

Przykłada + b ==> a.plus(b)

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 26 / 39

Page 122: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Przeciążanie operatorów

Większośc operatorów w Groovy można przeciążyć.Operatory te po prostu wywołują konkretną metodę na obiekcie.

Przykłada * b ==> a.multiply(b)

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 26 / 39

Page 123: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Przeciążanie operatorów

Większośc operatorów w Groovy można przeciążyć.Operatory te po prostu wywołują konkretną metodę na obiekcie.

Przykłada « b ==> a.leftShift(b)

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 26 / 39

Page 124: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Przeciążanie operatorów

Większośc operatorów w Groovy można przeciążyć.Operatory te po prostu wywołują konkretną metodę na obiekcie.

Przykłada <=> b ==> a.compareTo(b)

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 26 / 39

Page 125: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Domknięcia

Domknięcia

Niejawnie domknięcie to obiekt klasy Closure<V>.Wykonywane w momencie wywołania ich metody call(), a nie wmomencie deklaracji.Możliwy dostęp do właściciela (owner) lub delegata (delegate).Domknięcia mogą być „bejcowane” (curry(), rcurry(),ncurry()).Domknięcia mogą być składane.Domknięcia mogą być optymalizowane pod względem rekurencji(trampoline()).Wynik domknięć może być składowany (memoize()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 27 / 39

Page 126: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Domknięcia

Domknięcia

Niejawnie domknięcie to obiekt klasy Closure<V>.Wykonywane w momencie wywołania ich metody call(), a nie wmomencie deklaracji.Możliwy dostęp do właściciela (owner) lub delegata (delegate).Domknięcia mogą być „bejcowane” (curry(), rcurry(),ncurry()).Domknięcia mogą być składane.Domknięcia mogą być optymalizowane pod względem rekurencji(trampoline()).Wynik domknięć może być składowany (memoize()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 27 / 39

Page 127: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Domknięcia

Domknięcia

Niejawnie domknięcie to obiekt klasy Closure<V>.Wykonywane w momencie wywołania ich metody call(), a nie wmomencie deklaracji.Możliwy dostęp do właściciela (owner) lub delegata (delegate).Domknięcia mogą być „bejcowane” (curry(), rcurry(),ncurry()).Domknięcia mogą być składane.Domknięcia mogą być optymalizowane pod względem rekurencji(trampoline()).Wynik domknięć może być składowany (memoize()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 27 / 39

Page 128: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Domknięcia

Domknięcia

Niejawnie domknięcie to obiekt klasy Closure<V>.Wykonywane w momencie wywołania ich metody call(), a nie wmomencie deklaracji.Możliwy dostęp do właściciela (owner) lub delegata (delegate).Domknięcia mogą być „bejcowane” (curry(), rcurry(),ncurry()).Domknięcia mogą być składane.Domknięcia mogą być optymalizowane pod względem rekurencji(trampoline()).Wynik domknięć może być składowany (memoize()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 27 / 39

Page 129: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Domknięcia

Domknięcia

Niejawnie domknięcie to obiekt klasy Closure<V>.Wykonywane w momencie wywołania ich metody call(), a nie wmomencie deklaracji.Możliwy dostęp do właściciela (owner) lub delegata (delegate).Domknięcia mogą być „bejcowane” (curry(), rcurry(),ncurry()).Domknięcia mogą być składane.Domknięcia mogą być optymalizowane pod względem rekurencji(trampoline()).Wynik domknięć może być składowany (memoize()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 27 / 39

Page 130: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Domknięcia

Domknięcia

Niejawnie domknięcie to obiekt klasy Closure<V>.Wykonywane w momencie wywołania ich metody call(), a nie wmomencie deklaracji.Możliwy dostęp do właściciela (owner) lub delegata (delegate).Domknięcia mogą być „bejcowane” (curry(), rcurry(),ncurry()).Domknięcia mogą być składane.Domknięcia mogą być optymalizowane pod względem rekurencji(trampoline()).Wynik domknięć może być składowany (memoize()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 27 / 39

Page 131: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Domknięcia

Domknięcia

Niejawnie domknięcie to obiekt klasy Closure<V>.Wykonywane w momencie wywołania ich metody call(), a nie wmomencie deklaracji.Możliwy dostęp do właściciela (owner) lub delegata (delegate).Domknięcia mogą być „bejcowane” (curry(), rcurry(),ncurry()).Domknięcia mogą być składane.Domknięcia mogą być optymalizowane pod względem rekurencji(trampoline()).Wynik domknięć może być składowany (memoize()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 27 / 39

Page 132: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

GDK

Rozszerza wybrane standardowe klasy javy o metody czyniące jebardziej „grówiowe”.Wśród nich są metody wspierające wewnętrzne mechanizmygrówiego (np. getMetaClass(), getProperties()).Są metody skracające użycie popularnych idiomów (np.println(), sleep()).Są metody iteracyjne (np. each(), find(), every()).Przeciążenia operatorów.Są metody ułatwiajace pracę z daną klasą.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 28 / 39

Page 133: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

GDK

Rozszerza wybrane standardowe klasy javy o metody czyniące jebardziej „grówiowe”.Wśród nich są metody wspierające wewnętrzne mechanizmygrówiego (np. getMetaClass(), getProperties()).Są metody skracające użycie popularnych idiomów (np.println(), sleep()).Są metody iteracyjne (np. each(), find(), every()).Przeciążenia operatorów.Są metody ułatwiajace pracę z daną klasą.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 28 / 39

Page 134: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

GDK

Rozszerza wybrane standardowe klasy javy o metody czyniące jebardziej „grówiowe”.Wśród nich są metody wspierające wewnętrzne mechanizmygrówiego (np. getMetaClass(), getProperties()).Są metody skracające użycie popularnych idiomów (np.println(), sleep()).Są metody iteracyjne (np. each(), find(), every()).Przeciążenia operatorów.Są metody ułatwiajace pracę z daną klasą.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 28 / 39

Page 135: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

GDK

Rozszerza wybrane standardowe klasy javy o metody czyniące jebardziej „grówiowe”.Wśród nich są metody wspierające wewnętrzne mechanizmygrówiego (np. getMetaClass(), getProperties()).Są metody skracające użycie popularnych idiomów (np.println(), sleep()).Są metody iteracyjne (np. each(), find(), every()).Przeciążenia operatorów.Są metody ułatwiajace pracę z daną klasą.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 28 / 39

Page 136: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

GDK

Rozszerza wybrane standardowe klasy javy o metody czyniące jebardziej „grówiowe”.Wśród nich są metody wspierające wewnętrzne mechanizmygrówiego (np. getMetaClass(), getProperties()).Są metody skracające użycie popularnych idiomów (np.println(), sleep()).Są metody iteracyjne (np. each(), find(), every()).Przeciążenia operatorów.Są metody ułatwiajace pracę z daną klasą.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 28 / 39

Page 137: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

GDK

Rozszerza wybrane standardowe klasy javy o metody czyniące jebardziej „grówiowe”.Wśród nich są metody wspierające wewnętrzne mechanizmygrówiego (np. getMetaClass(), getProperties()).Są metody skracające użycie popularnych idiomów (np.println(), sleep()).Są metody iteracyjne (np. each(), find(), every()).Przeciążenia operatorów.Są metody ułatwiajace pracę z daną klasą.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 28 / 39

Page 138: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

Mapy i kolekcje

Wykonujące działania na każdym elemencie (np. each(),eachWithIndex(), eachPermutation()).Sprawdzające kolekcję (mapę) (np. any(), every()

Wyszukujące (np. find(), findAll(), findResult(),grep(), min()

Agregujące (np. sum(), inject()

Przekształcające (np. collect(), sort(), unique(),flatten()

Grupujące (np. groupBy(), split())

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 29 / 39

Page 139: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

Mapy i kolekcje

Wykonujące działania na każdym elemencie (np. each(),eachWithIndex(), eachPermutation()).Sprawdzające kolekcję (mapę) (np. any(), every()

Wyszukujące (np. find(), findAll(), findResult(),grep(), min()

Agregujące (np. sum(), inject()

Przekształcające (np. collect(), sort(), unique(),flatten()

Grupujące (np. groupBy(), split())

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 29 / 39

Page 140: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

Mapy i kolekcje

Wykonujące działania na każdym elemencie (np. each(),eachWithIndex(), eachPermutation()).Sprawdzające kolekcję (mapę) (np. any(), every()

Wyszukujące (np. find(), findAll(), findResult(),grep(), min()

Agregujące (np. sum(), inject()

Przekształcające (np. collect(), sort(), unique(),flatten()

Grupujące (np. groupBy(), split())

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 29 / 39

Page 141: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

Mapy i kolekcje

Wykonujące działania na każdym elemencie (np. each(),eachWithIndex(), eachPermutation()).Sprawdzające kolekcję (mapę) (np. any(), every()

Wyszukujące (np. find(), findAll(), findResult(),grep(), min()

Agregujące (np. sum(), inject()

Przekształcające (np. collect(), sort(), unique(),flatten()

Grupujące (np. groupBy(), split())

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 29 / 39

Page 142: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

Mapy i kolekcje

Wykonujące działania na każdym elemencie (np. each(),eachWithIndex(), eachPermutation()).Sprawdzające kolekcję (mapę) (np. any(), every()

Wyszukujące (np. find(), findAll(), findResult(),grep(), min()

Agregujące (np. sum(), inject()

Przekształcające (np. collect(), sort(), unique(),flatten()

Grupujące (np. groupBy(), split())

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 29 / 39

Page 143: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

Mapy i kolekcje

Wykonujące działania na każdym elemencie (np. each(),eachWithIndex(), eachPermutation()).Sprawdzające kolekcję (mapę) (np. any(), every()

Wyszukujące (np. find(), findAll(), findResult(),grep(), min()

Agregujące (np. sum(), inject()

Przekształcające (np. collect(), sort(), unique(),flatten()

Grupujące (np. groupBy(), split())

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 29 / 39

Page 144: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

Praca z plikami

Dostarczone są metody ułatwiające pracę zarówno ze strukturą plików,jak i z ich zawartością.Przy części z nich nie trzeba martwić się o zamykanie zasobów.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 30 / 39

Page 145: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody GDK

Praca z plikami

Dostarczone są metody ułatwiające pracę zarówno ze strukturą plików,jak i z ich zawartością.Przy części z nich nie trzeba martwić się o zamykanie zasobów.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 30 / 39

Page 146: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

MOP

Meta-Object to każdy byt który manipuluje, tworzy, opisuje lubimplementuje inne obiekty.Meta-Object Protocol (MOP) jest interpretatorem semantykiprogramu, który jest otwarty i elastyczny.Może być użyty zarówno w trakcie wykonywania, jak i kompilacji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 31 / 39

Page 147: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

MOP

Meta-Object to każdy byt który manipuluje, tworzy, opisuje lubimplementuje inne obiekty.Meta-Object Protocol (MOP) jest interpretatorem semantykiprogramu, który jest otwarty i elastyczny.Może być użyty zarówno w trakcie wykonywania, jak i kompilacji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 31 / 39

Page 148: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

MOP

Meta-Object to każdy byt który manipuluje, tworzy, opisuje lubimplementuje inne obiekty.Meta-Object Protocol (MOP) jest interpretatorem semantykiprogramu, który jest otwarty i elastyczny.Może być użyty zarówno w trakcie wykonywania, jak i kompilacji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 31 / 39

Page 149: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Na dzień dobry

Dynamiczne wywoływanie metod.Obsługa dostępu do nieistniejącym metod (methodMissing()),i właściwości (propertyMissing()).Nadpisanie dostępu do właściwości (getProperty(),setProperty(),i wywoływania metod (invokeMethod()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 32 / 39

Page 150: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Na dzień dobry

Dynamiczne wywoływanie metod.Obsługa dostępu do nieistniejącym metod (methodMissing()),i właściwości (propertyMissing()).Nadpisanie dostępu do właściwości (getProperty(),setProperty(),i wywoływania metod (invokeMethod()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 32 / 39

Page 151: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Na dzień dobry

Dynamiczne wywoływanie metod.Obsługa dostępu do nieistniejącym metod (methodMissing()),i właściwości (propertyMissing()).Nadpisanie dostępu do właściwości (getProperty(),setProperty(),i wywoływania metod (invokeMethod()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 32 / 39

Page 152: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Na dzień dobry

Dynamiczne wywoływanie metod.Obsługa dostępu do nieistniejącym metod (methodMissing()),i właściwości (propertyMissing()).Nadpisanie dostępu do właściwości (getProperty(),setProperty(),i wywoływania metod (invokeMethod()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 32 / 39

Page 153: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Na dzień dobry

Dynamiczne wywoływanie metod.Obsługa dostępu do nieistniejącym metod (methodMissing()),i właściwości (propertyMissing()).Nadpisanie dostępu do właściwości (getProperty(),setProperty(),i wywoływania metod (invokeMethod()).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 32 / 39

Page 154: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

MetaClass

Rodzaj obiektu opisującego klasę.Możliwość zmiany tego opisu w trakcie działania programu.Zmiany mogą dotyczyć zarówno całej klasy, jak i instancji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 33 / 39

Page 155: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

MetaClass

Rodzaj obiektu opisującego klasę.Możliwość zmiany tego opisu w trakcie działania programu.Zmiany mogą dotyczyć zarówno całej klasy, jak i instancji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 33 / 39

Page 156: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

MetaClass

Rodzaj obiektu opisującego klasę.Możliwość zmiany tego opisu w trakcie działania programu.Zmiany mogą dotyczyć zarówno całej klasy, jak i instancji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 33 / 39

Page 157: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Kategorie

Koncepcja zaczerpnięta z Objective-C.Umożliwia zmianę kontraktu klasy tylko wtedy, gdy tego chcemy.Możliwe protezowanie wielodziedziczenia (@Mixin).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 34 / 39

Page 158: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Kategorie

Koncepcja zaczerpnięta z Objective-C.Umożliwia zmianę kontraktu klasy tylko wtedy, gdy tego chcemy.Możliwe protezowanie wielodziedziczenia (@Mixin).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 34 / 39

Page 159: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Kategorie

Koncepcja zaczerpnięta z Objective-C.Umożliwia zmianę kontraktu klasy tylko wtedy, gdy tego chcemy.Możliwe protezowanie wielodziedziczenia (@Mixin).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 34 / 39

Page 160: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Transformacje AST

MOPowanie w trakcie kompilacji.Realizowane poprzez anotacje.Wraz z językiem dostarczana jest gromadka przydatnychtransformacji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 35 / 39

Page 161: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Transformacje AST

MOPowanie w trakcie kompilacji.Realizowane poprzez anotacje.Wraz z językiem dostarczana jest gromadka przydatnychtransformacji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 35 / 39

Page 162: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Meta Object Protocol

Transformacje AST

MOPowanie w trakcie kompilacji.Realizowane poprzez anotacje.Wraz z językiem dostarczana jest gromadka przydatnychtransformacji.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 35 / 39

Page 163: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Kompilacja statyczna

Możliwe jest wymuszenie sprawdzania typu (@TypeCheck).Możliwa jest kompilacja statyczna kodu (@CompileStatic).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 36 / 39

Page 164: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Kompilacja statyczna

Możliwe jest wymuszenie sprawdzania typu (@TypeCheck).Możliwa jest kompilacja statyczna kodu (@CompileStatic).

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 36 / 39

Page 165: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Budowniczy

Wzorzec Budowniczy

Directorbuilder: Builderconstruct()

Builder

buildPart()

ConcreteBuilder

buildPart()getResult(): Product

Product

<<creates>>

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 37 / 39

Page 166: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Budowniczy

Wzorzec Budowniczy

Directorbuilder: Builderconstruct()

Builder

buildPart()

ConcreteBuilder

buildPart()getResult(): Product

Product

<<creates>>

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 37 / 39

Page 167: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Budowniczy

Głównie do usprawnienia obsługi struktur drzewiastych.Powszechnie używana w świecie Grooviego.Chociażby do budowania XML, GUI, DSL.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 38 / 39

Page 168: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Budowniczy

Głównie do usprawnienia obsługi struktur drzewiastych.Powszechnie używana w świecie Grooviego.Chociażby do budowania XML, GUI, DSL.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 38 / 39

Page 169: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody Budowniczy

Głównie do usprawnienia obsługi struktur drzewiastych.Powszechnie używana w świecie Grooviego.Chociażby do budowania XML, GUI, DSL.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 38 / 39

Page 170: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Co jeszcze?

Łatwa obsługa XML …i SQL.Repozytoriów Ivy (Maven) – GrapeWsparcie dla równoległości – GParsWsparcie testowania i imitowania – Spock, GMockRozwijania aplikacji biurkowych (Griffon), sieciowych (Grails) czyGAE (Gaelyk).I pewnie wiele innych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 39 / 39

Page 171: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Co jeszcze?

Łatwa obsługa XML …i SQL.Repozytoriów Ivy (Maven) – GrapeWsparcie dla równoległości – GParsWsparcie testowania i imitowania – Spock, GMockRozwijania aplikacji biurkowych (Griffon), sieciowych (Grails) czyGAE (Gaelyk).I pewnie wiele innych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 39 / 39

Page 172: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Co jeszcze?

Łatwa obsługa XML …i SQL.Repozytoriów Ivy (Maven) – GrapeWsparcie dla równoległości – GParsWsparcie testowania i imitowania – Spock, GMockRozwijania aplikacji biurkowych (Griffon), sieciowych (Grails) czyGAE (Gaelyk).I pewnie wiele innych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 39 / 39

Page 173: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Co jeszcze?

Łatwa obsługa XML …i SQL.Repozytoriów Ivy (Maven) – GrapeWsparcie dla równoległości – GParsWsparcie testowania i imitowania – Spock, GMockRozwijania aplikacji biurkowych (Griffon), sieciowych (Grails) czyGAE (Gaelyk).I pewnie wiele innych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 39 / 39

Page 174: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Co jeszcze?

Łatwa obsługa XML …i SQL.Repozytoriów Ivy (Maven) – GrapeWsparcie dla równoległości – GParsWsparcie testowania i imitowania – Spock, GMockRozwijania aplikacji biurkowych (Griffon), sieciowych (Grails) czyGAE (Gaelyk).I pewnie wiele innych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 39 / 39

Page 175: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Co jeszcze?

Łatwa obsługa XML …i SQL.Repozytoriów Ivy (Maven) – GrapeWsparcie dla równoległości – GParsWsparcie testowania i imitowania – Spock, GMockRozwijania aplikacji biurkowych (Griffon), sieciowych (Grails) czyGAE (Gaelyk).I pewnie wiele innych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 39 / 39

Page 176: Na jawie frapujący, czyli grooviego zarys wabiący

Głębsze wody

Co jeszcze?

Łatwa obsługa XML …i SQL.Repozytoriów Ivy (Maven) – GrapeWsparcie dla równoległości – GParsWsparcie testowania i imitowania – Spock, GMockRozwijania aplikacji biurkowych (Griffon), sieciowych (Grails) czyGAE (Gaelyk).I pewnie wiele innych.

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 39 / 39

Page 177: Na jawie frapujący, czyli grooviego zarys wabiący

Koniec

To już jest koniec, nie ma już nicJesteście wolni, możecie iść!

Filip „Filus” Pająk (Szczecińska JUG) Na Jawie Frapujący 20 września 2012 40 / 39