anchor.diff:  }
   ----
   
  -For more information about GraalVM's resource handling in native executables please see https://github.com/oracle/graal/blob/master/substratevm/RESOURCES.md[this].
  +[NOTE]
  +====
  +For more information about GraalVM resource handling in native executables please refer to https://github.com/oracle/graal/blob/master/substratevm/RESOURCES.md[the GraalVM documentation].
  +====
   
   
   == Delay class initialization
  -
  -There are cases where the initialization of certain classes is done in a static block (which means by default that GraalVM performs the initialization at image build time) needs to be postponed to runtime.
  -Typically omitting such configuration would result in a runtime exception like the following:
  -
  -[source]
  -----
  -Error: No instances are allowed in the image heap for a class that is initialized or reinitialized at image runtime: sun.security.provider.NativePRNG
  -Trace: object java.security.SecureRandom
  -method com.amazonaws.services.s3.model.CryptoConfiguration.<init>(CryptoMode)
  -Call path from entry point to com.amazonaws.services.s3.model.CryptoConfiguration.<init>(CryptoMode):
  -----
  -
  -If one were to execute the native executable generation process manually, the `--delay-class-initialization-to-runtime=com.amazonaws.services.s3.model.CryptoConfiguration` flag would need to be passed to `native-image` to configure runtime initialization for `CryptoConfiguration`.
   
   Quarkus simplifies things by allowing extensions authors to simply register a `RuntimeInitializedClassBuildItem`. A simple example of doing so could be:
   
  
positive.code: }
  ----
  
  Using such a construct means that a `--delay-class-initialization-to-runtime` option will automatically be added to the `native-image` command line
  
  For more information about `--delay-class-initialization-to-runtime`, please read https://medium.com/graalvm/understanding-class-initialization-in-graalvm-native-image-generation-d765b7e4d6ed[this blog post].
  
  == Proxy Classes management
  
  While writing native application you'll need to define proxy classes at image build time by specifying the list of interfaces that they implement.
  
  In such a situation the error you might encounter is:
  
  [source]
  ----
  com.oracle.svm.core.jdk.UnsupportedFeatureError: Proxy class defined by interfaces [interface org.apache.http.conn.HttpClientConnectionManager, interface org.apache.http.pool.ConnPoolControl, interface com.amazonaws.http.conn.Wrapped] not found. Generating proxy classes at runtime is not supported. Proxy classes need to be defined at image build time by specifying the list of interfaces that they implement. To define proxy classes use -H:DynamicProxyConfigurationFiles=<comma-separated-config-files> and -H:DynamicProxyConfigurationResources=<comma-separated-config-resources> options.
  ----
  
  Quarkus allows extensions authors to register a `SubstrateProxyDefinitionBuildItem`. An example of doing so is:
  
  [source,java]
  ----
  
negative.code: }
  ----
  
  [NOTE]
  ====
  More information about reflection in GraalVM can be found https://github.com/oracle/graal/blob/master/substratevm/REFLECTION.md[here].
  ====
  
  === Alternative with @RegisterForReflection
  
  As for applications, you can also use the `@RegisterForReflection` annotation if the class is in your extension and not in a third-party jar.
  
  === Including resources
  
  In the context of an extension, Quarkus eliminates the need for a JSON configuration file by allowing extension authors to specify a `SubstrateResourceBuildItem`:
  
  [source,java]
  ----
  