Groovy

Groovy - об'єктно-орієнтована мова програмування розроблений для платформи Java як доповнення до мови Java з можливостями Python, Ruby і Smalltalk.

Groovy використовує Java-подібна синтаксис з динамічної компіляцією в JVM байт-код і напряму працює з іншим Java кодом і бібліотеками. Мова може використовуватися в будь-якому Java проекті або як скриптова мова.

Groovy завершив процес стандартизації в Java Community Process JSR 241.

Можливості Groovy (відрізняють його від Java):


1. Приклад

 class  Foo  {  def  doSomething  (  )  {  def  data  =  [  "Name"  :  "James"  ,  "Location"  :  "London"  ]  for  (  e  in  data  )  {  println  (  "Entry $ {e.key} is $ {e.value}"  )  }  }  def  closureExample  (  collection  )  {  collection.  each  {  println  (  "Value $ {it}"  )  }  }  static  void  main  (  args  )  {  def  values  =  [  1  ,  2  ,  3  ,  "Abc"  ]  def  foo  =  new  Foo  (  )  foo.  closureExample  (  values  )  foo.  doSomething  (  )  }  } 

2. Особливості роботи

Установка Groovy

Groovlets - можливість запускати скрипти на Groovy як сервлети.

GroovyBeans - версія Groovy для JavaBeans.

На відміну від Java, в Groovy вихідний код може бути виконаний як звичайний скрипт, якщо містить код поза визначення класу або клас з методом main або Runnable або GroovyTestCase:

 #! / Usr / bin / env groovy  println  "I can execute this script now!" 

Рядки в Groovy: Java Strings з одинарними лапками і GStrings з подвійними лапками.

 def  javaStyleString  =  'Java String style'  def  GStringsStyleString  =  "$ {JavaStyleString}"  def  j  =  '$ {JavaStyleString}'  def  bigGroovyString  =  "" "$ {JavaStyleString} $ {GStringsStyleString}" ""  println  bigGroovyString 

Groovy неявно генерує методи для доступу до змінних (setColor (String color) і getColor ()):

 class  AGroovyBean  {  String  color  }  def  myGroovyBean  =  new  AGroovyBean  (  )  myGroovyBean.  setColor  (  'Blue'  )  assert  myGroovyBean.  getColor  (  )  ==  'Blue'  myGroovyBean.  color  =  'Green'  assert  myGroovyBean.  color  ==  'Green' 

Groovy пропонує простий і послідовний доступ до списків, карт і масивів:

 def  myList  =  [  'One'  ,  'Two'  ,  'Three'  ]  / / Виглядає як масив, але це список  assert  myList  [  2  ]  ==  'Three'  myList  [  3  ]  =  'Four'  / / Додаємо елемент у список  assert  myList.  size  (  )  ==  4  def  monthMap  =  [  'January'  :  31  ,  'February'  :  28  ,  'March'  :  31  ]  / / Визначаємо карту  assert  monthMap  [  'March'  ]  ==  31  monthMap  [  'April'  ]  =  30  / / Додаємо елемент в карту  assert  monthMap.  size  (  )  ==  4 

Closure (замикання) - це анонімна функція і обьект в одному виді:

 def  closureFunction  =  {  a, b  ->  println  a  println  b  }  closureFunction  (  1  ,  2  ) 

return у функції вказувати не обов'язково - за замовчуванням буде повернуто значення останньої згаданої змінної.

Незмінні класи маркуються за допомогою анотації Immutable:

 @ Immutable  class  ImmutableClass  {  String  stringVariable  Integer  integerVariable  }  def  newVariable  =  new  ImmutableClass  (  stringVariable:  "Some string"  , IntegerVariable:  23  ) 

3. Історія

Першою згадкою про мову Groovy було в повідомлення в блозі Джеймса Стречі ( англ. James Strachan (programmer) ) [1] від серпня 2003 року. Пізніше було випущено кілька версій між 2004 і 2006 роками. Після того, як почався процес стандартизації JCP, нумерація версій була змінена, і версію називають "1.0". Версія "1.0" була випущена 2 січня 2007. В грудні 2007 року вийшов Groovy 1.1, ця версія незабаром була перенумерувати як "1.5" внаслідок значних змін у мові.

Стречі покинув проект за рік до релізу Groovy 1.0 в 2007 році, а в липні 2009 року Стречі написав у своєму блозі, що можливо не створив би Groovy, якби в 2003 році прочитав книгу Мартіна Одерського ( англ. Martin Odersky ) Зі співавторами про програмування на мовою Scala (що вийшла в 2007 році) [2].

Проект розробки мови і комітет JSR-241 з 2007 року очолює Гійом Лафорж (Guillaume Laforge).


4. Підтримка IDE

Програмування на Groovy підтримується в основних інтегрованих середовищах розробки програмного забезпечення [3], зокрема:

  • IntelliJ IDEA починаючи з версії 7 або для більш ранніх версій з використанням JetGroovy Plugin;
  • Eclipse з використанням Groovy Eclipse;
  • Netbeans - вбудований в NetBeans IDE.

5. Використання Groovy

Останні версії генератора звітів iReport, заснованого на java -бібліотеці JasperReports, дозволяють вбудовувати в звіти вирази на Groovy і писати на ньому додаткову логіку.

Система безперервної інтеграції Hudson дозволяє використовувати сценарії автоматизації, створені на Groovy.

Примітки

  1. James Strachan. Groovy - the birth of a new dynamic language for the Java platform - radio.weblogs.com/0112098/2003/08/29.html
  2. Scala as the long term replacement for java / javac? - macstrac.blogspot.com/2009/04/scala-as-long-term-replacement-for.html (July 6, 2009). Читальний - www.webcitation.org/ 65LY4r0wg з першоджерела 10 лютого 2012. "I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy"
  3. Список підтримуваних IDE - groovy.codehaus.org / IDE Support на офіційному сайті Groovy - groovy.codehaus.org