anchor.diff:  }
   ----
   
  -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:
  +Using such a construct means that a `--initialize-at-run-time` option will automatically be added to the `native-image` command line.
  +
  +[NOTE]
  +====
  +For more information about `--initialize-at-run-time`, please read https://github.com/oracle/graal/blob/master/substratevm/CLASS-INITIALIZATION.md[the GraalVM documentation].
  +====
  +
  +=== Managing Proxy Classes
  +
  +Very similarly, Quarkus allows extensions authors to register a `SubstrateProxyDefinitionBuildItem`. An example of doing so is:
   
   [source,java]
   ----
  
positive.code: }
  ----
  
  For more information about GraalVM's resource handling in native executables please see https://github.com/oracle/graal/blob/master/substratevm/RESOURCES.md[this].
  
  
  == 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:
  
  
negative.code: }
  ----
  
  Using such a construct means that a `-H:DynamicProxyConfigurationResources` option will automatically be added to the `native-image` command line.
  
  [NOTE]
  ====
  For more information about Proxy Classes you can read https://github.com/oracle/graal/blob/master/substratevm/DYNAMIC_PROXY.md[the GraalVM documentation].
  ====
  