- Latest (GraalVM for JDK 21)
- Dev Build
- GraalVM for JDK 21
- GraalVM for JDK 20
- GraalVM for JDK 17
- GraalVM 22.3
- GraalVM 22.2
- GraalVM 22.1
- GraalVM 22.0
- GraalVM 21.3
- Native Image
- Build Configuration
- Tracing Agent
- Native Image Compatibility and Optimization Guide
- Class Initialization in Native Image
- Static Native Images
- Native Image Options
- Native Image Hosted and Runtime Options
- Native Image C API
- Implementing Native Methods in Java with Native Image
- LLVM Backend for Native Image
- Debug Info Feature
- Points-to Analysis Reports
- Using System Properties in Native Images
- Profile-Guided Optimizations
- Memory Management at Image Run Time
- Generating Heap Dumps from Native Images
- JDK Flight Recorder with Native Image
- JCA Security Services on Native Image
- Dynamic Proxy on Native Image
- Java Native Interface (JNI) on Native Image
- Reflection on Native Image
- Accessing Resources in Native Images
- Logging on Native Image
- URL Protocols on Native Image
- Native Image ARM64 Support
- GraalVM Updater
- Languages References
- Embedding Reference
- Polyglot Programming
Note
This documentation may be out of date. See the latest version.
URL Protocols in Native Image
URL Protocols in Native Image can be divided into three classes:
- supported and enabled by default
- supported and disabled by default
- HTTPS support
Supported and Enabled by Default #
These are protocols that are enabled by default and added to every generated native image.
Currently, file
and resource
are the only supported URL protocols, enabled by default.
Supported and Disabled by Default #
These are protocols that are supported but not enabled by default when building a native image.
They must be enabled during the native image building by adding --enable-url-protocols=<protocols>
to the native-image
command.
The option accepts a list of comma-separated protocols.
The rationale behind enabling protocols on-demand is that you can start with a minimal image and add features as you need them.
This way your image will only include the features you use, which helps keep the overall size small.
Currently http
and https
are the only URL protocols that are supported and can be enabled on demand.
They can be enabled using the --enable-http
and --enable-https
options.
HTTPS Support #
Support for the https
URL protocol relies on the Java Cryptography Architecture (JCA) framework.
Thus enabling https
will add to the generated image the code required by the JCA, including statically linking native libraries that the JCA may depend on.
See the documentation on security services for more details.
Not Tested #
No other URL protocols are currently tested.
They can still be enabled using --enable-url-protocols=<protocols>
, however they might not work as expected.