Предварительные требования для Groovy: установленный JDK и прописанный JAVA_HOME (в ALT Linux для этого достаточно сказать apt-get install java-1.6.0-sun-devel tzdata-java). Процесс установки выглядит так:
# cd /opt # wget http://dist.groovy.codehaus.org/distributions/groovy-binary-1.7.0.zip # unzip groovy-binary-1.7.0.zip # ln -s groovy-1.7.0 groovy # cat > /etc/profile.d/groovyhome.sh << EOF > GROOVY_HOME=/opt/groovy > export GROOVY_HOME > export PATH=$PATH:$GROOVY_HOME/bin > EOF # chmod 755 /etc/profile.d/groovyhome.shПричины неиспользования groovy из альтовского репозитария (или JPackage в общем случае) просты - огромный список зависимостей, большая часть которых мне никогда не потребуется, и, как следствие, протухшие версии зависимых пакетов да и самого groovy. Проблема переносимости в случае ad-hook scripting менее актуальна, однако при увеличении размеров проекта она вполне может проявиться.
Теперь перелогинимся и убедимся в том, что Groovy у нас есть:
$ groovy -version Groovy Version: 1.7.0 JVM: 1.6.0_17а затем напишем традиционный Hello World:
$ cat > hello.groovy << EOF
> #!/usr/bin/env groovy
>
> def hello(name) {
> println("Hello $name!")
> }
>
> hello("World")
> EOF
$ chmod 755 hello.groovy
$ ./hello.groovy
Hello World!
Ну и тормоз же он однако:$ time ./hello.groovy Hello World! 3.18user 0.18system 0:02.22elapsed 151%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1major+25068minor)pagefaults 0swapsИ даже предварительная компиляция и запуск готового байткода помогает не сильно:
$ groovyc hello.groovy $ time java -cp .:$GROOVY_HOME/embeddable/groovy-all-1.7.0.jar hello Hello World! 1.88user 0.10system 0:01.60elapsed 123%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1major+15771minor)pagefaults 0swapsХотя здесь как раз нет ничего удивительного - скоростью запуска JVM никогда не отличалась. Для разных мелочей эту проблему можно обойти с помощью Groovy Shell:
$ groovysh
Groovy Shell (1.7.0, JVM: 1.6.0_17)
Type 'help' or '\h' for help.
------------------------------------------------------------------------------------
groovy:000> def hello(name) {
groovy:001> println("Hello $name!")
groovy:002> }
===> true
groovy:000> hello("World")
Hello World!
===> null
groovy:000> exit
Для отлаженных скриптов лишних 3 секунд на запуск уже не очень жалко, ну а запускать их (и JVM вообще) слишком часто никто в здравом уме не станет - постоянно запущенный сервис будет работать значительно эффективнее.
1 комментарий:
Чуть более подробно о том же - http://www.ibm.com/developerworks/ru/library/j-pg02179/
Да и вообще на developerWorks много чего есть для начала работы с groovy
Отправить комментарий