18 lutego 2007

Krótki film o Groovy 1.0 w Eclipse IDE 3.3M5

W jedyn z katalogów znalazłem kilka plików o nazwach rozpoczynających się cyframi. Nie wiem dlaczego, ale właśnie dzisiaj nie przypadły mi do gustu i zdecydowałem, że je zmienię. Tylko jak? Na pewno konieczne było napisanie jakiegoś skryptu. Przypomniałem sobie o Groovy!

Groovy to jeden z wielu języków skryptowych w Javie, którego poznanie zawsze odkładałem. Po ciekawych i bardzo produktywnych doświadczeniach z Jython nadeszła pora na Groovy. Nie zamierzałem jednak tworzyć skryptów ręcznie. Ostatnio uaktualniałem Eclipse IDE do wersji 3.3M5 i na niego padło jako środowisko, w którym będę tworzył skrypty Groovy (w odwodzie oczekiwał niemile zaskoczony NetBeans IDE 5.5.1).

Rozochocony pomysłem postanowiłem jeszcze bardziej go uatrakcyjnić i...nakręcić film! Pora popróbować się z Wink. Pomysł jego wykorzystania pojawił się właściwie kilka dni temu, kiedy przeglądając jeden z blogów natrafiłem na filmy Winka. Krótkie acz treściwe filmiki o danej funkcjonalności znacznie uatrakcyjniały prezentowany słownie projekt, czy jego wybraną cechę. Pomyślałem dlaczego by nie wykorzystać go u mnie i tym samym postanowiłem wprowadzić Winka do narzędzi codziennego użytku. Inicjacja moich poczynań z Winkiem wymagała czegoś ekstra, a rozpoznawanie Groovy w Eclipse to był temat wręcz wymarzony.

Po kilku godzinach stworzyłem krótki film o instalacji wtyczki Groovy Eclipse Plugin, tworzeniu skryptu Groovy i ostatecznie jego uruchomieniu. Filmowanie nie jest takie proste, ale warto było, bo ostateczny efekt okazał się ciekawszy niż początkowo sądziłem.


A o możliwościach Groovy nie wspomnę. Nieźle się gimnastykowałem z domknięciami (ang. closures). Ich prostota mnie wręcz wykańczała. Wymagają one zupełnie innego myślenia o strukturze tworzonego programu. Mówi się, że raz poznawszy domknięcia, programista nie może bez nich żyć. Brrr, mnie to także czeka?!

Pierwszy skrypt w Groovy służy do zmiany nazwy plików w katalogach podanych na linii poleceń. Jego uruchomienie przedstawiam w filmie.

package pl.jaceklaskowski.groovy.renamer;

class Main {

static void main(args) {
println "Huuraa! Rozpoczynamy zabawę z Groovy!"
args.each { d ->
println "Katalog: $d"
def p = '^[0-9]+[-_]?'
new File(d).eachFileMatch(~"$p.*") { f ->
def newFileName = "${f.getName() - p}"
print " ${f.getName()} staje się $newFileName..."
f.renameTo(new File(d + '/' + newFileName))
println "zrobione"
}
}
}

}

Bardzo ciekawa jest obsługa sytuacji brzegowych - brak podania parametrów wejściowych na linii poleceń, wyrażenia regularne i same domknięcia. Starałem się ująć w skrypcie jak najwięcej ciekawych sztuczek Groovy, aby poczuć jego klimaty. Podsumowanie: Groovy podoba mi się!