Investigation on the diffusion of innovation along with java releases

40 views
Skip to first unread message

Fernando Petrulio

unread,
Jul 31, 2019, 12:33:31 PM7/31/19
to H2 Database
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 H2Database’s source code and documentation 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 h2 1.4.199 did not introduce compatibility with Java 8+ features, including Functional Interfaces and Lambda Expression. We would like to better understand as to why the API does not support newer Java language versions and their features.

Our investigation showed us that in most cases API producers do not migrate their APIs to newer Java Releases. Despite this, the API remains to be widely used by consumers on GitHub. Can you provide us with more information on this phenomenon?
Did you and your team ever discuss the migration to new Java releases? If so, what did this discussion entail?
What is the reason behind not migrating to a newer Java version?
Did the introduction of new language features such as lambda expressions influence your decision in any way?
Does your API plan on introducing support for lambda expressions in the future?

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.

-- 
Fernando Petrulio
Ph.D. Student - University of Zurich UZH
Department of Informatics
fpet...@ifi.uzh.ch

Evgenij Ryazanov

unread,
Jul 31, 2019, 9:51:35 PM7/31/19
to H2 Database
Hello.

I think you don't understand well what is API of a database engine or its driver and what is not. Code of H2 is not used directly with few exclusions.

Databases are accessed by Java programs with a JDBC. JDBC is described by the JDBC Specification and its classes are located in java.sql and javax.sql packages.
We do not control development of JDBC in any way.

There are some modern alternatives for JDBC such as ADBA and R2DBC, but they are still in development and don't have stable API, so we don't provide drivers for them. However, R2DBC community has an own driver for H2.

H2 is compatible with Java 7 and Android API 21 (and some people still use old versions on Java 6), but H2 provides new features such as JSR-310 datetime data types on Java 8+.
Reply all
Reply to author
Forward
0 new messages