こんにちわ、ちかです
Groovy は DSL としてしか生き残れないだろうと
勝手に想像しているちかですが
そもそも JVM 嫌いで自分の PC には JRE も入れたくない私の戯言は置いといて
Java とほぼ互換性のあるスクリプト言語 Groovy は
Java のインタラクティブシェルとして使えると思います。
ということで
まずはインストールから。
私はチョコ好きなので Chocolatey からインストールします。
バレンタインデー症候群の方は yum なり brew なり公式サイトなりからどうぞ。
C:\Windows\system32>cinst groovy Installing the following packages: groovy By installing you accept licenses for the packages. groovy v2.3.6 The package groovy wants to run 'chocolateyInstall.ps1'. Note: If you don't run this script, the installation will fail. Note: To confirm automatically next time, use '-y' or consider setting 'allowGlobalConfirmation'. Run 'choco feature -h' for more details. Do you want to run the script? 1) yes 2) no 3) print 1 Adding 'C:\bin\groovy-2.3.6' to the path and the current shell path Downloading groovy 32 bit from 'http://dl.bintray.com/groovy/maven/groovy-binary-2.3.6.zip' Extracting C:\Users\chica\AppData\Local\Temp\chocolatey\groovy\2.3.6\groovyInstall.zip to C:\bin... 7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 Processing archive: C:\Users\KAZUTO~1.TAK\AppData\Local\Temp\chocolatey\groovy\2.3.6\groovyInstall.zip Extracting groovy-2.3.6 Extracting groovy-2.3.6\NOTICE.txt Extracting groovy-2.3.6\LICENSE.txt Extracting groovy-2.3.6\lib Extracting groovy-2.3.6\lib\groovy-2.3.6.jar (中略) Extracting groovy-2.3.6\META-INF Everything is Ok Folders: 7 Files: 84 Size: 36558735 Compressed: 32927161 C:\bin 警告: Write-ChocolateySuccess is deprecated. If you are the maintainer, please remove it from your package file. The install of groovy was successful. Chocolatey installed 1/1 package(s). 0 package(s) failed. See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log). C:\Windows\system32>
インストールできたら
インタラクティブシェル Groovysh を起動します。
C:\Windows\system32>groovysh Groovy Shell (2.3.6, JVM: 1.8.0_66) Type ':help' or ':h' for help. ----------------------------------------------------------------------------------------------------------------------- groovy:000>
Groovy では
java.io.* と java.util.* がデフォルトで使えて
ArrayList や LinkedHashMap がリテラルで記述できるので
Java の標準ライブラリを手軽に試すことができます。
groovy:000> Math.sin(Math.PI / 2) ===> 1.0 groovy:000> [id: '001', name: 'chica'].get('name') ===> chica
さらに
Groovy には Grape と呼ばれる依存関係管理のためのクラス群が含まれていて
Maven Central などにあるライブラリも手軽に試すことができます。
groovy:000> groovy.grape.Grape.grab(group:'org.apache.commons', module:'commons-lang3', version:'3.4') ===> null groovy:000> import org.apache.commons.lang3.StringUtils ===> org.apache.commons.lang3.StringUtils groovy:000> StringUtils.isEmpty(null) ===> true groovy:000> StringUtils.isEmpty('') ===> true groovy:000>
Java 8 のラムダ式は使えません。
代わりにクロージャを使います。
(Groovy ではコレクション操作に Groovy JDK API のメソッド群を使うことが多いと思いますが、 (残念なことに先行評価版しかないし、) 今回は Groovy の機能紹介ではなく Java の機能を試す用途で Groovy を使ってみることが目的なので触れません。)
groovy:000> import java.util.stream.* ===> java.util.stream.* groovy:000> ['abc', 'def', 'ghi'].stream().map({it.toUpperCase()}).collect(Collectors.toList()) ===> [ABC, DEF, GHI] groovy:000>
終了するときは :exit または :x と入力します。
groovy:000> :exit
C:\Windows\system32>
ところで
Windows で Groovysh を使うと瞬時に気付くことなのですが
非常に残念なことに
Windows 版では矢印キーが効きません。
↑↓キーで入力履歴を辿れないばかりか (代替: Ctrl+P / Ctrl+N)
←→キーでキャレットの移動もできません (代替: Ctrl+B / Ctrl+F)
(Groovysh 2.1.9 までは動いていたみたいですね... こんな大きなデグレードが 2 年間も修正されないところに活気のなさが表れているような...)
とてつもなく入力しづらいと言わざるを得ませんが...
ライブラリを試す用途であれば
使ってみる価値はあるのではないでしょうか。
でわでわ。