Huh I've often thought about doing similar. Two nits: 1. RT.java is clever, I know ClassValue was probably the way to do things but couldn't figure out how to do it. But it's simpler to just write to a static field to the class anyway. One advantage of creating new classloaders over defineHiddenClass is you can just pass in the data as part of the classloader.
2. I wouldn't even bother with a traditional constructor but just use MethodHandles to set the delegate field. Anyway very cool what defineHiddenClass will enable. On Sunday, April 26, 2020 at 10:31:20 AM UTC-7, Remi Forax wrote: > > Shameless plug, > i've written a simple library that shows how lookup.defineHiddenClass [1] > can be used to implement dynamic proxies > https://github.com/forax/hidden_proxy > > regards, > Rémi > > [1] > https://download.java.net/java/early_access/jdk15/docs/api/java.base/java/lang/invoke/MethodHandles.Lookup.html#defineHiddenClass(byte%5B%5D,boolean,java.lang.invoke.MethodHandles.Lookup.ClassOption...) > > ------------------------------ > > *De: *"Dr Heinz M. Kabutz" <[email protected] <javascript:>> > *À: *"mechanical-sympathy" <[email protected] <javascript:>> > *Envoyé: *Dimanche 26 Avril 2020 19:11:53 > *Objet: *Re: Best way to dynamically spin Java classes? > > In Java 15 we will have hidden classes, which seem like the right model > for what you are trying to do. > > On Sun, 26 Apr 2020 at 19:36, Steven Stewart-Gallus < > [email protected] <javascript:>> wrote: > >> I'm spinning a lot of classes dynamically for an interpreter. >> I'm not sure the best way to load the classes into the VM. >> >> Aside from Unsafe's defineAnonymousClass what's the best way to load >> classes into the VM? >> >> I believe I could create a new classloader for each spun class but IIRC >> classloaders are expensive. >> >> I believe as much as possible I'd want to reuse MethodHandle and >> LambdaMetafactory to rely on the JVMs use of defineAnonymousClass. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "mechanical-sympathy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To view this discussion on the web, visit >> https://groups.google.com/d/msgid/mechanical-sympathy/8ded7316-7675-4747-afe5-5150a7b6009e%40googlegroups.com >> . >> > -- > Dr Heinz M. Kabutz (PhD CompSci) > Author of "The Java(tm) Specialists' Newsletter" > Sun/Oracle Java Champion > JavaOne Rockstar Speaker > http://www.javaspecialists.eu > Tel: +30 69 75 595 262 > Skype: kabutz > > -- > You received this message because you are subscribed to the Google Groups > "mechanical-sympathy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:>. > To view this discussion on the web, visit > https://groups.google.com/d/msgid/mechanical-sympathy/CACLL95rS-FtOi2511BqezhszD2ejxPp9BPUBFNUOnNNFndco_Q%40mail.gmail.com > > <https://groups.google.com/d/msgid/mechanical-sympathy/CACLL95rS-FtOi2511BqezhszD2ejxPp9BPUBFNUOnNNFndco_Q%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > -- You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web, visit https://groups.google.com/d/msgid/mechanical-sympathy/b14b88e4-3a30-447d-a29b-ca7ce7fe738d%40googlegroups.com.
