**جروفي** هي لغة برمجة كائنية التوجه لـ جافا (منصة برمجية). وهي لغة ديناميكية ذات ملامح مشابهة لتلك الخاصة ب بايثون، روبي، بيرل وسمولتوك. ويمكن استخدامها ك لغة برمجة نصية لمنصة جافا.
تستخدم جروفي قوسا لبناء الجملة مثيلا لجافا، وهي مصنفة ديناميكيا ككود جافا الصالح من حيث التركيب في لغة جروفي.

التاريخ
-------

تحدث جيمس ستراكان بداية عن تطوير جروفي في جولة برامجه في أغسطس 2003. وقد تم تحرير العديد من الإصدارات بين 2004 و2006. بعدما بدأت معايرة وضع المواصفات الفنية القياسية لتكنولوجيا جافا، تم تغيير رقم الإصدار وتم تحرير إصدار يسمى "0.1 "في الثاني من يناير 2007. بعد العديد من البيتات واصدار المرشحين المرقمين ب 1.1 في 7 ديسمبر 2007، تم إصدار جروفي 1.1 النهائي على الفور بإعادة تسميته ب جروفي 1.5 كانعكاس لكثير من التغييرات التي تم اجراؤها.
في يوليو 2009، كتب ستاركان في برمجياته «أستطيع القول بأمانة أنه إذا أراني شخص ما البرمجة في كتاب الاسكالا لعالم الكمبيوتر الألماني مارتن أوديرسكي وليكس سبون وبيل فينرز في عام يسبق 2003 ربما لم أكن ابتكرت جروفي.» ترك ستاركان المشروع في صمت قبل عام من إصدار جروفي 1.0 في 2007 .

المميزات
--------

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

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

يمكن بناء الجملة في جروفي بطريقة أكثر إيجازا من جافا. على سبيل المثال الجملة في الجافا 5+مثل:

```
 for (String it : new String[] {"Rod", "Carlos", "Chris"})
 if (it.length() <= 4)
 System.out.println(it);

```

يمكن التعبير عنها في جروفي بالشكل الآتي:

```
 ["Rod", "Carlos", "Chris"].findAll{it.size() <= 4}.each{println it}

```

يقدم جروفي دعما أساسيا لمختلف لغة الترميز مثل لغة الرقم القابلة للامتداد ولغة رقم النص الفائق ويتم انجازها عن طريق بناء جملة نموذج الوثائق المضمنة. تسمح هذه الميزة بالتعريف ومعالجة أنواع عديدة من أصول البيانات غير المتجانسة مع بناء جملة ومنهجية برمجة موجزة وموحدة.

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

GroovyBeans هي نسخة جروفي لبرنامج جافا القابل لاعادة الاستخدام. يولد جروفي ضمنا طرقا للاسترجاع وتخفيف الألوان. في الكود التالي setColor(سلسلة اللون)و ()getColor مولدة ضمنا وآخر سطرين اللذان يظهران للوصول إلى اللون مباشرة هي في الواقع تستدعي الطرق المولة ضمنا.

```
class AGroovyBean {
 String color
}

def myGroovyBean = new AGroovyBean()

myGroovyBean.setColor('baby blue')
assert myGroovyBean.getColor() == 'baby blue'

myGroovyBean.color = 'pewter'
assert myGroovyBean.color == 'pewter'

```

يقدم جروفي تركيبا سهلا ومتوافقا للجملة لمعالجة القوائم والخرائط مذكرا ب بناء جملة مصفوفة جافا.

```
def movieList = ['Dersu Uzala', 'Ran', 'Seven Samurai'] //looks like an array, but is a list
assert movieList[2] == 'Seven Samurai'
movieList[3] = 'Casablanca' //adds an element to the list
assert movieList.size() == 4

def monthMap = [ 'January' : 31, 'February' : 28, 'March' : 31 ] //declares a map
assert monthMap['March'] == 31 //accesses an entry
monthMap['April'] = 30 //adds an entry to the map
assert monthMap.size() == 4

```

دعم بيئة التطوير المتكاملة
--------------------------

العديد من بيئة تطوير متكاملة تدعم جروفي:

* إكليبس من خلال Groovy-Eclipse
* إنتيليج إيديا عن طريق Jet Groovy Plugin
* نت بينز منذ نسخة 6.5
* جيه ديفيلوبر للاستخدام مع إطار تطبيقات وتطوير أوراكل
* Xappworks في المراحل التجريبية الآن ومن المتوقع أن تصبح في السوق في أوائل 2011

انظر أيضًا
----------

* مقارنة بين لغات البرمجة
* كلوجر
* سكالا
* Ruby
* جايثون
* Boo
* المشروع صفر

ملاحظات
-------

1. 1 2  وصلة مرجع:. الوصول: 8 أبريل 2020.
2. 1 2 3 4  وصلة مرجع: .
3. ↑  "Scala as the long term replacement for java/javac?". 6 يوليو 2009. مؤرشف من الأصل في 2018-10-17. اطلع عليه بتاريخ 2009-12-29.
4. ↑  König 2007, pg. 32
5. ↑  Q & A with Ed Povazan on Groovy, Dynamic Languages for Java, the State-of-the Eclipse Groovy Plugin and More (Part I)
6. ↑  Groovy - Differences from Java نسخة محفوظة 22 مارس 2015 على موقع واي باك مشين.
7. ↑  König 2007, pp. 37-8
8. ↑  König 2007, pp. 38-9
9. ↑  König 2007, pp. 41-3

وصلات خارجية
------------

* جروفي على موقع Open Hub (الإنجليزية)عدل على Wikidata
* الموقع الرسمي

|  |
| --- |
| **جروفي** في المشاريع الشقيقة: |
|  | 
* صور وملفات صوتية من كومنز.
 |


| * ع
* ن
* ت
جافا (منصة برمجية) |
| --- |
| منصات جافا | 
* جافا (لغة برمجة)
* آلة جافا الافتراضية
* جافا بلاتفورم ميكرو إديشين
* منصة جافا
* منصة جافا
* Java Card
* تطوير برمجيات أندرويد

 |  |
| تقنيات صن | 
* Squawk
* عدة تطوير جافا
* عدة تطوير جافا المفتوحة
* آلة جافا الافتراضية
* JavaFX
* Maxine VM

 |
| تقنيات المنصة | 
* بريمجات جافا
* سيرفلت
* MIDlets
* صفحات خادم جافا
* Web Start (JNLP)

 |
| تقنيات من طرف ثالث | 
* JRockit
* GNU Classpath
* Kaffe
* TopLink
* Apache Harmony
* أباتشي سترتس
* ec
* هايبرنت
* ريد هات
* Tapestry
* Jazelle

 |
| تاريخ | 
* Java version history
* Java Community Process
* صن ميكروسيستمز
* Free Java implementations

 |
| لغات برمجة رئيسية | 
* BeanShell
* كلوجر (لغة برمجة)
* جروفي (لغة برمجة)
* Oxygene
* Java Tcl
* JRuby
* جايثون
* بروسيسنج
* راينو (محرك جافا سكريبت)
* سكالا (لغة برمجة)
* المزيد…

 |
| مؤتمرات جافا | 
* جافا ون

 |

|  |  |
| --- | --- |
| ضبط استنادي: وطنية عدلها في ويكي بيانات | 
* المكتبة القومية الإسرائيلية (J9U)
* مكتبة الكونغرس (LCNAF)

 |

* أيقونة بوابةبوابة برمجة الحاسوب
* أيقونة بوابةبوابة برمجيات حرة