Java Bytecode Verification: Algorithms and Formalizations
Journal of Automated Reasoning
Non-interference for a JVM-like language
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
A machine-checked model for a Java-like language, virtual machine, and compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Security types preserving compilation
Computer Languages, Systems and Structures
Decomposing bytecode verification by abstract interpretation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Kleene Algebra and Bytecode Verification
Electronic Notes in Theoretical Computer Science (ENTCS)
Formalisation and implementation of an algorithm for bytecode verification of @NonNull types
Science of Computer Programming
Formal methods for smartcard security
Foundations of Security Analysis and Design III
Hi-index | 0.00 |
Java is normally compiled to bytecode, which is verified and then executed by the Java Virtual Machine. Bytecode produced via compilation must pass verification. The main cause of complexity for bytecode verification is subroutines, used by compilers to generate more compact code. The techniques to verify subroutines proposed in the literature reject certain programs produced by mundane compilers, are difficult to realize within an implementation of the Java Virtual Machine or are relatively complicated. This paper presents a novel technique which is very simple to understand, implement and prove sound. It is also very powerful: the set of accepted programs has a simple characterization which most likely includes all the code produced by current compilers and which enables future compilers to make more extensive use of subroutines. Copyright © 2004 John Wiley & Sons, Ltd.