<p>This book provides a high-level description, together with a mathematical and an experimental analysis, of Java and of the Java Virtual Machine (JVM), including a standard compiler of Java programs to JVM code and the security critical bytecode verifier component of the JVM. The description is st
Java and the Java Virtual Machine: Definition, Verification, Validation
โ Scribed by Robert F. Stรคrk, Joachim Schmid, Egon Bรถrger
- Publisher
- Springer
- Year
- 2001
- Tongue
- English
- Leaves
- 390
- Edition
- 2001
- Category
- Library
No coin nor oath required. For personal study only.
โฆ Synopsis
The origin of this book goes back to the Dagstuhl seminar on Logic for System Engineering, organized during the first week of March 1997 by S. Jiihnichen, J. Loeckx, and M. Wirsing. During that seminar, after Egon Borger's talk on How to Use Abstract State Machines in Software Engineering, Wolfram Schulte, at the time a research assistant at the University of Ulm, Germany, questioned whether ASMs provide anything special as a scientifically wellยญ founded and rigorous yet simple and industrially viable framework for highยญ level design and analysis of complex systems, and for natural refinements of models to executable code. Wolfram Schulte argued, referring to his work with K. Achatz on A Formal Object-Oriented Method Inspired by Fusion and Object-Z [1], that with current techniques of functional programming and of axiomatic specification, one can achieve the same result. An intensive and long debate arose from this discussion. At the end of the week, it led Egon Borger to propose a collaboration on a real-life specification project of Wolfram Schulte's choice, as a comparative field test of purely functionalยญ declarative methods and of their enhancement within an integrated abstract state-based operational (ASM) approach. After some hesitation, in May 1997 Wolfram Schulte accepted the offer and chose as the theme a high-level specification of Java and of the Java Virtual Machine.
โฆ Table of Contents
Cover
Title
Preface
Contents
Introduction
The goals of the book
The contents of the book
Decomposing Java and the JVM
Sources and literature
Abstract State Machines
ASMs in a nutshell
Mathematical definition of ASMs
Notational conventions
Part I. Java
The imperative core JavaI of Java
Static semantics of JavaI
Transition rules for JavaI
The procedural extension JavaC of JavaI
Static semantics of JavaC
Transition rules for JavaC
The object-oriented extension JavaO of JavaC
Static semantics of JavaO
Transition rules for JavaO
The exception-handling extension JavaE of JavaO
Static semantics of JavaE
Transition rules for JavaE
The concurrent extension JavaT of JavaE
Static semantics of JavaT
Transition rules for JavaT
Thread invariants
Java is type safe
Structural properties of Java runs
Unreachable statements
Rules of definite assignment
Java is type safe
Part II. Compilation of Java: The Trustful JVM
The JVMI submachine
Dynamic semantics of the JVMI
Compilation of JavaI
The procedural extension JVMC of JVMI
Dynamic semantics of the JVMC
Compilation of JavaC
The object-oriented extension JVMO of JVMC
Dynamic semantics of the JVMO
Compilation of JavaO
The exception-handling extension JVME of JVMO
Dynamic semantics of the JVME
Compilation of JavaE
Executing the JVMN
Correctness of the compiler
The correctness statement
The correctness proof
Part III. Bytecode Verification: The Secure JVM
The defensive virtual machine
Construction of the defensive JVM
Checking JVMI
Checking JVMC
Checking JVMO
Checking JVME
Checking JVMN
Checks are monotonic
Bytecode type assignments
Problems of bytecode verification
Successors of bytecode instructions
Type assignments without subroutine call stacks
Soundness of bytecode type assignments
Certifying compilation
The diligent virtual machine
Principal bytecode type assignments
Verifying JVMI
Verifying JVMC
Verifying JVMO
Verifying JVME
Verifying JVMN
The dynamic virtual machine
Initiating and defining loaders
Loading classes
Dynamic semantics of the JVMD
Appendix
Executable Models
Overview
Java
Compiler
Java Virtual Machine
Java
Rules
Arrays
JVM
Trustful execution
Defensive execution
Diligent execution
Check functions
Successor functions
Constraints
Arrays
Abstract versus real instructions
Compiler
Compilation functions
maxOpd
Arrays
References
List of Figures
List of Tables
Index
๐ SIMILAR VOLUMES
This book provides a high-level description, together with a mathematical and an experimental analysis, of Java and of the Java Virtual Machine (JVM), including a standard compiler of Java programs to JVM code and the security critical bytecode verifier component of the JVM. The description is struc
The Java Virtual Machine is the software implementation of a "CPU" designed to run compiled Java code. Using the Java Virtual Machine (JVM) unleashes the true power of Java -- making it possible to develop additional syntaxes for expressing the problems you want to solve and giving you the ulti