JavaGI
- 1 July 2011
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 33 (4), 1-83
- https://doi.org/10.1145/1985342.1985343
Abstract
The language JavaGI extends Java 1.5 conservatively by a generalized interface mechanism. The generalization subsumes retroactive and type-conditional interface implementations, binary methods, symmetric multiple dispatch, interfaces over families of types, and static interface methods. These features make certain coding patterns redundant, increase the expressiveness of the type system, and permit solutions to extension and integration problems with components in binary form, for which previously several unrelated extensions had been suggested. This article explains JavaGI and motivates its design. Moreover, it formalizes a core calculus for JavaGI and proves type soundness, decidability of typechecking, and determinacy of evaluation. The article also presents the implementation of a JavaGI compiler and an accompanying run-time system. The compiler, based on the Eclipse Compiler for Java, offers mostly modular static typechecking and fully modular code generation. It defers certain well-formedness checks until load time to increase flexibility and to enable full support for dynamic loading. Benchmarks show that the code generated by the compiler offers good performance. Several case studies demonstrate the practical utility of the language and its implementation.Keywords
This publication has 100 references indexed in Scilit:
- Lightweight family polymorphismJournal of Functional Programming, 2008
- FeatherTraitACM Transactions on Programming Languages and Systems, 2008
- Nominal and Structural Subtyping in Component-Based Programming.The Journal of Object Technology, 2008
- MultiJavaACM Transactions on Programming Languages and Systems, 2006
- An embedded domain-specific language for type-safe server-side web scriptingACM Transactions on Internet Technology, 2005
- Adding Wildcards to the Java Programming Language.The Journal of Object Technology, 2004
- PolyTOILACM Transactions on Programming Languages and Systems, 2003
- Safe Structural Conformance for JavaThe Computer Journal, 2000
- Static typingACM SIGPLAN OOPS Messenger, 1995
- A Proposal for Making Eiffel Type-safeThe Computer Journal, 1989