implementation deficiency:
The JR implementation is based on the Java 1.5 implementation.
It does not support Java features introduced in Java 1.6 or
1.7 and does not have the bug fixes in those releases.
So, for example, a JR program that tries to use a String object in
the expression of a switch statement (a Java 1.7 enhancement)
will be flagged as erroneous at JR translation time.
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
the
synchronization expression via a length() method).
implementation deficiency: where c is a non-null, non-noop
remote reference for C,
System.out.println(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.
implementation deficiency: Using generics (parameterized
classes, etc.) causes warning messages like
Note: jrGen/Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.