| 12914 |      1 | \chapter{Preface}
 | 
| 12911 |      2 | 
 | 
| 12914 |      3 | \section{Introduction}
 | 
| 12911 |      4 | \label{sec:introduction}
 | 
|  |      5 | 
 | 
|  |      6 | This document contains the automatically generated listings of the
 | 
|  |      7 | Isabelle sources for \mJava. \mJava{} is a reduced model of JavaCard,
 | 
|  |      8 | dedicated to the study of the interaction of the source language, byte
 | 
|  |      9 | code, the byte code verifier and the compiler. In order to make the
 | 
|  |     10 | Isabelle sources more accessible, this introduction provides a brief
 | 
|  |     11 | survey of the main concepts of \mJava.
 | 
|  |     12 | 
 | 
|  |     13 | The \mJava{} \textbf{source language} (see \charef{cha:j})
 | 
|  |     14 | only comprises a part of the original JavaCard language. It models
 | 
|  |     15 | features such as:
 | 
|  |     16 | \begin{itemize}
 | 
|  |     17 | \item The basic ``primitive types'' of Java 
 | 
|  |     18 | \item Object orientation, in particular classes, and relevant
 | 
|  |     19 |   relations on classes (subclass, widening)
 | 
|  |     20 | 
 | 
|  |     21 | \item Methods and method signatures
 | 
|  |     22 | \item Inheritance and overriding of methods, dynamic binding
 | 
|  |     23 | 
 | 
|  |     24 | \item Representatives of ``relevant'' expressions and statements 
 | 
|  |     25 | \item Generation and propagation of system exceptions
 | 
|  |     26 | \end{itemize}
 | 
|  |     27 | 
 | 
|  |     28 | However, the following features are missing in \mJava{} wrt.{} JavaCard:
 | 
|  |     29 | \begin{itemize}
 | 
|  |     30 | \item Some primitive types (\texttt{byte, short})
 | 
|  |     31 | \item Interfaces and related concepts, arrays
 | 
|  |     32 | \item Most numeric operations, syntactic variants of statements
 | 
|  |     33 |   (\texttt{do}-loop, \texttt{for}-loop)
 | 
|  |     34 | \item Complex block structure, method bodies with multiple returns
 | 
|  |     35 | \item Abrupt termination (\texttt{break, continue})
 | 
|  |     36 | \item Class and method modifiers (such as \texttt{static} and
 | 
|  |     37 |   \texttt{public/private} access modifiers)
 | 
|  |     38 | \item User-defined exception classes and an explicit
 | 
|  |     39 |   \texttt{throw}-statement. Exceptions cannot be caught.
 | 
|  |     40 | \item A ``definite assignment'' check
 | 
|  |     41 | \end{itemize}
 | 
|  |     42 | In addition, features are missing that are not part of the JavaCard
 | 
|  |     43 | language, such as multithreading and garbage collection. No attempt
 | 
|  |     44 | has been made to model peculiarities of JavaCard such as the applet
 | 
|  |     45 | firewall or the transaction mechanism.
 | 
|  |     46 | 
 | 
|  |     47 | For a more complete Isabelle model of JavaCard, the reader should
 | 
|  |     48 | consult the Bali formalization
 | 
|  |     49 | (\url{http://isabelle.in.tum.de/verificard/Bali/document.pdf}), which
 | 
|  |     50 | models most of the source language features of JavaCard, however without
 | 
|  |     51 | describing the bytecode level.
 | 
|  |     52 | 
 | 
|  |     53 | The central topics of the source language formalization are:
 | 
|  |     54 | \begin{itemize}
 | 
|  |     55 | \item Description of the structure of the ``runtime environment'', in
 | 
|  |     56 |   particular structure of classes and the program state
 | 
|  |     57 | \item Definition of syntax, typing rules and operational semantics of
 | 
|  |     58 |   statements and expressions
 | 
|  |     59 | \item Definition of ``conformity'' (characterizing type safety) and a
 | 
|  |     60 |   type safety proof
 | 
|  |     61 | \end{itemize}
 | 
|  |     62 | 
 | 
|  |     63 | 
 | 
|  |     64 | The \mJava{} \textbf{virtual machine} (see \charef{cha:jvm})
 | 
|  |     65 | corresponds rather directly to the source level, in the sense that the
 | 
|  |     66 | same data types are supported and bytecode instructions required for
 | 
|  |     67 | emulating the source level operations are provided. Again, only one
 | 
|  |     68 | representative of different variants of instructions has been
 | 
|  |     69 | selected; for example, there is only one comparison operator.  The
 | 
|  |     70 | formalization of the bytecode level is purely descriptive (``no
 | 
|  |     71 | theorems'') and rather brief as compared to the source level; all
 | 
|  |     72 | questions related to type systems for and type correctness of bytecode
 | 
|  |     73 | are dealt with in chapter on bytecode verification.
 | 
|  |     74 | 
 | 
|  |     75 | The problem of \textbf{bytecode verification} (see \charef{cha:bv}) is
 | 
|  |     76 | dealt with in several stages:
 | 
|  |     77 | \begin{itemize}
 | 
|  |     78 | \item First, the notion of ``method type'' is introduced, which
 | 
|  |     79 |   corresponds to the notion of ``type'' on the source level.
 | 
|  |     80 | \item Well-typedness of instructions wrt. a method type is defined
 | 
|  |     81 |   (see \secref{sec:BVSpec}). Roughly speaking, determining
 | 
|  |     82 |   well-typedness is \emph{type checking}.
 | 
|  |     83 | \item It is shown that bytecode that is well-typed in this sense can
 | 
|  |     84 |   be safely executed -- a type soundness proof on the bytecode level
 | 
|  |     85 |   (\secref{sec:BVSpecTypeSafe}). 
 | 
|  |     86 | \item Given raw bytecode, one of the purposes of bytecode verification
 | 
|  |     87 |   is to determine a method type that is well-typed according to the
 | 
|  |     88 |   above definition. Roughly speaking, this is \emph{type inference}.
 | 
|  |     89 |   The Isabelle formalization presents bytecode verification as an
 | 
|  |     90 |   instance of an abstract dataflow algorithm (Kildall's algorithm, see
 | 
|  |     91 |   \secrefs{sec:Kildall} to \ref{sec:JVM}).
 | 
|  |     92 | %\item For \emph{lightweight bytecode verification}, type checking of
 | 
|  |     93 | %  bytecode can be reduced to method types with small size. 
 | 
|  |     94 | \end{itemize}
 | 
|  |     95 | 
 | 
|  |     96 | Bytecode verification in \mJava{} so far takes into account:
 | 
|  |     97 | \begin{itemize}
 | 
|  |     98 | \item Operations and branching instructions
 | 
|  |     99 | \item Exceptions
 | 
|  |    100 | \end{itemize}
 | 
|  |    101 | Initialization during object creation is not accounted for in the
 | 
|  |    102 | present document 
 | 
|  |    103 | (see the formalization in
 | 
|  |    104 | \url{http://isabelle.in.tum.de/verificard/obj-init/document.pdf}),
 | 
|  |    105 | neither is the \texttt{jsr} instruction.
 | 
|  |    106 | 
 | 
|  |    107 | 
 | 
|  |    108 | %%% Local Variables:
 | 
|  |    109 | %%% mode: latex
 | 
|  |    110 | %%% TeX-master: "root"
 | 
|  |    111 | %%% End:
 |