APIdia Launch Partner
Top Description Fields Constructors Methods
jdk.internal.access

public Class SharedSecrets

extends Object
Class Inheritance
Annotations
@AOTSafeClassInitializer
Imports
jdk.internal.vm.annotation.AOTSafeClassInitializer, .Stable, javax.crypto.SealedObject, javax.crypto.spec.SecretKeySpec, java.io.ObjectInputFilter, .Console, .FileDescriptor, .FilePermission, .ObjectInputStream, .RandomAccessFile, java.lang.invoke.MethodHandles, java.lang.module.ModuleDescriptor, java.security.Security, .Signature, java.security.spec.EncodedKeySpec, java.util.ResourceBundle, java.util.concurrent.ForkJoinPool, java.util.jar.JarFile, javax.security.auth.x500.X500Principal

A repository of "shared secrets", which are a mechanism for calling implementation-private methods in another package without using reflection. A package-private class implements a public interface and provides the ability to call package-private methods within that package; the object implementing that interface is provided through a third package to which access is restricted. This framework avoids the primary disadvantage of using reflection for this purpose, namely the loss of compile-time checking.

Usage of these APIs often means bad encapsulation designs, increased complexity and lack of sustainability. Use this only as a last resort!

Notes

on the @AOTSafeClassInitializer annotation:

All static fields in SharedSecrets that are initialized in the AOT assembly phase must be stateless (as checked by the HotSpot C++ class CDSHeapVerifier::SharedSecretsAccessorFinder) so they can be safely stored in the AOT cache.

Static fields such as javaObjectInputFilterAccess point to a Lambda which is not stateless. The AOT assembly phase must not execute any Java code that would lead to the initialization of such fields, or else the AOT cache creation will fail.

Field Summary

Modifier and TypeField and Description
private static JavaAWTFontAccess
private static JavaBeansAccess
private static JavaIOAccess
private static JavaIOFileDescriptorAccess
private static JavaIORandomAccessFileAccess
private static JavaLangAccess
private static JavaLangInvokeAccess
private static JavaLangModuleAccess
private static JavaLangRefAccess
private static JavaLangReflectAccess
private static JavaNetHttpCookieAccess
private static JavaNetInetAddressAccess
private static JavaNetUriAccess
private static JavaNetURLAccess
private static JavaNioAccess
private static JavaObjectInputFilterAccess
private static JavaObjectInputStreamAccess
private static JavaObjectInputStreamReadString
private static JavaObjectStreamReflectionAccess
private static JavaSecurityPropertiesAccess
private static JavaSecuritySignatureAccess
private static JavaSecuritySpecAccess
private static JavaUtilCollectionAccess
private static JavaUtilConcurrentFJPAccess
private static JavaUtilConcurrentTLRAccess
private static JavaUtilJarAccess
private static JavaUtilResourceBundleAccess
private static JavaUtilZipFileAccess
private static JavaxCryptoSealedObjectAccess
private static JavaxCryptoSpecAccess
private static JavaxSecurityAccess

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static void
public static JavaAWTFontAccess
public static JavaBeansAccess
public static JavaIOAccess
public static JavaIOFileDescriptorAccess
public static JavaIORandomAccessFileAccess
public static JavaLangAccess
public static JavaLangInvokeAccess
public static JavaLangModuleAccess
public static JavaLangRefAccess
public static JavaLangReflectAccess
public static JavaNetHttpCookieAccess
public static JavaNetInetAddressAccess
public static JavaNetUriAccess
public static JavaNetURLAccess
public static JavaNioAccess
public static JavaObjectInputFilterAccess
public static JavaObjectInputStreamAccess
public static JavaObjectInputStreamReadString
public static JavaObjectStreamReflectionAccess
public static JavaSecurityPropertiesAccess
public static JavaSecuritySignatureAccess
public static JavaSecuritySpecAccess
public static JavaUtilCollectionAccess
public static JavaUtilConcurrentFJPAccess
public static JavaUtilConcurrentTLRAccess
public static JavaUtilResourceBundleAccess
public static JavaUtilZipFileAccess
public static JavaxCryptoSealedObjectAccess
public static JavaxCryptoSpecAccess
public static JavaxSecurityAccess
public static JavaUtilJarAccess
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
public static void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

javaAWTFontAccessback to summary
private static JavaAWTFontAccess javaAWTFontAccess
javaBeansAccessback to summary
private static JavaBeansAccess javaBeansAccess
Annotations
@Stable
javaIOAccessback to summary
private static JavaIOAccess javaIOAccess
Annotations
@Stable
javaIOFileDescriptorAccessback to summary
private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess
Annotations
@Stable
javaIORandomAccessFileAccessback to summary
private static JavaIORandomAccessFileAccess javaIORandomAccessFileAccess
Annotations
@Stable
javaLangAccessback to summary
private static JavaLangAccess javaLangAccess
Annotations
@Stable
javaLangInvokeAccessback to summary
private static JavaLangInvokeAccess javaLangInvokeAccess
Annotations
@Stable
javaLangModuleAccessback to summary
private static JavaLangModuleAccess javaLangModuleAccess
Annotations
@Stable
javaLangRefAccessback to summary
private static JavaLangRefAccess javaLangRefAccess
Annotations
@Stable
javaLangReflectAccessback to summary
private static JavaLangReflectAccess javaLangReflectAccess
Annotations
@Stable
javaNetHttpCookieAccessback to summary
private static JavaNetHttpCookieAccess javaNetHttpCookieAccess
Annotations
@Stable
javaNetInetAddressAccessback to summary
private static JavaNetInetAddressAccess javaNetInetAddressAccess
Annotations
@Stable
javaNetUriAccessback to summary
private static JavaNetUriAccess javaNetUriAccess
Annotations
@Stable
javaNetURLAccessback to summary
private static JavaNetURLAccess javaNetURLAccess
Annotations
@Stable
javaNioAccessback to summary
private static JavaNioAccess javaNioAccess
Annotations
@Stable
javaObjectInputFilterAccessback to summary
private static JavaObjectInputFilterAccess javaObjectInputFilterAccess
Annotations
@Stable
javaObjectInputStreamAccessback to summary
private static JavaObjectInputStreamAccess javaObjectInputStreamAccess
Annotations
@Stable
javaObjectInputStreamReadStringback to summary
private static JavaObjectInputStreamReadString javaObjectInputStreamReadString
Annotations
@Stable
javaObjectStreamReflectionAccessback to summary
private static JavaObjectStreamReflectionAccess javaObjectStreamReflectionAccess
Annotations
@Stable
javaSecurityPropertiesAccessback to summary
private static JavaSecurityPropertiesAccess javaSecurityPropertiesAccess
Annotations
@Stable
javaSecuritySignatureAccessback to summary
private static JavaSecuritySignatureAccess javaSecuritySignatureAccess
Annotations
@Stable
javaSecuritySpecAccessback to summary
private static JavaSecuritySpecAccess javaSecuritySpecAccess
Annotations
@Stable
javaUtilCollectionAccessback to summary
private static JavaUtilCollectionAccess javaUtilCollectionAccess
Annotations
@Stable
javaUtilConcurrentFJPAccessback to summary
private static JavaUtilConcurrentFJPAccess javaUtilConcurrentFJPAccess
Annotations
@Stable
javaUtilConcurrentTLRAccessback to summary
private static JavaUtilConcurrentTLRAccess javaUtilConcurrentTLRAccess
Annotations
@Stable
javaUtilJarAccessback to summary
private static JavaUtilJarAccess javaUtilJarAccess
Annotations
@Stable
javaUtilResourceBundleAccessback to summary
private static JavaUtilResourceBundleAccess javaUtilResourceBundleAccess
Annotations
@Stable
javaUtilZipFileAccessback to summary
private static JavaUtilZipFileAccess javaUtilZipFileAccess
Annotations
@Stable
javaxCryptoSealedObjectAccessback to summary
private static JavaxCryptoSealedObjectAccess javaxCryptoSealedObjectAccess
Annotations
@Stable
javaxCryptoSpecAccessback to summary
private static JavaxCryptoSpecAccess javaxCryptoSpecAccess
Annotations
@Stable
javaxSecurityAccessback to summary
private static JavaxSecurityAccess javaxSecurityAccess
Annotations
@Stable

Constructor Detail

SharedSecretsback to summary
public SharedSecrets()

Method Detail

ensureClassInitializedback to summary
private static void ensureClassInitialized(Class<?> c)
getJavaAWTFontAccessback to summary
public static JavaAWTFontAccess getJavaAWTFontAccess()
getJavaBeansAccessback to summary
public static JavaBeansAccess getJavaBeansAccess()
getJavaIOAccessback to summary
public static JavaIOAccess getJavaIOAccess()
getJavaIOFileDescriptorAccessback to summary
public static JavaIOFileDescriptorAccess getJavaIOFileDescriptorAccess()
getJavaIORandomAccessFileAccessback to summary
public static JavaIORandomAccessFileAccess getJavaIORandomAccessFileAccess()
getJavaLangAccessback to summary
public static JavaLangAccess getJavaLangAccess()
getJavaLangInvokeAccessback to summary
public static JavaLangInvokeAccess getJavaLangInvokeAccess()
getJavaLangModuleAccessback to summary
public static JavaLangModuleAccess getJavaLangModuleAccess()
getJavaLangRefAccessback to summary
public static JavaLangRefAccess getJavaLangRefAccess()
getJavaLangReflectAccessback to summary
public static JavaLangReflectAccess getJavaLangReflectAccess()
getJavaNetHttpCookieAccessback to summary
public static JavaNetHttpCookieAccess getJavaNetHttpCookieAccess()
getJavaNetInetAddressAccessback to summary
public static JavaNetInetAddressAccess getJavaNetInetAddressAccess()
getJavaNetUriAccessback to summary
public static JavaNetUriAccess getJavaNetUriAccess()
getJavaNetURLAccessback to summary
public static JavaNetURLAccess getJavaNetURLAccess()
getJavaNioAccessback to summary
public static JavaNioAccess getJavaNioAccess()
getJavaObjectInputFilterAccessback to summary
public static JavaObjectInputFilterAccess getJavaObjectInputFilterAccess()
getJavaObjectInputStreamAccessback to summary
public static JavaObjectInputStreamAccess getJavaObjectInputStreamAccess()
getJavaObjectInputStreamReadStringback to summary
public static JavaObjectInputStreamReadString getJavaObjectInputStreamReadString()
getJavaObjectStreamReflectionAccessback to summary
public static JavaObjectStreamReflectionAccess getJavaObjectStreamReflectionAccess()
getJavaSecurityPropertiesAccessback to summary
public static JavaSecurityPropertiesAccess getJavaSecurityPropertiesAccess()
getJavaSecuritySignatureAccessback to summary
public static JavaSecuritySignatureAccess getJavaSecuritySignatureAccess()
getJavaSecuritySpecAccessback to summary
public static JavaSecuritySpecAccess getJavaSecuritySpecAccess()
getJavaUtilCollectionAccessback to summary
public static JavaUtilCollectionAccess getJavaUtilCollectionAccess()
getJavaUtilConcurrentFJPAccessback to summary
public static JavaUtilConcurrentFJPAccess getJavaUtilConcurrentFJPAccess()
getJavaUtilConcurrentTLRAccessback to summary
public static JavaUtilConcurrentTLRAccess getJavaUtilConcurrentTLRAccess()
getJavaUtilResourceBundleAccessback to summary
public static JavaUtilResourceBundleAccess getJavaUtilResourceBundleAccess()
getJavaUtilZipFileAccessback to summary
public static JavaUtilZipFileAccess getJavaUtilZipFileAccess()
getJavaxCryptoSealedObjectAccessback to summary
public static JavaxCryptoSealedObjectAccess getJavaxCryptoSealedObjectAccess()
getJavaxCryptoSpecAccessback to summary
public static JavaxCryptoSpecAccess getJavaxCryptoSpecAccess()
getJavaxSecurityAccessback to summary
public static JavaxSecurityAccess getJavaxSecurityAccess()
javaUtilJarAccessback to summary
public static JavaUtilJarAccess javaUtilJarAccess()
setJavaAWTFontAccessback to summary
public static void setJavaAWTFontAccess(JavaAWTFontAccess jafa)
setJavaBeansAccessback to summary
public static void setJavaBeansAccess(JavaBeansAccess access)
setJavaIOAccessback to summary
public static void setJavaIOAccess(JavaIOAccess jia)
setJavaIOFileDescriptorAccessback to summary
public static void setJavaIOFileDescriptorAccess(JavaIOFileDescriptorAccess jiofda)
setJavaIORandomAccessFileAccessback to summary
public static void setJavaIORandomAccessFileAccess(JavaIORandomAccessFileAccess jirafa)
setJavaLangAccessback to summary
public static void setJavaLangAccess(JavaLangAccess jla)
setJavaLangInvokeAccessback to summary
public static void setJavaLangInvokeAccess(JavaLangInvokeAccess jlia)
setJavaLangModuleAccessback to summary
public static void setJavaLangModuleAccess(JavaLangModuleAccess jlrma)
setJavaLangRefAccessback to summary
public static void setJavaLangRefAccess(JavaLangRefAccess jlra)
setJavaLangReflectAccessback to summary
public static void setJavaLangReflectAccess(JavaLangReflectAccess jlra)
setJavaNetHttpCookieAccessback to summary
public static void setJavaNetHttpCookieAccess(JavaNetHttpCookieAccess a)
setJavaNetInetAddressAccessback to summary
public static void setJavaNetInetAddressAccess(JavaNetInetAddressAccess jna)
setJavaNetUriAccessback to summary
public static void setJavaNetUriAccess(JavaNetUriAccess jnua)
setJavaNetURLAccessback to summary
public static void setJavaNetURLAccess(JavaNetURLAccess jnua)
setJavaNioAccessback to summary
public static void setJavaNioAccess(JavaNioAccess jna)
setJavaObjectInputFilterAccessback to summary
public static void setJavaObjectInputFilterAccess(JavaObjectInputFilterAccess access)
setJavaObjectInputStreamAccessback to summary
public static void setJavaObjectInputStreamAccess(JavaObjectInputStreamAccess access)
setJavaObjectInputStreamReadStringback to summary
public static void setJavaObjectInputStreamReadString(JavaObjectInputStreamReadString access)
setJavaObjectStreamReflectionAccessback to summary
public static void setJavaObjectStreamReflectionAccess(JavaObjectStreamReflectionAccess access)
setJavaSecurityPropertiesAccessback to summary
public static void setJavaSecurityPropertiesAccess(JavaSecurityPropertiesAccess jspa)
setJavaSecuritySignatureAccessback to summary
public static void setJavaSecuritySignatureAccess(JavaSecuritySignatureAccess jssa)
setJavaSecuritySpecAccessback to summary
public static void setJavaSecuritySpecAccess(JavaSecuritySpecAccess jssa)
setJavaUtilCollectionAccessback to summary
public static void setJavaUtilCollectionAccess(JavaUtilCollectionAccess juca)
setJavaUtilConcurrentFJPAccessback to summary
public static void setJavaUtilConcurrentFJPAccess(JavaUtilConcurrentFJPAccess access)
setJavaUtilConcurrentTLRAccessback to summary
public static void setJavaUtilConcurrentTLRAccess(JavaUtilConcurrentTLRAccess access)
setJavaUtilJarAccessback to summary
public static void setJavaUtilJarAccess(JavaUtilJarAccess access)
setJavaUtilResourceBundleAccessback to summary
public static void setJavaUtilResourceBundleAccess(JavaUtilResourceBundleAccess access)
setJavaUtilZipFileAccessback to summary
public static void setJavaUtilZipFileAccess(JavaUtilZipFileAccess access)
setJavaxCryptoSealedObjectAccessback to summary
public static void setJavaxCryptoSealedObjectAccess(JavaxCryptoSealedObjectAccess jcsoa)
setJavaxCryptoSpecAccessback to summary
public static void setJavaxCryptoSpecAccess(JavaxCryptoSpecAccess jcsa)
setJavaxSecurityAccessback to summary
public static void setJavaxSecurityAccess(JavaxSecurityAccess jsa)