Avoiding sun.misc.Unsafe and embracing modules in Java libraries: missing links

Jochen Theodorou blackdrag at gmx.org
Tue Apr 3 22:24:19 UTC 2018

On 03.04.2018 21:26, Henri Tremblay wrote:
> For completeness, there are 4 ways to create a class without calling a
> constructor right now that I'm aware of:
>     - Unsafe.allocateInstance

which is supposed to go away at some point

>     - sun.reflect.ReflectionFactory.newConstructorForSerialization (my
>     favorite because it's the fastest one)

which afaik works in java9 but is also one of those critical doomed APIs

>     - Generate an extending class forgetting to call the super constructor
>     (so it's not exactly that same class that is instantiated). It requires
>     -Xverify:none

Is this really an option for a production environment?

>     - Generate a class extending MagicAccessorImpl that will then
>     instantiates the wanted class but calling the wrong constructor

Is jdk.internal.reflect.MagicAccessorImpl still usable in Java9+? I 
thought this is no longer exported

Under the premise that all critical API usages will be removed in the 
future and replacement APIs will be created I think we might indeed 
still miss something here

bye Jochen

More information about the jigsaw-dev mailing list