Fernando,

In general, it feels to me the Apache Commons community is split and slow
moving to adopt newer version of Java. Currently, updating the platform
requirements of a component to Java 8 causes some people to react with
"What about people running on Java 7?!" comments, or "What Java 8 features
are required? Why update Java if we don't need to?". Others, like me, would
prefer to move to Java 8 as the base version for all components, and build
on that, showing contributors that we are set up to accept code that
use modern language constructs like lambdas. We've had to reject or rework
some PRs because they depended on Java 8 APIs when the component was still
on Java 7, not a great position IMO.

Argument for whether or not lambdas "improve readability" or  is a debate I
care not to enter ;-)

Gary

On Tue, Jul 30, 2019 at 4:54 AM <f.petru...@virgilio.it.invalid> wrote:

> 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