Abstract
We suggest a model for dynamic loading and linking as in Java. We distinguish five components in a Java implementation: evaluation, resolution, loading, verification, and preparation — with their associated checks. We demonstrate how these five together guarantee type soundness.
We take an abstract view, and base our model on a language nearer to Java source than to bytecode. We consider the following features of Java: classes, subclasses, fields and hiding, methods and inheritance, and interfaces.
This work was partly supported by EPSRC, Grant ref: GR/L 76709
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Davide Ancona and Elena Zucca. A Primitive calculus for module systems. In PPDP Proceedings, September 1999.
Martin Buechi. Type soundness Issues in Java, May 1999. Types mailing list, at http://www:cis:upenn:edu=bcpierce=types=archives and then /current/msg00140.html.
Luca Cardelli. Program Fragments, Linking, and Modularization. In POPL’97 Proceedings, January 1997.
Drew Dean. The Security of Static Typing with Dynamic Linking. In Fourth ACM Conference on Computer and Communication Security, 1997.
Sophia Drossopoulou. Towards an Abstract model of Java dynami linking and veri cation. In Preliminary Proceedings of the Third Workshop on Types in Compilation (TIC 2000). Carnegie Mellon, CMU-CS-00-161, 2000.
Sophia Drossopoulou, Susan Eisenbach, and Sarfraz Khurshid. Is Java Sound?Theory and Practice of Object Systems, 5(1), January 1999. 82 S. Drossopoulou
Sophia Drossopoulou, Susan Eisenbach, and David Wragg. A Fragment Calculus towards a model of Separate Compilation, Linking and Binary Compatibility. In LICS Proceedings, 1999.
Dominic Duggan. Saring in Typed Module Assembly Language. In Preliminary Proceedings of the Third Workshop on Types in Compilation (TIC 2000). Carnegie Mellon, CMU-CS-00-161, 2000.
Kathleen Fisher, John Reppy, and Jon Riecke. A Calculus for Compiling and Linking Classes. In ESOP Proceedings, March 2000.
Matthew Flatt, Shiram Khrishnamurthi, and Matthias Felleisen. Classes and Mixins. In POPL Proceedings, January 1998.
Philip W. L. Fong and Robert D. Cameron. Proof linking: An architecture for modular veri cation of dynamically-linked mobile code. In ACM SIGSOFT Sixth International Symposium on the Foundations of Software Engineering (FSE’98), November 1998.
Stephen N. Freund and J. C. Mitchell. A Formal Framework for the Java Bytecode Language and Verifier. In OOPSLA Proceeedings, November 1999.
Stephen N. Freund and J. C. Mitchell. A Type System for Object Initialization in the Java Bytecode Language. In OOPSLA Proceeedings, October 1998.
James Gosling, Bill Joy, and Guy Steele. The Java Language Speci cation. Addison-Wesley, August 1996.
Michael Hicks, Stephanie Weirich, and Karl Crary. Safe and Flexible Dynamic Linking of Native Code. In Preliminary Proceedings of the Third Workshop on Types in Compilation (TIC 2000). Carnegie Mellon, CMU-CS-00-161, 2000.
Atsushi Igarashi, Benjamin Pierce, and Philip Wadler. Featherweight Java: A minimal core calculus for Java and GJ. In OOPSLA Proceedings, November 1999.
Thomas Jensen, Daniel Le Metyayer, and Tommy Thorn. A Formalization of Visibility and Dynamic Loading in Java. In IEEE ICCL, 1998.
Christopher League, Zhong Shao, and Valery Trifonov. Representing Java Classes in a Typed Intermediate language. In ICFP Proceedings, September 1999.
Sheng Liang and Gilad Bracha. Dynamic Class Loading in the JavaTM Virtual Machine. In OOPSLA Proceedings, October 1998.
Tim Lindholm and Frank Yellin. The Java Virtual Machine. Addison-Wesley, 1997.
Tim Lindholm and Frank Yellin. The Java Virtual Machine. Addison-Wesley, 1999.
Zhenyu Qian. Least Types for Memory Locations in Java Bytecode. In FOOL 6. http://www.cs.williams.edu/_kim/FOOL/sched6.html, 1999.
Zhenyu Qian, Allen Goldberg, and Alessandro Coglio. A Formal Speci cation of JavaTM Class Loading. In OOPSLA’2000, November 2000.
Vijay Saraswat. Java is not type-safe. Technical report, AT&T Research, 1997. http://www.research.att.comp/vj/bug.html.
Raymie Stata and Martin Abadi. A Type System For Java Bytecode Subroutines. In POPL’98 Proceedings, January 1998.
Donald Syme. Proving Java Type Sound. In Jim Alves-Foss editor, Formal Syntax and Semantics of Java, volume 1523 of LNCS. Springer, 1999.
Akihiko Tozawa and Masami Hagiya. Careful Analysis of Type Spoo ng. In Java Informationstage. Springer Verlag, 1999. An Abstract Model of Java Dynamic Linking and Loading 83
Joe Wells and Rene Vestergaard. Confluent Equational Reasoning for Linking with First-Class Primitive Modules. In ESOP Proceedings, March 2000.
Phillip Yelland. Re: Type soundness Issues in Java, May 1999. Types mailing list, at http://www:cis:upenn:edu=bcpierce=types=archives and then /current/msg00145.html.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Drossopoulou, S. (2001). An Abstract Model of Java Dynamic Linking and Loading. In: Harper, R. (eds) Types in Compilation. TIC 2000. Lecture Notes in Computer Science, vol 2071. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45332-6_3
Download citation
DOI: https://doi.org/10.1007/3-540-45332-6_3
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42196-2
Online ISBN: 978-3-540-45332-1
eBook Packages: Springer Book Archive