Skip to main content

Modular Design for the Java Virtual Machine Architecture

  • Chapter
Architecture Design and Validation Methods

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

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 54.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. J. Alves-Foss, editor. Formal Syntax and Semantics of Java™. LNCS, 1523. Springer, 1999.

    Google Scholar 

  2. P. Bertelsen. Semantics of Java byte code. Ftp at: ftp://ftp.dina.kvl.dk/pub/Staff/Peter.Bertelsen/jvm-semantics.ps.gz, 1997.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. E. Börger and W. Schulte. Initialization problems for Java. Software-Principles and Tools, 20(1), 1999.

    Google Scholar 

  5. E. Börger and W. Schulte. A programmer friendly modular definition of the semantics of Java. In Alves-Foss [1].

    Google Scholar 

  6. R. M. Cohen. Defensive Java virtual machine version 0.5 alpha release. Web pages at: http://www.cli.com/software/djvm/. 1997.

    Google Scholar 

  7. D. Dean. The security of static typing with dynamic linking. In Fourth ACM Conference on Computer and Communications Security. ACM Press, 1996.

    Google Scholar 

  8. S. Diehl. A formal introduction to the compilation of Java. Software-Practice and Experience, 28(3), 1998.

    Google Scholar 

  9. S. Drossopoulou, D. Wragg, and S. Eisenbach. What is Java binary compatibility. In OOPSLA Proceedings, 1998.

    Google Scholar 

  10. S. N. Freund. Pro and cons of embedded subroutines in the JVM. In OOPSLA Workshop on Formal Underpinnings of Java, 1998.

    Google Scholar 

  11. S. N. Freund and J. C. Mitchell. A type system for object initialization in the Java bytecode language. In OOPSLA Proceedings, 1998.

    Google Scholar 

  12. A. Goldberg. A specification of Java loading and bytecode verification. Technical report, Kestrel Institut, Palo Alto, CA, Dec. 1997.

    Google Scholar 

  13. J. Gosling, B. Joy, and G. Steele. The Java™ Language Specification. Addison Wesley, 1996.

    Google Scholar 

  14. Y. Gurevich. Evolving algebras 1993: Lipari guide. In E. Börger, editor, Specification and Validation Methods. Oxford University Press, 1995.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. J. Posegga and H. Vogt. Bytecode verification for Java Smart Cards based on model checking. In Computer Security-ESORICS 98, Springer LNCS, 1485, 1998.

    Google Scholar 

  18. C. Pusch. The JVM in Isabelle/HOL. Technical report, Technical University of Munich, 1998.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. Z. Qian. A formal specification of Java™ Virtual Machine for objects, methods and subroutines. In Alves-Foss [1].

    Google Scholar 

  21. V. Saraswat. Java is not type-safe. Web pages at: http://www.research.att.com/~vjmain.html, 1997.

    Google Scholar 

  22. R. Stärk. Formal foundations of Java. Course notes, University of Fribourg, Ch., 1999.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. W. Zimmermann and Th. Gaul. An Abstract State Machine for Java byte code. Manuscript, Universitat Karlsruhe, Germany, 1997.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics