A formal framework for the Java bytecode language and verifier

This paper presents a sound type system for a large subset of the Java bytecode language including classes, interfaces, constructors, methods, exceptions, and bytecode subroutines. This work serves as the foundation for developing a formal specification of the bytecode language and the Java Virtual Machine's bytecode verifier. We also describe a prototype implementation of a type checker for our system and discuss some of the other applications of this work. For example, we show how to extend our work to examine other program properties, such as the correct use of object locks.

[1]  William R. Cook,et al.  A Proposal for Making Eiffel Type-Safe , 1989, Comput. J..

[2]  Tobias Nipkow,et al.  Javalight is type-safe—definitely , 1998, POPL '98.

[3]  Zhenyu Qian,et al.  Toward a provably-correct implementation of the JVM bytecode verifier , 2000, Proceedings DARPA Information Survivability Conference and Exposition. DISCEX'00.

[4]  Martín Abadi,et al.  A type system for Java bytecode subroutines , 1999, TOPL.

[5]  David von Oheimb Javàight Is Type-safe | Deenitely , 1998 .

[6]  Eva Rose,et al.  Towards Secure Bytecode Verification on a Java Card , 1998 .

[7]  Phillip M. Yelland,et al.  A compositional account of the Java virtual machine , 1999, POPL '99.

[8]  Robert O'Callahan,et al.  A simple, comprehensive type system for Java bytecode subroutines , 1999, POPL 1999.

[9]  Egon Börger,et al.  A Programmer Friendly Modular Definition of the Semantics of Java , 1999, Formal Syntax and Semantics of Java.

[10]  Cornelia Pusch,et al.  Proving the Soundness of a Java Bytecode Verifier Specification in Isabelle/HOL , 1999, TACAS.

[11]  Peter Bertelsen,et al.  Dynamic semantics of Java bytecode , 2000, Future Gener. Comput. Syst..

[12]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[13]  Robert O'Callahn A Simple, Comprehensive Type System for Java Bytecode Subroutines , 1999, POPL.

[14]  Martín Abadi,et al.  Types for Safe Locking , 1999, ESOP.

[15]  Thorsten von Eicken,et al.  JRes: a resource accounting interface for Java , 1998, OOPSLA '98.

[16]  Allen Goldberg,et al.  A specification of Java loading and bytecode verification , 1998, CCS '98.

[17]  Dan S. Wallach,et al.  Java security: Web browsers and beyond , 1997 .

[18]  Sophia Drossopoulou,et al.  Java is Type Safe - Probably , 1997, ECOOP.

[19]  Mark P. Jones The Functions of Java Bytecode , 1998 .

[20]  Dan S. Wallach,et al.  Understanding Java stack inspection , 1998, Proceedings. 1998 IEEE Symposium on Security and Privacy (Cat. No.98CB36186).

[21]  Zhenyu Qian A formal specification of java(tin) virtual machine instructions , 1998 .

[22]  Don Syme,et al.  Proving Java Type Soundness , 1999, Formal Syntax and Semantics of Java.

[23]  Joachim Posegga,et al.  Byte Code Verification for Java Smart Card Based on Model Checking , 1998, ESORICS.

[24]  Frank Pfenning,et al.  Dependent types in practical programming , 1999, POPL '99.

[25]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.