  In this report, we examine Jif, a Java extension which augments the language
with features related to security. Jif adds support for security labels to
Java's type system such that the developer can specify confidentiality and
integrity policies to the various variables used in their program. We list the
main features of Jif and discuss the information flow problem that Jif helps to
solve. We see how the information flow problem occurs in real-world systems by
looking at two examples: Civitas, a ballot/voting system where voters do not
necessarily trust voting agents, and SIF, a web application container
implemented using Jif. Finally, we implement a small program that simulates
information flow in a booking system containing sensitive data and discuss the
usefulness of Jif based on this program.
