Affiliation:
1. factis research GmbH
2. University of Freiburg
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.
Publisher
Association for Computing Machinery (ACM)
Reference196 articles.
1. Modular multiple dispatch with multiple inheritance
2. Apache Software Foundation. 2009. Apache Tomcat. http://tomcat.apache.org/. Apache Software Foundation. 2009. Apache Tomcat. http://tomcat.apache.org/.
3. Apple Inc. 2009. The Objective-C programming language. http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf. Apple Inc. 2009. The Objective-C programming language. http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf.
4. AspectJ Team. 2009a. The AspectJ development environment guide. http://www.eclipse.org/aspectj/doc/released/devguide/index.html. AspectJ Team. 2009a. The AspectJ development environment guide. http://www.eclipse.org/aspectj/doc/released/devguide/index.html.
Cited by
11 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Existential Containers in Scala;Proceedings of the 21st ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes;2024-09-13
2. Featherweight Swift: a Core calculus for Swift’s type system;Proceedings of the 13th ACM SIGPLAN International Conference on Software Language Engineering;2020-11-15
3. Familia: unifying interfaces, type classes, and family polymorphism;Proceedings of the ACM on Programming Languages;2017-10-12
4. Language Support for Generic Programming in Object-Oriented Languages: Peculiarities, Drawbacks, Ways of Improvement;Programming Languages;2016
5. Lightweight, flexible object-oriented generics;ACM SIGPLAN Notices;2015-08-07