{"id":"https://openalex.org/W3006599765","doi":"https://doi.org/10.22152/programming-journal.org/2020/4/9","title":"Generating a Generic Fluent API in Java","display_name":"Generating a Generic Fluent API in Java","publication_year":2020,"publication_date":"2020-02-14","ids":{"openalex":"https://openalex.org/W3006599765","doi":"https://doi.org/10.22152/programming-journal.org/2020/4/9","mag":"3006599765"},"language":"en","primary_location":{"id":"doi:10.22152/programming-journal.org/2020/4/9","is_oa":false,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2020/4/9","pdf_url":null,"source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},"type":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"https://arxiv.org/pdf/2002.06179","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5083973204","display_name":"Tomoki Nakamaru","orcid":"https://orcid.org/0000-0002-9451-5595"},"institutions":[{"id":"https://openalex.org/I74801974","display_name":"The University of Tokyo","ror":"https://ror.org/057zh3y96","country_code":"JP","type":"education","lineage":["https://openalex.org/I74801974"]}],"countries":["JP"],"is_corresponding":true,"raw_author_name":"Tomoki Nakamaru","raw_affiliation_strings":["The University of Tokyo, Japan"],"affiliations":[{"raw_affiliation_string":"The University of Tokyo, Japan","institution_ids":["https://openalex.org/I74801974"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5026542200","display_name":"Shigeru Chiba","orcid":"https://orcid.org/0000-0001-9458-5713"},"institutions":[{"id":"https://openalex.org/I74801974","display_name":"The University of Tokyo","ror":"https://ror.org/057zh3y96","country_code":"JP","type":"education","lineage":["https://openalex.org/I74801974"]}],"countries":["JP"],"is_corresponding":false,"raw_author_name":"Shigeru Chiba","raw_affiliation_strings":["The University of Tokyo, Japan"],"affiliations":[{"raw_affiliation_string":"The University of Tokyo, Japan","institution_ids":["https://openalex.org/I74801974"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5083973204"],"corresponding_institution_ids":["https://openalex.org/I74801974"],"apc_list":null,"apc_paid":null,"fwci":0.6857,"has_fulltext":false,"cited_by_count":5,"citation_normalized_percentile":{"value":0.75723602,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":97},"biblio":{"volume":"4","issue":"3","first_page":null,"last_page":null},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9997000098228455,"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"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9997000098228455,"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/T10260","display_name":"Software Engineering Research","score":0.9995999932289124,"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/T10142","display_name":"Formal Methods in Verification","score":0.9991000294685364,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"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.8207347393035889},{"id":"https://openalex.org/keywords/fluent","display_name":"Fluent","score":0.7234228253364563},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.546356201171875},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.4777628481388092},{"id":"https://openalex.org/keywords/syntax","display_name":"Syntax","score":0.4535175859928131},{"id":"https://openalex.org/keywords/parsing","display_name":"Parsing","score":0.44291627407073975},{"id":"https://openalex.org/keywords/context","display_name":"Context (archaeology)","score":0.41926732659339905},{"id":"https://openalex.org/keywords/database","display_name":"Database","score":0.3833484351634979},{"id":"https://openalex.org/keywords/world-wide-web","display_name":"World Wide Web","score":0.3254617154598236},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.15353527665138245}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8207347393035889},{"id":"https://openalex.org/C2780411076","wikidata":"https://www.wikidata.org/wiki/Q5462653","display_name":"Fluent","level":3,"score":0.7234228253364563},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.546356201171875},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.4777628481388092},{"id":"https://openalex.org/C60048249","wikidata":"https://www.wikidata.org/wiki/Q37437","display_name":"Syntax","level":2,"score":0.4535175859928131},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.44291627407073975},{"id":"https://openalex.org/C2779343474","wikidata":"https://www.wikidata.org/wiki/Q3109175","display_name":"Context (archaeology)","level":2,"score":0.41926732659339905},{"id":"https://openalex.org/C77088390","wikidata":"https://www.wikidata.org/wiki/Q8513","display_name":"Database","level":1,"score":0.3833484351634979},{"id":"https://openalex.org/C136764020","wikidata":"https://www.wikidata.org/wiki/Q466","display_name":"World Wide Web","level":1,"score":0.3254617154598236},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.15353527665138245},{"id":"https://openalex.org/C151730666","wikidata":"https://www.wikidata.org/wiki/Q7205","display_name":"Paleontology","level":1,"score":0.0},{"id":"https://openalex.org/C500300565","wikidata":"https://www.wikidata.org/wiki/Q925667","display_name":"Computer simulation","level":2,"score":0.0},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.0},{"id":"https://openalex.org/C44154836","wikidata":"https://www.wikidata.org/wiki/Q45045","display_name":"Simulation","level":1,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.22152/programming-journal.org/2020/4/9","is_oa":false,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2020/4/9","pdf_url":null,"source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},{"id":"pmh:oai:arXiv.org:2002.06179","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2002.06179","pdf_url":"https://arxiv.org/pdf/2002.06179","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"}],"best_oa_location":{"id":"pmh:oai:arXiv.org:2002.06179","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2002.06179","pdf_url":"https://arxiv.org/pdf/2002.06179","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":31,"referenced_works":["https://openalex.org/W1493925387","https://openalex.org/W1502293651","https://openalex.org/W1870299213","https://openalex.org/W1970961429","https://openalex.org/W1995618084","https://openalex.org/W2044590882","https://openalex.org/W2059935209","https://openalex.org/W2073787041","https://openalex.org/W2078200248","https://openalex.org/W2094571689","https://openalex.org/W2094694891","https://openalex.org/W2095932826","https://openalex.org/W2130559265","https://openalex.org/W2136646111","https://openalex.org/W2142973056","https://openalex.org/W2145020764","https://openalex.org/W2152907450","https://openalex.org/W2165575313","https://openalex.org/W2202435499","https://openalex.org/W2427840161","https://openalex.org/W2539064697","https://openalex.org/W2543953340","https://openalex.org/W2762430574","https://openalex.org/W2898608658","https://openalex.org/W2966037109","https://openalex.org/W2979716378","https://openalex.org/W3032926401","https://openalex.org/W3100864431","https://openalex.org/W4234065310","https://openalex.org/W4240177611","https://openalex.org/W4240735127"],"related_works":["https://openalex.org/W2368171720","https://openalex.org/W2360681677","https://openalex.org/W579810227","https://openalex.org/W2952780262","https://openalex.org/W2749690376","https://openalex.org/W2372741247","https://openalex.org/W2786317006","https://openalex.org/W2979495269","https://openalex.org/W2077104824","https://openalex.org/W2168778844"],"abstract_inverted_index":{"Context:":[0],"The":[1,62,77,101,133,146,170,221,334,408],"algorithms":[2,64],"for":[3,59,167,187,242,249,457],"generating":[4],"a":[5,31,40,52,73,84,89,93,104,143,184,203,211,231,259,268,313,317,321,324,330,339,343,348,384,404,412,436,450,463],"safe":[6,15,41,53,74,151,421,451],"fluent":[7,16,20,54,75,90,106,114,119,152,270,406,414,422,452],"API":[8,17,21,28,36,55,91,107,115,120,135,153,236,244,415,423,442,453],"are":[9,65,300],"actively":[10],"studied":[11,66],"these":[12],"years.":[13],"A":[14,112],"is":[18,56,92,138,177,275,308,336,345,356,387,416,435],"the":[19,27,35,44,49,60,69,80,97,118,150,158,162,174,188,194,200,218,239,251,255,278,292,360,367,371,381,391,420,426,430,440,447,480,483],"that":[22,121,126,161,198,215,238,304,353,386],"reports":[23],"incorrect":[24],"chaining":[25],"of":[26,46,51,72,86,103,141,173,193,202,214,280,291,374,432,449,485],"methods":[29,124],"as":[30,277],"type":[32,128,195,204,219,227,252,286,298,322,325,340,355,375,433],"error":[33],"to":[34,67,117,178,182,208,229,266,310,323,329,358,402,410,418,425,467,478],"users.":[37],"Although":[38],"such":[39,142],"property":[42],"improves":[43],"productivity":[45],"its":[47],"users,":[48],"construction":[50,279],"too":[57],"complicated":[58],"developers.":[61],"generation":[63,81,102,154,424,448],"reduce":[68],"development":[70],"cost":[71],"API.":[76,145,271,407],"study":[78,176],"on":[79,149,157,191,217,254],"would":[82,245],"benefit":[83],"number":[85],"programmers":[87],"since":[88,338,429],"popular":[94],"design":[95],"in":[96,130,136,234,303,316,342,359,383,439],"real":[98,427],"world.":[99],"Inquiry:":[100],"generic":[105,113,123,144,232,269,405,413],"has":[108],"been":[109],"left":[110],"untackled.":[111],"refers":[116,328],"provides":[122],"(methods":[125],"contain":[127],"parameters":[129,228,299,376,434],"their":[131,235,243,378],"definitions).":[132],"Stream":[134],"Java":[137],"an":[139,264],"example":[140],"recent":[147],"research":[148],"rather":[155],"focuses":[156],"grammar":[159],"class":[160],"algorithm":[163,265,274,365,398],"can":[164],"deal":[165],"with":[166,285],"syntax":[168],"checking.":[169],"key":[171],"idea":[172],"previous":[175],"use":[179,226,431],"nested":[180],"generics":[181],"represent":[183],"stack":[185,212],"structure":[186],"parser":[189,216],"built":[190],"top":[192],"system.":[196,220],"In":[197],"idea,":[199],"role":[201],"parameter":[205,287,341],"was":[206],"limited":[207],"internally":[209],"representing":[210],"element":[213],"library":[222,400,441],"developers":[223,401],"could":[224],"not":[225],"include":[230],"method":[233,314,350,362],"so":[237],"semantic":[240],"constraints":[241],"be":[246,455],"statically":[247],"checked,":[248],"example,":[250],"constraint":[253],"items":[256],"passed":[257],"through":[258],"stream.":[260],"Approach:":[261],"We":[262,461,471],"propose":[263],"generate":[267,411],"Our":[272,364,397],"translation":[273],"modeled":[276],"deterministic":[281],"finite":[282],"automaton":[283],"(DFA)":[284],"information.":[288],"Each":[289],"state":[290],"DFA":[293,368,385],"holds":[294],"information":[295,307],"about":[296],"which":[297],"already":[301],"bound":[302,332,346,354],"state.":[305],"This":[306],"used":[309],"identify":[311],"whether":[312],"invocation":[315],"chain":[318,344],"newly":[319],"binds":[320],"parameter,":[326],"or":[327],"previously":[331],"type.":[333],"identification":[335],"required":[337],"at":[347],"particular":[349],"invocation,":[351],"and":[352,377,395,482],"referred":[357],"following":[361],"invocations.":[363],"constructs":[366],"by":[369],"analyzing":[370],"binding":[372],"time":[373],"propagation":[379],"among":[380],"states":[382],"naively":[388],"constructed":[389],"from":[390],"given":[392],"grammar.":[393],"Knowledge":[394],"Importance:":[396],"helps":[399],"develop":[403],"ability":[409,481],"essential":[417],"bring":[419],"world":[428],"common":[437],"technique":[438],"design.":[443],"By":[444],"our":[445,469,486],"algorithm,":[446],"will":[454],"ready":[456],"practical":[458],"use.":[459],"Grounding:":[460],"implemented":[462],"generator":[464],"named":[465],"Protocool":[466,477],"demonstrate":[468],"algorithm.":[470,487],"also":[472],"generated":[473],"several":[474],"libraries":[475],"using":[476],"show":[479],"limitations":[484]},"counts_by_year":[{"year":2022,"cited_by_count":3},{"year":2021,"cited_by_count":1},{"year":2020,"cited_by_count":1}],"updated_date":"2026-03-20T23:20:44.827607","created_date":"2025-10-10T00:00:00"}
