Jif Reference Manual
Introduction
Language overview
New features in Jif 3.0
Decentralized label model
Principals
Confidentiality policies
Integrity policies
Labels
Label syntax in Jif
Language features
Lexical considerations
Labeled types
Principals and
actsfor
Implicit flows and program-counter labels
Method declarations
Default labels
Authority and access control
Authority declarations
Downgrading
Selective downgrading
Robustness
Polymorphism
Parameterized classes
Label and principal parameters
Interactions with object types
Using parameters at run time
Dynamic labels and principals
Label expressions
Run-time tests of labels and principals
Run-time tests of labels and principals
User-defined principals
Method constraints
Constant arrays
Other changes to Java
Static fields
Runtime exceptions
Final field initialization
Unsupported Java features
Label checking
Key concepts
Program counter labels
Normal and exceptional termination
Normal value label
Label environments
Basics of label checking
Literals, binary and unary operators
Local variable declarations
Variable access
Variable assignment
Arrays
Subtyping
Compound statements
Goto-like statements
Exceptions
Dynamic type discrimination
Dynamic label and actsfor tests
Label expressions
Downgrading
Declassification
Endorsement
Method declarations
Method conformance
Method calls
Constructors
Classes
Interacting with Java
The
main
method
Interacting with Java classes
Debugging Jif programs
Constraint explanations
Detailed reporting
Jif runtime interface
Bibliography