Affiliation:
1. University of Cambridge, Cambridge, United Kingdom
Abstract
Java has no module system. Its
packages
only subdivide the class name space, allowing only a very limited form of component-level information hiding and reuse. Two Java Community Processes have started addressing this problem: one describes the runtime system and has reached an early draft stage, while the other considers the developer's view and only has a straw-man proposal. Both are natural language documents, which inevitably contain ambiguities.
In this work we design and formalize a core module system for Java. Where the JCP documents are complete, we follow them closely; elsewhere we make reasonable choices. We define the syntax, the type system, and the operational semantics of an
LJAM
language, defining these rigorously in the Isabelle/HOL automated proof assistant. Using this formalization, we identify various issues with the module system. We highlight the underlying design decisions, and discuss several alternatives and their benefits. Our Isabelle/HOL definitions should provide a basis for further consideration of the design alternatives, for reference implementations, and for proofs of soundness.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference30 articles.
1. Apache Felix. http://cwiki.apache.org/felix/. Apache Felix. http://cwiki.apache.org/felix/.
2. Eclipse Callisto. http://www.eclipse.org/callisto/. Eclipse Callisto. http://www.eclipse.org/callisto/.
3. Equinox. http://www.eclipse.org/equinox/. Equinox. http://www.eclipse.org/equinox/.
4. Fusion. http://en.wikipedia.org/wiki/.NET_assembly#Fusion. Fusion. http://en.wikipedia.org/wiki/.NET_assembly#Fusion.
5. Polymorphic bytecode
Cited by
9 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献