Program Specifications and the Java Modeling Language