初心者向けの Groovy スクリプト チュートリアル
Groovy スクリプトとは?
Apache Groovy は、Java プラットフォーム用に構築された、オブジェクト指向で Java 構文と互換性のあるプログラミング言語です。この動的言語には、Python、Ruby、Smalltalk、および Pero に似た多くの機能があります。 Groovy ソース コードは Java Bytecode にコンパイルされるため、JRE がインストールされている任意のプラットフォームで実行できます。また、Groovy は舞台裏で多くのタスクを実行するため、より機敏で動的になります。
Groovy 言語は、Java プラットフォームのスクリプト言語として使用できます。これは、Java のエンタープライズ機能を提供する Java のスーパー バージョンのようなものです。また、DSL サポート、クロージャー、動的型付けなどの多くの生産性機能も提供します。他のいくつかの言語とは異なり、Java の代替ではなく、コンパニオンとして設計されています。
Groovy を選ぶ理由
ここに、Groovy を使用して学習する必要がある主な理由を示します-
- Groovy は機敏で動的な言語です
- 既存のすべての Java オブジェクトおよびライブラリとシームレスに統合
- Java 開発者にとって簡単で自然な感じ
- Java よりも簡潔で意味のあるコード
- Java アプリで好きなだけ使用できます
グルーヴィーな歴史
- 2003:Bob McWhirter と James Strachan によって開発
- 2004:JSR 241 に委託されましたが、放棄されました
- 2005:Jeremy Rayner と Guillaume Laforge によって復活
- 2007:Groovy バージョン 1.0
- 2012:Groovy バージョン 2
- 2014:Groovy バージョン 2.3 (JDK 8 の公式サポート)
- 2015:Groovy が Apache Software Foundation のプロジェクトになりました
Groovy の機能
- リスト、マップ、範囲、正規表現リテラル
- マルチメソッドとメタプログラミング
- Groovy クラスとスクリプトは通常、.groovy ファイルに保存されます
- スクリプトには、クラス宣言のない Groovy ステートメントが含まれています。
- スクリプトには、クラス定義以外のメソッド定義を含めることもできます。
- コンパイル可能で、従来の Java アプリケーションと完全に統合できる
- マップ、リスト、正規表現の言語レベルのサポート
- クロージャ、動的型付け、メタオブジェクト プロトコルをサポート
- 静的および動的型付けと演算子のオーバーロードのサポート
- リスト (配列)、マップ、範囲、および正規表現のリテラル宣言
Groovy のインストール方法
ステップ 1) Java がインストールされていることを確認します。 https://www.guru99.com/install-java.html
ステップ 2) http://groovy-lang.org/download.html に移動し、インストーラーをクリックします。
注:Zip ファイルを使用して、または Eclipse IDE として Groovy をインストールすることもできます。この Groovy チュートリアルでは、Windows インストーラーに固執します
ステップ 3) ダウンロードしたインストーラーを起動します。言語を選択して [OK] をクリックします
ステップ 4) 発売。ようこそ画面で、[次へ] をクリックします
ステップ 5) ライセンス条項に同意する
ステップ 6) インストールするコンポーネントを選択し、[次へ] をクリックします
ステップ 7) インストール ディレクトリを選択し、[次へ] をクリックします
ステップ 8) [スタート メニュー フォルダー] を選択し、[次へ] をクリックします
ステップ 9) インストールが完了したら、パスをデフォルトのままにして、[次へ] をクリックします
ステップ 10) [次へ] をクリックします
ステップ 11) スタート メニューで Groovy Console を検索
Groovy Hello World の例
Java で単純な文字列「Hello World」を出力したいとします。文字列 Groovy hello world を実現するコードは次のようになります
public class Demo { public static void main(String args[]) { System.out.println("Hello World"); } }
Groovy は Java のスーパーセットであるため、上記のコードは Java と Groovy の両方で有効です。しかし、Groovy の利点は、クラスの作成、パブリック メソッドの作成などを省略して、次の 1 行のコードで同じ出力を実現できることです。
println "Hello World."
セミコロンは不要です
括弧は不要です
System.out.println は println に縮小されます
Groovy 変数
Java では、静的バインディングが必須です。つまり、変数の型は事前に宣言する必要があります。
public class Demo { public static void main(String args[]) { int x = 104; System.out.println(x); //x = "Guru99"; } }
このGroovyチュートリアルの上記の例では、変数の型(整数)はキーワード「int」を使用して事前に宣言されています。浮動小数点数を宣言する場合は、float キーワードを使用します。
String 値を 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
Groovy では、複数行の文字列を作成できます。文字列が三重引用符で囲まれていることを確認してください。
def x = """Groovy at Guru99""" println x
出力
Groovy at Guru99
注意 :Groovy では、byte、short、int、long などの変数型を引き続き使用できます。ただし、明示的に宣言しているため、変数の型を動的に変更することはできません。
次のコードを検討してください:
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 オペレーター
演算子は、特定の数学的または論理的な操作を行うようにコンパイラに指示する記号です。
Groovy には次の 5 種類の演算子があります。
- 算術演算子:加算 (+)、減算 (-)、乗算 (*)、除算 (/)
- 関係演算子:等しい (==)、等しくない (!=)、より小さい (<) 以下 (<=)、より大きい (>)、より大きいか等しい (>=) )
- 論理演算子:And (&&)、Or(||)、Not(!)
- ビット演算子:And(&)、Or(|)、(^)、Xor、または排他的 OR 演算子
- 代入演算子:否定演算子 (~)
Groovy ループ
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"}
Java で for ループを使用して 0,2,4 を出力したいとします
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
同じために step メソッドを使用できます
0.step(7,2){println "$it"}
Groovy - 意思決定
ステートメント | 欺瞞 |
---|---|
ifステートメント | Java と同様に、条件が真の場合に if ステートメントが実行されます。 |
if/else ステートメント | if/else ステートメントでは、最初に条件が if ステートメントで評価されます。条件が真の場合、その後のステートメントを実行します。 else 条件の前で停止し、ループから抜けます。ただし、条件が false の場合は、else ステートメント ブロック内のステートメントが実行されます。その後、ループを終了します。 |
ネストされた If ステートメント | 複数の if ステートメントが必要な場合に使用されます。 |
切り替えステートメント | 複数の条件がある場合、ネストされた if-else ステートメントが読めなくなることがありました。コードを読みやすくするために、switch ステートメントが使用されます。 |
ネストされた Switch ステートメント | Groovy では、入れ子になった switch ステートメントを使用することもできます。 |
Groovy リスト
リスト構造により、データ項目のコレクションを保存できます。 Groovy プログラミング言語では、List は一連のオブジェクト参照を保持します。また、シーケンス内の位置も示します。 List リテラルは、コンマで区切られ、角括弧で囲まれた一連のオブジェクトとして表されます。
Grrovy リストの例:
文字列のリスト - ['Angular', 'Nodejs,]
オブジェクト参照のリスト – ['Groovy', 2,4 2.6]
整数値のリスト – [16, 17, 18, 19]
空のリスト- [ ]
以下は、Groovy で使用できるメソッドのリストです:
メソッド | 説明 |
---|---|
add() | このリストの末尾に新しい値を追加できます。 |
contains() | このリストに特定の値が含まれている場合、true を返します。 |
get() | 特定の位置にある要素を返します |
isEmpty() | リストに要素が含まれていない場合、真の値を返します |
マイナス() | このコマンドを使用すると、コレクションで指定された要素を除いた元の要素で構成される新しいリストを作成できます。 |
plus() | オリジナルの要素とコレクションで言及された要素で構成された新しいリストを作成できます。 |
pop() | リストから最後のアイテムを削除します |
remove() | 特定の位置にある要素を削除します |
reverse() | 元のリストの要素を逆にした新しいリストを作成します |
サイズ() | このリストの要素数を返します |
sort() | ソートされたコピーを返します |
次の 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 マップ
Map Groovy は Key-Value ペアのコレクションです
Groovy マップの例:
- [チュートリアル:'Java, チュートリアル:'Groovy] – チュートリアルをキーとし、それぞれの値を持つキーと値のペアのコレクション
- [ :] 空の地図を表す
これは、Groovy で使用できるマップ メソッドのリストです。
メソッド | 説明 |
---|---|
containsKey() | マップにこのキーが含まれているかどうかを確認しますか? |
get() | このコマンドは、このマップでキーを検索し、対応する値を返します。このマップにエントリが見つからない場合、null が返されます。 |
keySet() | このマップで一連のキーを見つけることができます |
put() | 指定された値をこのマップ内の指定されたキーに関連付けます。 Map に以前にこのキーのマッピングが含まれていた場合。その後、古い値は指定された値に置き換えられます。 |
サイズ() | キーと値のマッピングの数を返します。 |
values() | このコマンドは、値のコレクション ビューを返します。 |
グルーヴィーな例:
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
クロージャーはパラメーターを受け入れることができます。 ID のリストはカンマで区切られています
パラメーター リストの終わりを示す矢印 (->)。
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 対。ジャワ
Groovy | Java |
---|---|
Groovy では、デフォルトのアクセス指定子は public です。これは、アクセス修飾子が指定されていないメソッドが public であり、クラスとパッケージの境界の外でアクセスできることを意味します。 | Java では、デフォルトのアクセス修飾子はパッケージです。つまり、フィールド、メソッド、またはクラスにアクセス修飾子を指定しないと、パッケージ プライベートになります。 |
ゲッターとセッターは、クラス メンバーに対して自動的に生成されます。 | Java、フィールドのゲッターとセッター メソッドを定義する必要があります |
Groovy では、文字列で二重引用符を使用して変数を置換できます。 | Java は変数置換をサポートしていません。 |
入力情報はオプションです。 | Java では入力情報は必須です。 |
Groovy はセミコロンで終わる必要はありません。 | Java では、すべてのステートメントはセミコロンで終わります。 |
Groovy は自動的にすべてのプログラムのスクリプトと呼ばれるラッピング クラスになります | Java では、クラスを実行可能にするために main メソッドが必要です。 |
Groovy に関する誤解
神話 | 現実 |
---|---|
Groovy はスクリプト作成のみに使用できます。 | スクリプトに使用できます。ただし、それ以外にも多くのタスクを実行できます。 |
Groovy はクロージャーがすべてです。 「ただの関数型プログラミング言語です。」 | Groovy は、Lisp や Closure などの関数型プログラミング言語を採用しています。 |
TDD を実行する場合、Groovy は理想的な選択肢です | この声明は真実です。ただし、Groovy を使用する理由はそれだけではありません。 |
Grails を使用する場合にのみ、Groovy を使用できます。 | Grails は強力な Web 開発フレームワークです。
しかし、Groovy はそれ以上のものを提供します。 |
Groovy を使用する短所
- JVM および Groovy スクリプトの開始時間が遅く、OS レベルのスクリプト作成が制限される
- Groovy は他のコミュニティでは完全に受け入れられていません。
- IDEを使わずにGroovyを使うのは不便
- Groovy は遅くなる可能性があり、開発時間が長くなります
- Groovy には大量のメモリが必要な場合があります
- Java の知識は不可欠です。
Groovy ツール
この Groovy スクリプト チュートリアルでは、3 つの重要なツールについて説明します
1. groovysh:コードを対話的に実行します。
2. groovyConsole:インタラクティブなコード実行のための GUI
3. groovy:groovy スクリプトを実行します。 Perl、Python などのように使用できます。
グルーヴィッシュ
- コマンドライン シェル
- Groovy コードをインタラクティブに実行するのに役立ちます
- ステートメントまたはスクリプト全体を入力できます
Groovy コンソール
- 最小限の Groovy 開発エディターとして機能する Swing インターフェース
- Groovy コードとやり取りできます
- Groovy スクリプト ファイルを読み込んで実行するのに役立ちます
グルーヴィー
Groovy のプログラムやスクリプトを実行するプロセッサです。う
単純な Groovy 式のテストに使用できます。
まとめ
- Groovy は、Java プラットフォームで使用されるオブジェクト指向プログラミング言語です
- Groovy スクリプトは、既存のすべての Java オブジェクトおよびライブラリとのシームレスな統合を提供します
- Bob McWhirter と James Strachan が 2003 年に groovy を開発
- リスト、マップ、範囲、正規表現リテラルは Groovy の重要な機能です
- Groovy がサポートする 4 種類の演算子は、1. リレーショナル、2. 論理、3. ビット単位、4. 代入です
- Groovy は、if、if/else、ネストされた if、switch、Netsted switch ステートメントを使用して意思決定を行いました
- データ項目のコレクションを保存できるリスト構造
- Map Groovy は Key-Value ペアのコレクションです
- Groovy では、クラス メンバーに対してゲッターとセッターが自動的に生成されます
- Java では、フィールドに getter および setter メソッドを提供できます
- Groovy に関する最大の誤解は、Groovy はスクリプトにしか使えないというもので、これは正しくありません
- Groovy が遅くなり、開発時間が長くなることがあります
- 3 つの Groovy ツール:コードを実行する groovysh、インタラクティブなコードを実行するための GUI である groovy コンソール、スクリプトを実行する groovy
Java
- Java for ループ
- Raspberry Piロボットの構築:初心者向けの最高のチュートリアル
- 初心者のためのCNCルーター
- 初心者向け Powershell チュートリアル:Powershell スクリプトを学ぶ
- C プログラミング言語 PDF:初心者向けの基本チュートリアル
- Java Arrays チュートリアル:宣言、作成、初期化 [例]
- Java スタックとヒープ:Java メモリ割り当てのチュートリアル
- For-Each の例:Java 配列を反復するための強化された for ループ
- forループを使用したJAVAプログラムのアームストロング数
- while &for ループを使用した Java の回文数プログラム
- 初心者のための概要:金属加工とは何ですか?