**Groovy** (**גְּרוּבִי**) היא שפת תכנות מונחית-עצמים עבור הפלטפורמה של ג'אווה. זוהי שפה דינמית, בעלת מאפיינים דומים לשפות Python, Ruby, Perl ו-Smalltalk. השפה יכולה לשמש גם כשפת תסריט עבור הפלטפורמה של ג'אווה.

Groovy משתמשת בתחביר מבוסס סוגריים מסולסלים בדומה לשפת Java. קוד המקור של השפה עובר הידור דינמי ל-bytecode עבור המכונה הווירטואלית של ג'אווה (JVM), והוא יכול לעבוד עם קוד וספריות שנכתבו בשפת Java. כמו כן, ברוב המקרים קוד Java יחשב תקין תחבירית גם ב-Groovy. גרסה 1.0 של Groovy שוחררה ב-2 בינואר 2007.

מאפייני השפה
------------

מרבית קובצי Java התקינים (valid), אבל לא כולם, הם גם קובצי Groovy תקינים. למרות ששתי השפות דומות, הקוד של Groovy יכול להיות קומפקטי יותר בגלל שהוא לא דורש את כל האלמנטים שג'אווה דורשת. זה מאפשר למתכנתי ג'אווה ללמוד את שפת Groovy בצורה הדרגתית על ידי התחלה מתחביר מוכר של ג'אווה, לפני שהספיקו להכיר את כל הדקויות של השפה החדשה.

בין המאפיינים של Groovy שלא קיימים ב-Java, נכללת תמיכה בטיפוסים סטטיים ובטיפוסים דינמיים (באמצעות המילה השמורה *def*), העמסת אופרטורים, תחביר מובנה לרשימות ומילונים, תמיכה מובנית בביטויים רגולריים, איטרטורים פולימורפיים, ביטויים המוטמעים בתוך מחרוזות, מתודות עזר נוספות, וניווט בטוח באמצעות האופרטור "`.?`" שמבצע בדיקה אוטומטית האם מצביעים ל-null (לדוגמה: `()variable?.method` או `variable?.field`).

Groovy מספקת תמיכה מובנית בשפות תגיות כגון XML ו-HTML, באמצעות תחביר DOM מובנה (inline). תכונה זו מאפשרת להגדיר ולשלוט על נתונים מסוגים שונים תוך שימוש בסינטקס ומתודולוגיות תכנות אחידים ותמציתיים.

קוד המקור של Groovy ניתן להרצה כסקריפט (שלא עבר הידור), אם הוא מורכב מקוד שנמצא מחוץ להגדרה של מחלקה, או אם זוהי מחלקה עם מתודת *main*, או אם זה *Runnable GroovyTestCase*.
סקריפט Groovy עובר ניתוח (parsing) והידור במלואו לפני שהוא רץ (בדומה ל-Perl ו-Ruby). זה מתרחש מאחורי הקלעים, והגרסה המהודרת אינה נשמרת כתוצר של התהליך.

GroovyBeans הם גרסה של Groovy ל-JavaBeans. מנוע השפה מייצר מתודות *get* ו-*set* באופן מרומז (implicitly). בדוגמת הקוד שלמטה, המתודות `(setColor(String color` ו-`()getColor` נוצרות באופן מרומז; בשורות 7 ו-8 מודגמת קריאה מפורשת למתודות אלה, ובשורות 10 ו-11, שבהן נראה כאילו ניגשים למשתנה `color` בצורה ישירה, בעצם מתבצעת קריאה מרומזת למתודות ה-*get* וה-*set*. 

```
class AGroovyBean {
 String color
}

def myGroovyBean = new AGroovyBean()

myGroovyBean.setColor('blue') // 7
assert myGroovyBean.getColor() == 'blue' // 8

myGroovyBean.color = 'red' // 10
assert myGroovyBean.color == 'red' // 11

```

Groovy מספקת תחביר פשוט ואחיד לטיפול במבני נתונים של רשימות ומילונים (maps), אשר מזכיר את הסינטקס של ג'אווה למערכים:

```
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‏** |
| ויקישיתוף תמונות ומדיה בוויקישיתוף: **Groovy** |

* אתר האינטרנט הרשמי של Groovy

| Java (פלטפורמת תוכנה) |
| --- |
| פלטפורמה | Java (שפת תכנות) • Java Card • Java ME • Java EE • Java SE • Java Virtual Machine |  |
| טכנולוגיות | Java applet • Java Web Start • Java Servlet • JavaServer Pages • JavaFX • JavaServer Faces |
| מושגים | איסוף זבל • Cross-platform • Java Bytecode • Java Development Kit • Javadoc • Java Classloader • Java Class Library 
JIT Compiler • HotSpot • JavaBeans • Enterprise JavaBeans • JNI • JAR • POJO • Web container • Java annotation 
Java package • Java Class File |
| ממשקי תכנות יישומים | Swing • AWT • SWT • Java 3D • Java 2D • JMS • JDBC • JAXP • JPA • RMI • JNDI |
| שפות ל-JVM | Scala • Clojure • Groovy • JRuby • Jython |
| תשתיות תוכנה וכליםשל חברות צד שלישי | אפאצ'י טומקט‏ • Apache Maven • Apache Ant • Apache Struts
JUnit • Hibernate • Spring Framework • JBoss • Google Web Toolkit • BEA WebLogic • IBM WebSphere |
| סביבות פיתוח משולבות | Eclipse • NetBeans • IntelliJ |
| חברות | סאן מיקרוסיסטמס • אורקל |
| אישים | ג'יימס גוסלינג • ביל ג'וי • אריק שמידט |

|  |  |
| --- | --- |
| בקרת זהויות עריכת הנתון בוויקינתונים | 
* NLI: 987007549666405171
* LCCN: sh2007001244

 |