diff --git a/modules/jdk/21/module.yaml b/modules/jdk/21/module.yaml index fe2f4a5f..f9b1c4c2 100644 --- a/modules/jdk/21/module.yaml +++ b/modules/jdk/21/module.yaml @@ -28,6 +28,8 @@ packages: modules: install: + - name: jboss.container.openjdk.jre + version: *jdkver - name: jboss.container.user - name: jboss.container.openjdk diff --git a/modules/jdk/25/configure.sh b/modules/jdk/25/configure.sh new file mode 100755 index 00000000..e0f679da --- /dev/null +++ b/modules/jdk/25/configure.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -euo pipefail + +# Update securerandom.source for quicker starts (must be done after removing jdk 8, or it will hit the wrong files) +JAVA_SECURITY_FILE=/usr/lib/jvm/java/conf/security/java.security +SECURERANDOM=securerandom.source +if grep -q "^$SECURERANDOM=.*" $JAVA_SECURITY_FILE; then + sed -i "s|^$SECURERANDOM=.*|$SECURERANDOM=file:/dev/urandom|" $JAVA_SECURITY_FILE +else + echo $SECURERANDOM=file:/dev/urandom >> $JAVA_SECURITY_FILE +fi diff --git a/modules/jdk/25/module.yaml b/modules/jdk/25/module.yaml new file mode 100644 index 00000000..95b70cdd --- /dev/null +++ b/modules/jdk/25/module.yaml @@ -0,0 +1,37 @@ +schema_version: 1 + +name: "jboss.container.openjdk.jdk" +description: "Installs the JDK for OpenJDK 25." +version: &jdkver "25" + +labels: +- name: "org.jboss.product" + value: "openjdk" +- name: "org.jboss.product.version" + value: *jdkver +- name: "org.jboss.product.openjdk.version" + value: *jdkver + +envs: +- name: "JAVA_HOME" + value: "/usr/lib/jvm/java-25" +- name: "JAVA_VENDOR" + value: "openjdk" +- name: "JAVA_VERSION" + value: *jdkver +- name: JBOSS_CONTAINER_OPENJDK_JDK_MODULE + value: /opt/jboss/container/openjdk/jdk + +packages: + install: + - java-25-openjdk-devel + +modules: + install: + - name: jboss.container.openjdk.jre + version: *jdkver + - name: jboss.container.user + - name: jboss.container.openjdk + +execute: +- script: configure.sh diff --git a/modules/jre/25/artifacts/opt/jboss/container/openjdk/jre/jvm-options b/modules/jre/25/artifacts/opt/jboss/container/openjdk/jre/jvm-options new file mode 100644 index 00000000..21a11f39 --- /dev/null +++ b/modules/jre/25/artifacts/opt/jboss/container/openjdk/jre/jvm-options @@ -0,0 +1,9 @@ +#!/bin/bash +# this is a script library and is intended to be sourced, not executed. + +# OPENJDK-4106 +jvm_specific_options() { + if [ "$JAVA_COMPACT_OBJECT_HEADERS" != "false" ]; then + echo "-XX:+UseCompactObjectHeaders" + fi +} diff --git a/modules/jre/25/configure.sh b/modules/jre/25/configure.sh new file mode 100644 index 00000000..6c529b94 --- /dev/null +++ b/modules/jre/25/configure.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -euo pipefail + +SCRIPT_DIR=$(dirname $0) +ARTIFACTS_DIR=${SCRIPT_DIR}/artifacts + +install -m 0644 -D {${ARTIFACTS_DIR},}${JBOSS_CONTAINER_OPENJDK_JRE_MODULE}/jvm-options diff --git a/modules/jre/25/module.yaml b/modules/jre/25/module.yaml new file mode 100644 index 00000000..738dbdc7 --- /dev/null +++ b/modules/jre/25/module.yaml @@ -0,0 +1,38 @@ +schema_version: 1 + +name: "jboss.container.openjdk.jre" +description: "Installs only the JRE headless for OpenJDK 25." +version: &jdkver "25" + +labels: +- name: "org.jboss.product" + value: "openjdk" +- name: "org.jboss.product.version" + value: *jdkver +- name: "org.jboss.product.openjdk.version" + value: *jdkver + +envs: +- name: "JAVA_HOME" + value: "/usr/lib/jvm/jre" +- name: "JAVA_VENDOR" + value: "openjdk" +- name: "JAVA_VERSION" + value: *jdkver +- name: JBOSS_CONTAINER_OPENJDK_JRE_MODULE + value: /opt/jboss/container/openjdk/jre +- name: JAVA_COMPACT_OBJECT_HEADERS + description: Whether to enable compact object headers (JEP519) for JDK25 and newer. Enabled by default. + example: "false" + +packages: + install: + - java-25-openjdk-headless + +modules: + install: + - name: jboss.container.user + - name: jboss.container.openjdk + +execute: +- script: configure.sh diff --git a/modules/jvm/artifacts/opt/jboss/container/java/jvm/java-default-options b/modules/jvm/artifacts/opt/jboss/container/java/jvm/java-default-options index b9e5aa3c..4567a3d7 100755 --- a/modules/jvm/artifacts/opt/jboss/container/java/jvm/java-default-options +++ b/modules/jvm/artifacts/opt/jboss/container/java/jvm/java-default-options @@ -11,8 +11,8 @@ jvm_specific_options() { } # Include overridden jvm_specific_*() functions -if [ -f "${JBOSS_CONTAINER_OPENJDK_JDK_MODULE}/jvm-options" ]; then - source "${JBOSS_CONTAINER_OPENJDK_JDK_MODULE}/jvm-options" +if [ -f "${JBOSS_CONTAINER_OPENJDK_JRE_MODULE}/jvm-options" ]; then + source "${JBOSS_CONTAINER_OPENJDK_JRE_MODULE}/jvm-options" fi # Check for memory options and calculate a sane default if not given @@ -60,7 +60,7 @@ gc_config() { fi fi - local allOptions="$(jvm_specific_options) " + local allOptions="" allOptions+="${gcOptions} " allOptions+="-XX:MinHeapFreeRatio=${minHeapFreeRatio} " allOptions+="-XX:MaxHeapFreeRatio=${maxHeapFreeRatio} " @@ -81,5 +81,7 @@ error_handling() { echo "-XX:+ExitOnOutOfMemoryError" } -## Echo options, trimming trailing and multiple spaces -echo "$(max_memory) $(gc_config) $(diagnostics) $(error_handling)" | awk '$1=$1' +echo "$(max_memory) $(gc_config) $(diagnostics) $(error_handling)\ + $(jvm_specific_options) + +" | awk '$1=$1' # trim leading/trailing spaces and squash multiple spaces