Groovy#
Groovyとは、Javaエコシステムとして、JCPで仕様が策定されているインタプリタ型言語。 Javaの文法に加え、動的型づけの機構を持っていて、いろいろなコンポーネントをつなぎ合わせたりする時に使用すると便利。 いままで煩雑だったXMLとかの生成とかを簡単にかけたりしますって感じですかね。 Javaの実装コードと、Groovyでいろいろ実装してみることがよさそう。
書籍#
プログラミングGroovy#
- Groovyの世界へようこそ!
- Groovyの利用方法
- プログラミング言語Groovy
- Groovyのライブラリ
- 進んだ話題
- Groovyエコシステム
- Groovy1.8の新機能
本家サイト#
インターネット情報#
マニュアル#
ソースコード#
ユーザ団体#
仕様#
ダウンロード#
SDKMANでダウンロード
インストール#
SDKMANでインストール
付属コマンド#
Javaとの差分#
- スクリプト型実行
- 動的型システム
- コレクションリテラル
- クロージャ
- 演算子オーバーロード
- MOPやAST変換によるメタプログラミング機構
- GDK
- ビルダー
- パーサライブラリやGPath式
- AntやJUnitの組み込みサポート
- テストコード
- ユーティリティ
- ビルドコード
- ゲッター・セッターの自動生成
- 動的にメソッドを追加することができる
基本構文#
変数#
定数#
データ型#
配列#
演算子#
制御構文#
組み込み関数#
ユーザ定義関数#
標準クラスライブラリ#
リクエスト情報#
レスポンス情報#
オブジェクト指向構文#
セキュリティ対策#
データベース連携#
認証#
ファイルアップロード#
動作環境#
設定ファイル#
開発環境#
テスト環境#
デバッグ環境#
エラー箇所がわかればOK
ログ環境#
コマンドライン実行での標準入力からの引数渡し#
1-1#
new File("/etc/passwd").eachLine{println it.split(":")[0]}
1-2#
["/bin/bash","/bin/sh"].each{c=0;str=it;new File("/etc/passwd").each{if(it.contains(str))c++};println "$str = $c"}
1-3#
def a(file){new File(file).listFiles().each{if(!it.isFile())a(it.path) else println it.path}}; a("/etc")