{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,1]],"date-time":"2025-11-01T19:05:53Z","timestamp":1762023953815,"version":"build-2065373602"},"reference-count":92,"publisher":"Association for Computing Machinery (ACM)","issue":"HOPL","license":[{"start":{"date-parts":[[2020,6,12]],"date-time":"2020-06-12T00:00:00Z","timestamp":1591920000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,6,14]]},"abstract":"<jats:p>This paper describes the history of the Groovy programming language. At the time of Groovy\u2019s 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\u2019s shortcomings, used syntax that was less familiar to Java developers. Integration with Java libraries was also non-optimal.<\/jats:p>\n          <jats:p>Groovy was created as a complementary language to Java\u2014its 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\u2019s shortcomings.<\/jats:p>\n          <jats:p>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.<\/jats:p>\n          <jats:p>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\u2019t 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.<\/jats:p>\n          <jats:p>\n            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\u2019s dangling closure, Groovy builders, null-safe navigation, the Elvis operator, ranges, the spaceship operator, and flow typing. For most languages, we don\u2019t know to what extent Groovy played a part in their choices. We do know that Kotlin took inspiration from Groovy\u2019s dangling closures, builder concept, default\n            <jats:italic>it<\/jats:italic>\n            parameter for closures, templates and interpolated strings, null-safe navigation and the Elvis operator.\n          <\/jats:p>\n          <jats:p>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.<\/jats:p>","DOI":"10.1145\/3386326","type":"journal-article","created":{"date-parts":[[2020,6,12]],"date-time":"2020-06-12T16:22:59Z","timestamp":1591978979000},"page":"1-53","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":4,"title":["A history of the Groovy programming language"],"prefix":"10.1145","volume":"4","author":[{"given":"Paul","family":"King","sequence":"first","affiliation":[{"name":"Object Computing, Australia"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,6,12]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"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\/  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\/"},{"key":"e_1_2_1_2_1","volume-title":"Proceedings of the 2008 International Conference on Bioinformatics and Computational Biology, BIOCOMP 2008 (Jan.).","author":"Antao Tiago","year":"2008","unstructured":"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\u2013752 . Proceedings of the 2008 International Conference on Bioinformatics and Computational Biology, BIOCOMP 2008 (Jan.). 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\u2013752. Proceedings of the 2008 International Conference on Bioinformatics and Computational Biology, BIOCOMP 2008 (Jan.)."},{"key":"e_1_2_1_3_1","volume-title":"The Apache Software Foundation (website). non-archival https:\/\/www.apache.org\/ (also at Internet Archive","author":"ASF","year":"2020","unstructured":"ASF 2020a. The Apache Software Foundation (website). non-archival https:\/\/www.apache.org\/ (also at Internet Archive 10 March 2020 11:41:12 ). ASF 2020a. The Apache Software Foundation (website). non-archival https:\/\/www.apache.org\/ (also at Internet Archive 10 March 2020 11:41:12 )."},{"key":"e_1_2_1_4_1","volume-title":"The Apache Software Foundation Briefing: The Apache Way. non-archival https:\/\/www.apache.org\/ theapacheway\/ (also at Internet Archive","author":"ASF","year":"2020","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_5_1","volume-title":"The Apache Software Foundation: Corporate Governance Overview. non-archival https:\/\/www.apache.org\/ foundation\/governance\/ (also at Internet Archive","author":"ASF","year":"2020","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_6_1","volume-title":"The Beanshell scripting language (website). non-archival https:\/\/beanshell.github.io\/ (also at Internet Archive","author":"Beanshell","year":"2020","unstructured":"Beanshell 2020. The Beanshell scripting language (website). non-archival https:\/\/beanshell.github.io\/ (also at Internet Archive 8 March 2020 11:21:39 ). Beanshell 2020. The Beanshell scripting language (website). non-archival https:\/\/beanshell.github.io\/ (also at Internet Archive 8 March 2020 11:21:39 )."},{"volume-title":"Addison-Wesley","author":"Bloch Joshua","key":"e_1_2_1_7_1","unstructured":"Joshua Bloch . 2017. Effective Java (3 ed.). Addison-Wesley , Boston, MA, USA . Joshua Bloch. 2017. Effective Java (3 ed.). Addison-Wesley, Boston, MA, USA."},{"key":"e_1_2_1_8_1","volume-title":"Apache Commons Bean Scripting Framework (website). non-archival https:\/\/commons.apache.org\/proper\/ commons-bsf\/ (also at Internet Archive","author":"BSF","year":"2020","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_9_1","doi-asserted-by":"crossref","unstructured":"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\u2013141.  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\u2013141.","DOI":"10.1016\/S1389-1286(02)00352-3"},{"key":"e_1_2_1_10_1","unstructured":"Codehaus. 2015. The Codehaus governance manifesto. Archived at https:\/\/web.archive.org\/web\/20151201153729\/http: \/\/www.codehaus.org\/history\/manifesto\/  Codehaus. 2015. The Codehaus governance manifesto. Archived at https:\/\/web.archive.org\/web\/20151201153729\/http: \/\/www.codehaus.org\/history\/manifesto\/"},{"key":"e_1_2_1_11_1","volume-title":"Apache Commons Math: Java mathematics library (website). non-archival http:\/\/commons.apache. org\/proper\/commons-math\/ (also at Internet Archive","author":"CommonsMath","year":"2020","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_12_1","volume-title":"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","author":"CommonsMath","year":"2020","unstructured":"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 ). 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 )."},{"volume-title":"Software Freedom Conservancy (website). non-archival https:\/\/sfconservancy.org\/ (also at Internet Archive","year":"2020","key":"e_1_2_1_13_1","unstructured":"Conservancy. 2020. Software Freedom Conservancy (website). non-archival https:\/\/sfconservancy.org\/ (also at Internet Archive 5 March 2020 20:05:19 ). Conservancy. 2020. Software Freedom Conservancy (website). non-archival https:\/\/sfconservancy.org\/ (also at Internet Archive 5 March 2020 20:05:19 )."},{"volume-title":"Groovy Developer Conference 3, 29th and 30th","year":"2007","key":"e_1_2_1_14_1","unstructured":"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+report 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+report"},{"volume-title":"Groovy Developer Conference 4, 15th and 16th","year":"2007","key":"e_1_2_1_15_1","unstructured":"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+Discussions 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+Discussions"},{"volume-title":"Groovy Developer Conference 5, 11-15th","year":"2009","key":"e_1_2_1_16_1","unstructured":"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+5 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+5"},{"volume-title":"Groovy Developer Conference 6, 16th and 20th","year":"2011","key":"e_1_2_1_17_1","unstructured":"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+6 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+6"},{"volume-title":"Groovy Developer Conference 7, 6th and 7th","year":"2012","key":"e_1_2_1_18_1","unstructured":"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+7 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+7"},{"volume-title":"Groovy Developer Conference 8, 21st and 22nd","year":"2013","key":"e_1_2_1_19_1","unstructured":"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\/edit 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\/edit"},{"volume-title":"Groovy Developer Conference 9, 10th and 11th","year":"2013","key":"e_1_2_1_20_1","unstructured":"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 ). 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 )."},{"volume-title":"5th","year":"2014","key":"e_1_2_1_21_1","unstructured":"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.pd7xybm87okp 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.pd7xybm87okp"},{"key":"e_1_2_1_22_1","unstructured":"Eclipse. 2020. Eclipse Foundation (website). non-archival https:\/\/eclipse.org Archived at https:\/\/web.archive.org\/web\/ 20200307215618\/https:\/\/www.eclipse.org\/  Eclipse. 2020. Eclipse Foundation (website). non-archival https:\/\/eclipse.org Archived at https:\/\/web.archive.org\/web\/ 20200307215618\/https:\/\/www.eclipse.org\/"},{"volume-title":"Frege: Haskell-like language for the JVM (website). non-archival https:\/\/github.com\/Frege\/frege (also at Internet Archive","year":"2013","key":"e_1_2_1_23_1","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_24_1","first-page":"31","article-title":"Lisp: Good News Bad News How to Win Big","volume":"6","author":"Gabriel Richard P.","year":"1994","unstructured":"Richard P. Gabriel . 1994 . Lisp: Good News Bad News How to Win Big . AI Expert 6 , 31 \u2013 39 . Richard P. Gabriel. 1994. Lisp: Good News Bad News How to Win Big. AI Expert 6, 31\u201339.","journal-title":"AI Expert"},{"key":"e_1_2_1_25_1","volume-title":"Design Patterns: Elements of Reusable Object-oriented Software","author":"Gamma Erich","year":"1995","unstructured":"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 . 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."},{"volume-title":"NIO.2 Support for Groovy. Apache Groovy website. non-archival https:\/\/groovy.apache.org\/wiki\/GEP-6.html (also at Internet Archive","year":"2020","key":"e_1_2_1_26_1","unstructured":"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 ). 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 )."},{"volume-title":"GEP: Static type checking. Apache Groovy website. non-archival https:\/\/groovy.apache.org\/wiki\/GEP-8.html (also at Internet Archive","year":"2020","key":"e_1_2_1_27_1","unstructured":"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 ). 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 )."},{"volume-title":"GEP: Static compilation. Apache Groovy website. non-archival https:\/\/groovy.apache.org\/wiki\/GEP-10.html (also at Internet Archive","year":"2020","key":"e_1_2_1_28_1","unstructured":"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 ). 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 )."},{"volume-title":"GEP: SAM coercion. Apache Groovy website. non-archival https:\/\/groovy.apache.org\/wiki\/GEP-12.html (also at Internet Archive","year":"2020","key":"e_1_2_1_29_1","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_30_1","volume-title":"List of Groovy Enhancement Proposals (website). non-archival http:\/\/groovy.apache.org\/wiki\/geps.html (also at Internet Archive","author":"GEPs.","year":"2020","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_31_1","doi-asserted-by":"crossref","unstructured":"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.  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.","DOI":"10.1145\/1159861.1159863"},{"key":"e_1_2_1_32_1","volume-title":"Goodtimes: java.time extensions library for Groovy (website). non-archival https:\/\/github.com\/bdkosher\/ goodtimes (also at Internet Archive","author":"Goodtimes","year":"2018","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_33_1","volume-title":"Gradle build tool (website). non-archival https:\/\/gradle.org\/ (also at Internet Archive","author":"Gradle","year":"2020","unstructured":"Gradle 2020. Gradle build tool (website). non-archival https:\/\/gradle.org\/ (also at Internet Archive 7 March 2020 09:59:16 ). Gradle 2020. Gradle build tool (website). non-archival https:\/\/gradle.org\/ (also at Internet Archive 7 March 2020 09:59:16 )."},{"key":"e_1_2_1_34_1","unstructured":"Grengine 2020. Grengine embedded Groovy engine (website). non-archival http:\/\/grengine.ch Archived at https: \/\/web.archive.org\/web\/20190111170918\/https:\/\/grengine.ch\/  Grengine 2020. Grengine embedded Groovy engine (website). non-archival http:\/\/grengine.ch Archived at https: \/\/web.archive.org\/web\/20190111170918\/https:\/\/grengine.ch\/"},{"key":"e_1_2_1_35_1","volume-title":"Griffon: desktop application development platform for the JVM (website). non-archival http:\/\/griffonframework.org\/ (also at Internet Archive","author":"Griffon","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_36_1","volume-title":"Groovy documentation. Apache Groovy project website. non-archival https:\/\/groovy-lang.org\/ documentation.html (also at Internet Archive","author":"Groovy","year":"2020","unstructured":"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 ). 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 )."},{"volume-title":"GEP: Adding Bound Properties to GroovyBeans. Apache Groovy issue tracker. non-archival https:\/\/issues.apache.org\/jira\/browse\/GROOVY-1884 (also at Internet Archive","year":"2020","key":"e_1_2_1_37_1","unstructured":"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 ). 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 )."},{"volume-title":"New feature: Power Assertions. Apache Groovy issue tracker. non-archival https:\/\/issues.apache. org\/jira\/browse\/GROOVY-3425 (also at Internet Archive","year":"2020","key":"e_1_2_1_38_1","unstructured":"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 ). 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 )."},{"volume-title":"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","year":"2020","key":"e_1_2_1_39_1","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_40_1","volume-title":"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","author":"Q.","year":"2017","unstructured":"Info Q. 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 ). 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 )."},{"key":"e_1_2_1_41_1","volume-title":"Grails web application framework (website). non-archival https:\/\/grails.org\/ (also at Internet Archive","author":"Jenkins","year":"2020","unstructured":"Jenkins 2020a. Grails web application framework (website). non-archival https:\/\/grails.org\/ (also at Internet Archive 27 Feb. 2020 19:20:13 ). Jenkins 2020a. Grails web application framework (website). non-archival https:\/\/grails.org\/ (also at Internet Archive 27 Feb. 2020 19:20:13 )."},{"key":"e_1_2_1_42_1","volume-title":"Jenkins build automation server (website). non-archival https:\/\/jenkins.io\/ (also at Internet Archive","author":"Jenkins","year":"2020","unstructured":"Jenkins 2020b. Jenkins build automation server (website). non-archival https:\/\/jenkins.io\/ (also at Internet Archive 8 March 2020 20:58:10 ). Jenkins 2020b. Jenkins build automation server (website). non-archival https:\/\/jenkins.io\/ (also at Internet Archive 8 March 2020 20:58:10 )."},{"key":"e_1_2_1_43_1","volume-title":"JEP 118: Access to Parameter Names at Runtime. non-archival http:\/\/openjdk.java.net\/jeps\/118 (also at Internet Archive","author":"JEP","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_44_1","volume-title":"JEP 120: Repeating Annotations. non-archival http:\/\/openjdk.java.net\/jeps\/120 (also at Internet Archive","author":"JEP","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_45_1","unstructured":"JSR 223 2006. JSR 223: Scripting for the Java\u2122Platform. 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=223  JSR 223 2006. JSR 223: Scripting for the Java\u2122Platform. 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=223"},{"key":"e_1_2_1_46_1","volume-title":"JSR 241: The Groovy Programming Language. non-archival https:\/\/www.jcp.org\/en\/jsr\/detail?id=241 (also at Internet Archive","author":"JSR","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_47_1","volume-title":"JSR 308: Annotations on Java Types. non-archival https:\/\/jcp.org\/en\/jsr\/detail?id=308 (also at Internet Archive","author":"JSR","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_48_1","volume-title":"JSR 310: Date and Time API. non-archival https:\/\/www.jcp.org\/en\/jsr\/detail?id=310 (also at Internet Archive","author":"JSR","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_49_1","unstructured":"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 ).  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 )."},{"key":"e_1_2_1_50_1","volume-title":"Groovy in Action","author":"K\u00f6nig Dierk","unstructured":"Dierk K\u00f6nig , Paul King , Guillaume Laforge , Hamlet D\u2019Arcy , C\u00e9dric Champeau , Erik Pragt , and Jon Skeet . 2015. Groovy in Action ( 2 nd ed.). Manning Publications Co. , Greenwich, CT, USA . Dierk K\u00f6nig, Paul King, Guillaume Laforge, Hamlet D\u2019Arcy, C\u00e9dric Champeau, Erik Pragt, and Jon Skeet. 2015. Groovy in Action (2nd ed.). Manning Publications Co., Greenwich, CT, USA.","edition":"2"},{"key":"e_1_2_1_51_1","volume-title":"non-archival http:\/\/markmail.org\/message\/qspd5ufq35v7yk3a (also at Internet Archive","author":"Laforge Guillaume","year":"2020","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_52_1","volume-title":"Re: RFC: New operator for default assignment. Groovy org.codehaus.groovy.user mailing list.","author":"Laforge Guillaume","year":"2007","unstructured":"Guillaume Laforge . 2007 b. 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\u2019m sure we\u2019ll call it the Elvis operator! 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\u2019m sure we\u2019ll call it the Elvis operator!"},{"key":"e_1_2_1_53_1","volume-title":"Re: Stupid Groovy 2 suggestion? Groovy org.codehaus.groovy.user mailing list.","author":"Laforge Guillaume","year":"2007","unstructured":"Guillaume Laforge . 2007 c. 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\u2019t want Groovy to become too perlish with many cryptic weird operators. 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\u2019t want Groovy to become too perlish with many cryptic weird operators."},{"key":"e_1_2_1_54_1","volume-title":"A Domain-Specific Language for unit manipulations. non-archival https:\/\/dzone.com\/articles\/ domain-specific-language-unit(also at Internet Archive","author":"Laforge Guillaume","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_55_1","volume-title":"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","author":"Marx Dustin","year":"2015","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_56_1","volume-title":"Re: My thoughts. Groovy org.codehaus.groovy.dev mailing list.","author":"McWhirter Bob","year":"2003","unstructured":"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\u2019n\u2019you 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. :) 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\u2019n\u2019you 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. :)"},{"key":"e_1_2_1_57_1","volume-title":"Object-oriented Software Construction","author":"Meyer Bertrand","unstructured":"Bertrand Meyer . 1997. Object-oriented Software Construction ( 2 nd ed.). Prentice Hall International (May). Bertrand Meyer. 1997. Object-oriented Software Construction (2nd ed.). Prentice Hall International (May).","edition":"2"},{"key":"e_1_2_1_58_1","volume-title":"Micronaut microservice framework (website). non-archival https:\/\/micronaut.io\/ (also at Internet Archive","author":"Micronaut","year":"2020","unstructured":"Micronaut 2020. Micronaut microservice framework (website). non-archival https:\/\/micronaut.io\/ (also at Internet Archive 13 Jan. 2020 17:49:01 ). Micronaut 2020. Micronaut microservice framework (website). non-archival https:\/\/micronaut.io\/ (also at Internet Archive 13 Jan. 2020 17:49:01 )."},{"key":"e_1_2_1_59_1","volume-title":"non-archival https:\/\/docs.microsoft.com\/en-us\/dotnet\/fsharp\/ tutorials\/type-providers\/ (also at Internet Archive","author":"Providers Type","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_60_1","volume-title":"Antlr4 Groovy parser. Groovy org.apache.groovy.dev mailing list","author":"M\u00f8ller Jesper Steen","year":"2015","unstructured":"Jesper Steen M\u00f8ller . 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 ). Jesper Steen M\u00f8ller. 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 )."},{"volume-title":"NatureServe explorer. An online encyclopedia of life. non-archival http:\/\/explorer.natureserve.org\/ (also at Internet Archive","year":"2020","key":"e_1_2_1_61_1","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_62_1","volume-title":"Nice programming language (website). non-archival http:\/\/nice.sourceforge.net\/ (also at Internet Archive","author":"Nice","year":"2020","unstructured":"Nice 2020. Nice programming language (website). non-archival http:\/\/nice.sourceforge.net\/ (also at Internet Archive 17 Feb. 2020 22:28:34 ). Nice 2020. Nice programming language (website). non-archival http:\/\/nice.sourceforge.net\/ (also at Internet Archive 17 Feb. 2020 22:28:34 )."},{"key":"e_1_2_1_63_1","volume-title":"Power assertions have landed in trunk! Groovy org.codehaus.groovy.user mailing list","author":"Niederwieser Peter","year":"2009","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_64_1","unstructured":"Peter Niederwieser et al. 2020. Spock Framework (website). non-archival http:\/\/spockframework.org\/ (also at Internet Archive 13 Feb. 2020 06:49:55 ).  Peter Niederwieser et al. 2020. Spock Framework (website). non-archival http:\/\/spockframework.org\/ (also at Internet Archive 13 Feb. 2020 06:49:55 )."},{"key":"e_1_2_1_65_1","volume-title":"Design Patterns in Dynamic Languages. non-archival http:\/\/norvig.com\/design-patterns\/ (also at Internet Archive","author":"Norvig Peter","year":"2020","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_66_1","volume-title":"Pimp my Library (weblog). non-archival https:\/\/www.artima.com\/weblogs\/viewpost.jsp?thread= 179766 (also at Internet Archive","author":"Odersky Martin","year":"2019","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_67_1","unstructured":"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 ).  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 )."},{"volume-title":"Informatik \u201997 Informatik als Innovationsmotor","author":"Prehofer Christian","key":"e_1_2_1_68_1","unstructured":"Christian Prehofer . 1997. From Inheritance to Feature Interaction or Composing Monads . In Informatik \u201997 Informatik als Innovationsmotor , Matthias Jarke, Klaus Pasedach, and Klaus Pohl (Eds.). Springer Berlin Heidelberg , Berlin, Heidelberg , 562\u2013571. Christian Prehofer. 1997. From Inheritance to Feature Interaction or Composing Monads. In Informatik \u201997 Informatik als Innovationsmotor, Matthias Jarke, Klaus Pasedach, and Klaus Pohl (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 562\u2013571."},{"key":"e_1_2_1_69_1","volume-title":"non-archival http:\/\/javanicus.com\/blog2\/items\/204-index.html (also at Internet Archive","author":"Rayner Jeremy","year":"2016","unstructured":"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 ). 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 )."},{"volume-title":"RedMonk Index for","year":"2020","key":"e_1_2_1_70_1","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_71_1","volume-title":"Making DGM extensible \/ Extensible MetaClass. Groovy org.codehaus.groovy.dev mailing list","author":"Rocher Graeme","year":"2006","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_72_1","unstructured":"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 ).  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 )."},{"key":"e_1_2_1_73_1","volume-title":"Gradual Typing for Objects. In ECOOP 2007 \u2013 Object-Oriented Programming, Erik Ernst (Ed.). Springer Berlin Heidelberg","author":"Siek Jeremy","year":"2007","unstructured":"Jeremy Siek and Walid Taha . 2007 . Gradual Typing for Objects. In ECOOP 2007 \u2013 Object-Oriented Programming, Erik Ernst (Ed.). Springer Berlin Heidelberg , Berlin, Heidelberg, 2\u201327. Jeremy Siek and Walid Taha. 2007. Gradual Typing for Objects. In ECOOP 2007 \u2013 Object-Oriented Programming, Erik Ernst (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 2\u201327."},{"key":"e_1_2_1_74_1","volume-title":"REST and more (website). non-archival https:\/\/www.soapui. org\/ (also at Internet Archive","author":"UI","year":"2020","unstructured":"Soap UI 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 ). 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 )."},{"key":"e_1_2_1_75_1","unstructured":"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 ).  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 )."},{"key":"e_1_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/346852.346922"},{"key":"e_1_2_1_77_1","volume-title":"GContracts: design by contract library for Groovy (website). non-archival https:\/\/github.com\/ andresteingress\/gcontracts (also at Internet Archive","author":"Steingress Andre","year":"2018","unstructured":"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\/ 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\/"},{"key":"e_1_2_1_78_1","volume-title":"current closest languages are. . . . Groovy org.codehaus.groovy.dev mailing list","author":"Strachan James","year":"2003","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_79_1","unstructured":"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.html  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.html"},{"key":"e_1_2_1_80_1","volume-title":"I\u2019ve added some example Groovy code... Groovy org.codehaus.groovy.dev mailing list","author":"Strachan James","year":"2003","unstructured":"James Strachan . 2003c. I\u2019ve 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\u2014writing tests for Groovy itself in Groovy to get started. James Strachan. 2003c. I\u2019ve 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\u2014writing tests for Groovy itself in Groovy to get started."},{"key":"e_1_2_1_81_1","volume-title":"Re: class syntax. Groovy org.codehaus.groovy.dev mailing list","author":"Strachan James","year":"2003","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_82_1","volume-title":"thought for the day - use of implicit \u2019it","author":"Strachan James","year":"2003","unstructured":"James Strachan . 2003e. thought for the day - use of implicit \u2019it \u2019 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 ). James Strachan. 2003e. thought for the day - use of implicit \u2019it\u2019 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 )."},{"key":"e_1_2_1_83_1","unstructured":"Sun 1997. JavaBeans\u2122API 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-JSpec  Sun 1997. JavaBeans\u2122API 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-JSpec"},{"key":"e_1_2_1_84_1","volume-title":"TIOBE Index for","author":"TIOBE.","year":"2019","unstructured":"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\/ 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\/"},{"key":"e_1_2_1_85_1","volume-title":"Groovypp prototyping static compilation extension for Groovy (website). non-archival https: \/\/code.google.com\/archive\/p\/groovypptest\/ (also at Internet Archive","author":"Tkachman Alex","year":"2020","unstructured":"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 ). 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 )."},{"volume-title":"Flow sensitive typing. non-archival https:\/\/en.wikipedia.org\/wiki\/Flow-sensitive_typing (also at Internet Archive","year":"2019","key":"e_1_2_1_86_1","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_87_1","volume-title":"Safe navigation operator. non-archival https:\/\/en.wikipedia.org\/wiki\/Safe_navigation_operator (also at Internet Archive","author":"Wikipedia","year":"2020","unstructured":"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 ). 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 )."},{"volume-title":"Feature interaction problem. non-archival https:\/\/en.wikipedia.org\/wiki\/Feature_interaction_problem (also at Internet Archive","year":"2016","key":"e_1_2_1_88_1","unstructured":"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 ). 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 )."},{"key":"e_1_2_1_89_1","volume-title":"Static compilation for Groovy! Groovy org.codehaus.groovy.user mailing list","author":"Winder Russel","year":"2011","unstructured":"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\u2019t want Groovy to be a failed Java 8 wannabee. I want a dynamic language to use as a complement to Java . 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\u2019t want Groovy to be a failed Java 8 wannabee. I want a dynamic language to use as a complement to Java."},{"key":"e_1_2_1_90_1","volume-title":"Private Communication","author":"Breslav Andrey","year":"2020","unstructured":"Andrey Breslav . 2020. Private Communication . Feb. 2020 . The author discussed Groovy\u2019s influence on Kotlin with Andrey. Reviewed and confirmed. Andrey Breslav. 2020. Private Communication. Feb. 2020. The author discussed Groovy\u2019s influence on Kotlin with Andrey. Reviewed and confirmed."},{"key":"e_1_2_1_91_1","unstructured":"Hans Dockter. 2019. Private Communication. The author discussed Groovy\u2019s impact on Gradle with Hans. Reviewed and confirmed.  Hans Dockter. 2019. Private Communication. The author discussed Groovy\u2019s impact on Gradle with Hans. Reviewed and confirmed."},{"key":"e_1_2_1_92_1","unstructured":"Graeme Rocher. 2019. Private Communication. The author discussed Groovy\u2019s impact on Grails and Micronaut with Graeme. Reviewed and confirmed.  Graeme Rocher. 2019. Private Communication. The author discussed Groovy\u2019s impact on Grails and Micronaut with Graeme. Reviewed and confirmed."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3386326","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3386326","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T21:32:03Z","timestamp":1750195923000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3386326"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,6,12]]},"references-count":92,"journal-issue":{"issue":"HOPL","published-print":{"date-parts":[[2020,6,14]]}},"alternative-id":["10.1145\/3386326"],"URL":"https:\/\/doi.org\/10.1145\/3386326","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2020,6,12]]},"assertion":[{"value":"2020-06-12","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}