The indolent lambdification of Java

As Java 8 introduced functional interfaces and lambda expressions to the Java programming language, the JDK API was changed to introduce support for lambda expressions, thus allowing consumers to define lambda functions when using Java’s collections. While the JDK API allows for a functional paradig...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Empirical software engineering : an international journal 2021-12, Vol.26 (6)
Hauptverfasser: Petrulio Fernando, Sawant, Anand Ashok, Bacchelli, Alberto
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page
container_issue 6
container_start_page
container_title Empirical software engineering : an international journal
container_volume 26
creator Petrulio Fernando
Sawant, Anand Ashok
Bacchelli, Alberto
description As Java 8 introduced functional interfaces and lambda expressions to the Java programming language, the JDK API was changed to introduce support for lambda expressions, thus allowing consumers to define lambda functions when using Java’s collections. While the JDK API allows for a functional paradigm, for API consumers to be able to completely embrace Java’s new functional features, third-party APIs must also support lambda expressions. To understand the current state of the Java ecosystem, we investigate (i) the extent to which third-party Java APIs have changed their interfaces, (ii) why or why not they introduce functional interface support and (iii) in the case the API has changed its interface how it does so. We also investigate the consumers’ perspective, particularly their ease in using lambda expressions in Java with APIs. We perform our investigation by manually analyzing the top 50 popular Java APIs, conducting in-person and email interviews with 23 API producers, and surveying 110 developers. We find that only a minority of the top 50 APIs support functional interfaces, the rest does not support them, predominantly in the interest of backward compatibility. Java 7 support is still greatly desirable due to enterprise projects not migrating to newer versions of Java. This suggests that the Java ecosystem is stagnant and that the introduction of new language features will not be enough to save it from the advent of new languages such as Kotlin (JVM based) and Rust (non-JVM based).
doi_str_mv 10.1007/s10664-021-10039-9
format Article
fullrecord <record><control><sourceid>proquest</sourceid><recordid>TN_cdi_proquest_journals_2578267571</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>2578267571</sourcerecordid><originalsourceid>FETCH-LOGICAL-c1219-63564388f03895a044e0b59507ffd3ca52985094e62ce9d09fef4c3a79c8b7223</originalsourceid><addsrcrecordid>eNotjcFKAzEURYMoWKs_4Gqg6-hLXl6St5SiVim4qeuSySQ4ZZxoM_X7HdDVPWdzrhC3Cu4UgLuvCqw1ErSSsyNLPhMLRQ6ls8qez4xeS9RkL8VVrQcAYGdoIVa7j9T0Y1eGNE7NED7brs99DFNfxqbk5jX8hGtxkcNQ083_LsX70-NuvZHbt-eX9cNWRqUVS4tkDXqfAT1TAGMStMQELucOYyDNnoBNsjom7oBzyiZicBx967TGpVj9db-O5fuU6rQ_lNNxnC_3mpzX1pFT-AtZyT-g</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2578267571</pqid></control><display><type>article</type><title>The indolent lambdification of Java</title><source>Springer Nature - Complete Springer Journals</source><creator>Petrulio Fernando ; Sawant, Anand Ashok ; Bacchelli, Alberto</creator><creatorcontrib>Petrulio Fernando ; Sawant, Anand Ashok ; Bacchelli, Alberto</creatorcontrib><description>As Java 8 introduced functional interfaces and lambda expressions to the Java programming language, the JDK API was changed to introduce support for lambda expressions, thus allowing consumers to define lambda functions when using Java’s collections. While the JDK API allows for a functional paradigm, for API consumers to be able to completely embrace Java’s new functional features, third-party APIs must also support lambda expressions. To understand the current state of the Java ecosystem, we investigate (i) the extent to which third-party Java APIs have changed their interfaces, (ii) why or why not they introduce functional interface support and (iii) in the case the API has changed its interface how it does so. We also investigate the consumers’ perspective, particularly their ease in using lambda expressions in Java with APIs. We perform our investigation by manually analyzing the top 50 popular Java APIs, conducting in-person and email interviews with 23 API producers, and surveying 110 developers. We find that only a minority of the top 50 APIs support functional interfaces, the rest does not support them, predominantly in the interest of backward compatibility. Java 7 support is still greatly desirable due to enterprise projects not migrating to newer versions of Java. This suggests that the Java ecosystem is stagnant and that the introduction of new language features will not be enough to save it from the advent of new languages such as Kotlin (JVM based) and Rust (non-JVM based).</description><identifier>ISSN: 1382-3256</identifier><identifier>EISSN: 1573-7616</identifier><identifier>DOI: 10.1007/s10664-021-10039-9</identifier><language>eng</language><publisher>Dordrecht: Springer Nature B.V</publisher><subject>Compilers ; Consumers ; Investigations ; Java</subject><ispartof>Empirical software engineering : an international journal, 2021-12, Vol.26 (6)</ispartof><rights>The Author(s) 2021. This work is published under http://creativecommons.org/licenses/by/4.0/ (the “License”). Notwithstanding the ProQuest Terms and Conditions, you may use this content in accordance with the terms of the License.</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c1219-63564388f03895a044e0b59507ffd3ca52985094e62ce9d09fef4c3a79c8b7223</citedby></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,777,781,27905,27906</link.rule.ids></links><search><creatorcontrib>Petrulio Fernando</creatorcontrib><creatorcontrib>Sawant, Anand Ashok</creatorcontrib><creatorcontrib>Bacchelli, Alberto</creatorcontrib><title>The indolent lambdification of Java</title><title>Empirical software engineering : an international journal</title><description>As Java 8 introduced functional interfaces and lambda expressions to the Java programming language, the JDK API was changed to introduce support for lambda expressions, thus allowing consumers to define lambda functions when using Java’s collections. While the JDK API allows for a functional paradigm, for API consumers to be able to completely embrace Java’s new functional features, third-party APIs must also support lambda expressions. To understand the current state of the Java ecosystem, we investigate (i) the extent to which third-party Java APIs have changed their interfaces, (ii) why or why not they introduce functional interface support and (iii) in the case the API has changed its interface how it does so. We also investigate the consumers’ perspective, particularly their ease in using lambda expressions in Java with APIs. We perform our investigation by manually analyzing the top 50 popular Java APIs, conducting in-person and email interviews with 23 API producers, and surveying 110 developers. We find that only a minority of the top 50 APIs support functional interfaces, the rest does not support them, predominantly in the interest of backward compatibility. Java 7 support is still greatly desirable due to enterprise projects not migrating to newer versions of Java. This suggests that the Java ecosystem is stagnant and that the introduction of new language features will not be enough to save it from the advent of new languages such as Kotlin (JVM based) and Rust (non-JVM based).</description><subject>Compilers</subject><subject>Consumers</subject><subject>Investigations</subject><subject>Java</subject><issn>1382-3256</issn><issn>1573-7616</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2021</creationdate><recordtype>article</recordtype><sourceid>AFKRA</sourceid><sourceid>BENPR</sourceid><sourceid>CCPQU</sourceid><sourceid>DWQXO</sourceid><recordid>eNotjcFKAzEURYMoWKs_4Gqg6-hLXl6St5SiVim4qeuSySQ4ZZxoM_X7HdDVPWdzrhC3Cu4UgLuvCqw1ErSSsyNLPhMLRQ6ls8qez4xeS9RkL8VVrQcAYGdoIVa7j9T0Y1eGNE7NED7brs99DFNfxqbk5jX8hGtxkcNQ083_LsX70-NuvZHbt-eX9cNWRqUVS4tkDXqfAT1TAGMStMQELucOYyDNnoBNsjom7oBzyiZicBx967TGpVj9db-O5fuU6rQ_lNNxnC_3mpzX1pFT-AtZyT-g</recordid><startdate>20211201</startdate><enddate>20211201</enddate><creator>Petrulio Fernando</creator><creator>Sawant, Anand Ashok</creator><creator>Bacchelli, Alberto</creator><general>Springer Nature B.V</general><scope>7SC</scope><scope>8FD</scope><scope>8FE</scope><scope>8FG</scope><scope>ABJCF</scope><scope>AFKRA</scope><scope>ARAPS</scope><scope>BENPR</scope><scope>BGLVJ</scope><scope>CCPQU</scope><scope>DWQXO</scope><scope>HCIFZ</scope><scope>JQ2</scope><scope>L6V</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope><scope>M7S</scope><scope>P5Z</scope><scope>P62</scope><scope>PQEST</scope><scope>PQQKQ</scope><scope>PQUKI</scope><scope>PRINS</scope><scope>PTHSS</scope><scope>S0W</scope></search><sort><creationdate>20211201</creationdate><title>The indolent lambdification of Java</title><author>Petrulio Fernando ; Sawant, Anand Ashok ; Bacchelli, Alberto</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c1219-63564388f03895a044e0b59507ffd3ca52985094e62ce9d09fef4c3a79c8b7223</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2021</creationdate><topic>Compilers</topic><topic>Consumers</topic><topic>Investigations</topic><topic>Java</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Petrulio Fernando</creatorcontrib><creatorcontrib>Sawant, Anand Ashok</creatorcontrib><creatorcontrib>Bacchelli, Alberto</creatorcontrib><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest SciTech Collection</collection><collection>ProQuest Technology Collection</collection><collection>Materials Science &amp; Engineering Collection</collection><collection>ProQuest Central UK/Ireland</collection><collection>Advanced Technologies &amp; Aerospace Collection</collection><collection>ProQuest Central</collection><collection>Technology Collection</collection><collection>ProQuest One Community College</collection><collection>ProQuest Central Korea</collection><collection>SciTech Premium Collection</collection><collection>ProQuest Computer Science Collection</collection><collection>ProQuest Engineering Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts – Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><collection>Engineering Database</collection><collection>Advanced Technologies &amp; Aerospace Database</collection><collection>ProQuest Advanced Technologies &amp; Aerospace Collection</collection><collection>ProQuest One Academic Eastern Edition (DO NOT USE)</collection><collection>ProQuest One Academic</collection><collection>ProQuest One Academic UKI Edition</collection><collection>ProQuest Central China</collection><collection>Engineering Collection</collection><collection>DELNET Engineering &amp; Technology Collection</collection><jtitle>Empirical software engineering : an international journal</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Petrulio Fernando</au><au>Sawant, Anand Ashok</au><au>Bacchelli, Alberto</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>The indolent lambdification of Java</atitle><jtitle>Empirical software engineering : an international journal</jtitle><date>2021-12-01</date><risdate>2021</risdate><volume>26</volume><issue>6</issue><issn>1382-3256</issn><eissn>1573-7616</eissn><abstract>As Java 8 introduced functional interfaces and lambda expressions to the Java programming language, the JDK API was changed to introduce support for lambda expressions, thus allowing consumers to define lambda functions when using Java’s collections. While the JDK API allows for a functional paradigm, for API consumers to be able to completely embrace Java’s new functional features, third-party APIs must also support lambda expressions. To understand the current state of the Java ecosystem, we investigate (i) the extent to which third-party Java APIs have changed their interfaces, (ii) why or why not they introduce functional interface support and (iii) in the case the API has changed its interface how it does so. We also investigate the consumers’ perspective, particularly their ease in using lambda expressions in Java with APIs. We perform our investigation by manually analyzing the top 50 popular Java APIs, conducting in-person and email interviews with 23 API producers, and surveying 110 developers. We find that only a minority of the top 50 APIs support functional interfaces, the rest does not support them, predominantly in the interest of backward compatibility. Java 7 support is still greatly desirable due to enterprise projects not migrating to newer versions of Java. This suggests that the Java ecosystem is stagnant and that the introduction of new language features will not be enough to save it from the advent of new languages such as Kotlin (JVM based) and Rust (non-JVM based).</abstract><cop>Dordrecht</cop><pub>Springer Nature B.V</pub><doi>10.1007/s10664-021-10039-9</doi><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 1382-3256
ispartof Empirical software engineering : an international journal, 2021-12, Vol.26 (6)
issn 1382-3256
1573-7616
language eng
recordid cdi_proquest_journals_2578267571
source Springer Nature - Complete Springer Journals
subjects Compilers
Consumers
Investigations
Java
title The indolent lambdification of Java
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-20T15%3A13%3A09IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=The%20indolent%20lambdification%20of%20Java&rft.jtitle=Empirical%20software%20engineering%20:%20an%20international%20journal&rft.au=Petrulio%20Fernando&rft.date=2021-12-01&rft.volume=26&rft.issue=6&rft.issn=1382-3256&rft.eissn=1573-7616&rft_id=info:doi/10.1007/s10664-021-10039-9&rft_dat=%3Cproquest%3E2578267571%3C/proquest%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=2578267571&rft_id=info:pmid/&rfr_iscdi=true