~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 42908B49CC34971896DE17EE3846ED55__1711585380 ✰
Заголовок документа оригинал.:
✰ Apache Groovy - Wikipedia ✰
Заголовок документа перевод.:
✰ Apache Groovy — Википедия, бесплатная энциклопедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Groovy_(programming_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/42/55/42908b49cc34971896de17ee3846ed55.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/42/55/42908b49cc34971896de17ee3846ed55__translat.html ✰
Дата и время сохранения документа:
✰ 11.06.2024 06:10:24 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 28 March 2024, at 03:23 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Apache Groovy — Википедия, бесплатная энциклопедия Jump to content

Апач Groovy

Из Википедии, бесплатной энциклопедии
классный
Крутой логотип
Парадигма Мультипарадигмальность : объектно-ориентированная , императивная , функциональная , аспектно-ориентированная , скриптовая.
Разработано Джеймс Страчан
Разработчик Гийом Лафорж (председатель PMC)
Йохен Теодору (технический руководитель)
Пол Кинг
Седрик Шампо
Впервые появился 2003 год ; 21 год назад ( 2003 )
Стабильная версия 4.0.21 [1]  Отредактируйте это в Викиданных (6 апреля 2024 г.; 2 месяца назад ( 6 апреля 2024 г. ) ) [±]
Предварительный выпуск
4.0.0-бета-1 / 6 сентября 2021 г .; 2 года назад ( 06.09.2021 ) [2]
Дисциплина набора текста Динамичный , статичный , сильный , утиный
Платформа Ява SE
Лицензия Лицензия Апач 2.0
Расширения имен файлов .groovy, .gvy, .gy, .gsh[3]
Веб-сайт просто классно .org Отредактируйте это в Викиданных
Основные реализации
Градл , Грааль
Под влиянием
Java , Python , Руби , Smalltalk
Под влиянием
Котлин

Apache Groovy — это Java , совместимый с синтаксисом объектно-ориентированный язык программирования , для платформы Java . Это одновременно статический и динамический язык с функциями, аналогичными функциям Python , Ruby и Smalltalk . Его можно использовать как язык программирования и язык сценариев для платформы Java, он компилируется в виртуальной машины Java (JVM) байт-код и легко взаимодействует с другим кодом и библиотеками Java . Groovy использует синтаксис фигурных скобок, аналогичный Java. Groovy поддерживает замыкания , многострочные строки и выражения, встроенные в строки . Большая часть возможностей Groovy заключается в преобразованиях AST , запускаемых посредством аннотаций.

Groovy 1.0 был выпущен 2 января 2007 г., а Groovy 2.0 — в июле 2012 г. Начиная с версии 2, Groovy можно компилировать статически , предлагая определение типа и производительность, близкую к Java. [4] [5] Groovy 2.4 был последним крупным релизом, спонсором которого выступила Pivotal Software , который закончился в марте 2015 года. [6] С тех пор Groovy изменил свою структуру управления на Комитет по управлению проектами в Apache Software Foundation . [7]

История [ править ]

Джеймс Страчан впервые рассказал о разработке Groovy в своем блоге в августе 2003 года. [8] В марте 2004 года Groovy был представлен JCP как JSR 241. [9] и принят голосованием. В период с 2004 по 2006 год было выпущено несколько версий. После начала усилий по стандартизации Java Community Process (JCP) нумерация версий изменилась, и 2 января 2007 года была выпущена версия под названием «1.0». После различных бета-версий и кандидатов на выпуск под номером 1.1, 7 декабря 2007 г. был выпущен Groovy 1.1 Final, номер которого сразу же был изменен на Groovy 1.5, чтобы отразить множество внесенных изменений.

В 2007 году Groovy получил первый приз на премии инноваций JAX 2007. [10] В 2008 году Grails , веб-фреймворк Groovy , получил вторую премию на премии JAX 2008 Innovation Award. [11]

В ноябре 2008 года SpringSource приобрела компанию Groovy and Grails (G2One). [12] В августе 2009 года VMware приобрела SpringSource. [13]

В апреле 2012 года, после восьми лет бездействия, руководитель спецификации изменил статус JSR 241 на неактивный. [9]

Страчан молча покинул проект за год до выпуска Groovy 1.0 в 2007 году. [ нужна цитата ] В октябре 2016 года Страчан заявил: «Я все еще люблю groovy (конвейеры Jenkins такие классные!), Java, go, typescript и kotlin». [14]

2 июля 2012 года был выпущен Groovy 2.0, в котором, помимо других новых функций, были добавлены статическая компиляция и статическая проверка типов .

Когда в апреле 2013 года совместное предприятие Pivotal Software было выделено корпорациями EMC (EMC) и VMware, Groovy и Grails вошли в его портфель продуктов. Pivotal прекратила спонсировать Groovy и Grails с апреля 2015 года. [6] В том же месяце Groovy изменил свою структуру управления с репозитория Codehaus на Комитет управления проектами (PMC) в Apache Software Foundation через свой инкубатор. [7] Groovy окончил инкубатор Apache и стал проектом высшего уровня в ноябре 2015 года. [15]

7 февраля 2020 года был выпущен Groovy 3.0. [16] Версия 4.0 была выпущена 25 января 2022 года. [17]

Особенности [ править ]

Большинство допустимых файлов Java также являются допустимыми файлами Groovy. Хотя эти два языка похожи, код Groovy может быть более компактным, поскольку ему не нужны все элементы, необходимые Java. [18] Это позволяет Java-программистам постепенно изучать Groovy, начиная со знакомого синтаксиса Java, а затем овладевая другими идиомами программирования Groovy . [19]

Функции Groovy, недоступные в Java, включают как статическую, так и динамическую типизацию (с ключевым словом def), перегрузка операторов , собственный синтаксис для списков и ассоциативных массивов (карт), встроенная поддержка регулярных выражений , полиморфная итерация, интерполяция строк , добавленные вспомогательные методы и оператор безопасной навигации. ?. для автоматической проверки нулевых указателей (например, variable?.method(), или variable?.field). [20]

Начиная с версии 2, Groovy также поддерживает модульность (возможность поставлять только необходимые jar-файлы в соответствии с потребностями проекта, тем самым уменьшая размер библиотеки Groovy), проверку типов, статическую компиляцию, улучшения синтаксиса Project Coin, блоки multicatch и постоянное повышение производительности с использованием invokedynamic инструкция, представленная в Java 7 . [21]

Groovy обеспечивает встроенную поддержку различных языков разметки, таких как XML и HTML , посредством встроенного синтаксиса объектной модели документа (DOM). Эта функция позволяет определять и манипулировать многими типами гетерогенных данных с помощью единообразного и краткого синтаксиса и методологии программирования. [ нужна цитата ]

В отличие от Java, файл исходного кода Groovy может быть выполнен как (нескомпилированный) скрипт , если он содержит код вне какого-либо определения класса, если это класс с основным методом или если он является Runnable или GroovyTestCase . Сценарий Groovy полностью анализируется, компилируется и генерируется перед выполнением (аналогично Python и Ruby). Это происходит скрыто, и скомпилированная версия не сохраняется как артефакт процесса. [22]

GroovyBeans, свойства [ править ]

GroovyBeans от Groovy — это версия JavaBeans . Groovy неявно генерирует геттеры и сеттеры. В следующем коде setColor(String color) и getColor()генерируются неявно. Последние две строки, которые, по-видимому, напрямую обращаются к цвету, на самом деле вызывают неявно сгенерированные методы. [23]

класс   AGroovyBean   { 
   строки   цвет 
 } 

 def   myGroovyBean   =   новый   AGroovyBean  () 

 myGroovyBean  .   setColor  (  'baby blue'  ) 
 утверждает   myGroovyBean  .   getColor  ()   ==   'голубой' 

 myGroovyBean  .   color   =   'олово' 
 утверждает   myGroovyBean  .   цвет   ==   'олово' 

Groovy предлагает простой и согласованный синтаксис для обработки списков и карт Java , напоминающий синтаксис массивов . [24]

def   MovieList   =   [  Дерсу Узала'  '   '  ,   '  ]    массив 
 .   список  но  '  ,   Выглядит как   Семь 
 ,  собой  представляет  '   Ран   самураев    //  Добавляет элемент в список 
 Assert   MovieList  .   size  )   ==   4 

 defmonthMap   Январь   =   [   '   :   31  ,   Февраль   :   28  ,   '   :   31   ]    карту 
 Объявляет   .  '  '  '   '   (    // 
 Март  'April'  ]   =   30    // Добавляет запись на карту 
 Assert   MonthMap  .   размер  ()   ==   4 

Расширение прототипа [ править ]

Groovy предлагает поддержку расширения прототипа посредством ExpandoMetaClass типа Objective-C , Модули расширения (только в Groovy 2), Категории и DelegatingMetaClass. [25]

ExpandoMetaClass предлагает предметно-ориентированный язык (DSL) для простого выражения изменений в классе, аналогично Ruby концепции открытого класса :

Число  .   метакласс   { 
   sqrt   =   {   Math  .   sqrt  (  делегат  )   } 
 } 

 утверждать   9  .   sqrt  ()   ==   3 
 утверждать   4  .   кврт  ()   ==   2 

Изменения кода Groovy в результате прототипирования не видны в Java, поскольку каждый вызов атрибута/метода в Groovy проходит через реестр метаклассов. Доступ к измененному коду можно получить только из Java, перейдя в реестр метаклассов.

Groovy также позволяет переопределять методы, например getProperty(), propertyMissing()среди прочего, позволяя разработчику перехватывать вызовы объекта и указывать для него действие упрощенным аспектно-ориентированным способом. Следующий код включает класс java.lang.String ответить на hex свойство:

enum   Color   { 
   ЧЕРНЫЙ  (  '#000000'  ),   БЕЛЫЙ  (  '#FFFFFF'  ),   RED  (  '#FF0000'  ),   СИНИЙ  (  '#0000FF'  ) 
   String   hex 
   Color  (  String   hex  )   {  
     this  .   шестнадцатеричный   =   шестнадцатеричный  
   } 
 } 

 Строка  .   метакласс  .   getProperty   =   {   Строковое   свойство   -> 
   def   stringColor   =   делегат, 
   если   (  свойство   ==   'hex'  )   { 
     Color  .   ценности  ().   Найди   это   .   имя  ().   EqualsIgnoreCase   stringColor   }?.   hex 
   } 
 } 

 утверждать   «БЕЛЫЙ»  .   hex   ==   "#FFFFFF" 
 утверждает   "СИНИЙ"  .   hex   ==   "#0000FF" 
 утверждает   "ЧЕРНЫЙ"  .   hex   ==   "#000000" 
 утверждает   "ЗЕЛЕНЫЙ"  .   шестнадцатеричный   ==   ноль 

Платформа Grails широко использует метапрограммирование для обеспечения возможности динамического поиска GORM , например User.findByName('Josh') и другие. [26]

Точка и скобки [ править ]

Синтаксис Groovy позволяет в некоторых ситуациях опускать круглые скобки и точки. Следующий заводной код

взять  (  кофе  ).   с  (  сахаром  ,   молоком  ).   и  (  ликер  ) 

можно записать как

пейте   кофе   с   сахаром  ,   молоком   и   ликером 

позволяя разрабатывать предметно-ориентированные языки (DSL), которые выглядят как обычный английский.

Функциональное программирование [ править ]

Хотя Groovy в основном является объектно-ориентированным языком, он также предлагает функционального программирования функции .

Замыкания [ править ]

Согласно документации Groovy: «Замыкания в Groovy работают аналогично «указателю метода», позволяя писать и запускать код в более поздний момент времени». [27] Замыкания Groovy поддерживают свободные переменные, то есть переменные, которые не были явно переданы ему в качестве параметра, но существуют в контексте его объявления, частичном применении (что он называет « каррированием ») . [28] ), делегирование, неявные, типизированные и нетипизированные параметры.

При работе с коллекциями определенного типа можно вывести замыкание, переданное операции над коллекцией:

list   =   [  1  ,   2  ,   3  ,   4  ,   5  ,   6  ,   7  ,   8  ,   9  ] 

 /* 
 * Ненулевые числа приводятся к истине, поэтому, когда % 2 == 0 (четное), это ложь. 
  * Тип неявного параметра «it» может быть выведен средой IDE как целое число. 
  * Это также можно записать так: 
 * list.findAll { Integer i -> i % 2 } 
 * list.findAll { i -> i % 2 } 
 */ 
 def   chances   =   list  .   findAll   {   it   %   2   } 

 утверждает   шансы   ==   [  1  ,   3  ,   5  ,   7  ,   9  ] 

Группа выражений может быть записана в блоке замыкания без ссылки на реализацию, а отвечающий объект может быть назначен позже с помощью делегирования:

// Этот блок кода содержит выражения без ссылки на реализацию 
 def   Operations   =   { 
   объявление   5 
   сумма   4 
   деление   3 
   печать 
 } 
/* 
 * Этот класс будет обрабатывать операции, которые можно использовать в приведенном выше замыкании.   Другой класс 
 * может быть объявлен с теми же методами, но с использованием, например, операций 
 * веб-сервиса в вычислениях. 
  */ 
 class   Expression   { 
   BigDecimal   value 

   /* 
 * Хотя в качестве параметра передается целое число, оно преобразуется в BigDecimal, как было 
 * определено.   Если бы в классе был метод «объявить (целое значение)», вместо него использовался бы он. 
  */ 
   def   декларировать  (  BigDecimal   значение  )   { 
     this  .   значение   =   значение 
   } 
  
   Защита   сумма  (  BigDecimal   valueToAdd  )   { 
     this  .   значение   +=   valueToAdd 
   } 
  
   Защита   разделения  (  BigDecimal   делитель  )   { 
     this  .   значение   /=   делитель 
   } 
  
   def   propertyMissing  (  String   свойство  )   { 
     if   (  property   ==   "print"  )   println   value 
   } 
 } 
// Здесь определяется, кто будет отвечать на выражения в блоке кода выше. 
  операции  .   делегат   =   новое   выражение  () 
 операции  () 

Карри [ править ]

Обычно называется частичным применением , [28] эта функция Groovy позволяет устанавливать для параметров замыканий значение по умолчанию в любом из их аргументов, создавая новое замыкание со связанным значением. Предоставление одного аргумента curry()метод исправит первый аргумент. Предоставление N аргументов зафиксирует аргументы 1 .. N.

def   joinTwoWordsWithSymbol   =   {   символ  ,   первый  ,   второй   ->   первый   +   символ   +   второй   } 
 Assert   joinTwoWordsWithSymbol  (  '#'  ,   'Hello'  ,   'World'  )   ==   'Hello#World' 

 def   concatWords   =   joinTwoWordsWithSymbol  .   curry  (  ' '  ) 
 Assert   concatWords  (  'Hello'  ,   'World'  )   ==   'Hello World' 

 def   prependHello   =   concatWords  .   curry  (  'Hello'  ) 
 //def prependHello = joinTwoWordsWithSymbol.curry(' ', 'Hello') 
 Assert   prependHello  (  'World'  )   ==   'Hello World' 

Карри также можно использовать в обратном направлении (фиксируя последние N аргументов), используя rcurry().

def   power   =   {   BigDecimal   значение  ,   BigDecimal   power   -> 
   значение  **  power 
 } 

 def   Square   =   power  .   rcurry  (  2  ) 
 def   куб   =   мощность  .   rcurry  (  3  ) 

 утверждает   силу  (  2  ,   2  )   ==   4 
 утверждает   квадрат  (  4  )   ==   16 
 утверждает   куб  (  3  )   ==   27 

Groovy также поддерживает отложенное вычисление . [29] [30] уменьшить/сложить , [31] бесконечные структуры и неизменяемость , [32] среди других. [33]

Обработка JSON и XML [ править ]

При нотации объектов JavaScript ( JSON ) и обработке XML Groovy использует шаблон Builder , что делает создание структуры данных менее многословным. Например, следующий XML:

<languages> 
   <language   Year=  "1995"  > 
     <name>  Java  </name> 
     <paradigm>  объектно-   ориентированный  </paradigm> 
     <typing>  статический  </typing> 
   </language> 
   <language   Year=  "1995"  > 
     <name >  Ruby  </name> 
     <paradigm>  функциональный,   объектно-   ориентированный  </paradigm> 
     <typing>  утиная   типизация,   динамическая  </typing> 
   </language> 
   <languageyear   =  "2003"  > 
     <name>  Groovy  </name> 
     <paradigm >  функциональный,   объектно-   ориентированный  </paradigm> 
     <typing>  утиная   типизация,   динамическая,   статическая  </typing> 
   </language> 
 </languages> 

можно сгенерировать с помощью следующего кода Groovy:

Защитный   писатель   =   новый   StringWriter  () 
 Защитный   строитель   =   новый   отличный  .   xml  .  MarkupBuilder  (  писатель  ) 
  Построитель  .   языки   { 
   язык  (  год:   1995  )   { 
     название   "Java" 
     парадигма   "объектно-ориентированная" 
     типизация   "статическая" 
   } 
   язык   (  год:   1995  )   { 
     имя   "Рубин" 
     парадигма   "функциональная, объектно-ориентированная" 
     типизация   "утиная типизация, динамическая" 
   } 
   язык   (  год:   2003  )   { 
     название   "Groovy" 
     парадигма   "функциональная, объектно-ориентированная" 
     типизация   "утиная типизация, динамическая, статическая" 
   } 
 } 

а также может обрабатываться потоковым способом через StreamingMarkupBuilder. Чтобы изменить реализацию на JSON, MarkupBuilder можно поменять на JsonBuilder. [34]

Чтобы проанализировать его и найти функциональный язык, Groovy's findAll метод может служить:

 def  языки   =   новый   XmlSlurper  ().  parseText    автор  .   toString  () 

 // Здесь используется синтаксис регулярных выражений Groovy для средства сопоставления (=~), которое будет приведено 
 // к логическому значению: либо true, если значение содержит нашу строку, либо false в противном случае. 
  def   функциональный   =   языки  .   язык  .   findAll   {   это  .   парадигма   =~   "функционал"   } 
 утверждать   функционал  .   собирать   его   .   name   }   ==   [  "Groovy"  ,   "Ruby"  ] 

Строковая интерполяция [ править ]

В Groovy строки можно интерполировать с помощью переменных и выражений с помощью GStrings: [35]

BigDecimal   account   =   10.0 
 def   text   =   "Счет в настоящее время показывает баланс в размере $account" 
 submit   text   ==   "Счет в настоящее время показывает баланс в размере 10,0" 

GStrings, содержащие переменные и выражения, должны быть объявлены с использованием двойных кавычек.

Сложное выражение должно быть заключено в фигурные скобки. Это предотвращает интерпретацию его частей как принадлежащих окружающей строке, а не выражению:

BigDecimal   minus   =   4.0 
 text   =   "Счет в настоящее время показывает баланс ${account - minus}" 
 Assert   text   ==   "Счет показывает текущий баланс 6,0" 

 // Без скобок, изолирующих выражение, это привело бы к следующему: 
 текст   =   "Счет в настоящее время показывает баланс в размере $account - минус" 
 Assert   text   ==   "Счет в настоящее время показывает баланс в размере 10,0 - минус" 

Вычисление выражения можно отложить, используя синтаксис стрелок:

BigDecimal   Tax   =   0.15 
 text   =   "На счете в настоящее время отображается баланс в размере ${->account - account*tax}" 
 налог   =   0.10 

 // Значение налога было изменено ПОСЛЕ объявления GString.   // Переменные выражения 
 привязываются только тогда, когда выражение 
 :   вычислить   необходимо   действительно 

Преобразование абстрактного синтаксического дерева [ править ]

Согласно собственной документации Groovy: «Когда компилятор Groovy компилирует сценарии и классы Groovy, в какой-то момент процесса исходный код будет представлен в памяти в форме конкретного синтаксического дерева, а затем преобразован в абстрактное синтаксическое дерево». Цель преобразований AST — предоставить разработчикам возможность подключиться к процессу компиляции, чтобы иметь возможность изменять AST до того, как он будет преобразован в байт-код, который будет выполняться JVM. Преобразования AST предоставляют Groovy улучшенные возможности метапрограммирования во время компиляции, обеспечивая высокую гибкость. на уровне языка, без снижения производительности во время выполнения». [36]

Примеры AST в Groovy:

  • категорий и миксинов Преобразование
  • Неизменяемый макрос AST
  • Новая трансформация
  • Синглтон-преобразование

среди других.

Среда тестирования Spock использует преобразования AST, чтобы позволить программисту писать тесты с синтаксисом, не поддерживаемым Groovy, но затем соответствующий код обрабатывается в AST для получения допустимого кода. [37] Пример такого теста:

def   "максимум #a и #b равен #c"   ()   { 
   ожидаем: 
   Math  .   max   (  a  ,   b  )   ==   c 

   где: 
   a   |    б   ||    с 
   3   |    5   ||    5 
   7   |    0   ||    7 
   0   |    0   ||    0 
 } 

Черты [ править ]

Согласно документации Groovy, « Трейты — это структурная конструкция языка, которая позволяет: композицию поведений, реализацию интерфейсов во время выполнения, переопределение поведения и совместимость со статической проверкой/компиляцией типов».

Трейты можно рассматривать как интерфейсы , несущие как реализации по умолчанию, так и состояние. Признак определяется с помощью ключевого слова типажа:

типаж   FlyingAbility   {   /* объявление признака */ 
   String   fly  ()   {   "Я летаю!"    }   /* объявление метода внутри типажа */ 
 } 

Затем его можно использовать как обычный интерфейс, используя ключевое слово implements:

class   Bird   реализует   FlyingAbility   {}   /* Добавляет признак FlyingAbility к возможностям класса Bird */ 
 =   (   new   Bird   )  /   * создает экземпляр нового Bird */ 
 Assertbird   defbird  .   летать  ()   ==   "Я лечу!"    /* класс Bird автоматически получает поведение черты FlyingAbility */ 

Черты позволяют использовать широкий спектр способностей: от простого составления до тестирования.

Принятие [ править ]

Яркие примеры внедрения Groovy включают в себя:

  • Adaptavist ScriptRunner включает реализацию Groovy для автоматизации и расширения инструментов Atlassian , которые используются более чем 20 000 организациями по всему миру. [38] [39]
  • Apache OFBiz , (ERP) с открытым исходным кодом система планирования ресурсов предприятия , использует Groovy. [40] [41]
  • Eucalyptus , система управления облаком, в значительной степени использует Groovy.
  • Gradle — популярный инструмент автоматизации сборки с использованием Groovy.
  • LinkedIn использует Groovy и Grails для некоторых своих подсистем. [42]
  • LogicMonitor, облачная платформа мониторинга, использует Groovy в источниках данных на основе сценариев. [43]
  • Jenkins , платформа для непрерывной интеграции . В версию 2 Jenkins включает плагин Pipeline , который позволяет писать инструкции сборки в Groovy. [44]
  • Liferay использует groovy в своем рабочем процессе Kaleo.
  • Sky.com использует Groovy и Grails для обслуживания огромного онлайн-медиа-контента. [45]
  • SmartThings , открытая платформа для умных домов и потребительского Интернета вещей , использует ориентированное на безопасность подмножество Groovy. [46]
  • SoapUI предоставляет Groovy в качестве языка для разработки тестов веб-сервисов. [47]
  • Survata , стартап по исследованию рынка, использует Groovy и Grails. [ нужна цитата ]
  • Европейское патентное ведомство (ЕПВ) разработало язык программирования потоков данных на Groovy, «чтобы использовать сходство процессов взаимодействия с патентными ведомствами каждой отдельной страны и преобразовать их в единый универсальный процесс». [ нужна цитата ]
  • Хотя Groovy можно интегрировать в любую среду JVM, среда JBoss Seam предоставляет Groovy, помимо Java, в качестве языка разработки «из коробки». [48]
  • vCalc.com использует Groovy для всей заданной пользователем математики в своем математическом механизме краудсорсинга. [49]
  • Wired.com использует Groovy и Grails для отдельного раздела веб-сайта «Обзоры продуктов». [50]
  • XWiki SAS использует Groovy в качестве языка сценариев в своем совместном продукте с открытым исходным кодом. [51]

Поддержка IDE [ править ]

Многие интегрированные среды разработки (IDE) и текстовые редакторы поддерживают Groovy:

Диалекты [ править ]

Существует одна альтернативная реализация Groovy:

См. также [ править ]

Ссылки [ править ]

Цитаты [ править ]

  1. ^ «Выпуск 4.0.21» . 6 апреля 2024 г. Проверено 23 апреля 2024 г.
  2. ^ «Релизы — apache/groovy» . Проверено 9 апреля 2020 г. - через GitHub .
  3. ^ «Groovy Goodness: расширения файлов сценариев Groovy по умолчанию» .
  4. ^ «Производительность Groovy 2.0 по сравнению с Java» . 25 августа 2012 г.
  5. ^ «Простой тест производительности Java, Groovy2.0 и Scala» . 10 июля 2012 г. Архивировано из оригинала 10 декабря 2012 г. Проверено 7 октября 2012 г.
  6. ^ Перейти обратно: а б «Groovy 2.4 и Grails 3.0 станут последними крупными релизами под основной спонсорской поддержкой» . 19 января 2015 г.
  7. ^ Перейти обратно: а б «Groovy присоединяется к инкубатору Apache» . 11 марта 2015 г.
  8. ^ Джеймс Страчан (29 августа 2003 г.). «Groovy — рождение нового динамического языка для платформы Java» . Архивировано из оригинала 1 сентября 2003 года.
  9. ^ Перейти обратно: а б «Процесс сообщества Java JSR 241» .
  10. ^ «Groovy получает первый приз на премии за инновации JAX 2007» . 26 апреля 2007 г. Архивировано из оригинала 13 мая 2015 г. Проверено 7 октября 2012 г.
  11. ^ «Говорят, за чашкой кофе многое может случиться» . Архивировано из оригинала 19 апреля 2011 г. Проверено 7 октября 2012 г.
  12. ^ «SpringSource приобретает компанию Groovy and Grails (G2One)» . 11 ноября 2008 г.
  13. ^ «VMWare приобретает SpringSource» . 10 августа 2009 г.
  14. ^ «Твит от Джеймса Страчана» . 24 ноября 2016 года . Проверено 24 ноября 2016 г.
  15. ^ «Объявление в списке рассылки разработчиков» .
  16. ^ «Выпуск GROOVY_3_0_0 · apache/groovy» . Гитхаб . Проверено 27 марта 2024 г.
  17. ^ «Выпуск GROOVY_4_0_0 · apache/groovy» . Гитхаб . Проверено 27 марта 2024 г.
  18. ^ Кинг 2007, стр. 32
  19. ^ «Руководство по стилю Groovy и функциям языка для разработчиков Java» . Groovy.codehaus.org. Архивировано из оригинала 17 января 2015 г. Проверено 22 января 2015 г.
  20. ^ «Groovy – Отличия от Java» . Groovy.codehaus.org. Архивировано из оригинала 17 марта 2009 г. Проверено 12 августа 2013 г.
  21. ^ «Что нового в Groovy 2.0?» . 28 июня 2012 г.
  22. ^ Кинг 2007, стр. 37-8.
  23. ^ Кинг 2007, стр. 38-9.
  24. ^ Кинг 2007, стр. 41-3.
  25. ^ «JN3525-Метаклассы» . Архивировано из оригинала 1 октября 2012 г. Проверено 7 октября 2012 г.
  26. ^ «Метапрограммирование в Groovy и Grails» . 11 июня 2009 г.
  27. ^ «Groovy — Замыкания» . Архивировано из оригинала 22 мая 2012 г.
  28. ^ Перейти обратно: а б «Называет ли groovy частичное приложение каррированием », 10 августа 2013 г.
  29. ^ «Groovy — ленивая трансформация» . Архивировано из оригинала 8 октября 2012 г. Проверено 7 октября 2012 г.
  30. ^ «Примечания: ленивые списки в Groovy» . 3 февраля 2011 г.
  31. ^ «Сгиб Груви» . 20 июня 2011 г. Архивировано из оригинала 13 февраля 2015 г. Проверено 12 февраля 2015 г.
  32. ^ «Функциональное программирование с помощью Groovy» . 5 ноября 2011 г.
  33. ^ «Программирование функций в Groovy» . Архивировано из оригинала 8 октября 2012 г. Проверено 7 октября 2012 г.
  34. ^ «ДжсонБилдер» . Архивировано из оригинала 2 октября 2012 г. Проверено 7 октября 2012 г.
  35. ^ «Groovy Strings — разные способы их создания» . 26 декабря 2009 г.
  36. ^ «Метапрограммирование во время компиляции — преобразования AST» . Архивировано из оригинала 14 октября 2012 г. Проверено 7 октября 2012 г.
  37. ^ Кинг, Пол (2020). «История языка программирования Groovy» . Учеб. Программа АКМ. Ланг . 4:53 . дои : 10.1145/3386326 .
  38. ^ «Документация ScriptRunner» .
  39. ^ «Пресс-релиз ScriptRunner со статистикой внедрения» .
  40. ^ «Groovy DSL для бизнес-логики OFBiz» . Открытая вики проекта Apache OFBiz .
  41. ^ «Примеры простых методов с использованием Groovy» . Открытая вики проекта Apache OFBiz .
  42. ^ «Грааль в LinkedIn» . Проверено 2 июня 2015 г.
  43. ^ «Встроенные сценарии Groovy» . www.logicmonitor.com . Проверено 20 ноября 2020 г.
  44. ^ «Пайплайн Дженкинса» .
  45. ^ Роше, Грэм (2 октября 2008 г.). «Блог Грэма Роше: перезапуск Sky.com, написанного на Grails» . Блог Грэма Роше . Проверено 2 июня 2015 г.
  46. ^ Анализ безопасности новых приложений для умного дома.
  47. ^ «Сценарии и библиотека сценариев | Сценарии и свойства» . www.soapui.org . Проверено 2 июня 2015 г.
  48. ^ «Глава 11. Groovy-интеграция» . docs.jboss.org . Проверено 2 июня 2015 г.
  49. ^ «vCalc, первая в истории социальная платформа для мира математики» . 4 ноября 2014 года . Проверено 5 мая 2016 г.
  50. ^ «Wired.Com» (PDF) . www.springsource.org . Проверено 2 июня 2015 г.
  51. ^ «XWiki SAS» (PDF) . www.springsource.org . Проверено 2 июня 2015 г.
  52. ^ «Документация Grooscript» . 12 сентября 2016 г. Архивировано из оригинала 28 июня 2017 г. . Проверено 4 июля 2017 г.
  53. ^ «Презентация Grooscript на SpringOne/2GX» . 13 декабря 2015 г.
  54. ^ «Онлайн-конверсии Grooscript» . 15 мая 2017 года. Архивировано из оригинала 9 июля 2017 года . Проверено 4 июля 2017 г.

Источники [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 42908B49CC34971896DE17EE3846ED55__1711585380
URL1:https://en.wikipedia.org/wiki/Groovy_(programming_language)
Заголовок, (Title) документа по адресу, URL1:
Apache Groovy - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)