Results 1 
4 of
4
Verified Bytecode Subroutines
 JOURNAL OF AUTOMATED REASONING
, 2003
"... Bytecode subroutines are a major complication for Java bytecode verification: they are difficult to fit into the data flow analysis that the JVM specification suggests. Because of that, subroutines are left out or are restricted in most formalizations of the bytecode verifier. We examine the problem ..."
Abstract

Cited by 14 (1 self)
 Add to MetaCart
(Show Context)
Bytecode subroutines are a major complication for Java bytecode verification: they are difficult to fit into the data flow analysis that the JVM specification suggests. Because of that, subroutines are left out or are restricted in most formalizations of the bytecode verifier. We examine the problems that occur with subroutines and give an overview of the most prominent solutions in the literature. Using the theorem prover Isabelle/HOL, we have extended our substantial formalization of the JVM and the bytecode verifier with its proof of correctness by the most general solution for bytecode subroutines.
Bytecode Model Checking: An Experimental Analysis
 In Dragan Bosnacki and Stefan Leue, editors, Model Checking Software, 9th International SPIN Workshop, volume 2318 of LNCS
, 2002
"... Abstract. Java bytecode verification is traditionally performed by a polynomial time dataflow algorithm. We investigate an alternative based on reducing bytecode verification to modelchecking. Despite an exponentialworst case time complexity, modelchecking typecorrect bytecode is polynomial in prac ..."
Abstract

Cited by 10 (2 self)
 Add to MetaCart
(Show Context)
Abstract. Java bytecode verification is traditionally performed by a polynomial time dataflow algorithm. We investigate an alternative based on reducing bytecode verification to modelchecking. Despite an exponentialworst case time complexity, modelchecking typecorrect bytecode is polynomial in practice when carried out using an explicit state, onthefly modelchecker like Spin. We investigate this theoretically and experimentally and explain the practical advantages of this alternative. 1
Bytecode Verification by Model Checking
 JOURNAL OF AUTOMATED REASONING. SPECIAL
, 2003
"... Java bytecode verification is traditionally performed using dataflow analysis. We investigate an alternative based on reducing bytecode verification to model checking. First, we analyze the complexity and scalability of this approach. We show experimentally that, despite an exponential worstcase ti ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
(Show Context)
Java bytecode verification is traditionally performed using dataflow analysis. We investigate an alternative based on reducing bytecode verification to model checking. First, we analyze the complexity and scalability of this approach. We show experimentally that, despite an exponential worstcase time complexity, model checking typecorrect bytecode using an explicitstate onthefly model checker is feasible in practice, and we give a theoretical account why this is the case. Second, we formalize our approach using Isabelle/HOL and prove its correctness. In doing so we build on the formalization of the Java Virtual Machine and dataflow analysis framework of Pusch and Nipkow and extend it to a more general framework for reasoning about modelchecking based analysis. Overall, our work constitutes the first comprehensive investigation of the theory and practice of bytecode verification by model checking.
Practical Java Card bytecode compression
, 2002
"... Our work concerns bytecode compression on an embedded, tiny and safe environment, and more specifically JAVA CARDS. [2] and [4] propose a way to compress java card bytecode into a format executable in an ultra light embedded system, using macropacking. Our implementation, improved with new specific ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
Our work concerns bytecode compression on an embedded, tiny and safe environment, and more specifically JAVA CARDS. [2] and [4] propose a way to compress java card bytecode into a format executable in an ultra light embedded system, using macropacking. Our implementation, improved with new specifical algorithms, allows a better compress rate (up to 32%). In a smart card having 32kB EEPROM, up to 10kB can be freed, it is enough to store some applets. The execution of macropacked programs is very simple and the code overhead in the operating system and in the virtual machine is very small. Unfortunately, the compression process is not feasible in a tiny embedded system. We propose a distribution of the compression process called CompressionCarrying Code or simply CCC. This distribution maintains the Java Card 2.11 compatibility [11], and allows a trusted, justintime compression by the embedded bytecode loader.