Joos is an acronym for Java's Object-Oriented Subset. JOOS is a
proper subset of Java, defined as follows:
  * its context-free syntax is restricted to the following grammar;
  * subclassing must not change the signature of a method;
  * declarations of locals must all be in the beginning of the statement
    sequence in a block;
  * protected fields cannot be accessed from without the class or its
    subclasses; and
  * every path through a non-void method must return a value.

In addition, JOOS defines a concept of extern classes, which provide
a convenient interface to the Java libraries without requiring the
compiler to parse Java class files.

It defines a class name and some method signatures, along with a file
name that is guaranteed to provide the implementation. The JOOS compiler
will implicitly trust this specification. If it is incorrect,
then the compiled JOOS class file may fail at class loading time.

JOOS is used for teaching students about compilers.
