楠本研究室

業績一覧

ホーム業績一覧

A Study on the Current Status of Functional Idioms in Java

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 (2019)
概要: 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 single statement, and Stream is used to operate the elements of collection. On the other hand, some developers implement Optional with using deprecated methods. We can say that it may be necessary to good usage of the idioms are widely known among developers. タグ: Functional, idioms, Java, Lambda, Expression, Stream, Optional
@article{HirotoTanaka2019,
  author = {Hiroto Tanaka and Shinsuke Matsumoto and Shinji Kusumoto},
  title = {A Study on the Current Status of Functional Idioms in Java},
  journal = {IEICE TRANSACTIONS on Information and Systems},
  volume = {E102-D},
  number = {12},
  pages = {2414--2422},
  year = {2019},
  month = {dec}
}