Title
A Study On The Current Status Of Functional Idioms In Java
Abstract
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.
Year
DOI
Venue
2019
10.1587/transinf.2019MPP0002
IEICE TRANSACTIONS ON INFORMATION AND SYSTEMS
Keywords
Field
DocType
functional idioms, java, lambda expression, stream, optional
Computer vision,Programming language,Computer science,Artificial intelligence,Java
Journal
Volume
Issue
ISSN
E102D
12
1745-1361
Citations 
PageRank 
References 
0
0.34
0
Authors
3
Name
Order
Citations
PageRank
Hiroto Tanaka100.34
Shinsuke Matsumoto220533.53
Shinji Kusumoto31811137.88