In the context of .jinfo files (used by the update-java-alternatives tool in Debian-based systems), the prefixes like hl, jdk, and jdkhl indicate which types of Java installations the command applies to. Here’s what each of them means:
hl - “headless”
-
Applies to JREs or headless Java environments, i.e., installations without GUI support.
-
These are typically runtime-only tools that do not require a full JDK or graphical components.
-
Examples: java, jfr, keytool, rmiregistry, jrunscript.
jdk “JDK-only”
-
Applies only to full JDK environments, i.e., not JREs or headless JREs.
-
These tools are typically developer-specific tools that wouldn’t be included in a lightweight or runtime-only setup.
-
Example: jconsole (needs GUI support and is not in headless environments).
jdkhl “JDK + headless”
-
Applies to both JDKs and headless environments.
-
These are tools that require development tools (from JDK) but do not require GUI components, so they work in both JDK and headless setups.
-
Examples: javac, javadoc, jlink, jmod, jshell, jmap, etc.
Summary Table
Prefix
|
Stands For
|
Used in…
|
GUI Required?
|
Developer Tools?
|
---|
hl
|
Headless
|
JRE/Headless JDK
|
❌ No
|
❌ No
|
jdk
|
JDK-only
|
Full JDK w/ GUI
|
✅ Yes
|
✅ Yes
|
jdkhl
|
JDK Headless
|
JDK & JDK Headless
|
❌ No
|
✅ Yes
|
This tagging helps tools like update-java-alternatives or scripts that manage multiple JVMs decide which binaries to expose based on the system or package type (e.g., headless server vs. developer desktop).