Secure
- Layer One: the Java language
- public, protected, private, final variables and method
- compiler-time and runtime type checking
- no pointers
- Layer Two: verifying the bytecodes
- ensures that classes don't violate name space or access restrictions when
they are loaded
- guards against an altered compiler producing bytecodes that violates the
safety rules at runtime
- Layer Three: protecting the file system and network access
- Interface-specific security that prevents applets from doing destructive
things

