skip to main content
research-article
Open Access

A history of the Groovy programming language

Published:12 June 2020Publication History
Skip Abstract Section

Abstract

This paper describes the history of the Groovy programming language. At the time of Groovy’s inception, Java was a dominant programming language with a wealth of useful libraries. Despite this, it was perceived by some to be evolving slowing and to have shortcomings for scripting, rapid prototyping and when trying to write minimalistic code. Other languages seemed to be innovating faster than Java and, while overcoming some of Java’s shortcomings, used syntax that was less familiar to Java developers. Integration with Java libraries was also non-optimal.

Groovy was created as a complementary language to Java—its dynamic counterpart. It would look and feel like Java but focus on extensibility and rapid innovation. Groovy would borrow ideas from dynamic languages like Ruby, Python and Smalltalk where needed to provide compelling JVM solutions for some of Java’s shortcomings.

Groovy supported innovation through its runtime and compile-time metaprogramming capabilities. It supported simple operator overloading, had a flexible grammar and was extensible. These characteristics made it suitable for growing the language to have new commands (verbs) and properties (nouns) specific to a particular domain, a so called Domain Specific Language (DSL). While still intrinsically linked with Java, over time Groovy has evolved from a niche dynamic scripting language into a compelling mainstream language.

After many years as a principally dynamically-typed language, a static nature was added to Groovy. Code could be statically type checked or when dynamic features weren’t needed, they could be turned off entirely for Java-like performance. A number of nuances to the static nature came about to support the style of coding used by Groovy developers.

Many choices made by Groovy in its design, later appeared in other languages (Swift, C#, Kotlin, Ceylon, PHP, Ruby, Coffeescript, Scala, Frege, TypeScript and Java itself). This includes Groovy’s dangling closure, Groovy builders, null-safe navigation, the Elvis operator, ranges, the spaceship operator, and flow typing. For most languages, we don’t know to what extent Groovy played a part in their choices. We do know that Kotlin took inspiration from Groovy’s dangling closures, builder concept, default it parameter for closures, templates and interpolated strings, null-safe navigation and the Elvis operator.

The leadership, governance and sponsorship arrangements of Groovy have evolved over time, but Groovy has always been a successful highly collaborative open source project driven more by the needs of the community than by a vision of a particular company or person.

References

  1. Tiago Antao. 2008. Chloroquine malaria treatment and Groovy (DSL tactics in Groovy 2). Archived at http://web.archive.org/web/20080302023038/https://tiago.org/ps/2008/02/27/chloroquine-malaria-treatment-andgroovy-dsl-tactics-in-groovy-2/Google ScholarGoogle Scholar
  2. Tiago Antao, Ian Hastings, and Peter McBurney. 2008. Ronald: A Domain-Specific Language to Study the Interactions Between Malaria Infections and Drug Treatments. Las Vegas, USA (Jan.), 747–752. Proceedings of the 2008 International Conference on Bioinformatics and Computational Biology, BIOCOMP 2008 (Jan.).Google ScholarGoogle Scholar
  3. ASF 2020a. The Apache Software Foundation (website). non-archival https://www.apache.org/ (also at Internet Archive 10 March 2020 11:41:12 ).Google ScholarGoogle Scholar
  4. ASF 2020b. The Apache Software Foundation Briefing: The Apache Way. non-archival https://www.apache.org/ theapacheway/ (also at Internet Archive 18 Feb. 2020 08:55:52 ).Google ScholarGoogle Scholar
  5. ASF 2020c. The Apache Software Foundation: Corporate Governance Overview. non-archival https://www.apache.org/ foundation/governance/ (also at Internet Archive 18 Feb. 2020 12:12:40 ).Google ScholarGoogle Scholar
  6. Beanshell 2020. The Beanshell scripting language (website). non-archival https://beanshell.github.io/ (also at Internet Archive 8 March 2020 11:21:39 ).Google ScholarGoogle Scholar
  7. Joshua Bloch. 2017. Effective Java (3 ed.). Addison-Wesley, Boston, MA, USA.Google ScholarGoogle Scholar
  8. BSF 2020. Apache Commons Bean Scripting Framework (website). non-archival https://commons.apache.org/proper/ commons-bsf/ (also at Internet Archive 18 Feb. 2020 06:52:52 ).Google ScholarGoogle Scholar
  9. Muffy Calder, Mario Kolberg, Evan H. Magill, and Stephan Reiff-Marganiec. 2003. Feature interaction: a critical review and considered forecast. Computer Networks (Amsterdam, Netherlands: 1999) 41, 1 (15 Jan.), 115–141.Google ScholarGoogle Scholar
  10. Codehaus. 2015. The Codehaus governance manifesto. Archived at https://web.archive.org/web/20151201153729/http: //www.codehaus.org/history/manifesto/Google ScholarGoogle Scholar
  11. CommonsMath 2020a. Apache Commons Math: Java mathematics library (website). non-archival http://commons.apache. org/proper/commons-math/ (also at Internet Archive 18 Feb. 2020 11:03:36 ).Google ScholarGoogle Scholar
  12. CommonsMath 2020b. Real Matrix class usage (Apache Commons Math documentation). non-archival http://commons. apache.org/proper/commons-math/userguide/linear.html#a3.2_Real_matrices (retrieved 16 Feb. 2020; also at Internet Archive 21 Aug. 2019 14:04:05 ).Google ScholarGoogle Scholar
  13. Conservancy. 2020. Software Freedom Conservancy (website). non-archival https://sfconservancy.org/ (also at Internet Archive 5 March 2020 20:05:19 ).Google ScholarGoogle Scholar
  14. Devcon3 2007. Groovy Developer Conference 3, 29th and 30th Jan 2007, Paris, France (meeting minutes). Archived at https://web.archive.org/web/20150521060610/https://docs.codehaus.org/display/GroovyJSR/GDC+3+reportGoogle ScholarGoogle Scholar
  15. Devcon4 2007. Groovy Developer Conference 4, 15th and 16th Oct 2007, London, UK (meeting minutes). Archived at https://web.archive.org/web/20150521060611/https://docs.codehaus.org/display/GroovyJSR/GDC4+DiscussionsGoogle ScholarGoogle Scholar
  16. Devcon5 2009. Groovy Developer Conference 5, 11-15th May 2009, Paris, France (meeting minutes). Archived at https://web.archive.org/web/20150520235115/https://docs.codehaus.org/display/GroovyJSR/Groovy+DevCon+5Google ScholarGoogle Scholar
  17. Devcon6 2011. Groovy Developer Conference 6, 16th and 20th May 2011, Copenhagen, Denmark (meeting minutes). Archived at https://web.archive.org/web/20150521060613/http://docs.codehaus.org/display/GroovyJSR/Groovy+DevCon+6Google ScholarGoogle Scholar
  18. Devcon7 2012. Groovy Developer Conference 7, 6th and 7th Jun 2012, Copenhagen, Denmark (meeting minutes). Archived at https://web.archive.org/web/20150521060612/https://docs.codehaus.org/display/GroovyJSR/Groovy+DevCon+7Google ScholarGoogle Scholar
  19. Devcon8 2013. Groovy Developer Conference 8, 21st and 22nd May 2013, Patris, France (meeting minutes). non-archival https://docs.google.com/document/d/1mGxfLR8gNm5v-HTGztozlDBmDiR70yZYdHZnCA1yiE8/ edit?usp=sharing Archived at https://web.archive.org/web/20200301020012/https://docs.google.com/document/d/ 1mGxfLR8gNm5v-HTGztozlDBmDiR70yZYdHZnCA1yiE8/editGoogle ScholarGoogle Scholar
  20. Devcon9 2013. Groovy Developer Conference 9, 10th and 11th Dec 2013, (meeting minutes). non-archival https: //docs.google.com/document/u/1/d/16tNNNvW4Ihxb-6Cw_JD4IIcukqccAPui_wC-nf4UAxA/pub (also at Internet Archive 29 Feb. 2020 14:22:11 ).Google ScholarGoogle Scholar
  21. Devcon10 2014. Groovy Developer Conference 10, 5th Jun 2014, Copenhagen, Denmark. Meeting minutes. nonarchival https://docs.google.com/document/d/18axejowbqSZuWF-06bEzx63FqhygmNHUuKx65i14EWU/edit?pli=1# heading=h.pd7xybm87okp Archived at https://web.archive.org/web/20200229143311/https://docs.google.com/document/ d/18axejowbqSZuWF-06bEzx63FqhygmNHUuKx65i14EWU/edit?pli=1%23heading%3Dh.pd7xybm87okpGoogle ScholarGoogle Scholar
  22. Eclipse. 2020. Eclipse Foundation (website). non-archival https://eclipse.org Archived at https://web.archive.org/web/ 20200307215618/https://www.eclipse.org/Google ScholarGoogle Scholar
  23. Frege. 2013. Frege: Haskell-like language for the JVM (website). non-archival https://github.com/Frege/frege (also at Internet Archive 7 Jan. 2020 09:31:58 ).Google ScholarGoogle Scholar
  24. Richard P. Gabriel. 1994. Lisp: Good News Bad News How to Win Big. AI Expert 6, 31–39.Google ScholarGoogle Scholar
  25. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. GEP-6 2010. GEP: NIO.2 Support for Groovy. Apache Groovy website. non-archival https://groovy.apache.org/wiki/GEP-6.html (also at Internet Archive 13 March 2020 13:20:14 ).Google ScholarGoogle Scholar
  27. GEP-8 2011. GEP: Static type checking. Apache Groovy website. non-archival https://groovy.apache.org/wiki/GEP-8.html (also at Internet Archive 10 March 2020 11:26:13 ).Google ScholarGoogle Scholar
  28. GEP-10 2011. GEP: Static compilation. Apache Groovy website. non-archival https://groovy.apache.org/wiki/GEP-10.html (also at Internet Archive 13 March 2020 12:30:59 ).Google ScholarGoogle Scholar
  29. GEP-12 2013. GEP: SAM coercion. Apache Groovy website. non-archival https://groovy.apache.org/wiki/GEP-12.html (also at Internet Archive 13 March 2020 13:39:28 ).Google ScholarGoogle Scholar
  30. GEPs. 2020. List of Groovy Enhancement Proposals (website). non-archival http://groovy.apache.org/wiki/geps.html (also at Internet Archive 12 March 2020 14:57:50 ).Google ScholarGoogle Scholar
  31. Jeremy Gibbons. 2010. Design Patterns as Higher-Order Datatype-Generic Programs. 36. non-archival http://www.comlab. ox.ac.uk/jeremy.gibbons/publications/hodgp-journal.pdf Archived at https://web.archive.org/web/20170813032800/http: //www.cs.ox.ac.uk/jeremy.gibbons/publications/hodgp-journal.pdf Submitted for publication; revised version of the WGP2006 paper.Google ScholarGoogle Scholar
  32. Goodtimes 2017. Goodtimes: java.time extensions library for Groovy (website). non-archival https://github.com/bdkosher/ goodtimes (also at Internet Archive 13 June 2018 00:40:49 ).Google ScholarGoogle Scholar
  33. Gradle 2020. Gradle build tool (website). non-archival https://gradle.org/ (also at Internet Archive 7 March 2020 09:59:16 ).Google ScholarGoogle Scholar
  34. Grengine 2020. Grengine embedded Groovy engine (website). non-archival http://grengine.ch Archived at https: //web.archive.org/web/20190111170918/https://grengine.ch/Google ScholarGoogle Scholar
  35. Griffon 2020. Griffon: desktop application development platform for the JVM (website). non-archival http://griffonframework.org/ (also at Internet Archive 27 Aug. 2019 19:39:46 ).Google ScholarGoogle Scholar
  36. Groovy 2020. Groovy documentation. Apache Groovy project website. non-archival https://groovy-lang.org/ documentation.html (also at Internet Archive 14 Feb. 2020 01:59:18 ).Google ScholarGoogle Scholar
  37. GROOVY-1884 2008. GEP: Adding Bound Properties to GroovyBeans. Apache Groovy issue tracker. non-archival https://issues.apache.org/jira/browse/GROOVY-1884 (also at Internet Archive 4 March 2020 15:16:33 ).Google ScholarGoogle Scholar
  38. GROOVY-3425 2009. New feature: Power Assertions. Apache Groovy issue tracker. non-archival https://issues.apache. org/jira/browse/GROOVY-3425 (also at Internet Archive 28 Feb. 2020 06:09:48 ).Google ScholarGoogle Scholar
  39. GROOVY-8329 2009. New feature: Consider statically typed/compiled as default for Groovy 3.0. Apache Groovy issue tracker. non-archival https://issues.apache.org/jira/browse/GROOVY-8329 (also at Internet Archive 4 March 2020 15:20:08 ).Google ScholarGoogle Scholar
  40. InfoQ. 2015. The Demise of Open Source Hosting Providers Codehaus and Google Code. non-archival https://www.infoq. com/news/2015/03/codehaus-google-code (also at Internet Archive 6 April 2017 09:25:54 ).Google ScholarGoogle Scholar
  41. Jenkins 2020a. Grails web application framework (website). non-archival https://grails.org/ (also at Internet Archive 27 Feb. 2020 19:20:13 ).Google ScholarGoogle Scholar
  42. Jenkins 2020b. Jenkins build automation server (website). non-archival https://jenkins.io/ (also at Internet Archive 8 March 2020 20:58:10 ).Google ScholarGoogle Scholar
  43. JEP 118 2015. JEP 118: Access to Parameter Names at Runtime. non-archival http://openjdk.java.net/jeps/118 (also at Internet Archive 25 July 2019 12:03:12 ).Google ScholarGoogle Scholar
  44. JEP 120 2015. JEP 120: Repeating Annotations. non-archival http://openjdk.java.net/jeps/120 (also at Internet Archive 14 Aug. 2019 03:50:59 ).Google ScholarGoogle Scholar
  45. JSR 223 2006. JSR 223: Scripting for the Java™Platform. non-archival https://www.jcp.org/en/jsr/detail?id=223 Archived at https://web.archive.org/web/20200103154145/https://jcp.org/en/jsr/detail?id=223Google ScholarGoogle Scholar
  46. JSR 241 2004. JSR 241: The Groovy Programming Language. non-archival https://www.jcp.org/en/jsr/detail?id=241 (also at Internet Archive 5 Dec. 2019 17:11:17 ).Google ScholarGoogle Scholar
  47. JSR 308 2014. JSR 308: Annotations on Java Types. non-archival https://jcp.org/en/jsr/detail?id=308 (also at Internet Archive 9 Aug. 2019 08:15:51 ).Google ScholarGoogle Scholar
  48. JSR 310 2014. JSR 310: Date and Time API. non-archival https://www.jcp.org/en/jsr/detail?id=310 (also at Internet Archive 19 Oct. 2019 04:25:09 ).Google ScholarGoogle Scholar
  49. Michael Kimberlin. 2010. Reducing Boilerplate Code with Project Lombok. non-archival https://objectcomputing.com/ resources/publications/sett/january-2010-reducing-boilerplate-code-with-project-lombok (also at Internet Archive 27 Feb. 2020 12:16:16 ).Google ScholarGoogle Scholar
  50. Dierk König, Paul King, Guillaume Laforge, Hamlet D’Arcy, Cédric Champeau, Erik Pragt, and Jon Skeet. 2015. Groovy in Action (2nd ed.). Manning Publications Co., Greenwich, CT, USA.Google ScholarGoogle Scholar
  51. Guillaume Laforge. 2007a. Groovy 1.0 is there! Groovy org.codehaus.groovy.jsr mailing list. 2 Jan. 2007. non-archival http://markmail.org/message/qspd5ufq35v7yk3a (also at Internet Archive 11 March 2020 22:38:24 ).Google ScholarGoogle Scholar
  52. Guillaume Laforge. 2007b. Re: RFC: New operator for default assignment. Groovy org.codehaus.groovy.user mailing list. 26 June 2007. non-archival https://markmail.org/message/o4cmsyq5g3w4clcf (also at Internet Archive 27 Feb. 2020 07:30:55 ). I’m sure we’ll call it the Elvis operator!Google ScholarGoogle Scholar
  53. Guillaume Laforge. 2007c. Re: Stupid Groovy 2 suggestion? Groovy org.codehaus.groovy.user mailing list. 22 Jan. 2007. non-archival https://markmail.org/message/4jx2qxdfqs3ue4ep (also at Internet Archive 27 Feb. 2020 02:41:09 ). I wouldn’t want Groovy to become too perlish with many cryptic weird operators.Google ScholarGoogle Scholar
  54. Guillaume Laforge. 2008. A Domain-Specific Language for unit manipulations. non-archival https://dzone.com/articles/ domain-specific-language-unit(also at Internet Archive 18 July 2019 01:39:38 ).Google ScholarGoogle Scholar
  55. Dustin Marx. 2015. Codehaus: The Once Great House of Code Has Fallen. non-archival http://marxsoftware.blogspot. com/2015/03/codehaus-has-fallen.html (also at Internet Archive 21 July 2019 05:37:04 ).Google ScholarGoogle Scholar
  56. Bob McWhirter. 2003. Re: My thoughts. Groovy org.codehaus.groovy.dev mailing list. 29 Aug. 2003. non-archival http://markmail.org/message/ymblbcomgutzwf3e (also at Internet Archive 1 June 2015 03:15:54 ). Right now, pretty much Strachan’n’you guys are the idea rats working to design the language to be the most useful that it can, while I have fun being the mindless implementation monkey. :)Google ScholarGoogle Scholar
  57. Bertrand Meyer. 1997. Object-oriented Software Construction (2nd ed.). Prentice Hall International (May).Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Micronaut 2020. Micronaut microservice framework (website). non-archival https://micronaut.io/ (also at Internet Archive 13 Jan. 2020 17:49:01 ).Google ScholarGoogle Scholar
  59. Microsoft. 2020. Type Providers. F# documentation. non-archival https://docs.microsoft.com/en-us/dotnet/fsharp/ tutorials/type-providers/ (also at Internet Archive 22 Oct. 2019 20:18:30 ).Google ScholarGoogle Scholar
  60. Jesper Steen Møller. 2015. Antlr4 Groovy parser. Groovy org.apache.groovy.dev mailing list. 5 June 2015. non-archival https://groovy.markmail.org/thread/vsba74vytnv7lpsi (also at Internet Archive 10 March 2020 07:44:36 ).Google ScholarGoogle Scholar
  61. NatureServe. 2020. NatureServe explorer. An online encyclopedia of life. non-archival http://explorer.natureserve.org/ (also at Internet Archive 14 Feb. 2020 12:29:17 ).Google ScholarGoogle Scholar
  62. Nice 2020. Nice programming language (website). non-archival http://nice.sourceforge.net/ (also at Internet Archive 17 Feb. 2020 22:28:34 ).Google ScholarGoogle Scholar
  63. Peter Niederwieser. 2009. Power assertions have landed in trunk! Groovy org.codehaus.groovy.user mailing list. 25 May 2009. non-archival http://markmail.org/message/7ykgv3zwedqmjvdh (also at Internet Archive 28 Feb. 2020 06:18:50 ).Google ScholarGoogle Scholar
  64. Peter Niederwieser et al. 2020. Spock Framework (website). non-archival http://spockframework.org/ (also at Internet Archive 13 Feb. 2020 06:49:55 ).Google ScholarGoogle Scholar
  65. Peter Norvig. 1998. Design Patterns in Dynamic Languages. non-archival http://norvig.com/design-patterns/ (also at Internet Archive 1 Feb. 2020 10:33:40 ).Google ScholarGoogle Scholar
  66. Martin Odersky. 2006. Pimp my Library (weblog). non-archival https://www.artima.com/weblogs/viewpost.jsp?thread= 179766 (also at Internet Archive 29 June 2019 16:56:39 ).Google ScholarGoogle Scholar
  67. OpenJDK. 2012. Will JDK 8 support SAM that is Abstract Class? Lambda Development mailing list. non-archival http://openjdk.5641.n7.nabble.com/Will-JDK-8-support-SAM-that-is-Abstract-Class-td103357.html (also at Internet Archive 27 Feb. 2020 12:10:35 ).Google ScholarGoogle Scholar
  68. Christian Prehofer. 1997. From Inheritance to Feature Interaction or Composing Monads. In Informatik ’97 Informatik als Innovationsmotor, Matthias Jarke, Klaus Pasedach, and Klaus Pohl (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 562–571.Google ScholarGoogle Scholar
  69. Jeremy Rayner. 2007. Groovy 1.0 released! (blog post). non-archival http://javanicus.com/blog2/items/204-index.html (also at Internet Archive 1 Aug. 2016 14:22:55 ).Google ScholarGoogle Scholar
  70. RedMonk. 2020. RedMonk Index for January 2020 (website). non-archival https://redmonk.com/sogrady/2020/02/28/ language-rankings-1-20/ (also at Internet Archive 29 Feb. 2020 18:27:48 ).Google ScholarGoogle Scholar
  71. Graeme Rocher. 2006. Making DGM extensible / Extensible MetaClass. Groovy org.codehaus.groovy.dev mailing list. 26 Sept. 2006. non-archival https://markmail.org/message/hqnkatalanqerxot (also at Internet Archive 28 Feb. 2020 02:24:33 ).Google ScholarGoogle Scholar
  72. Graeme Rocher. 2007. Grails is a breath of fresh air for Java developers. IndicThreads interview. non-archival http://www.indicthreads.com/1433/grails-is-a-breath-of-fresh-air-for-java-developers/ (also at Internet Archive 18 Dec. 2017 02:33:04 ).Google ScholarGoogle Scholar
  73. Jeremy Siek and Walid Taha. 2007. Gradual Typing for Objects. In ECOOP 2007 – Object-Oriented Programming, Erik Ernst (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 2–27.Google ScholarGoogle Scholar
  74. SoapUI 2020. SoapUI: test automation framework for SOAP, REST and more (website). non-archival https://www.soapui. org/ (also at Internet Archive 29 Feb. 2020 07:40:05 ).Google ScholarGoogle Scholar
  75. Spring 2020. Spring Integration: Dynamic language support. Spring Framework documentation. non-archival https: //docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/dynamic-language.html (also at Internet Archive 16 April 2019 14:53:27 ).Google ScholarGoogle Scholar
  76. Guy L. Steele, Jr. 1998. Growing a Language. In Addendum to the 1998 Proceedings of the Conference on Object-oriented Programming, Systems, Languages, and Applications (Addendum) (Vancouver, British Columbia, Canada) (OOPSLA ’98 Addendum). ACM, New York, NY, USA, 0.01–A1. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Andre Steingress. 2020. GContracts: design by contract library for Groovy (website). non-archival https://github.com/ andresteingress/gcontracts (also at Internet Archive 10 June 2018 23:29:08 ). https://web.archive.org/web/20160308052827/ http://gcontracts.org/Google ScholarGoogle Scholar
  78. James Strachan. 2003a. current closest languages are. . . . Groovy org.codehaus.groovy.dev mailing list. 1 Sept. 2003. non-archival https://markmail.org/message/hne7dyg3j6sftrfp (also at Internet Archive 8 March 2020 06:28:35 ).Google ScholarGoogle Scholar
  79. James Strachan. 2003b. Groovy - the birth of a new dynamic language for the Java platform. Archived at Internet Archive: https://web.archive.org/web/20031205215854/http://radio.weblogs.com:80/0112098/2003/08/29.htmlGoogle ScholarGoogle Scholar
  80. James Strachan. 2003c. I’ve added some example Groovy code... Groovy org.codehaus.groovy.dev mailing list. 29 Aug. 2003. non-archival https://markmail.org/message/kjr7awwpoxo7umqf (also at Internet Archive 3 June 2015 13:43:55 ). I thought we might as well be TDD with Groovy—writing tests for Groovy itself in Groovy to get started.Google ScholarGoogle Scholar
  81. James Strachan. 2003d. Re: class syntax. Groovy org.codehaus.groovy.dev mailing list. 12 Sept. 2003. non-archival https://markmail.org/message/zita5yauvqgsirgp (also at Internet Archive 27 Feb. 2020 14:50:55 ).Google ScholarGoogle Scholar
  82. James Strachan. 2003e. thought for the day - use of implicit ’it’ variable in closures. Groovy org.codehaus.groovy.dev mailing list. 28 Oct. 2003. non-archival http://markmail.org/message/anmqimy5daxylqkc (also at Internet Archive 27 Feb. 2020 14:28:05 ).Google ScholarGoogle Scholar
  83. Sun 1997. JavaBeans™API specification. non-archival https://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-frspec-oth-JSpec/ Archived at https://web.archive.org/web/20181018105850/http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpecGoogle ScholarGoogle Scholar
  84. TIOBE. 2019. TIOBE Index for October 2019 (website). ttps://web.archive.org/web/20191025230404/https://www.tiobe. com/tiobe-index/ (retrieved 25 Oct. 2019) Archived at Internet Archive. Groovy index history: non-archival https: //www.tiobe.com/tiobe-index/groovy/Google ScholarGoogle Scholar
  85. Alex Tkachman. 2011. Groovypp prototyping static compilation extension for Groovy (website). non-archival https: //code.google.com/archive/p/groovypptest/ (also at Internet Archive 6 March 2020 11:11:37 ).Google ScholarGoogle Scholar
  86. Wikipedia. 2018a. Flow sensitive typing. non-archival https://en.wikipedia.org/wiki/Flow-sensitive_typing (also at Internet Archive 18 March 2019 17:14:45 ).Google ScholarGoogle Scholar
  87. Wikipedia 2018b. Safe navigation operator. non-archival https://en.wikipedia.org/wiki/Safe_navigation_operator (also at Internet Archive 20 Feb. 2020 23:27:57 ).Google ScholarGoogle Scholar
  88. Wikipedia. 2020. Feature interaction problem. non-archival https://en.wikipedia.org/wiki/Feature_interaction_problem (also at Internet Archive 11 Oct. 2016 08:18:08 ).Google ScholarGoogle Scholar
  89. Russel Winder. 2011. Static compilation for Groovy! Groovy org.codehaus.groovy.user mailing list. 11 Nov. 2011. nonarchival https://markmail.org/message/g627wfm5au3emher (also at Internet Archive 10 March 2020 10:54:05 ). I don’t want Groovy to be a failed Java 8 wannabee. I want a dynamic language to use as a complement to Java.Google ScholarGoogle Scholar
  90. Andrey Breslav. 2020. Private Communication. Feb. 2020. The author discussed Groovy’s influence on Kotlin with Andrey. Reviewed and confirmed.Google ScholarGoogle Scholar
  91. Hans Dockter. 2019. Private Communication. The author discussed Groovy’s impact on Gradle with Hans. Reviewed and confirmed.Google ScholarGoogle Scholar
  92. Graeme Rocher. 2019. Private Communication. The author discussed Groovy’s impact on Grails and Micronaut with Graeme. Reviewed and confirmed.Google ScholarGoogle Scholar

Index Terms

  1. A history of the Groovy programming language

                  Recommendations

                  Comments

                  Login options

                  Check if you have access through your login credentials or your institution to get full access on this article.

                  Sign in

                  Full Access

                  PDF Format

                  View or Download as a PDF file.

                  PDF

                  eReader

                  View online with eReader.

                  eReader
                  About Cookies On This Site

                  We use cookies to ensure that we give you the best experience on our website.

                  Learn more

                  Got it!