Downloading, Installing, and Running JR
The JR Book "code extract"
(i.e., all the example programs and given parts of exercises from the
- implementation deficiency: in assignments of operations to
capabilities, e.g., c = o, the
translator doesn't check whether the exceptions o can throw match the
exceptions c can throw. (Similar problems occur with other
similar usages.) The generated code for such programs
might have errors, which javac will complain about.
- implementation deficiency: Synchronization expressions are
not recomputed when their values
are changed by the actions of other processes (e.g., by altering
global variables referenced in the
synchronization expression or by sending to operations referenced in
synchronization expression via a length() method).
- implementation deficiency: where c is a non-null, non-noop
remote reference for C,
is allowed (and prints the address of the local reference), but
it shouldn't be (since to print c would need to invoke c.toString,
which is a method, not an op).
- implementation deficiency: Remote references for the same
object don't necessarily compare equally.
(What's being compared are the addresses for the proxies, not the
contents. (And as a special case, two noop remote references don't
necessarily compare equally since each noop is a separate object.))
- implementation deficiency:
Creating remote instances of nested classes isn't handled correctly.
Creating a remote instance of a static nested class
should be allowed.
It now causes a run-time error.
Creating a remote instance of an inner class
doesn't make sense.
It now causes a run-time error (same one as for above case);
it should be disallowed at translation time.
- implementation deficiency: Stack traces for exceptions can
sometimes be truncated. However, the first line (which is
critical in identifying the location of the exception) is shown.