The Joos Languages

Acknowledgement: The Joos-related parts of the course are adapted by permission from Michael Schwartzbach's dOvs course at Aarhus University.

The Joos 1W language is defined as a subset of Java 1.3 as specified in the Java Language Specification (2nd Edition). Some features of Java 1.3 are not included in Joos 1W. Thus the parts of the JLS pertaining to these features do not apply to Joos 1W. The following chart shows the features of Java 1.3, and the specific subset of features included in Joos 1W (as well as the original dialects Joos 0, 1, and 2 from the dOvs course). Clicking on each feature shows example code.

Class structure
Feature Joos 0 Joos 1 Joos 1W Joos 2 Java 1.3
extends  XXXX
implements  XXXX
static method declaration  XXXX
class import  XXXX
package import  XXXX
package  XXXX
public interfaces   XXX
static field declaration   XXX
package private interfaces     X
omitted final field initializer     X
multiple fields per declaration     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 1W Joos 2 Java 1.3
external call  XXXX
implicit this for fields  XXXX
implicit this for methods  XXXX
access static field  XXXX
call static methods  XXXX
non-this field access  XXXX
method overloading  XXXX
array length  XXXX
implicit this class for static fields    XX
implicit this class for static methods    XX
closest match method overloading    XX
array method call    XX
super method call     X
super field access     X
non-static access of static field     X
non-static access of static method     X
Modifiers
Feature Joos 0 Joos 1 Joos 1W Joos 2 Java 1.3
public classes XXXXX
protected fields XXXXX
public constructors XXXXX
public methods XXXXX
public fields  XXXX
protected methods  XXXX
abstract  XXXX
final classes  XXXX
final methods  XXXX
protected constructors  XXXX
final field declaration    XX
synchronized     X
transient     X
strictfp     X
restricted static native int m(int)   X X
general native methods     X
volatile     X
package private classes     X
package private methods and constructors     X
package private fields     X
private methods and constructors     X
private fields     X
final formals     X
final locals     X
Constructors
Feature Joos 0 Joos 1 Joos 1W Joos 2 Java 1.3
implicit super call XXXXX
field initializers XXXXX
constructor overloading  XXXX
omitted constructor    XX
explicit super call    XX
closest match constructor overloading    XX
this call    XX
instance initializers     X
static initializers     X
Method structure
Feature Joos 0 Joos 1 Joos 1W Joos 2 Java 1.3
nested blocks  XXXX
arbitrary return  XXXX
omitted void return  XXXX
arbitrary local declaration  XXXX
omitted local initializer    XX
local variable in own initializer    XX
multiple variables per declaration     X
Control flow
Feature Joos 0 Joos 1 Joos 1W Joos 2 Java 1.3
if XXXXX
while XXXXX
for (simple)  XXXX
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 1W Joos 2 Java 1.3
throws  X XX
throw    XX
try/catch     X
finally     X
Types
Feature Joos 0 Joos 1 Joos 1W Joos 2 Java 1.3
boolean XXXXX
int XXXXX
char  XXXX
byte  XXXX
short  XXXX
array  XXXX
array declaration after variable name     X
array return type  XXXX
array return type after method signature     X
multidimensional array    XX
long     X
float     X
double     X
Literals and names
Feature Joos 0 Joos 1 Joos 1W Joos 2 Java 1.3
int literals XXXXX
boolean literals XXXXX
string literals XXXXX
null literal XXXXX
this primary expression XXXX
char literals  XXXX
character escapes  XXXX
Unicode escapes     X
compound names  XXXX
class literals     X
octal and hex literals     X
long literals     X
floating point literals     X
array data     X
comments XXXXX
Javadoc comments XXXX 
Operations
Feature Joos 0 Joos 1 Joos 1W Joos 2 Java 1.3
arithmetic operations XXXXX
comparison operations XXXXX
eager boolean operations XXXXX
implicit string concatenation XXXXX
lazy boolean operations  XXXX
instanceof  XXXX
primitive casts  XXXX
reference casts  XXXX
widening conversions  XXXX
narrowing conversions  X
bitwise operations    XX
increment and decrement    XX
assignment operations     X
unary plus     X
choice     X
bit shift     X
implicit integer constant casts     X