Groovy

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

קישורים חיצוניים 

 

שפות תכנות