Kilka powodów dla których warto wybrać Groovy’ego

W poprzednim wpisie rozwodziłem się nad wyborem mojego kolejnego języka programowania. Niezależnie od Waszych opini czy wybór był słuszny, a argumentacja właściwa postanowiłem dziś przedstawić kilka powodów dla których warto zainteresować się językiem Groovy. Ponieważ moim zdaniem przykład jest zdecydowanie więcej wart niż czysta teoretyczna dywagacja, stąd przedstawię kilka przykładów kodu w Groovy które moim zdaniem mogą przekonać Was do poświęcenia większej ilości czasu temu językowi.

1. Pętle

Poniższy przykład wypisuje w kolejnych liniach liczby od 0 do 9:

0.upto(9) {
  println it
}

Liczby te możemy również wypisać w następujący sposób:

10.times {
  println it
}

2. Wypisywanie wartości zmiennych w łańcuchu znaków

Jeśli chcemy wstawić wartość zmiennej w łańcuchu znaków możemy to zrobić w następujący sposób:

1.upto(3) {
  println “Aktualne wywołanie ma numer: ${it}, pozostało jeszcze ${3 - it} wywołań”
}

Wywołanie tego kodu sprawi, że otrzymamy następujący wynik:

Aktualne wywołanie ma numer: 1, pozostało jeszcze 2 wywołań
Aktualne wywołanie ma numer: 2, pozostało jeszcze 1 wywołań
Aktualne wywołanie ma numer: 3, pozostało jeszcze 0 wywołań

3. Closures

Przygotujmy sobie metodę która pozwoli na wykonanie kolejno n jednakowych operacji:

def runOperation( n, operationClosure) {
  1.upto(n) {
    operationClosure(it);
  }
}

A teraz wykonajmy pięciokrotnie wypisanie aktualnej wartości licznika wywołań:

runOperation(5) {
  println it
}

W wyniku otrzymamy:

1
2
3
4
5

4. Operacje na kolekcjach

Zdefiniujmy następującą mapę:

members = [‘Warszawa JUG’ : 268, ‘Polish JUG’: 398]

Wypiszmy teraz liczbę członków na podstawie mapy:

members.each {  key, value ->
  println “${key} ma ${value} członków”
}

W wyniku wykonania powyższego fragmentu otrzymamy:

Warszawa JUG ma 268 członków
Polish JUG ma 398 członków

O proszę, Polish JUG ma już 398 członków!

5. Tworzenie XML

Utwórzmy XML na podstawie zdefiniowanej wcześniej mapy:

builder = new groovy.xml.MarkupBuilder()
builder.jugi{
  members.each{ key, value ->
    jug(nazwa: key, czlonkowie: value)
  }
}

W wyniku wykonania otrzymamy następujący XML:

<jugi>
  <jug nazwa=‘Warszawa JUG’ czlonkowie=‘268′ />
  <jug nazwa=‘Polish JUG’ czlonkowie=‘398′ />
</jugi>

Prawda, że łatwe i bardzo przyjemne?

Oczywiście to nie wszystko, Groovy posiada dużo większe możliwości a przedstawione powyżej przykłady to tylko drobna namiastka tego co może Was spotkać przy zgłębianiu tajemnic tego języka.
Więcej o Groovy i Grails w kolejnych wpisach.

October 31, 2008 | 4 Comments 

Wybór nowego języka programowania

Od pewnego czasu myślałem o poznaniu kolejnego języka programowania, przez ostatnie miesiące przyglądałem się kilku: Scala, Ruby, Groovy, Python, C#. Starałem się specjalnie nie szukać języka, który miałby swoją implementację na platformie Java, jednak istnienie takiej implementacji mimo wszystko było istotnym atutem, stąd też początkowy zbiór ograniczyłem do języków powiązanych z platformą Java: Scala, Ruby (JRuby), Groovy, Python (Jython).
Po tym pierwszym etapie selekcji przyszedł czas na przeczytanie artykułów i różnych tutoriali dotyczących wcześniej przedstawionych języków. O ile składnia Groovy’ego jest bardzo zbliżona do Javy, a właściwie to w wielu przypadkach można przekopiować kod Javy do pliku z rozszerzeniem .groovy i uruchomić bez dodatkowych modyfikacji, o tyle poznanie składni pozostałych języków wymagało większego wysiłku, dzięki temu Groovy zapunktował u mnie jako język na naukę którego będę musiał poświęcić mniej czasu :)
Trzeci etap podejmowania wyboru skupiła się na pytaniu: “Czy język ma być dynamiczny?”, po zachwalaniu przez Wiktora Gworka języków dynamicznych postanowiłem dać szansę trójce: Groovy, Ruby (JRuby), Python (Jython).
Wybór już znacznie uproszczony, zostało 3 z 5 :)
Czas na dalszą eliminację… nauka nowego języka powinna być przyjemna, nie jestem tradycjonalistą i zawsze jestem otwarty na nowe propozycje ale w tym wypadku chciałem używać narzędzi do których jestem przyzwyczajony i o których wiem, że są najwyższej jakości, a gwarancję taką dawał mi IntelliJ IDEA, do którego dostępne są dwie firmowane przez JetBrains wtyczki: JetGroovy oraz IntelliJ Ruby Plugin, wtyczka do Pythona również istnieje niestety nie jest ona regularnie aktualizowana… w ten sposób ograniczyłem wybór do Groovy’ego i Ruby’ego.
Nadszedł czas na porównanie frameworków do tworzenia aplikacji webowych, zapewne wszyscy wiedzą, że w świecie Ruby’ego królują Railsy, podobnie jest w przypadku Groovy’ego dla którego głównym frameworkiem webowym są wzorowane na Railsach Grailsy. Obydwa frameworki cechują się podejściem convention over configuration, jednakże cechą która zadecydowała wyborze Grails‘ów jest ich powiązanie ze Spring‘iem i Hibernate. Powiązanie to nie było dla mnie bez znaczenia, oba frameworki są mi znane, oba też stanowią niekwestionowany standard w swoich kategoriach.
Jak więc widzicie, w sposób mniej lub bardziej słuszny wybrałem język za którego rozpoznanie zabrałem się ostatnio, jest nim Groovy. Aktualnie kończę czytać świetną książkę Programming Groovy (zachęcam do wypożyczenia z biblioteczki Polish JUG), której recenzję umieszczę w najbliższym czasie, zapoznałem się również wstępnie z Grails’ami, a nawet stworzyłem swoje pierwsze aplikacje webowe napisane w Grails!
Na koniec chciałem jeszcze dodać, iż spotkała mnie miła niespodzianka dotycząca NetBeans, czyli drugiego środowiska które używam, otóż powstaje plugin do NetBeans pozwalający na tworzenie aplikacji w Groovy i Grails, więcej szczegółów na jego temat znajdziecie na oficjalnej stronie wtyczki.

October 26, 2008 | Leave a Comment