このリンクを見た後、Groovy ++を試してみたいのですが、心配です。
Groovyの構文はすべてGroovy++で有効ですか?
たとえば、Groovyでこれを行うことができます。
def list = [1,2]
上記のコードはGroovy++で有効ですか?
目的(私は信じています)は、可能な限り多くのGroovyコードをサポートできるようにすることです。
現在、機能していない領域がいくつかあると思います。
ただし、これらの問題はいつでも回避できます。または、これらの問題を必要とするクラスにマークを付けないでください。@Typed
http://groovy.dzone.com/articles/groovycomparetogroovy-part-1にコードサンプルとの違いのリストがあります
いくつかの違い:
Groovy ++では次のことができるので、次のようになります。
@Typed(TypePolicy.MIXED)は、groovy++を使用してコードを最適化することを望んでいる開発者の生活を確かに簡単にします。ただし、Groovyコードを完全にはサポートしていません。
@Typed(TypePolicy.MIXED)を使用したgroovy++コードの互換性にも問題があります
例:Groovyスタイルの型キャスト(キーワード「as」を使用)
String foo = myUntypedFoo as String
に変更する必要があります
String foo = (String)myUntypedFoo
また、クロージャの外部で宣言された変数は、これらのクロージャで直接使用することはできません。
@Typed(TypePolicy.MIXED)
def countMatches( List<String> bahList, String pattern ){
int counter = 0
bahList.each{ String bah ->
if (bah==pattern) counter++
}
}
Javaスタイルに変更する必要があります(groovy ++の目的を無効にします)。または、参照オブジェクトを使用する必要があります。
groovy ++は、groovy / grailsのパフォーマンスを向上させるのに非常に役立ちますが、それは確かに簡単な方法ではなく、代わりにJavaを使用する必要があるかどうかはわかりません。
a)心配しないでください。パフォーマンスは、groovyでもgroovy++でも問題ではありません。どちらの言語でも、主にグルーロジックを作成します。さまざまなJavaライブラリを接続するコード。そして、それらのライブラリはJavaで記述されているため、フルスピードで実行されます。
時々、Groovyで大量のコードを記述したことに気づき、さらに速度を上げたいと思うことがあります。問題ない。Groovyは、アルゴリズムのプロトタイピングに最適です。GroovyはJavaに似た構文を持ち、これらすべてのJavaライブラリを利用するため、プロトタイプをフルスピードで実行されるJavaライブラリに変換することは問題ありません(はい、手動でコーディングする必要がありますが、これはつまり、 groovyコードをjavaに変換するには、これらのショートカットをすべて削除する必要があります)。
b)groovy ++を理解している限り、アノテーションを介して機能します。コードに注釈を付けた場合にのみ、groovy++コードとして認識されます。だからそれはうまくいくはずです。しかし、これらすべての回答からわかるように、パフォーマンスは問題ではないため、現時点でgroovy ++を使用している人はそれほど多くありません(:-)を参照してください。
ところで:groovy++フォークはまもなく標準のgroovyトランクにマージされると思います...
Groovy ++は、Groovyと完全に互換性のある@Typed(TypePolicy.MIXED)アノテーションを導入しました。
@Typed(TypePolicy.DYNAMIC)を使用するか、@ Typedをまったく使用しないと、Groovy++のすべての利点が失われます。
MIXED TypePolicyは、可能であれば静的な場所を最適化します。