Lorenzo Bettini ; Viviana Bono ; Mariangiola Dezani-Ciancaglini ; Paola Giannini ; Betti Venneri - Java & Lambda: a Featherweight Story

lmcs:4216 - Logical Methods in Computer Science, September 5, 2018, Volume 14, Issue 3 - https://doi.org/10.23638/LMCS-14(3:17)2018
Java & Lambda: a Featherweight StoryArticle

Authors: Lorenzo Bettini ORCID; Viviana Bono ORCID; Mariangiola Dezani-Ciancaglini ORCID; Paola Giannini ORCID; Betti Venneri ORCID

    We present FJ&$\lambda$, a new core calculus that extends Featherweight Java (FJ) with interfaces, supporting multiple inheritance in a restricted form, $\lambda$-expressions, and intersection types. Our main goal is to formalise how lambdas and intersection types are grafted on Java 8, by studying their properties in a formal setting. We show how intersection types play a significant role in several cases, in particular in the typecast of a $\lambda$-expression and in the typing of conditional expressions. We also embody interface \emph{default methods} in FJ&$\lambda$, since they increase the dynamism of $\lambda$-expressions, by allowing these methods to be called on $\lambda$-expressions. The crucial point in Java 8 and in our calculus is that $\lambda$-expressions can have various types according to the context requirements (target types): indeed, Java code does not compile when $\lambda$-expressions come without target types. In particular, in the operational semantics we must record target types by decorating $\lambda$-expressions, otherwise they would be lost in the runtime expressions. We prove the subject reduction property and progress for the resulting calculus, and we give a type inference algorithm that returns the type of a given program if it is well typed. The design of FJ&$\lambda$ has been driven by the aim of making it a subset of Java 8, while preserving the elegance and compactness of FJ. Indeed, FJ&$\lambda$ programs are typed and behave the same as Java programs.


    Volume: Volume 14, Issue 3
    Published on: September 5, 2018
    Accepted on: July 24, 2018
    Submitted on: January 17, 2018
    Keywords: Computer Science - Logic in Computer Science,Computer Science - Programming Languages,03B70, 03B15, 68Q55
    Funding:
      Source : OpenAIRE Graph
    • Scalable Hybrid Variability for Distributed Evolving Software Systems; Funder: European Commission; Code: 644298
    • REfactoring Parallel Heterogeneous Resource-Aware Applications - a Software Engineering Approach; Funder: European Commission; Code: 644235

    4 Documents citing this article

    Consultation statistics

    This page has been seen 2263 times.
    This article's PDF has been downloaded 714 times.