Dear Developers,

we are members of the ZEST research group (Zurich Empirical Software 
Engineering Team) based at the University of Zurich and the Delft University of 
Technology. We are conducting an investigation on the diffusion of innovations 
and we focus on the adoption of new language features. Our research is focused 
on how API producers adapt their interfaces to introduce support for Java 8’s 
lambdas. During the course of our investigation, we manually inspected 
commons-collections, commons-text, and commons-lang’s source code and 
documentations to understand whether Java’s lambdas have widespread adoption. 
We would like to have your feedback on our findings.

Our study focuses primarily on Functional Interfaces and Lambda Expressions as 
these new features were introduced by the Java language and adopted the Java 
JDK API, as they reduce implementation complexity, improve readability, offer 
performance benefits and improve security contextualization.
Our analysis showed that though commons-collection 4.2, commons-text 1.7, and 
commons-lang3 3.9 did not explicitly introduce support for functional 
interfaces (e.g. by using the @FunctionalInterface annotation). We noticed that 
the APIs provide compatibility with Java 8+ features, including lambda 
expressions (since the APIs’s build platform is now on JDK 1.8+). We would like 
to better understand as to why no major change was necessitated to facilitate 
the usage of lambda expressions with the API.

In most cases, developers choose to move to new releases to satisfy particular 
dependency requirements, to take advantage of new Java features (like streams 
and functional interfaces in the case of Java 8), or just to standardize their 
implementation to align the API with the Java JDK API. Can you provide us with 
more information about this?
How did you and your team tackle the choice to change the version of Java 
supported?
Which factors did you take into account when doing this?
Are there any documented sources (e.g. Jira tickets, or issue tracker issues) 
about that discussion you can provide us with?
Why were no explicit changes made to the interface to support lambda 
expressions?
Are there any future plans in place to make larger changes to the API such that 
lambda expressions would be supported?

We thank you for taking the time to answer our questions. If you would like to 
be posted about the results of this study, please let us know!

Kind Regards,
Fernando Petrulio.


[photo-logo]    
Fernando Petrulio
PhD Student University of Zurich UZH
Department of Informatics

[linkedin] https://www.linkedin.com/in/fernando-petrulio

Reply via email to