Using lookups in place of reflection
Alan Bateman
Alan.Bateman at oracle.com
Fri Apr 21 10:57:32 UTC 2017
On 21/04/2017 11:04, Andrew Dinn wrote:
> Being a good OpenJDK citizen I have attempted to make my agent use
> lookups in jdk9 in place of using reflection. This is mostly working
> fine. However, I have run across a rather arbitrary limitation (not just
> my conclusion -- the jdk source code acknowledges it as such) and am
> wondering whether there will be any chance of remedying it before (or
> after) jdk9 release.
>
The check in checkUnprivilegedlookupClass isn't new, I think it's a
defense-in-depth check that goes back to JDK 7 to catch usages of full
power lookups in fully privileged code. There was recent discussion on
core-libs-dev about this, prompted by work that Paul Sandoz was doing to
retrofit LockSupport and TLR to use privateLookupIn. My recollection is
that he relaxed the check to allow the target class be Thread or a class
in j.u.concurrent and the more general question on whether this check is
needed was kicked down the road. I'm sure John Rose or Paul will jump in
on this thread.
BTW: None of the modules defined to the boot loader open packages so I
wouldn't expect too many people will run into this. You run into in the
example because java.net.HttpURLConnection is in java.base and defined
to the boot loader. I guess another possible scenario would be someone
opening a package in a core module with `--add-opens` and the raiding
party uses privateLookupIn.
-Alan.
More information about the jigsaw-dev
mailing list