ACM Home Page
Please provide us with feedback. Feedback
A type system for object initialization in the Java bytecode language
Full text PdfPdf (395 KB)
Source ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 21 ,  Issue 6  (November 1999) table of contents
Pages: 1196 - 1250  
Year of Publication: 1999
ISSN:0164-0925
Authors
Stephen N. Freund  Stanford Univ., Stanford, CA
John C. Mitchell  Stanford Univ., Stanford, CA
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 6,   Downloads (12 Months): 59,   Citation Count: 21
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/330643.330646
What is a DOI?

ABSTRACT

In the standard Java implementation, a Java language program is compiled to Java bytecode. This bytecode may be sent across the network to another site, where it is then executed 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 run. These checks include type correctness and, as illus-trated by previous attacks on the Java Virtual Machine, are critical for system security. In order to analyze existing bytecode verifiers and to understand the properties that should be verified, we develop a precise specification of statically correct Java bytecode, in the form of a type system. Our focus in this article is 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. The type system is easily combined with a previous system developed by Stata and Abadi for bytecode subroutines. Our analysis of subroutines and object initialization reveals a previously unpub-lished bug in the Sun JDK bytecode verifier.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
COHEN, R. 1997. Defensive Java virtual machine version 0.5 alpha release. Available via http//www, cli. co m/so ftw are/djvm/in de x. html.
 
3
 
4
5
 
6
 
7
JONES, M. 1998. The functions of Java bytecode. In Proceedings of the Workshop on the Formal Underpinnings of the Java Paradigm.
 
8
 
9
10
11
12
 
13
 
14
15
 
16
SARASWAT, V. 1997. The Java bytecode verification problem. Available via http://www. research, att.com/-vj.
 
17
SIRER, E. G., MCDIRMID, S., AND BERSHAD, B. 1997. Kimera: A Java system architecture. Available via http://kimera.cs.washington.edu.
 
18
SYME, D. 1997. Proving Java type soundness. Tech. Rep. 427, Univ. of Cambridge Computer Laboratory.
19
20

CITED BY  21

Collaborative Colleagues:
Stephen N. Freund: colleagues
John C. Mitchell: colleagues