Abstract
We provide a modular high-level definition of the Java Virtual Machine (JVM) architecture. We decompose the machine into three components — the loader, the bytecode verifier and the interpreter — each for a hierarchy of four stepwise refined JVM program layers. These layers naturally correspond to the structuring of Java into sub languages with imperative, procedural, object-oriented and exception handling features. We give our definitions in terms of Abstract State Machines, which have a simple but precise semantic foundation. As a consequence our JVM models can be verified and validated by machine supported mathematical analysis and standard simulation techniques. Furthermore, due to their abstract nature, the models can serve as a platform independent basis for the evaluation and comparison of different JVM implementations.
This research was performed while the second author was a member of the Department of Computer Science at the University of Ulm, Germany
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
J. Alves-Foss, editor. Formal Syntax and Semantics of Java™. LNCS, 1523. Springer, 1999.
P. Bertelsen. Semantics of Java byte code. Ftp at: ftp://ftp.dina.kvl.dk/pub/Staff/Peter.Bertelsen/jvm-semantics.ps.gz, 1997.
E. Börger and W. Schulte. Defining the Java Virtual Machine as platform for provably correct Java compilation. In L. Brim, J. Gruska, and J. Zlatuska, editors, MFCS’98, Springer LNCS 1450, 1998.
E. Börger and W. Schulte. Initialization problems for Java. Software-Principles and Tools, 20(1), 1999.
E. Börger and W. Schulte. A programmer friendly modular definition of the semantics of Java. In Alves-Foss [1].
R. M. Cohen. Defensive Java virtual machine version 0.5 alpha release. Web pages at: http://www.cli.com/software/djvm/. 1997.
D. Dean. The security of static typing with dynamic linking. In Fourth ACM Conference on Computer and Communications Security. ACM Press, 1996.
S. Diehl. A formal introduction to the compilation of Java. Software-Practice and Experience, 28(3), 1998.
S. Drossopoulou, D. Wragg, and S. Eisenbach. What is Java binary compatibility. In OOPSLA Proceedings, 1998.
S. N. Freund. Pro and cons of embedded subroutines in the JVM. In OOPSLA Workshop on Formal Underpinnings of Java, 1998.
S. N. Freund and J. C. Mitchell. A type system for object initialization in the Java bytecode language. In OOPSLA Proceedings, 1998.
A. Goldberg. A specification of Java loading and bytecode verification. Technical report, Kestrel Institut, Palo Alto, CA, Dec. 1997.
J. Gosling, B. Joy, and G. Steele. The Java™ Language Specification. Addison Wesley, 1996.
Y. Gurevich. Evolving algebras 1993: Lipari guide. In E. Börger, editor, Specification and Validation Methods. Oxford University Press, 1995.
P.H. Hartel, M.J. Butler, and M. Levy. The operational semantics of a Java Secure Processor. Technical report, Dep. of Electronics and Computer Science, University of Southampton, UK, Tech. Rep. DSSE-TR-98-1, 1998.
T. Jensen, D. Le Metayer, and T. Thorn. Security and dynamic class loading in Java: A formalization. Technical report, IRISA/CNRS/INRIA, Campus de Balieu, Rennes, France, Oct. 1997.
J. Posegga and H. Vogt. Bytecode verification for Java Smart Cards based on model checking. In Computer Security-ESORICS 98, Springer LNCS, 1485, 1998.
C. Pusch. The JVM in Isabelle/HOL. Technical report, Technical University of Munich, 1998.
C. Pusch. Proving the soundness of a Java bytecode verifier specification in Isabelle/HOL. In Tools and Algorithms for the Construction and Analysis of Systems, Springer LNCS, 1579, 1999.
Z. Qian. A formal specification of Java™ Virtual Machine for objects, methods and subroutines. In Alves-Foss [1].
V. Saraswat. Java is not type-safe. Web pages at: http://www.research.att.com/~vjmain.html, 1997.
R. Stärk. Formal foundations of Java. Course notes, University of Fribourg, Ch., 1999.
R. Stata and M. Abadi. A type system for Java bytecode subroutines. In Proceedings of the 25th Annual SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 1998.
W. Zimmermann and Th. Gaul. An Abstract State Machine for Java byte code. Manuscript, Universitat Karlsruhe, Germany, 1997.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Börger, E., Schulte, W. (2000). Modular Design for the Java Virtual Machine Architecture. In: Börger, E. (eds) Architecture Design and Validation Methods. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-57199-2_7
Download citation
DOI: https://doi.org/10.1007/978-3-642-57199-2_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-62976-1
Online ISBN: 978-3-642-57199-2
eBook Packages: Springer Book Archive