{"id":"https://openalex.org/W3034964333","doi":"https://doi.org/10.1145/3386326","title":"A history of the Groovy programming language","display_name":"A history of the Groovy programming language","publication_year":2020,"publication_date":"2020-06-12","ids":{"openalex":"https://openalex.org/W3034964333","doi":"https://doi.org/10.1145/3386326","mag":"3034964333"},"language":"en","primary_location":{"id":"doi:10.1145/3386326","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3386326","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3386326","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3386326","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5083148867","display_name":"Paul King","orcid":null},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Paul King","raw_affiliation_strings":["Object Computing, Australia"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Object Computing, Australia","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":0,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5083148867"],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":0.5569,"has_fulltext":true,"cited_by_count":4,"citation_normalized_percentile":{"value":0.74946895,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":95},"biblio":{"volume":"4","issue":"HOPL","first_page":"1","last_page":"53"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.992900013923645,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.992900013923645,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9897000193595886,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9769999980926514,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.876693844795227},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.8114014863967896},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.6929819583892822},{"id":"https://openalex.org/keywords/python","display_name":"Python (programming language)","score":0.5934063196182251},{"id":"https://openalex.org/keywords/java-annotation","display_name":"Java annotation","score":0.5883848071098328},{"id":"https://openalex.org/keywords/generics-in-java","display_name":"Generics in Java","score":0.5868130922317505},{"id":"https://openalex.org/keywords/java-modeling-language","display_name":"Java Modeling Language","score":0.5694292187690735},{"id":"https://openalex.org/keywords/scripting-language","display_name":"Scripting language","score":0.5638278126716614},{"id":"https://openalex.org/keywords/real-time-java","display_name":"Real time Java","score":0.5482979416847229},{"id":"https://openalex.org/keywords/scala","display_name":"Scala","score":0.47728124260902405},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.4739777445793152},{"id":"https://openalex.org/keywords/just-in-time-compilation","display_name":"Just-in-time compilation","score":0.46940815448760986},{"id":"https://openalex.org/keywords/dynamic-compilation","display_name":"Dynamic compilation","score":0.41866928339004517},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.246160626411438}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.876693844795227},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.8114014863967896},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.6929819583892822},{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.5934063196182251},{"id":"https://openalex.org/C168702491","wikidata":"https://www.wikidata.org/wiki/Q567345","display_name":"Java annotation","level":4,"score":0.5883848071098328},{"id":"https://openalex.org/C172482141","wikidata":"https://www.wikidata.org/wiki/Q379273","display_name":"Generics in Java","level":5,"score":0.5868130922317505},{"id":"https://openalex.org/C60945770","wikidata":"https://www.wikidata.org/wiki/Q2517517","display_name":"Java Modeling Language","level":5,"score":0.5694292187690735},{"id":"https://openalex.org/C61423126","wikidata":"https://www.wikidata.org/wiki/Q187432","display_name":"Scripting language","level":2,"score":0.5638278126716614},{"id":"https://openalex.org/C132106392","wikidata":"https://www.wikidata.org/wiki/Q1373903","display_name":"Real time Java","level":3,"score":0.5482979416847229},{"id":"https://openalex.org/C109701466","wikidata":"https://www.wikidata.org/wiki/Q460584","display_name":"Scala","level":3,"score":0.47728124260902405},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.4739777445793152},{"id":"https://openalex.org/C76782552","wikidata":"https://www.wikidata.org/wiki/Q110546","display_name":"Just-in-time compilation","level":3,"score":0.46940815448760986},{"id":"https://openalex.org/C8767382","wikidata":"https://www.wikidata.org/wiki/Q1058454","display_name":"Dynamic compilation","level":3,"score":0.41866928339004517},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.246160626411438}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3386326","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3386326","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3386326","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"}],"best_oa_location":{"id":"doi:10.1145/3386326","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3386326","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3386326","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[{"score":0.5799999833106995,"id":"https://metadata.un.org/sdg/9","display_name":"Industry, innovation and infrastructure"}],"awards":[],"funders":[],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3034964333.pdf","grobid_xml":"https://content.openalex.org/works/W3034964333.grobid-xml"},"referenced_works_count":8,"referenced_works":["https://openalex.org/W194952179","https://openalex.org/W221670187","https://openalex.org/W1649645444","https://openalex.org/W2046272746","https://openalex.org/W2047058869","https://openalex.org/W2108999965","https://openalex.org/W2120487396","https://openalex.org/W6805912654"],"related_works":["https://openalex.org/W3081695254","https://openalex.org/W321450354","https://openalex.org/W1820216804","https://openalex.org/W1967435589","https://openalex.org/W2122434855","https://openalex.org/W2188153046","https://openalex.org/W4230932126","https://openalex.org/W2164296674","https://openalex.org/W2004623597","https://openalex.org/W3034964333"],"abstract_inverted_index":{"This":[0,290],"paper":[1],"describes":[2],"the":[3,6,11,164,249,256,299,303,350,380,383],"history":[4],"of":[5,13,25,67,132,246,258,359,382,389],"Groovy":[7,86,111,135,194,262,268,295,318,360,366],"programming":[8,20],"language.":[9,207],"At":[10],"time":[12,193],"Groovy\u2019s":[14,292,333],"inception,":[15],"Java":[16,62,77,81,103,288],"was":[17,31,73,83,87,155,219],"a":[18,23,90,151,176,179,198,204,212,216,320,370,387,390],"dominant":[19],"language":[21,92,165,202],"with":[22,80,190],"wealth":[24],"useful":[26],"libraries.":[27],"Despite":[28],"this,":[29],"it":[30,160,339],"perceived":[32],"by":[33,261,267,379,386],"some":[34,66,131],"to":[35,40,50,57,76,93,125,166,175,221,248,254,315],"be":[36,58,225,237],"evolving":[37],"slowing":[38],"and":[39,47,100,108,121,141,154,171,287,306,344,349,356],"have":[41,167,361],"shortcomings":[42],"for":[43,130,162,241,341],"scripting,":[44],"rapid":[45,109],"prototyping":[46],"when":[48,230],"trying":[49],"write":[51],"minimalistic":[52],"code.":[53],"Other":[54],"languages":[55,117,276],"seemed":[56],"innovating":[59],"faster":[60],"than":[61,385],"and,":[63],"while":[64],"overcoming":[65],"Java\u2019s":[68,133],"shortcomings,":[69],"used":[70,260],"syntax":[71],"that":[72,328],"less":[74],"familiar":[75],"developers.":[78,263],"Integration":[79],"libraries":[82],"also":[84],"non-optimal.":[85],"created":[88],"as":[89,211],"complementary":[91],"Java\u2014its":[94],"dynamic":[95,116,200,231],"counterpart.":[96],"It":[97,145],"would":[98,112],"look":[99],"feel":[101],"like":[102,118],"but":[104,365],"focus":[105],"on":[106],"extensibility":[107],"innovation.":[110],"borrow":[113],"ideas":[114],"from":[115,197,332],"Ruby,":[119,282],"Python":[120],"Smalltalk":[122],"where":[123],"needed":[124],"provide":[126],"compelling":[127,205],"JVM":[128],"solutions":[129],"shortcomings.":[134],"supported":[136,146],"innovation":[137],"through":[138],"its":[139,270],"runtime":[140],"compile-time":[142],"metaprogramming":[143],"capabilities.":[144],"simple":[147],"operator":[148],"overloading,":[149],"had":[150],"flexible":[152],"grammar":[153],"extensible.":[156],"These":[157],"characteristics":[158],"made":[159,266],"suitable":[161],"growing":[163],"new":[168],"commands":[169],"(verbs)":[170],"properties":[172],"(nouns)":[173],"specific":[174],"particular":[177,391],"domain,":[178],"so":[180],"called":[181],"Domain":[182],"Specific":[183],"Language":[184],"(DSL).":[185],"While":[186],"still":[187],"intrinsically":[188],"linked":[189],"Java,":[191],"over":[192,363],"has":[195,367],"evolved":[196,362],"niche":[199],"scripting":[201],"into":[203],"mainstream":[206],"After":[208],"many":[209],"years":[210],"principally":[213],"dynamically-typed":[214],"language,":[215],"static":[217,250],"nature":[218,251],"added":[220],"Groovy.":[222],"Code":[223],"could":[224,236],"statically":[226],"type":[227],"checked":[228],"or":[229,393],"features":[232],"weren\u2019t":[233],"needed,":[234],"they":[235],"turned":[238],"off":[239],"entirely":[240],"Java-like":[242],"performance.":[243],"A":[244],"number":[245],"nuances":[247],"came":[252],"about":[253],"support":[255],"style":[257],"coding":[259],"Many":[264],"choices":[265],"in":[269,274,322],"design,":[271],"later":[272],"appeared":[273],"other":[275],"(Swift,":[277],"C#,":[278],"Kotlin,":[279],"Ceylon,":[280],"PHP,":[281],"Coffeescript,":[283],"Scala,":[284],"Frege,":[285],"TypeScript":[286],"itself).":[289],"includes":[291],"dangling":[293,334],"closure,":[294],"builders,":[296],"null-safe":[297,347],"navigation,":[298],"Elvis":[300,351],"operator,":[301,305],"ranges,":[302],"spaceship":[304],"flow":[307],"typing.":[308],"For":[309],"most":[310],"languages,":[311],"we":[312],"don\u2019t":[313],"know":[314,327],"what":[316],"extent":[317],"played":[319],"part":[321],"their":[323],"choices.":[324],"We":[325],"do":[326],"Kotlin":[329],"took":[330],"inspiration":[331],"closures,":[335,342],"builder":[336],"concept,":[337],"default":[338],"parameter":[340],"templates":[343],"interpolated":[345],"strings,":[346],"navigation":[348],"operator.":[352],"The":[353],"leadership,":[354],"governance":[355],"sponsorship":[357],"arrangements":[358],"time,":[364],"always":[368],"been":[369],"successful":[371],"highly":[372],"collaborative":[373],"open":[374],"source":[375],"project":[376],"driven":[377],"more":[378],"needs":[381],"community":[384],"vision":[388],"company":[392],"person.":[394]},"counts_by_year":[{"year":2025,"cited_by_count":1},{"year":2024,"cited_by_count":1},{"year":2023,"cited_by_count":1},{"year":2021,"cited_by_count":1}],"updated_date":"2026-05-21T06:26:12.895304","created_date":"2025-10-10T00:00:00"}
