A Study on the Current Status of Functional Idioms in Java


IEICE TRANSACTIONS on Information and Systems   Vol.E102-D    No.12    pp.2414-2422
Publication Date: 2019/12/01
Publicized: 2019/09/06
Online ISSN: 1745-1361
DOI: 10.1587/transinf.2019MPP0002
Type of Manuscript: Special Section PAPER (Special Section on Empirical Software Engineering)
functional idioms,  java,  lambda expression,  stream,  optional,  

Full Text: PDF>>
Buy this Article

Over the past recent decades, numerous programming languages have expanded to embrace multi-paradigms such as the fusion of object-oriented and functional programming. For example, Java, one of the most famous object-oriented programming languages, introduced a number of functional idioms in 2014. This evolution enables developers to achieve various benefits from both paradigms. However, we do not know how Java developers use functional idioms actually. Additionally, the extent to which, while there are several criticisms against the idioms, the developers actually accept and/or use the idioms currently remains unclear. In this paper, we investigate the actual use status of three functional idioms (Lambda Expression, Stream, and Optional) in Java projects by mining 100 projects containing approximately 130,000 revisions. From the mining results, we determined that Lambda Expression is utilized in 16% of all the examined projects, whereas Stream and Optional are only utilized in 2% to 3% of those projects. It appears that most Java developers avoid using functional idioms just because of keeping compatibility Java versions, while a number of developers accept these idioms for reasons of readability and runtime performance improvements. Besides, when they adopt the idioms, Lambda Expression frequently consists of a single statement, and Stream is used to operate the elements of a collection. On the other hand, some developers implement Optional using deprecated methods. We can say that good usage of the idioms should be widely known among developers.