Groovy دروس البرنامج النصي للمبتدئين

⚡ ملخص ذكي

Groovy لغة البرمجة النصية هي لغة كائنية التوجه لـ Java منصة تُترجم إلى بايت كود JVM. وهي تضيف أنواعًا ديناميكيةping، والإغلاقات، والصيغة المختصرة لـ Javaوهو يمد الطاقة Jenkins خطوط الأنابيب ، Gradle يبني، و SoapUI تأكيدات.

  • 🧩 Java متوافق: الأكثر صحة Java يتم تجميع الكود دون تغيير في Groovyوبالتالي تبقى تكلفة التعلم منخفضة للغاية.
  • ⚡ Less نموذج جاهز: سطر طباعة واحد يحل محل الفئة، والطريقة الرئيسية، واستدعاء System.out Java المطالب.
  • 🔀 النوع الديناميكيping: تتيح الكلمة المفتاحية def لمتغير واحد أن يحمل عددًا صحيحًا ثم سلسلة نصية في وقت التشغيل.
  • 🔁 حلقات مضغوطة: تُستبدل طرق upto و times و step حلقات for المطولة على نمط لغة C في سطر واحد.
  • 📦 المجموعات الأصلية: تحتوي القوائم والخرائط على بنية حرفية بالإضافة إلى أدوات مساعدة مثل pop و keySet و sort.
  • 🧠 الإغلاق: تعمل كتل التعليمات البرمجية ككائنات، وتقبل المعلمات، وتعيد القيم، وتتداخل داخل إغلاقات أخرى.
  • ⚙️ ثلاث أدوات: يوفر groovysh واجهة سطر أوامر، ويوفر groovyConsole واجهة مستخدم رسومية، ويقوم groovy بتشغيل ملفات البرامج النصية مباشرة.

Groovy دروس البرنامج النصي للمبتدئين

ما هو Groovy البرنامج النصي؟

Apache Groovy هو برنامج موجه للكائنات، Java لغة برمجة متوافقة مع بناء الجملة مصممة لـ Java المنصة. تتميز هذه اللغة الديناميكية بالعديد من الخصائص المشابهة لـ Pythonروبي، سمول توك، وبيرل. Groovy يتم تجميع الكود المصدري في Java رمز البايت، لذا فهو يعمل على أي منصة حيث يكون Java تم تثبيت الجهاز الظاهري. Groovy كما أنه يقوم بالكثير من العمل خلف الكواليس، مما يجعله يبدو أكثر مرونة وديناميكية من مجرد Java.

A Groovy سيناريو هو ببساطة .groovy ملف يحتوي على عبارات Groovy يتم تغليفها في فئة مُولّدة قبل تشغيلها. لهذا السبب يمكنك تنفيذ ملف من سطر واحد دون كتابة فئة أو main الأسلوب. Groovy وبالتالي يمكن استخدامها كلغة برمجة نصية لـ Java المنصة مع الاستمرار في توفير إمكانيات المؤسسات Javaيضيف هذا البرنامج ميزات إنتاجية مثل دعم لغات البرمجة الخاصة بالمجال (DSL)، والإغلاقات، وأنواع البيانات الديناميكية الاختيارية.pingعلى عكس بعض اللغات الأخرى، فقد صُممت لتكون مصاحبة لـ Java، وليس بديلاً عنه.

💡 نصيحة: Groovy 5.0 هو الإصدار المستقر الحالي ويستهدف JDK 11 وما فوق. Groovy لا يزال الإصدار 4.0 متاحًا لمشاريع JDK 8، و Groovy لا يزال الإصدار 6.0 في مرحلة تجريبية (ألفا) لـ JDK 17. تحقق دائمًا من جدول متطلبات النظام على صفحة التنزيل الرسمية قبل اختيار الإصدار.

لماذا Groovy?

إليك أهم الأسباب التي تدفعك لاستخدام وتعلم Groovy:

  • Groovy هي لغة مرنة وديناميكية.
  • يتكامل بسلاسة مع جميع الأنظمة الحالية Java الكائنات والمكتبات.
  • يبدو الأمر سهلاً وطبيعياً لـ Java المطورين.
  • الكود أكثر إيجازًا وأكثر دلالة من الكود المكافئ Java رمز.
  • يمكنك استخدامه بالقدر الذي تريده في الداخل Java التطبيقات.
  • يعمل على المعيار Java آلة افتراضيةلذلك لا يلزم وجود وقت تشغيل منفصل.

Groovy تاريخنا

  • 2003: بدأه جيمس سtracهان وبوب ماكWhirثالثا.
  • 2004: تم تقديمه إلى Java عملية المجتمع كـ JSR 241، والتي تم سحبها لاحقًا.
  • 2005: أُعيد إلى tracكتاب من تأليف جيريمي راينر وغيوم لافورج.
  • 2007: Groovy 1.0 صدر.
  • 2012: Groovy 2.0 صدر.
  • 2014: Groovy تم إصدار الإصدار 2.3 مع دعم رسمي لـ JDK 8.
  • 2015: Groovy أصبح مشروعًا رفيع المستوى في مؤسسة أباتشي للبرمجيات Foundation.
  • 2022: Groovy تم إصدار الإصدار 4.0، مع نقل إحداثيات Maven إلى org.apache.groovy.
  • 2025: Groovy تم إصدار الإصدار 5.0 لـ JDK 11 وما فوق.

ميزات Groovy

  • القوائم، والخرائط، والنطاقات، والصيغ النمطية.
  • الأساليب المتعددة (إرسال الأساليب في وقت التشغيل) والبرمجة الوصفية.
  • Groovy عادةً ما يتم تخزين الفئات والبرامج النصية في .groovy الملفات.
  • تحتوي البرامج النصية Groovy البيانات دون أي إعلان فئة.
  • يمكن أن تحتوي البرامج النصية أيضًا على تعريفات أسلوب خارج تعريفات الفئة.
  • Groovy يمكن تجميع الكود ودمجه بالكامل مع نظام تقليدي Java التطبيق.
  • دعم على مستوى اللغة للخرائط والقوائم والتعبيرات النمطية.
  • دعم الإغلاقات، والأنواع الديناميكيةping، وبروتوكول الكائن الفائق.
  • دعم لكل من النوع الثابت والديناميكيpingبالإضافة إلى إرهاق المشغل.
  • التحقق من النوع الثابت الاختياري من خلال @TypeChecked و @CompileStatic شروحه.

كيفية تثبيت Groovy

الخطوة 1) تأكد لديك Java تثبيت.

الخطوة 2) انتقل إلى البرنامج المساعد في التأليف https://groovy.apache.org/download.html وانقر فوق Windows رابط التثبيت.

Groovy صفحة التنزيل مع رابط التثبيت

ملحوظة: يمكنك أيضًا التثبيت Groovy من ملف Zip الثنائي، عبر مدير حزم مثل SDKMAN! أو Homebrew أو Scoop أو Chocolatey، أو كملحق لـ Java IDE. في هذا Groovy سنلتزم بالإرشادات التالية: Windows المثبت.

الخطوة 3) قم بتشغيل برنامج التثبيت الذي تم تنزيله. حدد اللغة وانقر فوق "موافق".

Groovy مربع حوار اختيار لغة المثبت

الخطوة 4) في شاشة الترحيب، انقر فوق التالي.

Groovy شاشة ترحيب المثبّت

الخطوة 5) أوافق على شروط الترخيص.

Groovy شاشة اتفاقية ترخيص المُثبِّت

الخطوة 6) حدد المكونات التي تريد تثبيتها وانقر فوق التالي.

Groovy شاشة اختيار مكونات المثبت

الخطوة 7) حدد مجلد التثبيت وانقر فوق التالي.

Groovy شاشة دليل تثبيت برنامج التثبيت

الخطوة 8) اختر مجلد قائمة ابدأ وانقر على التالي.

Groovy شاشة مجلد قائمة ابدأ الخاصة بالمثبت

الخطوة 9) بعد اكتمال التثبيت، اترك المسارات على إعداداتها الافتراضية وانقر على "التالي".

Groovy شاشة مسار بيئة التثبيت

الخطوة 10) قم بتأكيد خيارات ربط الملفات وانقر على التالي.

Groovy شاشة ربط ملفات التثبيت

الخطوة 11) في قائمة ابدأ، ابحث عن Groovy وحدة التحكم لتأكيد التثبيت.

عرض نتائج البحث في قائمة ابدأ Groovy اختصار وحدة التحكم

⚠️ تحذير: استخدم Windows برنامج التثبيت هو منتج ساهم فيه المجتمع، وليس إصدارًا رسميًا من Apache. إذا كانت مؤسستك تتطلب تنزيلات Apache الموقعة، فاستخدم توزيعة Zip الثنائية وتحقق من صحتها. .asc التوقيع و .sha256 بدلاً من ذلك، استخدم المجموع الاختباري.

Groovy مرحبا العالم مثال

لنفترض أنك تريد طباعة السلسلة البسيطة "Hello World" في Javaسيبدو الكود على هذا النحو.

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

الإخراج:

Hello World

الكود أعلاه صالح في كليهما Java و Groovy، لان Groovy يقبل تقريبًا جميع Java بناء الجملة. الميزة مع Groovy يكمن الأمر في أنه يمكنك الاستغناء عن تعريف الفئة، والطريقة العامة، واستدعاء الطباعة المؤهل بالكامل، وتحقيق نفس الناتج بسطر واحد.

println "Hello World"

الإخراج:

Hello World
  • لا حاجة للفاصلة المنقوطة.
  • لا حاجة إلى فصل دراسي أو main الأسلوب.
  • 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";
    }
}

الإخراج:

104

في المثال أعلاه، يتم تحديد نوع المتغير مسبقًا باستخدام الكلمة المفتاحية intإذا كنت ستعلن عن عدد عشري، فستستخدم الكلمة المفتاحية float or double.

إذا حاولت تعيين قيمة نصية إلى int (قم بإلغاء التعليق على السطر 5)، وستحصل على خطأ التجميع التالي.

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

فى المقابل، Groovy يدعم النوع الديناميكيpingيتم تعريف المتغيرات باستخدام الكلمة المفتاحية 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 in 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)
Command exited with non-zero status 1

Groovy Operaالاختصاصات

المعامل هو رمز يخبر المترجم بتنفيذ عملية حسابية أو منطقية محددة. Groovy يدعم خمس مجموعات من المشغلين.

  • العمليات الحسابية: أضف (+)، اطرحtract (-), الضرب (*), القسمة (/), باقي القسمة (%), الزيادة (++), النقصان (–).
  • العوامل العلاقية: يساوي (==)، لا يساوي (!=)، أصغر من (<)، أصغر من أو يساوي (<=)، أكبر من (>)، أكبر من أو يساوي (>=).
  • العوامل المنطقية: و (&&)، أو (||)، وليس (!).
  • عوامل تشغيل Bitwise: و (&)، أو (|)، أو الحصرية (^)، والمكمل (~).
  • عوامل التعيين: قم بتعيين (=) والصيغ المركبة (+=)، (-=)، (*=)، (/=)، (%=).

Groovy يضيف بعض العوامل التي Java لا يحتوي على ذلك، كما أنه يزيل الكثير من التعليمات البرمجية المتكررة للتحقق من القيم الفارغة.

المُشغل الوصف
?. التنقل الآمن. يُرجع قيمة فارغة بدلاً من طرح استثناء NullPointerException عندما يكون الجانب الأيسر فارغًا.
?: عامل إلفيس. يُعيد الجانب الأيسر إذا كانت قيمته صحيحة، وإلا يُعيد الجانب الأيمن.
<=> عامل تشغيل المركبة الفضائية. يُفوّض إلى compareTo وهو مفيد داخل عمليات الفرز المغلقة.
==~ مطابقة التعبير النمطي. تُرجع القيمة "صحيح" فقط عندما تتطابق السلسلة بأكملها مع النمط.

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
5

يمكنك تحقيق نفس الناتج في Groovy مع الالجائزة upto الطريقة التي تشمل كلا الحدين.

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

الإخراج:

0
1
2
3
4
5

هنا it يمثل هذا المعامل الضمني للدالة المغلقة، ويحمل قيمة التكرار الحالي. انظر إلى الكود التالي.

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

الإخراج:

2
3
4

يمكنك أيضا استخدام times طريقة. تبدأ دائمًا من 0 وتتوقف قبل الرقم الذي تستدعيها عليه بواحد، لذا فأنت بحاجة إلى 6 لطباعة الأرقام من 0 إلى 5.

6.times { println "$it" }

الإخراج:

0
1
2
3
4
5

لنفترض الآن أنك تريد طباعة الأرقام 0 و2 و4 باستخدام 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

يمكنك استخدام step طريقة للحصول على نفس النتيجة. الوسيط الثاني هو مقدار الزيادة، والوسيط الأول هو حد أعلى حصري.

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

الإخراج:

0
2
4

Groovy اتخاذ القرار

Groovy يعيد استخدام Java العبارات الشرطية وتضيف مرونة أكبر بكثير switchيلخص الجدول أدناه الخيارات المتاحة.

ملخص الحساب الوصف
إذا البيان كما في Javaيتم تنفيذ جسم عبارة if عندما يكون الشرط صحيحًا.
عبارة if/else يتم تقييم الشرط الموجود في عبارة if أولاً. إذا كان الشرط صحيحاً، تُنفَّذ التعليمات الموجودة في كتلة if ويتم تخطي كتلة else. أما إذا كان الشرط خاطئاً، فتُنفَّذ التعليمات الموجودة في كتلة else بدلاً من ذلك.
عبارة شرطية متداخلة يُستخدم هذا عندما تحتاج إلى اختبار شرط إضافي داخل كتلة if.
بيان التبديل تصبح سلسلة عبارات if-else المتداخلة غير قابلة للقراءة عند وجود العديد من الشروط. أما عبارة switch فتجعل نفس المنطق أسهل للقراءة. Groovy، يمكن أن يكون تصنيف الحالة قيمة أو فئة أو نطاقًا أو تعبيرًا عاديًا أو إغلاقًا.
عبارة التبديل المتداخلة Groovy كما يسمح بوضع عبارة switch واحدة داخل عبارة أخرى.

Groovy قائمة

تتيح لك بنية القائمة تخزين مجموعة من عناصر البيانات. Groovyتحتوي القائمة على سلسلة من مراجع الكائنات وتحافظ على موضع كل عنصر في تلك السلسلة. تُكتب القائمة الحرفية كسلسلة من الكائنات مفصولة بفواصل ومحاطة بأقواس مربعة.

أحد أمثلة Groovy القوائم:

  • قائمة من السلاسل النصية: ['Angular', 'Nodejs']
  • قائمة بمراجع الكائنات المختلطة: ['Groovy', 2, 4, 2.6]
  • قائمة من القيم العددية الصحيحة: [16, 17, 18, 19]
  • قائمة فارغة: []

تتوفر طرق القائمة التالية في Groovy.

الأسلوب الوصف
إضافة () يُضيف قيمة جديدة إلى نهاية القائمة.
يتضمن() تُرجع القيمة "صحيح" إذا كانت القائمة تحتوي على قيمة معينة.
احصل على() يُعيد العنصر الموجود في الموضع المحدد.
فارغ() تُرجع القيمة "صحيح" إذا كانت القائمة لا تحتوي على أي عناصر.
ناقص() يقوم بإنشاء قائمة جديدة تتكون من عناصر القائمة الأصلية، باستثناء تلك المحددة في المجموعة المعطاة.
زائد() يقوم بإنشاء قائمة جديدة تتكون من عناصر القائمة الأصلية بالإضافة إلى العناصر الموجودة في المجموعة المعطاة.
pop () يزيل العنصر الأخير من القائمة ويعيده.
إزالة() يزيل العنصر الموجود في الموضع المحدد.
عكس () يقوم بإنشاء قائمة جديدة تعكس عناصر القائمة الأصلية.
بحجم() يُعيد عدد العناصر في القائمة.
فرز() يُعيد نسخة مُرتبة من القائمة.

النظر في ما يلي Groovy مثال على نص برمجي.

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

الإخراج:

[Guru99, is, أفضل, for, Groovy]
true
أفضل
Learning

يطبع السطر الأول القائمة الأصلية المكونة من خمسة عناصر، لأن add() لم يتم تشغيله بعد. get(2) يعود "تي" منذ Groovy تبدأ فهارس القوائم من الصفر، و pop() يُرجع "التعلم" لأن هذا العنصر أُضيف أخيرًا.

Groovy برنامج Maps

A Groovy الخريطة عبارة عن مجموعة من أزواج المفاتيح والقيم. لا تحتاج المفاتيح إلى علامات اقتباس عندما تكون معرفات بسيطة، مما يجعل نصوص الخريطة مختصرة للغاية.

أحد أمثلة Groovy خرائط:

  • [tutorial: 'Java', language: 'Groovy'] هي عبارة عن مجموعة من زوجين من المفاتيح والقيم.
  • [:] يمثل خريطة فارغة.

فيما يلي قائمة بطرق الخرائط المتاحة في Groovy.

الأسلوب الوصف
يحتوي علىمفتاح () يتحقق مما إذا كانت الخريطة تحتوي على المفتاح المحدد.
احصل على() يبحث عن المفتاح في الخريطة ويعيد القيمة المطابقة. إذا لم يتم العثور على أي مدخل، فإنه يعيد قيمة فارغة (null).
مجموعة المفاتيح () يُعيد مجموعة المفاتيح الموجودة في الخريطة.
وضع() يربط القيمة المحددة بالمفتاح المُعطى. إذا كانت الخريطة تحتوي بالفعل على خريطةping بالنسبة لهذا المفتاح، يتم استبدال القيمة القديمة.
بحجم() يُعيد عدد خرائط المفتاح والقيمةpings.
القيم () يُعيد عرضًا لمجموعة من القيم.

Groovy مثال:

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

الإخراج:

Jen

Groovy إغلاق

A 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

عندما لا تقوم بتحديد قائمة المعلمات، Groovy يُوفر مُعاملًا ضمنيًا واحدًا يُسمى itيمكن أيضًا تمرير الدوال المغلقة إلى دوال مغلقة أخرى، وهذا هو بالضبط ما تفعله طرق التجميع مثل each, collectو findAll عمل.

Groovy الأدوات

سنلقي نظرة على ثلاث أدوات مهمة تأتي مع المنتج. Groovy توزيع:

  1. groovysh: ينفذ التعليمات البرمجية بشكل تفاعلي من سطر الأوامر.
  2. groovyConsole: نافذة رسومية لتنفيذ التعليمات البرمجية التفاعلية.
  3. رائع: ينفذ Groovy ملفات البرامج النصية، بنفس الطريقة التي تقوم بها بتشغيل برنامج بيرل أو Python النصي.

Groovysh

  • واجهة سطر الأوامر.
  • يساعدك على التنفيذ Groovy البرمجة التفاعلية.
  • يتيح لك إدخال عبارات مفردة أو نصوص برمجية كاملة.

تُظهر لقطة الشاشة أدناه قيام برنامج groovysh بتقييم التعبيرات سطرًا سطرًا.

تشغيل واجهة سطر أوامر Groovysh Groovy البيانات

Groovy كنسولات

  • واجهة Swing تعمل كواجهة بسيطة Groovy محرر التطوير.
  • يتيح لك كتابة وتشغيل Groovy البرمجة التفاعلية.
  • يساعدك على التحميل والتشغيل Groovy ملفات البرامج النصية.

في خانة رمز الخصم، أدخل TABBYDAY. Groovy في وحدة التحكم أدناه، يتم كتابة البرنامج النصي في الجزء العلوي وتظهر النتيجة في الجزء السفلي.

Groovy محرر Swing من نوع Console مع لوحات البرمجة النصية والإخراج

Groovy

استخدم groovy الأمر هو المعالج الذي يقوم بتشغيل Groovy البرامج والنصوص البرمجية. يقوم بتجميع الكود المصدري إلى بايت كود في الذاكرة وتنفيذه في خطوة واحدة، لذا لا حاجة لمرحلة بناء منفصلة. كما يمكن استخدامه لاختبار البرامج البسيطة. Groovy التعبيرات مباشرة من الطرفية، كما هو موضح أدناه.

أمر Groovy لتنفيذ سكربت من الطرفية

في Groovy يُستخدم في مشاريع حقيقية

معظم المطورين يلتقون Groovy ليس كلغة مستقلة، بل كطبقة برمجة نصية داخل أداة يستخدمونها بالفعل. معرفة مكان ظهورها يجعل وضع الصيغة المذكورة أعلاه أسهل بكثير.

أداة كيفية Groovy ويستخدم
Jenkins تُكتب خطوط الأنابيب التصريحية والبرمجية بلغة Groovy لغة المجال الخاصة (DSL)، والمكتبات المشتركة واضحة Groovy الطبقات.
Gradle الكلاسيكية build.gradle الملف هو Groovy النص البرمجي، ولهذا السبب تتم قراءته بشكل أكثر إيجازًا من النص البرمجي العادي. مخضرم دواء بوصفة طبية أو نملة ملف البناء.
SoapUI Groovy تُشغّل خطوات البرنامج النصي وتأكيدات البرنامج النصي بيانات الطلب الديناميكية وعمليات التحقق من الاستجابة المخصصة.
سبوك A Groovy إطار اختبار يستخدم على نطاق واسع كتل "المعطيات-عندما-ثم" وجداول البيانات الخاصة به لاختبارات وحدة JVM.
Elasticsearch و Grails يقوم Grails ببناء تطبيقات ويب كاملة على Groovyوتقبل العديد من أدوات البيانات Groovy للبرمجة المخصصة.

In اختبار الأتمتة هذا الأمر مهم للفرق مرتين: قد تكون مهمة التكامل المستمر التي تشغل مجموعة الاختبارات والاختبارات نفسها كلاهما Groovyلذا، تغطي لغة واحدة منطق الربط بين خطوط الأنابيب ومنطق التأكيدات.

Groovy مباراة. Java

Groovy Java
مُعدِّل الوصول الافتراضي هو عام، لذا فإن الطريقة التي لا تحتوي على مُعدِّل يمكن الوصول إليها خارج فئتها وحزمتها. مُعدِّل الوصول الافتراضي هو "خاص بالحزمة"، لذا فإن الحقول والأساليب والفئات التي لا تحتوي على مُعدِّل تكون مرئية فقط داخل حزمتها.
يتم إنشاء دوال الوصول والتعيين تلقائيًا لخصائص الفئة. عليك تعريف دوال الوصول والتعديل للحقول بنفسك.
Groovy يسمح باستبدال المتغيرات داخل السلاسل النصية المحاطة بعلامات اقتباس مزدوجة. Java لا يدعم استيفاء السلاسل النصية.
معلومات النوع اختيارية. معلومات النوع إلزامية.
لا يشترط أن تنتهي العبارات بفاصلة منقوطة. كل عبارة تنتهي بفاصلة منقوطة.
Groovy يقوم البرنامج تلقائيًا بتغليف كل نص برمجي في فئة نص برمجي مُنشأة. أنت بحاجة إلى دالة رئيسية لجعل الفئة قابلة للتنفيذ.
كل شيء عام وديناميكي بشكل افتراضي، ولكن @CompileStatic يستعيد Java- مستوى السرعة والتحقق. يتم تجميع كل شيء بشكل ثابت والتحقق منه في وقت الإنشاء.

أساطير حول Groovy

أسطورة واقع
Groovy لا يمكن استخدامه إلا في كتابة البرامج النصية. إنه ممتاز لكتابة البرامج النصية، ولكنه يقوم أيضًا بالترجمة إلى فئات عادية يمكنك تضمينها داخل أي تطبيق JVM.
Groovy يتمحور كل شيء حول الإغلاقات، لذا فهي مجرد لغة برمجة وظيفية. Groovy تستعير أفكارًا من لغات البرمجة الوظيفية مثل Lisp و Clojure، لكنها تظل لغة كائنية التوجه في جوهرها.
Groovy لا يُنصح باستخدامه إلا في تطوير البرمجيات القائم على الاختبار. Groovy يُعدّ مناسبًا تمامًا لـ TDD مع Spock، لكن هذا بالتأكيد ليس السبب الوحيد لاستخدامه.
تحتاج فقط Groovy إذا كنت ترغب في استخدام Grails. Grails هو إطار عمل قوي لتطوير مواقع الويب، ولكن Gradle, Jenkins، وسبوك جميعهم يستخدمون Groovy بدونها.

سلبيات الاستخدام Groovy

  • جي في إم و Groovy وقت بدء تشغيل البرنامج النصي بطيء، مما يحد من استخدامه في كتابة البرامج النصية السريعة على مستوى نظام التشغيل.
  • Groovy لا يتم اعتمادها على نطاق واسع خارج المجتمعات التي تركز على JVM.
  • من غير المريح استخدامه Groovy بدون بيئة تطوير متكاملة تفهم خصائصها الديناميكية.
  • يمكن أن يؤدي الإرسال الديناميكي إلى Groovy الكود أبطأ من الكود المكافئ Java لا تقم بتطبيق التعليمات البرمجية إلا إذا قمت بتطبيقها @CompileStatic.
  • Groovy قد تحتاج البرامج إلى ذاكرة أكبر من البرامج العادية Java البرامج.
  • معرفة عن Java وهو شرط أساسي فعلياً.

بمجرد أن تشعر بالراحة مع Groovy فيما يخص بناء الجملة، فإن الخطوة الطبيعية التالية هي النظام البيئي المحيط بها. عزز الأساسيات من خلال Java البرنامج التعليميثم انظر كيف Groovy تُشغّل البرامج النصية عمليات البناء والنشر في Jenkinsقارن أدوات البناء مع مخضرم و أباتشي النملةواستكشف كيف Groovy تتناسب التأكيدات مع Selenium ومجموعات اختبار واجهة برمجة التطبيقات (API).

الأسئلة الشائعة

Groovy الإصدار 5.0 يستهدف JDK 11 والإصدارات الأحدث. Groovy لا يزال الإصدار 4.0 يدعم JDK 8، وهو قيد التطوير Groovy يستهدف الإصدار 6.0 من البرنامج JDK 17. تحقق من جدول متطلبات النظام على صفحة تنزيل Apache الرسمية قبل الالتزام بإصدار معين.

لا. يقوم أمر groovy بتحويل ملف .groovy إلى بايت كود في الذاكرة وتشغيله فورًا. يمكنك مع ذلك التجميع مسبقًا باستخدام groovyc عندما تريد تضمين ملفات .class قابلة لإعادة الاستخدام داخل ملف . Java التطبيق.

نعم. أباتشي Groovy يُصدر هذا البرنامج بموجب رخصة أباتشي 2.0، لذا يُسمح بالاستخدام التجاري والتعديل وإعادة التوزيع مجانًا. ولا تنطبق على النسخ المعاد توزيعها سوى التزامات الإسناد وإشعار الترخيص المعتادة.

Groovy هي لغة البرمجة. Grails هو إطار عمل ويب متكامل مكتوب بلغة البرمجة. Groovy. يمكنك استخدام Groovy لإنشاء ملفات البناء، أو مسارات العمل، أو الاختبارات دون الحاجة إلى تثبيت Grails مطلقًا، ولكن لا يمكن لـ Grails أن يوجد بدونها. Groovy.

يتعاملون بشكل جيد مع المصطلحات الشائعة مثل الدوال المغلقة، وطرق المجموعات، وخطوات خط الأنابيب. قم دائمًا بتشغيل البرامج النصية المُولّدة في groovyConsole أولًا، لأن النماذج قد تتداخل أحيانًا. Java بناء الجملة مع Groovy اختصارات أو ابتكار طرق غير موجودة.

ألصق المجموعة tracيقوم النظام بتحويل النص إلى مساعد للكشف عن الأسباب المحتملة مثل أ Groovyخطأ في تحويل النوع، أو عدم وجود موافقة على بيئة الاختبار، أو وجود دالة تفويض خاطئة. تعامل مع كل اقتراح كفرضية وتحقق منه من خلال سجل البناء الفعلي.

تلخيص هذه التدوينة بـ: