The type system for object initialization in the Java bytecode language

Stephen N. Freund, John C. Mitchell
1999 ACM Transactions on Programming Languages and Systems  
In the standard Java implementation, a Java language program is compiled to Java bytecode and this bytecode is then interpreted by the Java Virtual Machine. Since bytecode may be written by hand, or corrupted during network transmission, the Java Virtual Machine contains a bytecode verifier that performs a number of consistency checks before code is interpreted. However, there is no formal specification of the verifier. As one-step towards such a specification, we develop a precise
more » ... recise specification of a subset of the bytecode language dealing with object creation and initialization. For this subset, we prove that for every Java bytecode program that satisfies our typing constraints, every object is initialized before it is used.
doi:10.1145/330643.330646 fatcat:j2jo627objet7bspkjrctymx7q