| Class structure |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| extends |
| X | X | X |
| implements |
| X | X | X |
| static method declaration |
| X | X | X |
| class import |
| X | X | X |
| package import |
| X | X | X |
| package |
| X | X | X |
| public interfaces |
| | X | X |
| static field declaration |
| | X | X |
| package private interfaces |
| | | X |
| omitted final field initializer |
| | | X |
| multiple types per file |
| | | X |
| interface constants |
| | | X |
| Unicode input |
| | | X |
| nested types |
| | | X |
| Method and field access |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| external call |
| X | X | X |
| implicit this for fields |
| X | X | X |
| implicit this for methods |
| X | X | X |
| access static field |
| X | X | X |
| call static methods |
| X | X | X |
| non-this field access |
| X | X | X |
| method overloading |
| X | X | X |
| array length |
| X | X | X |
| implicit this class for static fields |
| | X | X |
| implicit this class for static methods |
| | X | X |
| closest match method overloading |
| | X | X |
| array method call |
| | X | X |
| super method call |
| | | X |
| non-static access of static field |
| | | X |
| non-static access of static method |
| | | X |
| Modifiers |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| public classes |
X | X | X | X |
| protected fields |
X | X | X | X |
| public constructors |
X | X | X | X |
| public methods |
X | X | X | X |
| public fields |
| X | X | X |
| protected methods |
| X | X | X |
| abstract |
| X | X | X |
| final classes |
| X | X | X |
| final methods |
| X | X | X |
| protected constructors |
| X | X | X |
| final field declaration |
| | X | X |
| synchronized |
| | | X |
| transient |
| | | X |
| strictfp |
| | | X |
| native |
| | | X |
| volatile |
| | | X |
| package private classes |
| | | X |
| package private methods |
| | | X |
| package private fields |
| | | X |
| private methods |
| | | X |
| private fields |
| | | X |
| final formals |
| | | X |
| final locals |
| | | X |
| Constructors |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| implicit super call |
X | X | X | X |
| field initializers |
X | X | X | X |
| constructor overloading |
| X | X | X |
| omitted constructor |
| | X | X |
| explicit super call |
| | X | X |
| closest match constructor overloading |
| | X | X |
| this call |
| | X | X |
| instance initializers |
| | | X |
| static initializers |
| | | X |
| Method structure |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| nested blocks |
| X | X | X |
| arbitrary return |
| X | X | X |
| omitted void return |
| X | X | X |
| arbitrary local declaration |
| X | X | X |
| omitted local initializer |
| | X | X |
| local variable in
own initializer |
| | X | X |
| multiple variables per declaration |
| | | X |
| Control flow |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| if |
X | X | X | X |
| while |
X | X | X | X |
| for (simple) |
| X | X | X |
| for (general) |
| | | X |
| do-while |
| | | X |
| switch |
| | | X |
| break |
| | | X |
| continue |
| | | X |
| labeled statement |
| | | X |
| synchronized statement |
| | | X |
| Exceptions |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| throws |
| X | X | X |
| throw |
| | X | X |
| try/catch |
| | | X |
| finally |
| | | X |
| Types |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| boolean |
X | X | X | X |
| int |
X | X | X | X |
| char |
| X | X | X |
| byte |
| X | X | X |
| short |
| X | X | X |
| array |
| X | X | X |
| multi array |
| | X | X |
| long |
| | | X |
| float |
| | | X |
| double |
| | | X |
| Literals and names |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| int literals |
X | X | X | X |
| boolean literals |
X | X | X | X |
| string literals |
X | X | X | X |
| null literal |
X | X | X | X |
| char literals |
| X | X | X |
| character escapes |
| X | X | X |
| compound names |
| X | X | X |
| class literals |
| | | X |
| octal and hex literals |
| | | X |
| long literals |
| | | X |
| floating point literals |
| | | X |
| array data |
| | | X |
| Operations |
| Feature |
Joos 0 |
Joos 1 |
Joos 2 |
Java 1.3 |
| arithmetic operations |
X | X | X | X |
| comparison operations |
X | X | X | X |
| eager boolean operations |
X | X | X | X |
| implicit string concatenation |
X | X | X | X |
| lazy boolean operations |
| X | X | X |
| instanceof |
| X | X | X |
| primitive casts |
| X | X | X |
| reference casts |
| X | X | X |
| bitwise operations |
| | X | X |
| increment and decrement |
| | X | X |
| assignment operations |
| | | X |
| unary plus |
| | | X |
| choice |
| | | X |
| bit shift |
| | | X |
| implicit integer constant casts |
| | | X |