Кіріспе
Apache Groovy – Java платформасы үшін Java синтаксисімен үйлесімді объектіге бағытталған бағдарламалау тілі. Бұл Python, Ruby және Smalltalk сияқты мүмкіндіктері бар статикалық және динамикалық тіл. Оны Java платформасы үшін бағдарламалау тілі және сценарий тілі ретінде де пайдалануға болады, ол Java виртуалды машинасының (JVM) байт-кодына компиляцияланады және басқа Java кодымен және кітапханалармен тікелей үйлесімді жұмыс істейді. Groovy Java-ға ұқсас жиінтелген жақшалы синтаксисті қолданады. Groovy жабылуларды, көпжолды тізбектерді және тізбектерге енгізілген өрнектерді қолдайды. Groovy-дің көп бөлігі оның AST түрлендірулерінде, олар аннотациялар арқылы іске қосылады. Groovy 1.0 2007 жылдың 2 қаңтарында, ал Groovy 2.0 2012 жылдың шілдесінде жарық көрді. 2-ші нұсқадан бастап Groovy статикалық түрде компиляцияланады, типті анықтау және Java-ға жақын өнімділік ұсынады. Groovy 2.4 – Pivotal Software демеушілігімен 2015 жылдың наурызында аяқталған соңғы маңызды жаңарту болды. Содан бері Groovy басқару құрылымын Apache Software Foundation-дағы жобаны басқару комитетіне өзгертті.
Apache Groovy is a Java syntax compatible object oriented programming language for the Java platform. It is both a static and dynamic language with features similar to those of Python, Ruby, and Smalltalk. It can be used as both a programming language and a scripting language for the Java Platform, is compiled to Java virtual machine (JVM) bytecode, and interoperates seamlessly with other Java code and libraries. Groovy uses a curly bracket syntax similar to Java's. Groovy supports closures, multiline strings, and expressions embedded in strings. Much of Groovy's power lies in its AST transformations, triggered through annotations. Groovy 1.0 was released on January 2, 2007, and Groovy 2.0 in July, 2012. Since version 2, Groovy can be compiled statically, offering type inference and performance near that of Java. Groovy 2.4 was the last major release under Pivotal Software's sponsorship which ended in March 2015. Groovy has since changed its governance structure to a Project Management Committee in the Apache Software Foundation.
Тарих
Джеймс Страхан Groovy-нің дамуы туралы алғаш рет өзінің блогында 2003 жылдың тамызында айтқан болатын. 2004 жылдың наурыз айында Groovy JCP-ге 241 JSR ретінде ұсынылды және дауыс беру арқылы қабылданды. 2004-2006 жылдар аралығында бірнеше нұсқасы шығарылды. Java Community Process (JCP) стандарттау жұмыстары басталғаннан кейін нұсқа нөмірлері өзгерді, ал "1.0" деп аталатын нұсқа 2007 жылдың 2 қаңтарында шығарылды. Әр түрлі бета-нұсқалар мен релиз кандидаттары 1.1 болып саналғаннан кейін, 2007 жылдың 7 желтоқсанында Groovy 1.1 Final шығарылды және көптеген өзгерістерді көрсету үшін бірден Groovy 1.5 деп қайта нөмірленді. 2007 жылы Groovy JAX 2007 инновациялық сыйлығының бірінші жүлдесін жеңіп алды. 2008 жылы Groovy веб-фреймворкі Grails JAX 2008 инновациялық сыйлығының екінші жүлдесін жеңіп алды. 2008 жылдың қарашасында SpringSource Groovy және Grails компаниясын (G2One) сатып алды. 2009 жылдың тамызында VMware SpringSource компаниясын сатып алды. 2012 жылдың сәуірінде сегіз жыл бойы белсенділік болмағаннан кейін Spec Lead JSR 241 мәртебесін тоқтатылған деп өзгертті. 2012 жылдың 2 шілдесінде Groovy 2.0 шығарылды, ол басқа жаңа мүмкіндіктермен қатар статикалық компиляция және статикалық типтік тексеруді қосты. 2013 жылдың сәуірінде EMC Corporation (EMC) және VMware Pivotal Software бірлескен кәсіпорнын құрғанда, Groovy және Grails оның өнім портфелінің бір бөлігін құрады. Pivotal 2015 жылдың сәуірінен бастап Groovy және Grails-ті демеушілік етуді тоқтатты. 2020 жылдың 7 ақпанында Groovy 3.0 шығарылды. 4.0 нұсқасы 2022 жылдың 25 қаңтарында шығарылды.
Ерекшеліктері
Java файлдарының көпшілігі сонымен қатар Groovy файлдары болып табылады. Екі тіл ұқсас болғанымен, Groovy коды ықшамдатылған болуы мүмкін, себебі оған Java-ға қажетті барлық элементтердің бәрі де қажет емес. Бұл Java бағдарламашыларына Groovy бағдарламалау ерекшеліктерін меңгеру алдында таныс Java синтаксисімен бастап, Groovy-ді кезең-кезеңімен үйренуге мүмкіндік береді. Java-да қолжетімсіз Groovy мүмкіндіктеріне статикалық және динамикалық типтеу (def кілт сөзімен), оператордың жүктелуі, тізімдер мен ассоциативтік массивлерге (карталарға) арналған тума синтаксис, реттеуші өрнектерге (regular expressions) тума қолдау, полиморфты итерация, жол интерполяциясы, қосымша көмекші әдістер және null көрсеткіштерді автоматты түрде тексеруге арналған қауіпсіз навигация операторы ? (мысалы, айнымалы?. әдіс немесе айнымалы?. өріс) жатады. 2 нұсқадан бастап Groovy модульділікті де қолдайды (жобаның қажеттіліктеріне сәйкес қажетті ғана jar файлдарын жіберуге болады, осылайша Groovy кітапханасының көлемін азайтуға болады), типтік тексеру, статикалық компиляция, Project Coin синтаксисін жақсарту, көп ұстау блогы (multicatch blocks) және Java 7-де енгізілген invokedynamic нұсқауын пайдаланып үздіксіз өнімділікті жақсарту мүмкіндіктерін ұсынады. Groovy XML және HTML сияқты әртүрлі белгілеу тілдерін (markup languages) тума түрде қолдайды, бұл ішкі Document Object Model (DOM) синтаксисі арқылы жүзеге асырылады. Бұл мүмкіндік әртүрлі гетерогенді дерек активтерінің көптеген түрлерін бірыңғай және ықшам синтаксис пен бағдарламалау әдістемесімен анықтауға және өңдеуге мүмкіндік береді. Java-дан айырмашылығы, Groovy бастапқы коды файлы кез келген сынып анықтамасының сыртында кодты қамтыса, негізгі әдісі бар сынып болса немесе Runnable немесе GroovyTestCase болса, (компиляцияланбаған) скрипт ретінде орындалуы мүмкін. Groovy скрипті орындалу алдында толыққанды талданады, компиляцияланады және генерацияланады (Python және Ruby сияқты). Бұл процестің ішкі бөлігінде жүреді және компиляцияланған нұсқа процестің артефактісі ретінде сақталмайды.
Функционалдық бағдарламалау
Groovy көбінесе объектіге бағытталған тіл болғанымен, ол функционалдық бағдарламалау мүмкіндіктерін де ұсынады.