Groovy 初心者向けスクリプトチュートリアル

何が Groovy スクリプト?

アパッチ Groovy オブジェクト指向であり、 Java 構文互換プログラミング言語として構築された Java プラットフォーム。この動的言語は、 Python、Ruby、Smalltalk、および Pero です。 Groovy ソースコードはコンパイルされて Java バイトコードなので、JRE がインストールされているあらゆるプラットフォームで実行できます。 Groovy また、舞台裏で多くのタスクを実行し、より機敏でダイナミックになります。

Groovy 言語は、スクリプト言語として使用することができます Java プラットフォームです。これは、 Java 提供する Javaのエンタープライズ機能を提供します。また、DSLサポート、クロージャ、動的型付けなどの多くの生産性機能も提供します。他の言語とは異なり、代替ではなく、コンパニオンとして設計されています。 Java.

なぜ Groovy?

使用して学ぶべき主な理由は次のとおりです Groovy-

  • Groovy 機敏で動的な言語です
  • 既存のすべてのものとシームレスに統合 Java オブジェクトとライブラリ
  • 簡単で自然な感じ Java 開発者
  • より簡潔で意味のあるコードです。 Java
  • 好きなだけ使用したり、少しだけ使用したりできます Java apps

Groovy 沿革

  • 2003: ボブ・マックによって開発Whirター&ジェームス・ストラカン
  • 2004年: JSR 241に就役したが放棄された
  • 2005: ジェレミー・レイナーとギョーム・ラフォージュによって復活
  • 2007: Groovy バージョン1.0
  • 2012: Groovy バージョン2
  • 2014: Groovy バージョン 2.3 (JDK 8 の公式サポートを提供)
  • 2015: Groovy Apacheソフトウェアのプロジェクトとなった Foundation

の特長 Groovy

  • リスト、マップ、範囲、正規表現リテラル
  • マルチメソッドとメタプログラミング
  • Groovy クラスとスクリプトは通常.groovyファイルに保存されます
  • スクリプトには Groovy クラス宣言のないステートメント。
  • スクリプトには、クラス定義の外側にメソッド定義を含めることもできます。
  • 従来の Java アプリケーション。
  • マップ、リスト、正規表現の言語レベルのサポート
  • クロージャ、動的型付け、メタオブジェクトプロトコルをサポート
  • 静的および動的型付けと演算子オーバーロードのサポート
  • リスト (配列)、マップ、範囲、正規表現のリテラル宣言

インストールする方法 Groovy

ステップ1) あなたが持っていることを確認してください Java インストール.

ステップ2) に行く http://groovy-lang.org/download.html そして「インストーラー」をクリックします。

install Groovy

注: インストールすることもできます Groovy Zipファイルを使用するか、 Eclipse IDE。この内 Groovy チュートリアルでは、 Windows インストーラ

ステップ3) ダウンロードしたインストーラーを起動します。 言語を選択して「OK」をクリックします

install Groovy

ステップ4) 打ち上げ。 ようこそ画面で「次へ」をクリックします

install Groovy

ステップ5) ライセンス条項に同意します

install Groovy

ステップ6) インストールするコンポーネントを選択し、「次へ」をクリックします

install Groovy

ステップ7) 「インストールディレクトリ」を選択し、「次へ」をクリックします。

install Groovy

ステップ8) 「スタートメニューフォルダー」を選択し、「次へ」をクリックします。

install Groovy

ステップ9) インストールが完了したら、パスをデフォルトのままにして「次へ」をクリックします。

install Groovy

ステップ10) [次へ]をクリックします

install Groovy

ステップ11) スタートメニューで検索 Groovy 領事

install Groovy

Groovy ハローワールドの例

単純な文字列「Hello World」を印刷したいとします。 Java文字列を実現するためのコード Groovy こんにちは世界は

public class Demo {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

上記のコードは、 Java と Groovy as Groovy のスーパーセットです Javaしかし、 Groovy クラスの作成やパブリック メソッドの作成などを省略し、次のように 1 行のコードで同じ出力を実現できることです。

println "Hello World."

セミコロンは必要ありません

括弧は必要ありません

System.out.println は println に縮小されます

Groovy 変数

In Java静的バインディングは必須です。つまり、変数の型を事前に宣言する必要があります。

public class Demo {
    public static void main(String[] args) {
        int x = 104;
        System.out.println(x);
        //x = "Guru99";
    }
}

上記の例では Groovy チュートリアルでは、変数の型 (整数) は、キーワード「int」を使用して事前に宣言されています。浮動小数点数を宣言する場合は、キーワード float を使用します。

文字列値をintに代入しようとすると(行番号5のコメントを解除)、次のエラーが発生します。

Demo.java:5: error: incompatible types: String cannot be converted to int
x = "Guru99";

対照的に、 Groovy 動的型付けをサポートします。変数はキーワード「def」を使用して定義され、変数の型を事前に宣言する必要はありません。コンパイラは実行時に変数の型を判断し、変数の型を決定することもできます。

次の素晴らしい例を考えてみましょう。

def x = 104
println x.getClass()
x = "Guru99"
println x.getClass()

出力:

class java.lang.Integer
class java.lang.String

In Groovy複数行の文字列を作成できます。文字列を三重引用符で囲むようにしてください。

def x = """Groovy
at
Guru99"""
println x

出力:

Groovy
at
Guru99

注意: byte、short、int、longなどの変数型は、 Groovyただし、明示的に宣言した変数の型を動的に変更することはできません。

次のコードについて考えてみます。

int x = 104
println x
x = "Guru99"

次のエラーが発生します

104
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
    at jdoodle.run(jdoodle.groovy:3)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Command exited with non-zero status 1

Groovy-Operaトー

演算子は、コンパイラに特定の数学的または論理的な操作を実行するように指示する記号です。

Groovy には次の5種類の演算子があります。

  • 算術演算子: 加算 (+)、減算 (-)、乗算 (*)、除算 (/)
  • 関係演算子: 等しい (==)、等しくない (!=)、 Less より (<) Less より大きいか等しい (<=)、より大きい (>)、より大きいか等しい (>=)
  • 論理演算子: And (&&)、Or(||)、Not(!)
  • ビット演算子: And(&)、Or(|)、(^)、Xor、または排他的論理和演算子
  • 代入演算子: 否定演算子 (~)

Groovy-ループ

In Javaループは次のように定義します。

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x++) {
            System.out.println(x);
        }
    }
}

出力:

0
1
2
3
4

同じ出力を以下で達成できます Groovy キーワードまで使用

0.upto(4) {println "$it"}

上記と同じ出力が得られます。 $it は現在のループの値を与えるクロージャです。

次のコードを検討してください

2.upto(4) {println "$it"}

出力が得られます

2
3
4

「times」キーワードを使用して同じ出力を取得することもできます。

5.times{println "$it"}

0,2,4、XNUMX、XNUMX を出力したいとします。 forループで Java

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x=x+2) {
            System.out.println(x);
        }
    }
}

出力:

0
2
4

同じためにステップメソッドを使用できます

0.step(7,2){println "$it"}

Groovy- 意思決定

ステートメント ごまかし
ifステートメント 同様に Java条件が真の場合に if 文が実行されます。
if/else ステートメント if/else 文では、まず if 文で条件が評価されます。 条件が true の場合、その後のステートメントが実行されます。 else 条件の前で停止し、ループから抜け出します。 ただし、条件が false の場合は、else ステートメント ブロック内のステートメントが実行されます。 その後、ループを終了します。
ネストされた if ステートメント 複数の if ステートメントが必要な場合に使用されます。
Switchステートメント 複数の条件がある場合、ネストされた if-else ステートメントは読みにくくなる可能性があります。コードをより読みやすくするには、switch ステートメントを使用します。
ネストされた Switch ステートメント In Groovy ネストされた switch ステートメントを使用することも可能です。

Groovy リスト

リスト構造では、データ項目のコレクションを保存できます。 Groovy プログラミング言語では、リストはオブジェクト参照のシーケンスを保持します。また、シーケンス内の位置も示します。リスト リテラルは、カンマで区切られ、角括弧で囲まれた一連のオブジェクトとして表されます。

Grovy リストの例:

文字列のリスト - ['Angular', 'Nodejs,]

オブジェクト参照のリスト – ['Groovy', 2,4 2.6]

整数値のリスト – [16、17、18、19]

空のリスト - [ ]

以下は利用可能なリストメソッドです Groovy:

メソッド 説明
add() このリストの末尾に新しい値を追加できます。
を含む() この List に特定の値が含まれている場合は true を返します。
取得する() 特定の位置にある要素を返します
isEmpty() List に要素が含まれていない場合は true 値を返します
マイナス() このコマンドを使用すると、コレクションで指定されている要素を除いた元の要素で構成される新しいリストを作成できます。
プラス() オリジナルの要素とコレクション内で言及されている要素で構成される新しいリストを作成できます。
ポップ() リストから最後の項目を削除します
削除する() 特定の位置の要素を削除します
逆行する () 元のリストの要素を逆にした新しいリストを作成します。
サイズ() このリスト内の要素の数を返します。
ソート() ソートされたコピーを返します

以下を検討してください Groovy スクリプトの例

def y = ["Guru99", "is", "Best", "for", "Groovy"]
println y
y.add("Learning")
println(y.contains("is"))
println(y.get(2))
println(y.pop())

出力:

[Guru99, is, Best, for, Groovy]
true
Best
Learning

Groovy ゲレンデマップ

地図 Groovy キーと値のペアの集合である

の例 Groovy マップ:

  • [チュートリアル: 'Java、チュートリアル: 'Groovy] – Tutorial をキーとし、それぞれの値を設定したキーと値のペアのコレクション
  • [ : ] 空のマップを表します

以下は、利用可能なマップメソッドの一覧です。 Groovy.

メソッド 説明
containsKey() マップにこのキーが含まれているかどうかを確認しますか?
取得する() このコマンドは、このマップ内のキーを検索し、対応する値を返します。 このマップ内にエントリが見つからない場合は、null が返されます。
keySet() このマップ内のキーのセットを見つけることができます
置く() 指定された値をこのマップ内の指定されたキーに関連付けます。 以前のマップにこのキーのマッピングが含まれていた場合。 その後、古い値が指定された値に置き換えられます。
サイズ() キーと値のマッピングの数を返します。
値() このコマンドは、値のコレクション ビューを返します。

Groovy 例:

def y = [fName:'Jen', lName:'Cruise', sex:'F']
print y.get("fName")

出力

Jen

Groovy- 閉鎖

Groovy クロージャは、オブジェクトとしてラップされたコードの一部です。 これはメソッドまたは関数として機能します。

単純なクロージャの例

def myClosure = {
       println "My First Closure"	
}
myClosure()

出力:

My First Closure

クロージャはパラメータを受け入れることができます。 識別子のリストはカンマで区切られます。

パラメータリストの終わりを示す矢印 (->)。

def myClosure = {
       a,b,c->
       y = a+b+c
       println y
}
myClosure(1,2,3)

出力:

6

クロージャは値を返すことができます。

def myClosure = {
       a,b,c->
       return (a+b+c)
}
println(myClosure(1,2,3))

出力:

6

「It」、「identity」などの組み込みクロージャが多数あります。クロージャはパラメータとして他のクロージャを取ることができます。

Groovy 対。 Java

Groovy Java
In Groovyデフォルトのアクセス指定子は public です。つまり、アクセス修飾子が指定されていないメソッドは public であり、クラスおよびパッケージの境界外からアクセス可能です。 In Javaデフォルトのアクセス修飾子はパッケージです。つまり、フィールド、メソッド、またはクラスにアクセス修飾子を指定しないと、パッケージプライベートになります。
ゲッターとセッターはクラス メンバーに対して自動的に生成されます。 Javaフィールドのゲッターとセッターメソッドを定義する必要があります
Groovy 文字列に二重引用符を使用して変数を置換できます。 Java 変数の置換はサポートされていません。
情報の入力はオプションです。 入力情報は必須です Java.
Groovy セミコロンで終わる必要はありません。 In Javaすべての文はセミコロンで終わります。
Groovy すべてのプログラムに対してScriptと呼ばれるラッピングクラスが自動的に作成される In Javaクラスを実行可能にするには、main メソッドが必要です。

についての神話 Groovy

神話 現実
我々は使用することができます Groovy スクリプト専用です。 スクリプト作成に使用できます。 ただし、それ以外にも多くのタスクを実行できます。
Groovy すべては閉鎖に関することだ。「それはただ 関数型プログラミング言語に設立された地域オフィスに加えて、さらにローカルカスタマーサポートを提供できるようになります。」 Groovy Lisp や Closure などの関数型プログラミング言語を採用しています。
Groovy TDDを実行したい場合に最適な選択肢です この発言は真実です。しかし、それが使用すべき唯一の理由ではありません。 Groovy.
あなたが使用することができます Groovy Grails を使用する場合のみ。 Grails は強力な Web 開発フレームワークです。

だけど Groovy それ以上のものを提供します。

使用の短所 Groovy

  • JVMと Groovy スクリプトの起動時間が遅いため、OSレベルのスクリプトが制限される
  • Groovy 他のコミュニティでは完全に受け入れられているわけではありません。
  • 使い勝手が悪い Groovy IDEを使わずに
  • Groovy 遅くなる可能性があり、開発時間が長くなる
  • Groovy 大量のメモリが必要になる場合があります
  • 知識 Java 必須です。

Groovy ツール

今回は3つの重要なツールについてお話しします Groovy スクリプトチュートリアル

1. groovysh: コードを対話的に実行します。

2. groovyConsole: インタラクティブなコード実行用の GUI

3. groovy: groovy スクリプトを実行します。 次のように使用できます パール, Python, etc.

Groovysh

  • コマンドラインシェル
  • 実行を手助けします Groovy 対話的にコードを書く
  • ステートメントまたはスクリプト全体を入力できます

Groovy ツール

Groovy コンソール

  • 最小限の機能を果たすSwingインターフェース Groovy 開発編集者。
  • 対話を可能にします Groovy コード
  • ロードして実行するのに役立ちます Groovy スクリプトファイル

Groovy ツール

Groovy

実行するのはプロセッサです Groovy プログラムとスクリプト。U

簡単なテストに使用できます Groovy 式。

Groovy ツール

まとめ

  • Groovy オブジェクト指向プログラミング言語であり、 Java プラットフォーム
  • Groovy スクリプトは既存のすべてのものとシームレスに統合できます Java オブジェクトとライブラリ
  • ボブ・マックWhirter と James Strachan が 2003 年に Groovy を開発
  • リスト、マップ、範囲、正規表現リテラルは、 Groovy
  • 4種類の演算子がサポートされています Groovy 1. 関係 2. 論理 3. ビット 4. 代入
  • Groovy if、if/else、ネストされたif、switch、ネストされたswitchステートメントを使用して意思決定を実行しました
  • リスト構造により、データ項目のコレクションを保存できます
  • 地図 Groovy キーと値のペアの集合である
  • In Groovy、クラスメンバーのゲッターとセッターが自動的に生成される
  • In Javaフィールドにゲッターとセッターメソッドを提供することができます
  • 最大の神話は Groovy スクリプトにしか使えないというのは正しくない
  • いつか Groovy 遅くなる可能性があり、開発時間が長くなる
  • スリー Groovy ツールは、コードを実行するgroovysh、対話型コード実行用のGUIであるgroovy Console、スクリプトを実行するgroovyです。