Review Request JDK-8240975: Extend NativeLibraries to support explicit unloading
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Wed Mar 18 19:13:25 UTC 2020
On 18/03/2020 18:40, Mandy Chung wrote:
>
>
> On 3/18/20 11:16 AM, Maurizio Cimadamore wrote:
>> So, maybe I'm saying something naive, but isn't the difference
>> between the two mechanisms mostly there to distinguish between JNI
>> libraries and non-JNI libraries?
>>
>
> I think such distinction is kind of blurry at the moment. One thing
> for sure is that JNI native method binding won't happen with the
> native libraries loaded through this new mechanism.
>
> OTOH, should JNI_OnLoad and JNI_Unload be invoked if it is a non-JNI
> library? The new mechanism still does. I expect that this will be
> cleared up from panama specification.
Should defo not happen in Panama-loaded libraries
>
> However, you raise a good point that this is not only about
> auto-unloading (which I got trapped as this patch is all about). No
> JNI native method binding is another significant part.
Yes
>
>> E.g. maybe we should add JNI somewhere in one of the factory (the one
>> used by System.loadLibrary) and then document what are the
>> differences between JNI and non-JNI libraries. We could even have
>> different NativeLibrary impl for these two cases.
>>
>> Seems to me that JNI libs feature:
>>
>> * extra restrictions (cannot load same library in multiple loaders)
>> * auto-unloading guarantees (classloader-driven)
>>
>
> JNI native method binding will lookup methods from these libraries.
Yeah that too
>
>> Or are there cases where you envision more mix and match? E.g. JNI
>> libraries w/o auto-unloading?
>
> No as unloading is important for native library loaded by custom loaders.
>
> I can't really think of a good static factory method name.
>
> would newNonJavaNativeLIbraries be slightly clearer?
newJavaNativeInterfaceLibraries
vs.
newRawNativeLibraries
could be an option.
Another option, in case we do care about mix and match, would be to use
a builder - which would allow us to specify whether we want:
* auto-unloading
* classloader restrictions
* calling JNI hooks
* support linking of JNI methods
But I don't think we need such level of granularity for now.
Maurizio
>
> Mandy
>>
>> Maurizio
>>
>> On 18/03/2020 16:32, Mandy Chung wrote:
>>>
>>>
>>> On 3/18/20 8:59 AM, Alan Bateman wrote:
>>>> On 17/03/2020 23:09, Mandy Chung wrote:
>>>>>
>>>>> I have similar comment to myself and didn't come up good static
>>>>> factory method names. I give it a try again: what about
>>>>> newNativeLibraries and newNativeLibrariesWithNoAutoUnload?
>>>> Would newTrustedNativeLibraries work? Everything else in the
>>>> updated webrev looks good.
>>>
>>> "no auto unload" is also important. what about
>>> "newTrustedNativeLibrariesNoAutoUnload" a bit long?
>>>
>>> Mandy
>
More information about the core-libs-dev
mailing list