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

Post on 26-May-2015

471 views 1 download

description

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

Transcript of 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

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

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

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

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

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

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

Wstęp

Groovy...

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

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

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

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

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

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

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

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

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

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

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

Wstęp

Po co?

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

Wstęp

Po co?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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