2012/09/01 G*ワークショップ in 福岡 #jggug
- orange_clover
- 2739
- 0
- 1
- 0
groovyはjvm上で動作する軽量な動的言語。Javaを置き換えるのではなく、あくまでJavaエコシステムの一員。#jggug
2012-09-01 14:47:55Javaなソースも.groovyに変えればgroovyで動作する互換性。Javaの冗長的な書き方から開放されてコードが完結に記述できる。#jggug
2012-09-01 14:51:53groovyの簡潔さは、バックで定型コードを自動生成したり、コレクションリテラル、演算子のオーバーロード、カッコ・セミコロンの省略、クロージャ等で実現されてる。#jggug
2012-09-01 14:53:43動的型付けをサポートしてるのでrubyみたいなダックタイピングが可能。Javaみたいに静的型付けも可能。実行時にメソッドの動的追加も可能。まぁあまり動的にやり過ぎても‥#jggug
2012-09-01 14:55:32バイナリレベル互換、ソースレベル互換、実行環境が共通、ツール(ant、JUnit等)の共有・内蔵といったJavaとの互換性がある。#jggug
2012-09-01 14:57:08groovy 2.0では、静的Grooby、AST変換の強化、JavaSE7対応、ライブラリの強化、モジュール化等が追加された。#jggug
2012-09-01 15:08:19静的Groovyとは、元々動的言語だったけど静的な型チェックを導入、静的コンパイルのサポート(性能向上につながる)。いずれもアノテーションでメソッドやクラスに静的チェック・コンパイル対象と指定する。#jggug
2012-09-01 15:10:49静的チェックを指定すると当然、型宣言が必須になる。ただ型推論によって型宣言を省略可能なケースもある(クロージャーから参照されないローカル変数とか)。#jggug
2012-09-01 15:13:19.@CompileStaticを付けると付けないので生成されるバイトコードの差が激しいなー。#jggug
2012-09-01 15:19:27既存コードにCompileStaticを付けていくのはとても大変。新規コードで始めるのがよい #jggug
2012-09-01 15:24:01.@CompileStaticを既存プロジェクトに適用してみたら、修正範囲が多くて断念。なるべく新規プロジェクトから使い始めるのが吉。#jggug
2012-09-01 15:24:19前提としてgroovyでは、privateなフィールドにも他のクラスから参照可能(groovyでは常識らしいがJava屋には…)。なので@CompileStaticを付けるとJavaのprivate修飾子の影響を受けるという制約が発生する。#jggug
2012-09-01 15:27:13invoke dynamicへの対応はこれから進められる。現状の対応状況ではinvoke dynamic利用してもまだ結構遅い。#jggug
2012-09-01 15:31:26