    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *      https://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 * Unless required by applicable law or agreed to in writing, software
    012 * distributed under the License is distributed on an "AS IS" BASIS,
    013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 * See the License for the specific language governing permissions and
    015 * limitations under the License.
    016 */
    017
    018package org.apache.commons.lang3;
    019
    020import java.nio.file.Path;
    021import java.nio.file.Paths;
    022import java.util.function.BooleanSupplier;
    023import java.util.function.IntSupplier;
    024import java.util.function.LongSupplier;
    025import java.util.function.Supplier;
    026
    027import org.apache.commons.lang3.function.Suppliers;
    028
    029/**
    030 * Accesses current <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Property</a> names and values.
    031 *
    032 * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    033 * @since 3.13.0
    034 */
    035public final class SystemProperties {
    036
    037    /**
    038     * The System property name {@value}.
    039     *
    040     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/TrayIcon.html#apple.awt.enableTemplateImages">apple.awt.enableTemplateImages</a>
    041     * @since 3.15.0
    042     */
    043    public static final String APPLE_AWT_ENABLE_TEMPLATE_IMAGES = "apple.awt.enableTemplateImages";
    044
    045    /**
    046     * The System property name {@value}.
    047     * <p>
    048     * Not in Java 17 and above according to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a> Javadoc.
    049     * </p>
    050     *
    051     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    052     * @deprecated Deprecated without replacement.
    053     */
    054    @Deprecated
    055    public static final String AWT_TOOLKIT = "awt.toolkit";
    056
    057    /**
    058     * The System property name {@value}.
    059     *
    060     * @see <a href=
    061     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.naming/module-summary.html#com.sun.jndi.ldap.object.trustSerialData">com.sun.jndi.ldap.object.trustSerialData</a>
    062     * @since 3.15.0
    063     */
    064    public static final String COM_SUN_JNDI_LDAP_OBJECT_TRUST_SERIAL_DATA = "com.sun.jndi.ldap.object.trustSerialData";
    065
    066    /**
    067     * The System property name {@value}.
    068     *
    069     * @see <a href=
    070     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/com/sun/net/httpserver/spi/HttpServerProvider.html#com.sun.net.httpserver.HttpServerProvider">com.sun.net.httpserver.HttpServerProvider</a>
    071     * @since 3.15.0
    072     */
    073    public static final String COM_SUN_NET_HTTP_SERVER_HTTP_SERVER_PROVIDER = "com.sun.net.httpserver.HttpServerProvider";
    074
    075    /**
    076     * The System property name {@value}.
    077     */
    078    public static final String FILE_ENCODING = "file.encoding";
    079
    080    /**
    081     * The System property name {@value}.
    082     */
    083    public static final String FILE_SEPARATOR = "file.separator";
    084
    085    /**
    086     * The System property name {@value}.
    087     *
    088     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#ftp.nonProxyHosts">ftp.nonProxyHosts</a>
    089     * @since 3.15.0
    090     */
    091    public static final String FTP_NON_PROXY_HOST = "ftp.nonProxyHosts";
    092
    093    /**
    094     * The System property name {@value}.
    095     *
    096     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#ftp.proxyHost">ftp.proxyHost</a>
    097     * @since 3.15.0
    098     */
    099    public static final String FTP_PROXY_HOST = "ftp.proxyHost";
    100
    101    /**
    102     * The System property name {@value}.
    103     *
    104     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#ftp.proxyPort">ftp.proxyPort</a>
    105     * @since 3.15.0
    106     */
    107    public static final String FTP_PROXY_PORT = "ftp.proxyPort";
    108
    109    /**
    110     * The System property name {@value}.
    111     *
    112     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.agent">http.agent</a>
    113     * @since 3.15.0
    114     */
    115    public static final String HTTP_AGENT = "http.agent";
    116
    117    /**
    118     * The System property name {@value}.
    119     *
    120     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#auth.digest.cnonceRepeat">auth.digest.cnonceRepeat</a>
    121     * @since 3.15.0
    122     */
    123    public static final String HTTP_AUTH_DIGEST_CNONCE_REPEAT = "http.auth.digest.cnonceRepeat";
    124
    125    /**
    126     * The System property name {@value}.
    127     *
    128     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#reEnabledAlgorithms">http.auth.digest.reEnabledAlgorithms</a>
    129     * @since 3.15.0
    130     */
    131    public static final String HTTP_AUTH_DIGEST_RE_ENABLED_ALGORITHMS = "http.auth.digest.reEnabledAlgorithms";
    132
    133    /**
    134     * The System property name {@value}.
    135     *
    136     * @see <a href=
    137     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.auth.digest.validateProxy">http.auth.digest.validateProxy</a>
    138     * @since 3.15.0
    139     */
    140    public static final String HTTP_AUTH_DIGEST_VALIDATE_PROXY = "http.auth.digest.validateProxy";
    141
    142    /**
    143     * The System property name {@value}.
    144     *
    145     * @see <a href=
    146     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.auth.digest.validateServer">http.auth.digest.validateServer</a>
    147     * @since 3.15.0
    148     */
    149    public static final String HTTP_AUTH_DIGEST_VALIDATE_SERVER = "http.auth.digest.validateServer";
    150
    151    /**
    152     * The System property name {@value}.
    153     *
    154     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.auth.ntlm.domain">http.auth.ntlm.domain</a>
    155     * @since 3.15.0
    156     */
    157    public static final String HTTP_AUTH_NTLM_DOMAIN = "http.auth.ntlm.domain";
    158
    159    /**
    160     * The System property name {@value}.
    161     *
    162     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.keepAlive">http.keepAlive</a>
    163     * @since 3.15.0
    164     */
    165    public static final String HTTP_KEEP_ALIVE = "http.keepAlive";
    166
    167    /**
    168     * The System property name {@value}.
    169     *
    170     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.keepAlive.time.proxy">http.keepAlive.time.proxy</a>
    171     * @since 3.15.0
    172     */
    173    public static final String HTTP_KEEP_ALIVE_TIME_PROXY = "http.keepAlive.time.proxy";
    174
    175    /**
    176     * The System property name {@value}.
    177     *
    178     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.keepAlive.time.server">http.keepAlive.time.server</a>
    179     * @since 3.15.0
    180     */
    181    public static final String HTTP_KEEP_ALIVE_TIME_SERVER = "http.keepAlive.time.server";
    182
    183    /**
    184     * The System property name {@value}.
    185     *
    186     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.maxConnections">http.maxConnections</a>
    187     * @since 3.15.0
    188     */
    189    public static final String HTTP_MAX_CONNECTIONS = "http.maxConnections";
    190
    191    /**
    192     * The System property name {@value}.
    193     *
    194     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.maxRedirects">http.maxRedirects</a>
    195     * @since 3.15.0
    196     */
    197    public static final String HTTP_MAX_REDIRECTS = "http.maxRedirects";
    198
    199    /**
    200     * The System property name {@value}.
    201     *
    202     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.nonProxyHosts">http.nonProxyHosts</a>
    203     * @since 3.15.0
    204     */
    205    public static final String HTTP_NON_PROXY_HOSTS = "http.nonProxyHosts";
    206
    207    /**
    208     * The System property name {@value}.
    209     *
    210     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.proxyHost">http.proxyHost</a>
    211     * @since 3.15.0
    212     */
    213    public static final String HTTP_PROXY_HOST = "http.proxyHost";
    214
    215    /**
    216     * The System property name {@value}.
    217     *
    218     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#http.proxyPort">http.proxyPort</a>
    219     * @since 3.15.0
    220     */
    221    public static final String HTTP_PROXY_PORT = "http.proxyPort";
    222
    223    /**
    224     * The System property name {@value}.
    225     *
    226     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#https.proxyHost">https.proxyHost</a>
    227     * @since 3.15.0
    228     */
    229    public static final String HTTPS_PROXY_HOST = "https.proxyHost";
    230
    231    /**
    232     * The System property name {@value}.
    233     *
    234     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#https.proxyPort">https.proxyPort</a>
    235     * @since 3.15.0
    236     */
    237    public static final String HTTPS_PROXY_PORT = "https.proxyPort";
    238
    239    /**
    240     * The System property name {@value}.
    241     * <p>
    242     * Not in Java 17 and above according to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a> Javadoc.
    243     * </p>
    244     *
    245     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    246     * @deprecated Deprecated without replacement.
    247     */
    248    @Deprecated
    249    public static final String JAVA_AWT_FONTS = "java.awt.fonts";
    250
    251    /**
    252     * The System property name {@value}.
    253     * <p>
    254     * Not in Java 17 and above according to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a> Javadoc.
    255     * </p>
    256     *
    257     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    258     * @deprecated Deprecated without replacement.
    259     */
    260    @Deprecated
    261    public static final String JAVA_AWT_GRAPHICSENV = "java.awt.graphicsenv";
    262
    263    /**
    264     * The System property name {@value}.
    265     * <p>
    266     * Not in Java 17 and above according to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a> Javadoc.
    267     * </p>
    268     *
    269     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    270     * @deprecated Deprecated without replacement.
    271     */
    272    @Deprecated
    273    public static final String JAVA_AWT_HEADLESS = "java.awt.headless";
    274
    275    /**
    276     * The System property name {@value}.
    277     * <p>
    278     * Not in Java 17 and above according to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a> Javadoc.
    279     * </p>
    280     *
    281     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    282     * @deprecated Deprecated without replacement.
    283     */
    284    @Deprecated
    285    public static final String JAVA_AWT_PRINTERJOB = "java.awt.printerjob";
    286
    287    /**
    288     * The System property name {@value}.
    289     *
    290     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">java.class.path</a>
    291     */
    292    public static final String JAVA_CLASS_PATH = "java.class.path";
    293
    294    /**
    295     * The System property name {@value}.
    296     */
    297    public static final String JAVA_CLASS_VERSION = "java.class.version";
    298
    299    /**
    300     * The System property name {@value}.
    301     * <p>
    302     * Not in Java 17 and above according to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a> Javadoc.
    303     * </p>
    304     *
    305     * @see <a href="https://bugs.openjdk.org/browse/JDK-8305998">JDK-8305998</a>
    306     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    307     * @deprecated Deprecated without replacement.
    308     */
    309    @Deprecated
    310    public static final String JAVA_COMPILER = "java.compiler";
    311
    312    /**
    313     * The System property name {@value}.
    314     *
    315     * @see <a href=
    316     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/ContentHandler.html#java.content.handler.pkgs">java.content.handler.pkgs</a>
    317     * @since 3.15.0
    318     */
    319    public static final String JAVA_CONTENT_HANDLER_PKGS = "java.content.handler.pkgs";
    320
    321    /**
    322     * The System property name {@value}.
    323     * <p>
    324     * Not in Java 17 and above according to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a> Javadoc.
    325     * </p>
    326     *
    327     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    328     * @deprecated Deprecated without replacement.
    329     */
    330    @Deprecated
    331    public static final String JAVA_ENDORSED_DIRS = "java.endorsed.dirs";
    332
    333    /**
    334     * The System property name {@value}.
    335     * <p>
    336     * Not in Java 17 and above according to <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a> Javadoc.
    337     * </p>
    338     *
    339     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    340     * @deprecated Deprecated without replacement.
    341     */
    342    @Deprecated
    343    public static final String JAVA_EXT_DIRS = "java.ext.dirs";
    344
    345    /**
    346     * The System property name {@value}.
    347     */
    348    public static final String JAVA_HOME = "java.home";
    349
    350    /**
    351     * The System property name {@value}.
    352     */
    353    public static final String JAVA_IO_TMPDIR = "java.io.tmpdir";
    354
    355    /**
    356     * The System property name {@value}.
    357     */
    358    public static final String JAVA_LIBRARY_PATH = "java.library.path";
    359
    360    /**
    361     * The System property name {@value}.
    362     */
    363    public static final String JAVA_LOCALE_PROVIDERS = "java.locale.providers";
    364
    365    /**
    366     * The System property name {@value}.
    367     *
    368     * @see <a href=
    369     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Locale.html#java.locale.useOldISOCodes">java.locale.useOldISOCodes</a>
    370     * @since 3.15.0
    371     */
    372    public static final String JAVA_LOCALE_USE_OLD_ISO_CODES = "java.locale.useOldISOCodes";
    373
    374    /**
    375     * The System property name {@value}.
    376     *
    377     * @see <a href=
    378     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#java.net.preferIPv4Stack">java.net.preferIPv4Stack</a>
    379     * @since 3.15.0
    380     */
    381    public static final String JAVA_NET_PREFER_IPV4_STACK = "java.net.preferIPv4Stack";
    382
    383    /**
    384     * The System property name {@value}.
    385     *
    386     * @see <a href=
    387     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#java.net.preferIPv6Addresses">java.net.preferIPv6Addresses</a>
    388     * @since 3.15.0
    389     */
    390    public static final String JAVA_NET_PREFER_IPV6_ADDRESSES = "java.net.preferIPv6Addresses";
    391
    392    /**
    393     * The System property name {@value}.
    394     *
    395     * @see <a href=
    396     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#java.net.socks.password">java.net.socks.password</a>
    397     * @since 3.15.0
    398     */
    399    public static final String JAVA_NET_SOCKS_PASSWORD = "java.net.socks.password";
    400
    401    /**
    402     * The System property name {@value}.
    403     *
    404     * @see <a href=
    405     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#java.net.socks.username">java.net.socks.username</a>
    406     * @since 3.15.0
    407     */
    408    public static final String JAVA_NET_SOCKS_USER_NAME = "java.net.socks.username";
    409
    410    /**
    411     * The System property name {@value}.
    412     *
    413     * @see <a href=
    414     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/doc-files/net-properties.html#java.net.useSystemProxies">java.net.useSystemProxies</a>
    415     * @since 3.15.0
    416     */
    417    public static final String JAVA_NET_USE_SYSTEM_PROXIES = "java.net.useSystemProxies";
    418
    419    /**
    420     * The System property name {@value}.
    421     *
    422     * @see <a href=
    423     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/channels/AsynchronousChannelGroup.html#java.nio.channels.DefaultThreadPool.initialSize">java.nio.channels.DefaultThreadPool.initialSize</a>
    424     * @since 3.15.0
    425     */
    426    public static final String JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_INITIAL_SIZE = "java.nio.channels.DefaultThreadPool.initialSize";
    427
    428    /**
    429     * The System property name {@value}.
    430     *
    431     * @see <a href=
    432     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/channels/AsynchronousChannelGroup.html#java.nio.channels.DefaultThreadPool.threadFactory">java.nio.channels.DefaultThreadPool.threadFactory</a>
    433     * @since 3.15.0
    434     */
    435    public static final String JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_THREAD_FACTORY = "java.nio.channels.DefaultThreadPool.threadFactory";
    436
    437    /**
    438     * The System property name {@value}.
    439     *
    440     * @see <a href=
    441     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/channels/AsynchronousChannelGroup.html#java.nio.channels.DefaultThreadPool.initialSize">java.nio.channels.DefaultThreadPool.initialSize</a>
    442     * @since 3.15.0
    443     */
    444    public static final String JAVA_NIO_CHANNELS_SPI_ASYNCHRONOUS_CHANNEL_PROVIDER = "java.nio.channels.spi.AsynchronousChannelProvider";
    445
    446    /**
    447     * The System property name {@value}.
    448     *
    449     * @see <a href=
    450     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/channels/spi/SelectorProvider.html#java.nio.channels.spi.SelectorProvider">java.nio.channels.spi.SelectorProvider</a>
    451     * @since 3.15.0
    452     */
    453    public static final String JAVA_NIO_CHANNELS_SPI_SELECTOR_PROVIDER = "java.nio.channels.spi.SelectorProvider";
    454
    455    /**
    456     * The System property name {@value}.
    457     *
    458     * @see <a href=
    459     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/file/spi/FileSystemProvider.html#java.nio.file.spi.DefaultFileSystemProvider">java.nio.file.spi.DefaultFileSystemProvider</a>
    460     * @since 3.15.0
    461     */
    462    public static final String JAVA_NIO_FILE_SPI_DEFAULT_FILE_SYSTEM_PROVIDER = "java.nio.file.spi.DefaultFileSystemProvider";
    463
    464    /**
    465     * The System property name {@value}.
    466     *
    467     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Properties.html#java.properties.date">java.properties.date</a>
    468     * @since 3.15.0
    469     */
    470    public static final String JAVA_PROPERTIES_DATE = "java.properties.date";
    471
    472    /**
    473     * The System property name {@value}.
    474     *
    475     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/URL.html#java.protocol.handler.pkgs">java.protocol.handler.pkgs</a>
    476     * @since 3.15.0
    477     */
    478    public static final String JAVA_PROTOCOL_HANDLER_PKGS = "java.protocol.handler.pkgs";
    479
    480    /**
    481     * The System property name {@value}.
    482     *
    483     * @see <a href=
    484     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RMIClassLoader.html#java.rmi.server.codebase">java.rmi.server.codebase</a>
    485     * @since 3.15.0
    486     */
    487    public static final String JAVA_RMI_SERVER_CODEBASE = "java.rmi.server.codebase";
    488
    489    /**
    490     * The System property name {@value}.
    491     *
    492     * @see <a href=
    493     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RMISocketFactory.html#java.rmi.server.hostname">java.rmi.server.hostname</a>
    494     * @since 3.15.0
    495     */
    496    public static final String JAVA_RMI_SERVER_HOST_NAME = "java.rmi.server.hostname";
    497
    498    /**
    499     * The System property name {@value}.
    500     *
    501     * @see <a href=
    502     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/ObjID.html#java.rmi.server.randomIDs">java.rmi.server.randomIDs</a>
    503     * @since 3.15.0
    504     */
    505    public static final String JAVA_RMI_SERVER_RANDOM_IDS = "java.rmi.server.randomIDs";
    506
    507    /**
    508     * The System property name {@value}.
    509     *
    510     * @see <a href=
    511     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/java/rmi/server/RMIClassLoader.html#java.rmi.server.RMIClassLoaderSpi">java.rmi.server.RMIClassLoaderSpi</a>
    512     * @since 3.15.0
    513     */
    514    public static final String JAVA_RMI_SERVER_RMI_CLASS_LOADER_SPI = "java.rmi.server.RMIClassLoaderSpi";
    515
    516    /**
    517     * The System property name {@value}.
    518     */
    519    public static final String JAVA_RUNTIME_NAME = "java.runtime.name";
    520
    521    /**
    522     * The System property name {@value}.
    523     */
    524    public static final String JAVA_RUNTIME_VERSION = "java.runtime.version";
    525
    526    /**
    527     * The System property name {@value}.
    528     *
    529     * @see <a href=
    530     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.security.auth/com/sun/security/auth/login/ConfigFile.html#java.security.auth.login.config">java.security.auth.login.config</a>
    531     * @since 3.15.0
    532     */
    533    public static final String JAVA_SECURITY_AUTH_LOGIN_CONFIG = "java.security.auth.login.config";
    534
    535    /**
    536     * The System property name {@value}.
    537     *
    538     * @see <a href= "https://docs.oracle.com/en/java/javase/24/docs/api/system-properties.html">java.security.krb5.conf</a>
    539     * @see <a href=
    540     *      "https://docs.oracle.com/en/java/javase/24/docs/api/java.security.jgss/javax/security/auth/kerberos/package-summary.html#java.security.krb5.conf">package
    541     *      javax.security.auth.kerberos conf</a>
    542     * @since 3.18.0
    543     */
    544    public static final String JAVA_SECURITY_KERBEROS_CONF = "java.security.krb5.conf";
    545
    546    /**
    547     * The System property name {@value}.
    548     *
    549     * @see <a href= "https://docs.oracle.com/en/java/javase/24/docs/api/system-properties.html">java.security.krb5.kdc</a>
    550     * @see <a href=
    551     *      "https://docs.oracle.com/en/java/javase/24/docs/api/java.security.jgss/javax/security/auth/kerberos/package-summary.html#java.security.krb5.kdc">package
    552     *      javax.security.auth.kerberos KDC</a>
    553     * @since 3.18.0
    554     */
    555    public static final String JAVA_SECURITY_KERBEROS_KDC = "java.security.krb5.kdc";
    556
    557    /**
    558     * The System property name {@value}.
    559     *
    560     * @see <a href= "https://docs.oracle.com/en/java/javase/24/docs/api/system-properties.html">java.security.krb5.realm</a>
    561     * @see <a href=
    562     *      "https://docs.oracle.com/en/java/javase/24/docs/api/java.security.jgss/javax/security/auth/kerberos/package-summary.html#java.security.krb5.realm">package
    563     *      javax.security.auth.kerberos realm</a>
    564     * @since 3.18.0
    565     */
    566    public static final String JAVA_SECURITY_KERBEROS_REALM = "java.security.krb5.realm";
    567
    568    /**
    569     * The System property name {@value}.
    570     *
    571     * @see <a href=
    572     *      "https://docs.oracle.com/en/java/javase/24/security/troubleshooting-security.html">java.security.debug</a>
    573     * @since 3.18.0
    574     */
    575    public static final String JAVA_SECURITY_DEBUG = "java.security.debug";
    576
    577    /**
    578     * The System property name {@value}.
    579     *
    580     * @see <a href=
    581     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/SecurityManager.html#java.security.manager">java.security.manager</a>
    582     * @since 3.15.0
    583     */
    584    public static final String JAVA_SECURITY_MANAGER = "java.security.manager";
    585
    586    /**
    587     * The System property name {@value}.
    588     *
    589     * @see <a href=
    590     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/System.html#java.specification.maintenance.version">java.specification.maintenance.version</a>
    591     * @since 3.15.0
    592     */
    593    public static final String JAVA_SPECIFICATION_MAINTENANCE_VERSION = "java.specification.maintenance.version";
    594
    595    /**
    596     * The System property name {@value}.
    597     */
    598    public static final String JAVA_SPECIFICATION_NAME = "java.specification.name";
    599
    600    /**
    601     * The System property name {@value}.
    602     */
    603    public static final String JAVA_SPECIFICATION_VENDOR = "java.specification.vendor";
    604
    605    /**
    606     * The System property name {@value}.
    607     */
    608    public static final String JAVA_SPECIFICATION_VERSION = "java.specification.version";
    609
    610    /**
    611     * The System property name {@value}.
    612     *
    613     * @see <a href=
    614     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/ClassLoader.html#java.system.class.loader">java.system.class.loader</a>
    615     * @since 3.15.0
    616     */
    617    public static final String JAVA_SYSTEM_CLASS_LOADER = "java.system.class.loader";
    618
    619    /**
    620     * The System property name {@value}.
    621     *
    622     * @see <a href=
    623     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/zone/ZoneRulesProvider.html#java.time.zone.DefaultZoneRulesProvider">java.time.zone.DefaultZoneRulesProvider</a>
    624     * @since 3.15.0
    625     */
    626    public static final String JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER = "java.time.zone.DefaultZoneRulesProvider";
    627
    628    /**
    629     * The System property name {@value}.
    630     *
    631     * @see <a href=
    632     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ForkJoinPool.html#java.util.concurrent.ForkJoinPool.common.exceptionHandler">java.util.concurrent.ForkJoinPool.common.exceptionHandler</a>
    633     * @since 3.15.0
    634     */
    635    public static final String JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER = "java.util.concurrent.ForkJoinPool.common.exceptionHandler";
    636
    637    /**
    638     * The System property name {@value}.
    639     *
    640     * @see <a href=
    641     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ForkJoinPool.html#java.util.concurrent.ForkJoinPool.common.maximumSpares">java.util.concurrent.ForkJoinPool.common.maximumSpares</a>
    642     * @since 3.15.0
    643     */
    644    public static final String JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES = "java.util.concurrent.ForkJoinPool.common.maximumSpares";
    645
    646    /**
    647     * The System property name {@value}.
    648     *
    649     * @see <a href=
    650     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ForkJoinPool.html#java.util.concurrent.ForkJoinPool.common.parallelism">java.util.concurrent.ForkJoinPool.common.parallelism</a>
    651     * @since 3.15.0
    652     */
    653    public static final String JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM = "java.util.concurrent.ForkJoinPool.common.parallelism";
    654
    655    /**
    656     * The System property name {@value}.
    657     *
    658     * @see <a href=
    659     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ForkJoinPool.html#java.util.concurrent.ForkJoinPool.common.threadFactory">java.util.concurrent.ForkJoinPool.common.threadFactory</a>
    660     * @since 3.15.0
    661     */
    662    public static final String JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY = "java.util.concurrent.ForkJoinPool.common.threadFactory";
    663
    664    /**
    665     * The System property name {@value}.
    666     *
    667     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Currency.html#java.util.currency.data">java.util.currency.data</a>
    668     * @since 3.15.0
    669     */
    670    public static final String JAVA_UTIL_CURRENCY_DATA = "java.util.currency.data";
    671
    672    /**
    673     * The System property name {@value}.
    674     *
    675     * @see <a href=
    676     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.logging/java/util/logging/LogManager.html#java.util.logging.config.class">java.util.logging.config.class</a>
    677     * @since 3.15.0
    678     */
    679    public static final String JAVA_UTIL_LOGGING_CONFIG_CLASS = "java.util.logging.config.class";
    680
    681    /**
    682     * The System property name {@value}.
    683     *
    684     * @see <a href=
    685     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.logging/java/util/logging/LogManager.html#java.util.logging.config.file">java.util.logging.config.file</a>
    686     * @since 3.15.0
    687     */
    688    public static final String JAVA_UTIL_LOGGING_CONFIG_FILE = "java.util.logging.config.file";
    689
    690    /**
    691     * The System property name {@value}.
    692     *
    693     * @see <a href=
    694     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.logging/java/util/logging/SimpleFormatter.html#java.util.logging.SimpleFormatter.format">java.util.logging.SimpleFormatter.format</a>
    695     * @since 3.15.0
    696     */
    697    public static final String JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT = "java.util.logging.simpleformatter.format";
    698
    699    /**
    700     * The System property name {@value}.
    701     *
    702     * @see <a href=
    703     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.prefs/java/util/prefs/Preferences.html#java.util.prefs.PreferencesFactory">java.util.prefs.PreferencesFactory</a>
    704     */
    705    public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY = "java.util.prefs.PreferencesFactory";
    706
    707    /**
    708     * The System property name {@value}.
    709     *
    710     * @see <a href=
    711     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/PropertyResourceBundle.html#java.util.PropertyResourceBundle.encoding">java.util.PropertyResourceBundle.encoding</a>
    712     * @since 3.15.0
    713     */
    714    public static final String JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING = "java.util.PropertyResourceBundle.encoding";
    715
    716    /**
    717     * The System property name {@value}.
    718     */
    719    public static final String JAVA_VENDOR = "java.vendor";
    720
    721    /**
    722     * The System property name {@value}.
    723     */
    724    public static final String JAVA_VENDOR_URL = "java.vendor.url";
    725
    726    /**
    727     * The System property name {@value}.
    728     *
    729     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/System.html#java.vendor.version">java.vendor.version</a>
    730     * @since 3.15.0
    731     */
    732    public static final String JAVA_VENDOR_VERSION = "java.vendor.version";
    733
    734    /**
    735     * The System property name {@value}.
    736     */
    737    public static final String JAVA_VERSION = "java.version";
    738
    739    /**
    740     * The System property name {@value}.
    741     *
    742     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/System.html#java.version.date">java.version.date</a>
    743     * @since 3.15.0
    744     */
    745    public static final String JAVA_VERSION_DATE = "java.version.date";
    746
    747    /**
    748     * The System property name {@value}.
    749     */
    750    public static final String JAVA_VM_INFO = "java.vm.info";
    751
    752    /**
    753     * The System property name {@value}.
    754     */
    755    public static final String JAVA_VM_NAME = "java.vm.name";
    756
    757    /**
    758     * The System property name {@value}.
    759     */
    760    public static final String JAVA_VM_SPECIFICATION_NAME = "java.vm.specification.name";
    761
    762    /**
    763     * The System property name {@value}.
    764     */
    765    public static final String JAVA_VM_SPECIFICATION_VENDOR = "java.vm.specification.vendor";
    766
    767    /**
    768     * The System property name {@value}.
    769     */
    770    public static final String JAVA_VM_SPECIFICATION_VERSION = "java.vm.specification.version";
    771
    772    /**
    773     * The System property name {@value}.
    774     */
    775    public static final String JAVA_VM_VENDOR = "java.vm.vendor";
    776
    777    /**
    778     * The System property name {@value}.
    779     */
    780    public static final String JAVA_VM_VERSION = "java.vm.version";
    781
    782    /**
    783     * The System property name {@value}.
    784     *
    785     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.xml/module-summary.html#java.xml.config.file">java.xml</a>
    786     * @since 3.15.0
    787     */
    788    public static final String JAVA_XML_CONFIG_FILE = "java.xml.config.file";
    789
    790    /**
    791     * The System property name {@value}.
    792     *
    793     * @see <a href=
    794     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/Toolkit.html#javax.accessibility.assistive_technologies">javax.accessibility.assistive_technologies</a>
    795     * @since 3.15.0
    796     */
    797    public static final String JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES = "javax.accessibility.assistive_technologies";
    798
    799    /**
    800     * The System property name {@value}.
    801     *
    802     * @see <a href=
    803     *      "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/net/ssl/SSLSessionContext.html#javax.net.ssl.sessionCacheSize">javax.net.ssl.sessionCacheSize</a>
    804     * @since 3.15.0
    805     */
    806    public static final String JAVAX_NET_SSL_SESSION_CACHE_SIZE = "javax.net.ssl.sessionCacheSize";
    807
    808    /**
    809     * The System property name {@value}.
    810     *
    811     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/javax/rmi/ssl/SslRMIClientSocketFactory.html#javax.rmi.ssl.client.enabledCipherSuites">javax.rmi.ssl.client.enabledCipherSuites</a>
    812     * @since 3.15.0
    813     */
    814    public static final String JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES = "javax.rmi.ssl.client.enabledCipherSuites";
    815
    816    /**
    817     * The System property name {@value}.
    818     *
    819     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.rmi/javax/rmi/ssl/SslRMIClientSocketFactory.html#javax.rmi.ssl.client.enabledProtocols">javax.rmi.ssl.client.enabledProtocols</a>
    820     * @since 3.15.0
    821     */
    822    public static final String JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS = "javax.rmi.ssl.client.enabledProtocols";
    823
    824    /**
    825     * The System property name {@value}.
    826     *
    827     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.security.jgss/org/ietf/jgss/package-summary.html#javax.security.auth.useSubjectCredsOnly">javax.security.auth.useSubjectCredsOnly</a>
    828     * @since 3.15.0
    829     */
    830    public static final String JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY = "javax.security.auth.useSubjectCredsOnly";
    831
    832    /**
    833     * The System property name {@value}.
    834     *
    835     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.smartcardio/javax/smartcardio/TerminalFactory.html#javax.smartcardio.TerminalFactory.DefaultType">javax.smartcardio.TerminalFactory.DefaultType</a>
    836     * @since 3.15.0
    837     */
    838    public static final String JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE = "javax.smartcardio.TerminalFactory.DefaultType";
    839
    840    /**
    841     * The System property name {@value}.
    842     *
    843     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/java.sql/java/sql/DriverManager.html#jdbc.drivers">jdbc.drivers</a>
    844     * @since 3.15.0
    845     */
    846    public static final String JDBC_DRIVERS = "jdbc.drivers";
    847
    848    /**
    849     * The System property name {@value}.
    850     *
    851     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.http.auth.proxying.disabledSchemes</a>
    852     * @since 3.15.0
    853     */
    854    public static final String JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES = "jdk.http.auth.proxying.disabledSchemes";
    855
    856    /**
    857     * The System property name {@value}.
    858     *
    859     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.http.auth.tunneling.disabledSchemes</a>
    860     * @since 3.15.0
    861     */
    862    public static final String JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES = "jdk.http.auth.tunneling.disabledSchemes";
    863
    864    /**
    865     * The System property name {@value}.
    866     *
    867     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.allowRestrictedHeaders</a>
    868     * @since 3.15.0
    869     */
    870    public static final String JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS = "jdk.httpclient.allowRestrictedHeaders";
    871
    872    /**
    873     * The System property name {@value}.
    874     *
    875     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.auth.retrylimit</a>
    876     * @since 3.15.0
    877     */
    878    public static final String JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT = "jdk.httpclient.auth.retrylimit";
    879
    880    /**
    881     * The System property name {@value}.
    882     *
    883     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.bufsize</a>
    884     * @since 3.15.0
    885     */
    886    public static final String JDK_HTTP_CLIENT_BUF_SIZE = "jdk.httpclient.bufsize";
    887
    888    /**
    889     * The System property name {@value}.
    890     *
    891     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.connectionPoolSize</a>
    892     * @since 3.15.0
    893     */
    894    public static final String JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE = "jdk.httpclient.connectionPoolSize";
    895
    896    /**
    897     * The System property name {@value}.
    898     *
    899     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.connectionWindowSize</a>
    900     * @since 3.15.0
    901     */
    902    public static final String JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE = "jdk.httpclient.connectionWindowSize";
    903
    904    /**
    905     * The System property name {@value}.
    906     *
    907     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.disableRetryConnect</a>
    908     * @since 3.15.0
    909     */
    910    public static final String JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT = "jdk.httpclient.disableRetryConnect";
    911
    912    /**
    913     * The System property name {@value}.
    914     *
    915     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.enableAllMethodRetry</a>
    916     * @since 3.15.0
    917     */
    918    public static final String JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY = "jdk.httpclient.enableAllMethodRetry";
    919
    920    /**
    921     * The System property name {@value}.
    922     *
    923     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.enablepush</a>
    924     * @since 3.15.0
    925     */
    926    public static final String JDK_HTTP_CLIENT_ENABLE_PUSH = "jdk.httpclient.enablepush";
    927
    928    /**
    929     * The System property name {@value}.
    930     *
    931     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.hpack.maxheadertablesize</a>
    932     * @since 3.15.0
    933     */
    934    public static final String JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE = "jdk.httpclient.hpack.maxheadertablesize";
    935
    936    /**
    937     * The System property name {@value}.
    938     *
    939     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.HttpClient.log</a>
    940     * @since 3.15.0
    941     */
    942    public static final String JDK_HTTP_CLIENT_HTTP_CLIENT_LOG = "jdk.httpclient.HttpClient.log";
    943
    944    /**
    945     * The System property name {@value}.
    946     *
    947     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.keepalive.timeout</a>
    948     * @since 3.15.0
    949     */
    950    public static final String JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT = "jdk.httpclient.keepalive.timeout";
    951
    952    /**
    953     * The System property name {@value}.
    954     *
    955     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.keepalive.timeout.h2</a>
    956     * @since 3.15.0
    957     */
    958    public static final String JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2 = "jdk.httpclient.keepalive.timeout.h2";
    959
    960    /**
    961     * The System property name {@value}.
    962     *
    963     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.maxframesize</a>
    964     * @since 3.15.0
    965     */
    966    public static final String JDK_HTTP_CLIENT_MAX_FRAME_SIZE = "jdk.httpclient.maxframesize";
    967
    968    /**
    969     * The System property name {@value}.
    970     *
    971     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.maxstreams</a>
    972     * @since 3.15.0
    973     */
    974    public static final String JDK_HTTP_CLIENT_MAX_STREAMS = "jdk.httpclient.maxstreams";
    975
    976    /**
    977     * The System property name {@value}.
    978     *
    979     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.receiveBufferSize</a>
    980     * @since 3.15.0
    981     */
    982    public static final String JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE = "jdk.httpclient.receiveBufferSize";
    983
    984    /**
    985     * The System property name {@value}.
    986     *
    987     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.redirects.retrylimit</a>
    988     * @since 3.15.0
    989     */
    990    public static final String JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT = "jdk.httpclient.redirects.retrylimit";
    991
    992    /**
    993     * The System property name {@value}.
    994     *
    995     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.sendBufferSize</a>
    996     * @since 3.15.0
    997     */
    998    public static final String JDK_HTTP_CLIENT_SEND_BUFFER_SIZE = "jdk.httpclient.sendBufferSize";
    999
    1000    /**
    1001     * The System property name {@value}.
    1002     *
    1003     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.websocket.writeBufferSize</a>
    1004     * @since 3.15.0
    1005     */
    1006    public static final String JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE = "jdk.httpclient.websocket.writeBufferSize";
    1007
    1008    /**
    1009     * The System property name {@value}.
    1010     *
    1011     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpclient.windowsize</a>
    1012     * @since 3.15.0
    1013     */
    1014    public static final String JDK_HTTP_CLIENT_WINDOW_SIZE = "jdk.httpclient.windowsize";
    1015
    1016    /**
    1017     * The System property name {@value}.
    1018     *
    1019     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.httpserver.maxConnections</a>
    1020     * @since 3.15.0
    1021     */
    1022    public static final String JDK_HTTP_SERVER_MAX_CONNECTIONS = "jdk.httpserver.maxConnections";
    1023
    1024    /**
    1025     * The System property name {@value}.
    1026     *
    1027     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.https.negotiate.cbt</a>
    1028     * @since 3.15.0
    1029     */
    1030    public static final String JDK_HTTPS_NEGOTIATE_CBT = "jdk.https.negotiate.cbt";
    1031
    1032    /**
    1033     * The System property name {@value}.
    1034     *
    1035     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.includeInExceptions</a>
    1036     * @since 3.15.0
    1037     */
    1038    public static final String JDK_INCLUDE_IN_EXCEPTIONS = "jdk.includeInExceptions";
    1039
    1040    /**
    1041     * The System property name {@value}.
    1042     *
    1043     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.internal.httpclient.disableHostnameVerification</a>
    1044     * @since 3.15.0
    1045     */
    1046    public static final String JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION = "jdk.internal.httpclient.disableHostnameVerification";
    1047
    1048    /**
    1049     * The System property name {@value}.
    1050     *
    1051     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.io.permissionsUseCanonicalPath</a>
    1052     * @since 3.15.0
    1053     */
    1054    public static final String JDK_IO_PERMISSIONS_USE_CANONICAL_PATH = "jdk.io.permissionsUseCanonicalPath";
    1055
    1056    /**
    1057     * The System property name {@value}.
    1058     *
    1059     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.jndi.ldap.object.factoriesFilter</a>
    1060     * @since 3.15.0
    1061     */
    1062    public static final String JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER = "jdk.jndi.ldap.object.factoriesFilter";
    1063
    1064    /**
    1065     * The System property name {@value}.
    1066     *
    1067     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.jndi.object.factoriesFilter</a>
    1068     * @since 3.15.0
    1069     */
    1070    public static final String JDK_JNDI_OBJECT_FACTORIES_FILTER = "jdk.jndi.object.factoriesFilter";
    1071
    1072    /**
    1073     * The System property name {@value}.
    1074     *
    1075     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.jndi.rmi.object.factoriesFilter</a>
    1076     * @since 3.15.0
    1077     */
    1078    public static final String JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER = "jdk.jndi.rmi.object.factoriesFilter";
    1079
    1080    /**
    1081     * The System property name {@value}.
    1082     *
    1083     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.module.main</a>
    1084     * @since 3.15.0
    1085     */
    1086    public static final String JDK_MODULE_MAIN = "jdk.module.main";
    1087
    1088    /**
    1089     * The System property name {@value}.
    1090     *
    1091     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.module.main.class</a>
    1092     * @since 3.15.0
    1093     */
    1094    public static final String JDK_MODULE_MAIN_CLASS = "jdk.module.main.class";
    1095
    1096    /**
    1097     * The System property name {@value}.
    1098     *
    1099     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.module.path</a>
    1100     * @since 3.15.0
    1101     */
    1102    public static final String JDK_MODULE_PATH = "jdk.module.path";
    1103
    1104    /**
    1105     * The System property name {@value}.
    1106     *
    1107     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.module.upgrade.path</a>
    1108     * @since 3.15.0
    1109     */
    1110    public static final String JDK_MODULE_UPGRADE_PATH = "jdk.module.upgrade.path";
    1111
    1112    /**
    1113     * The System property name {@value}.
    1114     *
    1115     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.net.unixdomain.tmpdir</a>
    1116     * @since 3.15.0
    1117     */
    1118    public static final String JDK_NET_UNIX_DOMAIN_TMPDIR = "jdk.net.unixdomain.tmpdir";
    1119
    1120    /**
    1121     * The System property name {@value}.
    1122     *
    1123     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1124     * @since 3.15.0
    1125     */
    1126    public static final String JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES = "jdk.net.URLClassPath.showIgnoredClassPathEntries";
    1127
    1128    /**
    1129     * The System property name {@value}.
    1130     *
    1131     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.serialFilter</a>
    1132     * @since 3.15.0
    1133     */
    1134    public static final String JDK_SERIAL_FILTER = "jdk.serialFilter";
    1135
    1136    /**
    1137     * The System property name {@value}.
    1138     *
    1139     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.serialFilterFactory</a>
    1140     * @since 3.15.0
    1141     */
    1142    public static final String JDK_SERIAL_FILTER_FACTORY = "jdk.serialFilterFactory";
    1143
    1144    /**
    1145     * The System property name {@value}.
    1146     *
    1147     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.tls.client.SignatureSchemes</a>
    1148     * @since 3.15.0
    1149     */
    1150    public static final String JDK_TLS_CLIENT_SIGNATURE_SCHEMES = "jdk.tls.client.SignatureSchemes";
    1151
    1152    /**
    1153     * The System property name {@value}.
    1154     *
    1155     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.tls.namedGroups</a>
    1156     * @since 3.15.0
    1157     */
    1158    public static final String JDK_TLS_NAMED_GROUPS = "jdk.tls.namedGroups";
    1159
    1160    /**
    1161     * The System property name {@value}.
    1162     *
    1163     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.tls.server.SignatureSchemes</a>
    1164     * @since 3.15.0
    1165     */
    1166    public static final String JDK_TLS_SERVER_SIGNATURE_SCHEMES = "jdk.tls.server.SignatureSchemes";
    1167
    1168    /**
    1169     * The System property name {@value}.
    1170     *
    1171     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.virtualThreadScheduler.maxPoolSize</a>
    1172     * @since 3.15.0
    1173     */
    1174    public static final String JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE = "jdk.virtualThreadScheduler.maxPoolSize";
    1175
    1176    /**
    1177     * The System property name {@value}.
    1178     *
    1179     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.virtualThreadScheduler.parallelism</a>
    1180     * @since 3.15.0
    1181     */
    1182    public static final String JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM = "jdk.virtualThreadScheduler.parallelism";
    1183
    1184    /**
    1185     * The System property name {@value}.
    1186     *
    1187     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.cdataChunkSize</a>
    1188     * @since 3.15.0
    1189     */
    1190    public static final String JDK_XML_CDATA_CHUNK_SIZE = "jdk.xml.cdataChunkSize";
    1191
    1192    /**
    1193     * The System property name {@value}.
    1194     *
    1195     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.dtd.support</a>
    1196     * @since 3.15.0
    1197     */
    1198    public static final String JDK_XML_DTD_SUPPORT = "jdk.xml.dtd.support";
    1199
    1200    /**
    1201     * The System property name {@value}.
    1202     *
    1203     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.elementAttributeLimit</a>
    1204     * @since 3.15.0
    1205     */
    1206    public static final String JDK_XML_ELEMENT_ATTRIBUTE_LIMIT = "jdk.xml.elementAttributeLimit";
    1207
    1208    /**
    1209     * The System property name {@value}.
    1210     *
    1211     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.enableExtensionFunctions</a>
    1212     * @since 3.15.0
    1213     */
    1214    public static final String JDK_XML_ENABLE_EXTENSION_FUNCTIONS = "jdk.xml.enableExtensionFunctions";
    1215
    1216    /**
    1217     * The System property name {@value}.
    1218     *
    1219     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.entityExpansionLimit</a>
    1220     * @since 3.15.0
    1221     */
    1222    public static final String JDK_XML_ENTITY_EXPANSION_LIMIT = "jdk.xml.entityExpansionLimit";
    1223
    1224    /**
    1225     * The System property name {@value}.
    1226     *
    1227     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.entityReplacementLimi_t</a>
    1228     * @since 3.15.0
    1229     */
    1230    public static final String JDK_XML_ENTITY_REPLACEMENT_LIMIT = "jdk.xml.entityReplacementLimi_t";
    1231
    1232    /**
    1233     * The System property name {@value}.
    1234     *
    1235     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.isStandalone</a>
    1236     * @since 3.15.0
    1237     */
    1238    public static final String JDK_XML_IS_STANDALONE = "jdk.xml.isStandalone";
    1239
    1240    /**
    1241     * The System property name {@value}.
    1242     *
    1243     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.jdkcatalog.resolve</a>
    1244     * @since 3.15.0
    1245     */
    1246    public static final String JDK_XML_JDK_CATALOG_RESOLVE = "jdk.xml.jdkcatalog.resolve";
    1247
    1248    /**
    1249     * The System property name {@value}.
    1250     *
    1251     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.maxElementDepth</a>
    1252     * @since 3.15.0
    1253     */
    1254    public static final String JDK_XML_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth";
    1255
    1256    /**
    1257     * The System property name {@value}.
    1258     *
    1259     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.maxGeneralEntitySizeLimit</a>
    1260     * @since 3.15.0
    1261     */
    1262    public static final String JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
    1263
    1264    /**
    1265     * The System property name {@value}.
    1266     *
    1267     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.maxOccurLimit</a>
    1268     * @since 3.15.0
    1269     */
    1270    public static final String JDK_XML_MAX_OCCUR_LIMIT = "jdk.xml.maxOccurLimit";
    1271
    1272    /**
    1273     * The System property name {@value}.
    1274     *
    1275     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.maxParameterEntitySizeLimit</a>
    1276     * @since 3.15.0
    1277     */
    1278    public static final String JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT = "jdk.xml.maxParameterEntitySizeLimit";
    1279
    1280    /**
    1281     * The System property name {@value}.
    1282     *
    1283     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.maxXMLNameLimit</a>
    1284     * @since 3.15.0
    1285     */
    1286    public static final String JDK_XML_MAX_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit";
    1287
    1288    /**
    1289     * The System property name {@value}.
    1290     *
    1291     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.overrideDefaultParser</a>
    1292     * @since 3.15.0
    1293     */
    1294    public static final String JDK_XML_OVERRIDE_DEFAULT_PARSER = "jdk.xml.overrideDefaultParser";
    1295
    1296    /**
    1297     * The System property name {@value}.
    1298     *
    1299     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.resetSymbolTable</a>
    1300     * @since 3.15.0
    1301     */
    1302    public static final String JDK_XML_RESET_SYMBOL_TABLE = "jdk.xml.resetSymbolTable";
    1303
    1304    /**
    1305     * The System property name {@value}.
    1306     *
    1307     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.totalEntitySizeLimit</a>
    1308     * @since 3.15.0
    1309     */
    1310    public static final String JDK_XML_TOTAL_ENTITY_SIZE_LIMIT = "jdk.xml.totalEntitySizeLimit";
    1311
    1312    /**
    1313     * The System property name {@value}.
    1314     *
    1315     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">jdk.xml.xsltcIsStandalone</a>
    1316     * @since 3.15.0
    1317     */
    1318    public static final String JDK_XML_XSLTC_IS_STANDALONE = "jdk.xml.xsltcIsStandalone";
    1319
    1320    /**
    1321     * The System property name {@value}.
    1322     */
    1323    public static final String LINE_SEPARATOR = "line.separator";
    1324
    1325    /**
    1326     * The System property name {@value}.
    1327     *
    1328     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">native.encoding</a>
    1329     * @since 3.15.0
    1330     */
    1331    public static final String NATIVE_ENCODING = "native.encoding";
    1332
    1333    /**
    1334     * The System property name {@value}.
    1335     *
    1336     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">networkaddress.cache.negative.ttl</a>
    1337     * @since 3.15.0
    1338     */
    1339    public static final String NETWORK_ADDRESS_CACHE_NEGATIVE_TTL = "networkaddress.cache.negative.ttl";
    1340
    1341    /**
    1342     * The System property name {@value}.
    1343     *
    1344     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">networkaddress.cache.stale.ttl</a>
    1345     * @since 3.15.0
    1346     */
    1347    public static final String NETWORK_ADDRESS_CACHE_STALE_TTL = "networkaddress.cache.stale.ttl";
    1348
    1349    /**
    1350     * The System property name {@value}.
    1351     *
    1352     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">networkaddress.cache.ttl</a>
    1353     * @since 3.15.0
    1354     */
    1355    public static final String NETWORK_ADDRESS_CACHE_TTL = "networkaddress.cache.ttl";
    1356
    1357    /**
    1358     * The System property name {@value}.
    1359     *
    1360     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">org.jcp.xml.dsig.securevalidation</a>
    1361     * @since 3.15.0
    1362     */
    1363    public static final String ORG_JCP_XML_DSIG_SECURE_VALIDATION = "org.jcp.xml.dsig.securevalidation";
    1364
    1365    /**
    1366     * The System property name {@value}.
    1367     *
    1368     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">org.openjdk.java.util.stream.tripwire</a>
    1369     * @since 3.15.0
    1370     */
    1371    public static final String ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE = "org.openjdk.java.util.stream.tripwire";
    1372
    1373    /**
    1374     * The System property name {@value}.
    1375     */
    1376    public static final String OS_ARCH = "os.arch";
    1377
    1378    /**
    1379     * The System property name {@value}.
    1380     */
    1381    public static final String OS_NAME = "os.name";
    1382
    1383    /**
    1384     * The System property name {@value}.
    1385     */
    1386    public static final String OS_VERSION = "os.version";
    1387
    1388    /**
    1389     * The System property name {@value}.
    1390     */
    1391    public static final String PATH_SEPARATOR = "path.separator";
    1392
    1393    /**
    1394     * The System property name {@value}.
    1395     *
    1396     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1397     * @since 3.15.0
    1398     */
    1399    public static final String SOCKS_PROXY_HOST = "socksProxyHost";
    1400
    1401    /**
    1402     * The System property name {@value}.
    1403     *
    1404     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1405     * @since 3.15.0
    1406     */
    1407    public static final String SOCKS_PROXY_PORT = "socksProxyPort";
    1408
    1409    /**
    1410     * The System property name {@value}.
    1411     *
    1412     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1413     * @since 3.15.0
    1414     */
    1415    public static final String SOCKS_PROXY_VERSION = "socksProxyVersion";
    1416
    1417    /**
    1418     * The System property name {@value}.
    1419     *
    1420     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1421     * @since 3.15.0
    1422     */
    1423    public static final String STDERR_ENCODING = "stderr.encoding";
    1424
    1425    /**
    1426     * The System property name {@value}.
    1427     *
    1428     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1429     * @since 3.15.0
    1430     */
    1431    public static final String STDOUT_ENCODING = "stdout.encoding";
    1432
    1433    /**
    1434     * The System property name {@value}.
    1435     *
    1436     * @see <a href=
    1437     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/module-summary.html#sun.net.httpserver.drainAmount">sun.net.httpserver.drainAmount</a>
    1438     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1439     * @since 3.15.0
    1440     */
    1441    public static final String SUN_NET_HTTP_SERVER_DRAIN_AMOUNT = "sun.net.httpserver.drainAmount";
    1442
    1443    /**
    1444     * The System property name {@value}.
    1445     *
    1446     * @see <a href=
    1447     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/module-summary.html#sun.net.httpserver.idleInterval">sun.net.httpserver.idleInterval</a>
    1448     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1449     * @since 3.15.0
    1450     */
    1451    public static final String SUN_NET_HTTP_SERVER_IDLE_INTERVAL = "sun.net.httpserver.idleInterval";
    1452
    1453    /**
    1454     * The System property name {@value}.
    1455     *
    1456     * @see <a href=
    1457     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/module-summary.html#sun.net.httpserver.maxIdleConnections">sun.net.httpserver.maxIdleConnections</a>
    1458     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1459     * @since 3.15.0
    1460     */
    1461    public static final String SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS = "sun.net.httpserver.maxIdleConnections";
    1462
    1463    /**
    1464     * The System property name {@value}.
    1465     *
    1466     * @see <a href=
    1467     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/module-summary.html#sun.net.httpserver.maxReqHeaders">sun.net.httpserver.maxReqHeaders</a>
    1468     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1469     * @since 3.15.0
    1470     */
    1471    public static final String SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS = "sun.net.httpserver.maxReqHeaders";
    1472
    1473    /**
    1474     * The System property name {@value}.
    1475     *
    1476     * @see <a href=
    1477     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/module-summary.html#sun.net.httpserver.maxReqTime">sun.net.httpserver.maxReqTime</a>
    1478     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1479     * @since 3.15.0
    1480     */
    1481    public static final String SUN_NET_HTTP_SERVER_MAX_REQ_TIME = "sun.net.httpserver.maxReqTime";
    1482
    1483    /**
    1484     * The System property name {@value}.
    1485     *
    1486     * @see <a href=
    1487     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/module-summary.html#sun.net.httpserver.maxRspTime">sun.net.httpserver.maxRspTime</a>
    1488     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1489     * @since 3.15.0
    1490     */
    1491    public static final String SUN_NET_HTTP_SERVER_MAX_RSP_TIME = "sun.net.httpserver.maxRspTime";
    1492
    1493    /**
    1494     * The System property name {@value}.
    1495     *
    1496     * @see <a href=
    1497     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/module-summary.html#sun.net.httpserver.nodelay">sun.net.httpserver.nodelay</a>
    1498     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1499     * @since 3.15.0
    1500     */
    1501    public static final String SUN_NET_HTTP_SERVER_NO_DELAY = "sun.net.httpserver.nodelay";
    1502
    1503    /**
    1504     * The System property name {@value}.
    1505     *
    1506     * @see <a href=
    1507     *      "https://docs.oracle.com/en/java/javase/25/docs/api/jdk.httpserver/module-summary.html#sun.security.krb5.principal">sun.security.krb5.principal</a>
    1508     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1509     * @since 3.15.0
    1510     */
    1511    public static final String SUN_SECURITY_KRB5_PRINCIPAL = "sun.security.krb5.principal";
    1512
    1513    /**
    1514     * The System property name {@value}.
    1515     */
    1516    public static final String USER_COUNTRY = "user.country";
    1517
    1518    /**
    1519     * The System property name {@value}.
    1520     */
    1521    public static final String USER_DIR = "user.dir";
    1522
    1523    /**
    1524     * The System property name {@value}.
    1525     *
    1526     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1527     * @since 3.15.0
    1528     */
    1529    public static final String USER_EXTENSIONS = "user.extensions";
    1530
    1531    /**
    1532     * The System property name {@value}.
    1533     */
    1534    public static final String USER_HOME = "user.home";
    1535
    1536    /**
    1537     * The System property name {@value}.
    1538     */
    1539    public static final String USER_LANGUAGE = "user.language";
    1540
    1541    /**
    1542     * The System property name {@value}.
    1543     */
    1544    public static final String USER_NAME = "user.name";
    1545
    1546    /**
    1547     * The System property name {@value}.
    1548     */
    1549    public static final String USER_REGION = "user.region";
    1550
    1551    /**
    1552     * The System property name {@value}.
    1553     *
    1554     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1555     * @since 3.15.0
    1556     */
    1557    public static final String USER_SCRIPT = "user.script";
    1558
    1559    /**
    1560     * The System property name {@value}.
    1561     */
    1562    public static final String USER_TIMEZONE = "user.timezone";
    1563
    1564    /**
    1565     * The System property name {@value}.
    1566     *
    1567     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1568     * @since 3.15.0
    1569     */
    1570    public static final String USER_VARIANT = "user.variant";
    1571
    1572    /**
    1573     * Gets the current value from the system properties map.
    1574     * <p>
    1575     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1576     * </p>
    1577     *
    1578     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1579     * @since 3.15.0
    1580     */
    1581    public static String getAppleAwtEnableTemplateImages() {
    1582        return getProperty(APPLE_AWT_ENABLE_TEMPLATE_IMAGES);
    1583    }
    1584
    1585    /**
    1586     * Gets the current value from the system properties map.
    1587     * <p>
    1588     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1589     * </p>
    1590     *
    1591     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1592     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1593     * @see #AWT_TOOLKIT
    1594     * @deprecated Deprecated without replacement.
    1595     */
    1596    @Deprecated
    1597    public static String getAwtToolkit() {
    1598        return getProperty(AWT_TOOLKIT);
    1599    }
    1600
    1601    /**
    1602     * Gets the current value for the property named {@code "SimpleClassName.Key"} as a {@code boolean}.
    1603     * <p>
    1604     * If a {@link SecurityException} is caught, the return value is {@code null}.
    1605     * </p>
    1606     *
    1607     * @param clazz           The Class to use for the SimpleClassName.
    1608     * @param key             The subkey.
    1609     * @param defaultIfAbsent The default value.
    1610     * @return an int or {@code defaultIfAbsent}'s value.
    1611     * @see Class#getSimpleName()
    1612     * @since 3.19.0
    1613     */
    1614    public static boolean getBoolean(final Class<?> clazz, final String key, final BooleanSupplier defaultIfAbsent) {
    1615        return getBoolean(toKey(clazz, key, true), defaultIfAbsent);
    1616    }
    1617
    1618    /**
    1619     * Gets the current value for the property named {@code key} as a {@code boolean}.
    1620     * <p>
    1621     * If a {@link SecurityException} is caught, the return value is {@code null}.
    1622     * </p>
    1623     *
    1624     * @param key             The key.
    1625     * @param defaultIfAbsent The default value.
    1626     * @return a {@code boolean} or {@code defaultIfAbsent}'s value.
    1627     */
    1628    public static boolean getBoolean(final String key, final BooleanSupplier defaultIfAbsent) {
    1629        final String str = getProperty(key);
    1630        return str == null ? defaultIfAbsent != null && defaultIfAbsent.getAsBoolean() : Boolean.parseBoolean(str);
    1631    }
    1632
    1633    /**
    1634     * Gets the current value from the system properties map.
    1635     * <p>
    1636     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1637     * </p>
    1638     *
    1639     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1640     * @since 3.15.0
    1641     */
    1642    public static String getComSunJndiLdapObjectTrustSerialData() {
    1643        return getProperty(COM_SUN_JNDI_LDAP_OBJECT_TRUST_SERIAL_DATA);
    1644    }
    1645
    1646    /**
    1647     * Gets the current value from the system properties map.
    1648     * <p>
    1649     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1650     * </p>
    1651     *
    1652     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1653     * @since 3.15.0
    1654     */
    1655    public static String getComSunNetHttpServerHttpServerProvider() {
    1656        return getProperty(COM_SUN_NET_HTTP_SERVER_HTTP_SERVER_PROVIDER);
    1657    }
    1658
    1659    /**
    1660     * Gets the current value from the system properties map.
    1661     * <p>
    1662     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1663     * </p>
    1664     * <p>
    1665     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1666     * </p>
    1667     *
    1668     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1669     */
    1670    public static String getFileEncoding() {
    1671        return getProperty(FILE_ENCODING);
    1672    }
    1673
    1674    /**
    1675     * Gets the current value from the system properties map.
    1676     * <p>
    1677     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1678     * </p>
    1679     *
    1680     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1681     */
    1682    public static String getFileSeparator() {
    1683        return getProperty(FILE_SEPARATOR);
    1684    }
    1685
    1686    /**
    1687     * Gets the current value from the system properties map.
    1688     * <p>
    1689     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1690     * </p>
    1691     *
    1692     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1693     * @since 3.15.0
    1694     */
    1695    public static String getFtpNonProxyHost() {
    1696        return getProperty(FTP_NON_PROXY_HOST);
    1697    }
    1698
    1699    /**
    1700     * Gets the current value from the system properties map.
    1701     * <p>
    1702     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1703     * </p>
    1704     *
    1705     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1706     * @since 3.15.0
    1707     */
    1708    public static String getFtpProxyHost() {
    1709        return getProperty(FTP_PROXY_HOST);
    1710    }
    1711
    1712    /**
    1713     * Gets the current value from the system properties map.
    1714     * <p>
    1715     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1716     * </p>
    1717     *
    1718     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1719     * @since 3.15.0
    1720     */
    1721    public static String getFtpProxyPort() {
    1722        return getProperty(FTP_PROXY_PORT);
    1723    }
    1724
    1725    /**
    1726     * Gets the current value from the system properties map.
    1727     * <p>
    1728     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1729     * </p>
    1730     *
    1731     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1732     * @since 3.15.0
    1733     */
    1734    public static String getHttpAgent() {
    1735        return getProperty(HTTP_AGENT);
    1736    }
    1737
    1738    /**
    1739     * Gets the current value from the system properties map.
    1740     * <p>
    1741     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1742     * </p>
    1743     *
    1744     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1745     * @since 3.15.0
    1746     */
    1747    public static String getHttpAuthDigestCnonceRepeat() {
    1748        return getProperty(HTTP_AUTH_DIGEST_CNONCE_REPEAT);
    1749    }
    1750
    1751    /**
    1752     * Gets the current value from the system properties map.
    1753     * <p>
    1754     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1755     * </p>
    1756     *
    1757     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1758     * @since 3.15.0
    1759     */
    1760    public static String getHttpAuthDigestReenabledAlgorithms() {
    1761        return getProperty(HTTP_AUTH_DIGEST_RE_ENABLED_ALGORITHMS);
    1762    }
    1763
    1764    /**
    1765     * Gets the current value from the system properties map.
    1766     * <p>
    1767     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1768     * </p>
    1769     *
    1770     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1771     * @since 3.15.0
    1772     */
    1773    public static String getHttpAuthDigestValidateProxy() {
    1774        return getProperty(HTTP_AUTH_DIGEST_VALIDATE_PROXY);
    1775    }
    1776
    1777    /**
    1778     * Gets the current value from the system properties map.
    1779     * <p>
    1780     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1781     * </p>
    1782     *
    1783     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1784     * @since 3.15.0
    1785     */
    1786    public static String getHttpAuthDigestValidateServer() {
    1787        return getProperty(HTTP_AUTH_DIGEST_VALIDATE_SERVER);
    1788    }
    1789
    1790    /**
    1791     * Gets the current value from the system properties map.
    1792     * <p>
    1793     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1794     * </p>
    1795     *
    1796     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1797     * @since 3.15.0
    1798     */
    1799    public static String getHttpAuthNtlmDomain() {
    1800        return getProperty(HTTP_AUTH_NTLM_DOMAIN);
    1801    }
    1802
    1803    /**
    1804     * Gets the current value from the system properties map.
    1805     * <p>
    1806     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1807     * </p>
    1808     *
    1809     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1810     * @since 3.15.0
    1811     */
    1812    public static String getHttpKeepAlive() {
    1813        return getProperty(HTTP_KEEP_ALIVE);
    1814    }
    1815
    1816    /**
    1817     * Gets the current value from the system properties map.
    1818     * <p>
    1819     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1820     * </p>
    1821     *
    1822     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1823     * @since 3.15.0
    1824     */
    1825    public static String getHttpKeepAliveTimeProxy() {
    1826        return getProperty(HTTP_KEEP_ALIVE_TIME_PROXY);
    1827    }
    1828
    1829    /**
    1830     * Gets the current value from the system properties map.
    1831     * <p>
    1832     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1833     * </p>
    1834     *
    1835     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1836     * @since 3.15.0
    1837     */
    1838    public static String getHttpKeepAliveTimeServer() {
    1839        return getProperty(HTTP_KEEP_ALIVE_TIME_SERVER);
    1840    }
    1841
    1842    /**
    1843     * Gets the current value from the system properties map.
    1844     * <p>
    1845     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1846     * </p>
    1847     *
    1848     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1849     * @since 3.15.0
    1850     */
    1851    public static String getHttpMaxConnections() {
    1852        return getProperty(HTTP_MAX_CONNECTIONS);
    1853    }
    1854
    1855    /**
    1856     * Gets the current value from the system properties map.
    1857     * <p>
    1858     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1859     * </p>
    1860     *
    1861     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1862     * @since 3.15.0
    1863     */
    1864    public static String getHttpMaxRedirects() {
    1865        return getProperty(HTTP_MAX_REDIRECTS);
    1866    }
    1867
    1868    /**
    1869     * Gets the current value from the system properties map.
    1870     * <p>
    1871     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1872     * </p>
    1873     *
    1874     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1875     * @since 3.15.0
    1876     */
    1877    public static String getHttpNonProxyHosts() {
    1878        return getProperty(HTTP_NON_PROXY_HOSTS);
    1879    }
    1880
    1881    /**
    1882     * Gets the current value from the system properties map.
    1883     * <p>
    1884     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1885     * </p>
    1886     *
    1887     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1888     * @since 3.15.0
    1889     */
    1890    public static String getHttpProxyHost() {
    1891        return getProperty(HTTP_PROXY_HOST);
    1892    }
    1893
    1894    /**
    1895     * Gets the current value from the system properties map.
    1896     * <p>
    1897     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1898     * </p>
    1899     *
    1900     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1901     * @since 3.15.0
    1902     */
    1903    public static String getHttpProxyPort() {
    1904        return getProperty(HTTP_PROXY_PORT);
    1905    }
    1906
    1907    /**
    1908     * Gets the current value from the system properties map.
    1909     * <p>
    1910     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1911     * </p>
    1912     *
    1913     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1914     * @since 3.15.0
    1915     */
    1916    public static String getHttpsProxyHost() {
    1917        return getProperty(HTTPS_PROXY_HOST);
    1918    }
    1919
    1920    /**
    1921     * Gets the current value from the system properties map.
    1922     * <p>
    1923     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1924     * </p>
    1925     *
    1926     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1927     * @since 3.15.0
    1928     */
    1929    public static String getHttpsProxyPort() {
    1930        return getProperty(HTTPS_PROXY_PORT);
    1931    }
    1932
    1933    /**
    1934     * Gets the current value for the property named {@code "SimpleClassName.Key"} as an {@code int}.
    1935     * <p>
    1936     * If a {@link SecurityException} is caught, the return value is {@code null}.
    1937     * </p>
    1938     *
    1939     * @param clazz           The Class to use for the SimpleClassName.
    1940     * @param key             The subkey.
    1941     * @param defaultIfAbsent The default value.
    1942     * @return an int or {@code defaultIfAbsent}'s value.
    1943     * @see Class#getSimpleName()
    1944     * @since 3.19.0
    1945     */
    1946    public static int getInt(final Class<?> clazz, final String key, final IntSupplier defaultIfAbsent) {
    1947        return getInt(toKey(clazz, key, true), defaultIfAbsent);
    1948    }
    1949
    1950    /**
    1951     * Gets the current value for the property named {@code key} as an {@code int}.
    1952     * <p>
    1953     * If a {@link SecurityException} is caught, the return value is {@code null}.
    1954     * </p>
    1955     *
    1956     * @param key             The key.
    1957     * @param defaultIfAbsent The default value.
    1958     * @return an {@code int} or {@code defaultIfAbsent}'s value.
    1959     */
    1960    public static int getInt(final String key, final IntSupplier defaultIfAbsent) {
    1961        final String str = getProperty(key);
    1962        return str == null ? defaultIfAbsent != null ? defaultIfAbsent.getAsInt() : 0 : Integer.parseInt(str);
    1963    }
    1964
    1965    /**
    1966     * Gets the current value from the system properties map.
    1967     * <p>
    1968     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1969     * </p>
    1970     *
    1971     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1972     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1973     * @see #JAVA_AWT_FONTS
    1974     * @deprecated Deprecated without replacement.
    1975     */
    1976    @Deprecated
    1977    public static String getJavaAwtFonts() {
    1978        return getProperty(JAVA_AWT_FONTS);
    1979    }
    1980
    1981    /**
    1982     * Gets the current value from the system properties map.
    1983     * <p>
    1984     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    1985     * </p>
    1986     *
    1987     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    1988     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    1989     * @deprecated Deprecated without replacement.
    1990     */
    1991    @Deprecated
    1992    public static String getJavaAwtGraphicsenv() {
    1993        return getProperty(JAVA_AWT_GRAPHICSENV);
    1994    }
    1995
    1996    /**
    1997     * Gets the current value from the system properties map.
    1998     * <p>
    1999     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2000     * </p>
    2001     *
    2002     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2003     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    2004     * @see #JAVA_AWT_HEADLESS
    2005     * @deprecated Deprecated without replacement.
    2006     */
    2007    @Deprecated
    2008    public static String getJavaAwtHeadless() {
    2009        return getProperty(JAVA_AWT_HEADLESS);
    2010    }
    2011
    2012    /**
    2013     * Gets the current value from the system properties map.
    2014     * <p>
    2015     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2016     * </p>
    2017     *
    2018     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2019     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    2020     * @see #JAVA_AWT_PRINTERJOB
    2021     * @deprecated Deprecated without replacement.
    2022     */
    2023    @Deprecated
    2024    public static String getJavaAwtPrinterjob() {
    2025        return getProperty(JAVA_AWT_PRINTERJOB);
    2026    }
    2027
    2028    /**
    2029     * Gets the current value from the system properties map.
    2030     * <p>
    2031     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2032     * </p>
    2033     *
    2034     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2035     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">java.class.path</a>
    2036     * @see #JAVA_CLASS_PATH
    2037     */
    2038    public static String getJavaClassPath() {
    2039        return getProperty(JAVA_CLASS_PATH);
    2040    }
    2041
    2042    /**
    2043     * Gets the current value from the system properties map.
    2044     * <p>
    2045     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2046     * </p>
    2047     *
    2048     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2049     */
    2050    public static String getJavaClassVersion() {
    2051        return getProperty(JAVA_CLASS_VERSION);
    2052    }
    2053
    2054    /**
    2055     * Gets the current value from the system properties map.
    2056     * <p>
    2057     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2058     * </p>
    2059     *
    2060     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2061     * @see <a href="https://bugs.openjdk.org/browse/JDK-8305998">JDK-8305998</a>
    2062     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    2063     * @deprecated Deprecated without replacement.
    2064     */
    2065    @Deprecated
    2066    public static String getJavaCompiler() {
    2067        return getProperty(JAVA_COMPILER);
    2068    }
    2069
    2070    /**
    2071     * Gets the current value from the system properties map.
    2072     * <p>
    2073     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2074     * </p>
    2075     *
    2076     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2077     * @since 3.15.0
    2078     */
    2079    public static String getJavaContentHandlerPkgs() {
    2080        return getProperty(JAVA_CONTENT_HANDLER_PKGS);
    2081    }
    2082
    2083    /**
    2084     * Gets the current value from the system properties map.
    2085     * <p>
    2086     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2087     * </p>
    2088     *
    2089     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2090     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    2091     * @deprecated Deprecated without replacement.
    2092     */
    2093    @Deprecated
    2094    public static String getJavaEndorsedDirs() {
    2095        return getProperty(JAVA_ENDORSED_DIRS);
    2096    }
    2097
    2098    /**
    2099     * Gets the current value from the system properties map.
    2100     * <p>
    2101     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2102     * </p>
    2103     *
    2104     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2105     * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
    2106     * @see #JAVA_EXT_DIRS
    2107     * @deprecated Deprecated without replacement.
    2108     */
    2109    @Deprecated
    2110    public static String getJavaExtDirs() {
    2111        return getProperty(JAVA_EXT_DIRS);
    2112    }
    2113
    2114    /**
    2115     * Gets the current value from the system properties map.
    2116     * <p>
    2117     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2118     * </p>
    2119     *
    2120     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2121     */
    2122    public static String getJavaHome() {
    2123        return getProperty(JAVA_HOME);
    2124    }
    2125
    2126    /**
    2127     * Gets the current value from the system properties map.
    2128     * <p>
    2129     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2130     * </p>
    2131     *
    2132     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2133     */
    2134    public static String getJavaIoTmpdir() {
    2135        return getProperty(JAVA_IO_TMPDIR);
    2136    }
    2137
    2138    /**
    2139     * Gets the current value from the system properties map.
    2140     * <p>
    2141     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2142     * </p>
    2143     *
    2144     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2145     */
    2146    public static String getJavaLibraryPath() {
    2147        return getProperty(JAVA_LIBRARY_PATH);
    2148    }
    2149
    2150    /**
    2151     * Gets the current value from the system properties map.
    2152     * <p>
    2153     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2154     * </p>
    2155     * <p>
    2156     * Java 9 and above.
    2157     * </p>
    2158     *
    2159     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2160     */
    2161    public static String getJavaLocaleProviders() {
    2162        return getProperty(JAVA_LOCALE_PROVIDERS);
    2163    }
    2164
    2165    /**
    2166     * Gets the current value from the system properties map.
    2167     * <p>
    2168     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2169     * </p>
    2170     *
    2171     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2172     * @since 3.15.0
    2173     */
    2174    public static String getJavaLocaleUseOldIsoCodes() {
    2175        return getProperty(JAVA_LOCALE_USE_OLD_ISO_CODES);
    2176    }
    2177
    2178    /**
    2179     * Gets the current value from the system properties map.
    2180     * <p>
    2181     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2182     * </p>
    2183     *
    2184     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2185     * @since 3.15.0
    2186     */
    2187    public static String getJavaNetPreferIpv4Stack() {
    2188        return getProperty(JAVA_NET_PREFER_IPV4_STACK);
    2189    }
    2190
    2191    /**
    2192     * Gets the current value from the system properties map.
    2193     * <p>
    2194     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2195     * </p>
    2196     *
    2197     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2198     * @since 3.15.0
    2199     */
    2200    public static String getJavaNetPreferIpv6Addresses() {
    2201        return getProperty(JAVA_NET_PREFER_IPV6_ADDRESSES);
    2202    }
    2203
    2204    /**
    2205     * Gets the current value from the system properties map.
    2206     * <p>
    2207     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2208     * </p>
    2209     *
    2210     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2211     * @since 3.15.0
    2212     */
    2213    public static String getJavaNetSocksPassword() {
    2214        return getProperty(JAVA_NET_SOCKS_PASSWORD);
    2215    }
    2216
    2217    /**
    2218     * Gets the current value from the system properties map.
    2219     * <p>
    2220     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2221     * </p>
    2222     *
    2223     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2224     * @since 3.15.0
    2225     */
    2226    public static String getJavaNetSocksUserName() {
    2227        return getProperty(JAVA_NET_SOCKS_USER_NAME);
    2228    }
    2229
    2230    /**
    2231     * Gets the current value from the system properties map.
    2232     * <p>
    2233     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2234     * </p>
    2235     *
    2236     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2237     * @since 3.15.0
    2238     */
    2239    public static String getJavaNetUseSystemProxies() {
    2240        return getProperty(JAVA_NET_USE_SYSTEM_PROXIES);
    2241    }
    2242
    2243    /**
    2244     * Gets the current value from the system properties map.
    2245     * <p>
    2246     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2247     * </p>
    2248     *
    2249     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2250     * @since 3.15.0
    2251     */
    2252    public static String getJavaNioChannelsDefaultThreadPoolInitialSize() {
    2253        return getProperty(JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_INITIAL_SIZE);
    2254    }
    2255
    2256    /**
    2257     * Gets the current value from the system properties map.
    2258     * <p>
    2259     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2260     * </p>
    2261     *
    2262     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2263     * @since 3.15.0
    2264     */
    2265    public static String getJavaNioChannelsDefaultThreadPoolThreadFactory() {
    2266        return getProperty(JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_THREAD_FACTORY);
    2267    }
    2268
    2269    /**
    2270     * Gets the current value from the system properties map.
    2271     * <p>
    2272     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2273     * </p>
    2274     *
    2275     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2276     * @since 3.15.0
    2277     */
    2278    public static String getJavaNioChannelsSpiAsynchronousChannelProvider() {
    2279        return getProperty(JAVA_NIO_CHANNELS_SPI_ASYNCHRONOUS_CHANNEL_PROVIDER);
    2280    }
    2281
    2282    /**
    2283     * Gets the current value from the system properties map.
    2284     * <p>
    2285     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2286     * </p>
    2287     *
    2288     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2289     * @since 3.15.0
    2290     */
    2291    public static String getJavaNioChannelsSpiSelectorProvider() {
    2292        return getProperty(JAVA_NIO_CHANNELS_SPI_SELECTOR_PROVIDER);
    2293    }
    2294
    2295    /**
    2296     * Gets the current value from the system properties map.
    2297     * <p>
    2298     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2299     * </p>
    2300     *
    2301     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2302     * @since 3.15.0
    2303     */
    2304    public static String getJavaNioFileSpiDefaultFileSystemProvider() {
    2305        return getProperty(JAVA_NIO_FILE_SPI_DEFAULT_FILE_SYSTEM_PROVIDER);
    2306    }
    2307
    2308    /**
    2309     * Gets the current value from the system properties map.
    2310     * <p>
    2311     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2312     * </p>
    2313     *
    2314     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2315     * @since 3.15.0
    2316     */
    2317    public static String getJavaPropertiesDate() {
    2318        return getProperty(JAVA_PROPERTIES_DATE);
    2319    }
    2320
    2321    /**
    2322     * Gets the current value from the system properties map.
    2323     * <p>
    2324     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2325     * </p>
    2326     *
    2327     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2328     * @since 3.15.0
    2329     */
    2330    public static String getJavaProtocolHandlerPkgs() {
    2331        return getProperty(JAVA_PROTOCOL_HANDLER_PKGS);
    2332    }
    2333
    2334    /**
    2335     * Gets the current value from the system properties map.
    2336     * <p>
    2337     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2338     * </p>
    2339     *
    2340     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2341     * @since 3.15.0
    2342     */
    2343    public static String getJavaRmiServerCodebase() {
    2344        return getProperty(JAVA_RMI_SERVER_CODEBASE);
    2345    }
    2346
    2347    /**
    2348     * Gets the current value from the system properties map.
    2349     * <p>
    2350     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2351     * </p>
    2352     *
    2353     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2354     * @since 3.15.0
    2355     */
    2356    public static String getJavaRmiServerHostName() {
    2357        return getProperty(JAVA_RMI_SERVER_HOST_NAME);
    2358    }
    2359
    2360    /**
    2361     * Gets the current value from the system properties map.
    2362     * <p>
    2363     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2364     * </p>
    2365     *
    2366     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2367     * @since 3.15.0
    2368     */
    2369    public static String getJavaRmiServerRandomIds() {
    2370        return getProperty(JAVA_RMI_SERVER_RANDOM_IDS);
    2371    }
    2372
    2373    /**
    2374     * Gets the current value from the system properties map.
    2375     * <p>
    2376     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2377     * </p>
    2378     *
    2379     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2380     * @since 3.15.0
    2381     */
    2382    public static String getJavaRmiServerRmiClassLoaderSpi() {
    2383        return getProperty(JAVA_RMI_SERVER_RMI_CLASS_LOADER_SPI);
    2384    }
    2385
    2386    /**
    2387     * Gets the current value from the system properties map.
    2388     * <p>
    2389     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2390     * </p>
    2391     *
    2392     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2393     */
    2394    public static String getJavaRuntimeName() {
    2395        return getProperty(JAVA_RUNTIME_NAME);
    2396    }
    2397
    2398    /**
    2399     * Gets the current value from the system properties map.
    2400     * <p>
    2401     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2402     * </p>
    2403     *
    2404     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2405     */
    2406    public static String getJavaRuntimeVersion() {
    2407        return getProperty(JAVA_RUNTIME_VERSION);
    2408    }
    2409
    2410    /**
    2411     * Gets the current value from the system properties map.
    2412     * <p>
    2413     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2414     * </p>
    2415     *
    2416     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2417     * @since 3.15.0
    2418     */
    2419    public static String getJavaSecurityAuthLoginConfig() {
    2420        return getProperty(JAVA_SECURITY_AUTH_LOGIN_CONFIG);
    2421    }
    2422
    2423    /**
    2424     * Gets the current value from the system properties map.
    2425     * <p>
    2426     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2427     * </p>
    2428     *
    2429     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2430     * @since 3.15.0
    2431     */
    2432    public static String getJavaSecurityManager() {
    2433        return getProperty(JAVA_SECURITY_MANAGER);
    2434    }
    2435
    2436    /**
    2437     * Gets the current value from the system properties map.
    2438     * <p>
    2439     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2440     * </p>
    2441     *
    2442     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2443     * @since 3.15.0
    2444     */
    2445    public static String getJavaSpecificationMaintenanceVersion() {
    2446        return getProperty(JAVA_SPECIFICATION_MAINTENANCE_VERSION);
    2447    }
    2448
    2449    /**
    2450     * Gets the current value from the system properties map.
    2451     * <p>
    2452     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2453     * </p>
    2454     *
    2455     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2456     */
    2457    public static String getJavaSpecificationName() {
    2458        return getProperty(JAVA_SPECIFICATION_NAME);
    2459    }
    2460
    2461    /**
    2462     * Gets the current value from the system properties map.
    2463     * <p>
    2464     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2465     * </p>
    2466     *
    2467     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2468     */
    2469    public static String getJavaSpecificationVendor() {
    2470        return getProperty(JAVA_SPECIFICATION_VENDOR);
    2471    }
    2472
    2473    /**
    2474     * Gets the current value from the system properties map.
    2475     * <p>
    2476     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2477     * </p>
    2478     *
    2479     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2480     */
    2481    public static String getJavaSpecificationVersion() {
    2482        return getProperty(JAVA_SPECIFICATION_VERSION);
    2483    }
    2484
    2485    /**
    2486     * Gets the current value from the system properties map for {@value #JAVA_SPECIFICATION_VERSION}.
    2487     * <p>
    2488     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2489     * </p>
    2490     *
    2491     * @param defaultValue get this Supplier when the property is empty or throws SecurityException.
    2492     * @return The system property value or {@code defaultValue} if the property is absent or a security problem occurs.
    2493     * @since 3.15.0
    2494     */
    2495    public static String getJavaSpecificationVersion(final String defaultValue) {
    2496        return getProperty(JAVA_SPECIFICATION_VERSION, defaultValue);
    2497    }
    2498
    2499    /**
    2500     * Gets the current value from the system properties map for {@value #JAVA_SYSTEM_CLASS_LOADER}.
    2501     * <p>
    2502     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2503     * </p>
    2504     *
    2505     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2506     * @since 3.15.0
    2507     */
    2508    public static String getJavaSystemClassLoader() {
    2509        return getProperty(JAVA_SYSTEM_CLASS_LOADER);
    2510    }
    2511
    2512    /**
    2513     * Gets the current value from the system properties map for {@value #JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER}.
    2514     * <p>
    2515     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2516     * </p>
    2517     *
    2518     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2519     * @since 3.15.0
    2520     */
    2521    public static String getJavaTimeZoneDefaultZoneRulesProvider() {
    2522        return getProperty(JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER);
    2523    }
    2524
    2525    /**
    2526     * Gets the current value from the system properties map for {@value #JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER}.
    2527     * <p>
    2528     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2529     * </p>
    2530     *
    2531     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2532     * @since 3.15.0
    2533     */
    2534    public static String getJavaUtilConcurrentForkJoinPoolCommonExceptionHandler() {
    2535        return getProperty(JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER);
    2536    }
    2537
    2538    /**
    2539     * Gets the current value from the system properties map for {@value #JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES}.
    2540     * <p>
    2541     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2542     * </p>
    2543     *
    2544     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2545     * @since 3.15.0
    2546     */
    2547    public static String getJavaUtilConcurrentForkJoinPoolCommonMaximumSpares() {
    2548        return getProperty(JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES);
    2549    }
    2550
    2551    /**
    2552     * Gets the current value from the system properties map for {@value #JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM}.
    2553     * <p>
    2554     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2555     * </p>
    2556     *
    2557     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2558     * @since 3.15.0
    2559     */
    2560    public static String getJavaUtilConcurrentForkJoinPoolCommonParallelism() {
    2561        return getProperty(JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM);
    2562    }
    2563
    2564    /**
    2565     * Gets the current value from the system properties map for {@value #JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY}.
    2566     * <p>
    2567     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2568     * </p>
    2569     *
    2570     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2571     * @since 3.15.0
    2572     */
    2573    public static String getJavaUtilConcurrentForkJoinPoolCommonThreadFactory() {
    2574        return getProperty(JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY);
    2575    }
    2576
    2577    /**
    2578     * Gets the current value from the system properties map for {@value #JAVA_UTIL_CURRENCY_DATA}.
    2579     * <p>
    2580     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2581     * </p>
    2582     *
    2583     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2584     * @since 3.15.0
    2585     */
    2586    public static String getJavaUtilCurrencyData() {
    2587        return getProperty(JAVA_UTIL_CURRENCY_DATA);
    2588    }
    2589
    2590    /**
    2591     * Gets the current value from the system properties map for {@value #JAVA_UTIL_LOGGING_CONFIG_CLASS}.
    2592     * <p>
    2593     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2594     * </p>
    2595     *
    2596     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2597     * @since 3.15.0
    2598     */
    2599    public static String getJavaUtilLoggingConfigClass() {
    2600        return getProperty(JAVA_UTIL_LOGGING_CONFIG_CLASS);
    2601    }
    2602
    2603    /**
    2604     * Gets the current value from the system properties map for {@value #JAVA_UTIL_LOGGING_CONFIG_FILE}.
    2605     * <p>
    2606     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2607     * </p>
    2608     *
    2609     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2610     * @since 3.15.0
    2611     */
    2612    public static String getJavaUtilLoggingConfigFile() {
    2613        return getProperty(JAVA_UTIL_LOGGING_CONFIG_FILE);
    2614    }
    2615
    2616    /**
    2617     * Gets the current value from the system properties map for {@value #JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT}.
    2618     * <p>
    2619     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2620     * </p>
    2621     *
    2622     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2623     * @since 3.15.0
    2624     */
    2625    public static String getJavaUtilLoggingSimpleFormatterFormat() {
    2626        return getProperty(JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT);
    2627    }
    2628
    2629    /**
    2630     * Gets the current value from the system properties map for {@value #JAVA_UTIL_PREFS_PREFERENCES_FACTORY}.
    2631     * <p>
    2632     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2633     * </p>
    2634     *
    2635     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2636     */
    2637    public static String getJavaUtilPrefsPreferencesFactory() {
    2638        return getProperty(JAVA_UTIL_PREFS_PREFERENCES_FACTORY);
    2639    }
    2640
    2641    /**
    2642     * Gets the current value from the system properties map for {@value #JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING}.
    2643     * <p>
    2644     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2645     * </p>
    2646     *
    2647     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2648     * @since 3.15.0
    2649     */
    2650    public static String getJavaUtilPropertyResourceBundleEncoding() {
    2651        return getProperty(JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING);
    2652    }
    2653
    2654    /**
    2655     * Gets the current value from the system properties map for {@value #JAVA_VENDOR}.
    2656     * <p>
    2657     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2658     * </p>
    2659     *
    2660     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2661     */
    2662    public static String getJavaVendor() {
    2663        return getProperty(JAVA_VENDOR);
    2664    }
    2665
    2666    /**
    2667     * Gets the current value from the system properties map for {@value #JAVA_VENDOR_URL}.
    2668     * <p>
    2669     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2670     * </p>
    2671     *
    2672     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2673     */
    2674    public static String getJavaVendorUrl() {
    2675        return getProperty(JAVA_VENDOR_URL);
    2676    }
    2677
    2678    /**
    2679     * Gets the current value from the system properties map for {@value #JAVA_VENDOR_VERSION}.
    2680     * <p>
    2681     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2682     * </p>
    2683     *
    2684     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2685     * @since 3.15.0
    2686     */
    2687    public static String getJavaVendorVersion() {
    2688        return getProperty(JAVA_VENDOR_VERSION);
    2689    }
    2690
    2691    /**
    2692     * Gets the current value from the system properties map for {@value #JAVA_VERSION}.
    2693     * <p>
    2694     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2695     * </p>
    2696     *
    2697     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2698     */
    2699    public static String getJavaVersion() {
    2700        return getProperty(JAVA_VERSION);
    2701    }
    2702
    2703    /**
    2704     * Gets the current value from the system properties map for {@value #JAVA_VERSION_DATE}.
    2705     * <p>
    2706     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2707     * </p>
    2708     *
    2709     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2710     * @since 3.15.0
    2711     */
    2712    public static String getJavaVersionDate() {
    2713        return getProperty(JAVA_VERSION_DATE);
    2714    }
    2715
    2716    /**
    2717     * Gets the current value from the system properties map for {@value #JAVA_VM_INFO}.
    2718     * <p>
    2719     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2720     * </p>
    2721     *
    2722     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2723     */
    2724    public static String getJavaVmInfo() {
    2725        return getProperty(JAVA_VM_INFO);
    2726    }
    2727
    2728    /**
    2729     * Gets the current value from the system properties map for {@value #JAVA_VM_NAME}.
    2730     * <p>
    2731     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2732     * </p>
    2733     *
    2734     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2735     */
    2736    public static String getJavaVmName() {
    2737        return getProperty(JAVA_VM_NAME);
    2738    }
    2739
    2740    /**
    2741     * Gets the current value from the system properties map for {@value #JAVA_VM_SPECIFICATION_NAME}.
    2742     * <p>
    2743     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2744     * </p>
    2745     *
    2746     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2747     */
    2748    public static String getJavaVmSpecificationName() {
    2749        return getProperty(JAVA_VM_SPECIFICATION_NAME);
    2750    }
    2751
    2752    /**
    2753     * Gets the current value from the system properties map for {@value #JAVA_VM_SPECIFICATION_VENDOR}.
    2754     * <p>
    2755     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2756     * </p>
    2757     *
    2758     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2759     */
    2760    public static String getJavaVmSpecificationVendor() {
    2761        return getProperty(JAVA_VM_SPECIFICATION_VENDOR);
    2762    }
    2763
    2764    /**
    2765     * Gets the current value from the system properties map for {@value #JAVA_VM_SPECIFICATION_VERSION}.
    2766     * <p>
    2767     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2768     * </p>
    2769     *
    2770     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2771     */
    2772    public static String getJavaVmSpecificationVersion() {
    2773        return getProperty(JAVA_VM_SPECIFICATION_VERSION);
    2774    }
    2775
    2776    /**
    2777     * Gets the current value from the system properties map for {@value #JAVA_VM_VENDOR}.
    2778     * <p>
    2779     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2780     * </p>
    2781     *
    2782     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2783     */
    2784    public static String getJavaVmVendor() {
    2785        return getProperty(JAVA_VM_VENDOR);
    2786    }
    2787
    2788    /**
    2789     * Gets the current value from the system properties map for {@value #JAVA_VM_VERSION}.
    2790     * <p>
    2791     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2792     * </p>
    2793     *
    2794     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2795     */
    2796    public static String getJavaVmVersion() {
    2797        return getProperty(JAVA_VM_VERSION);
    2798    }
    2799
    2800    /**
    2801     * Gets the current value from the system properties map for {@value #JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES}.
    2802     * <p>
    2803     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2804     * </p>
    2805     *
    2806     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2807     * @since 3.15.0
    2808     */
    2809    public static String getJavaxAccessibilityAssistiveTechnologies() {
    2810        return getProperty(JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES);
    2811    }
    2812
    2813    /**
    2814     * Gets the current value from the system properties map for {@value #JAVA_XML_CONFIG_FILE}.
    2815     * <p>
    2816     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2817     * </p>
    2818     *
    2819     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2820     * @since 3.15.0
    2821     */
    2822    public static String getJavaXmlConfigFile() {
    2823        return getProperty(JAVA_XML_CONFIG_FILE);
    2824    }
    2825
    2826    /**
    2827     * Gets the current value from the system properties map for {@value #JAVAX_NET_SSL_SESSION_CACHE_SIZE}.
    2828     * <p>
    2829     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2830     * </p>
    2831     *
    2832     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2833     * @since 3.15.0
    2834     */
    2835    public static String getJavaxNetSslSessionCacheSize() {
    2836        return getProperty(JAVAX_NET_SSL_SESSION_CACHE_SIZE);
    2837    }
    2838
    2839    /**
    2840     * Gets the current value from the system properties map for {@value #JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES}.
    2841     * <p>
    2842     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2843     * </p>
    2844     *
    2845     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2846     * @since 3.15.0
    2847     */
    2848    public static String getJavaxRmiSslClientEnabledCipherSuites() {
    2849        return getProperty(JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES);
    2850    }
    2851
    2852    /**
    2853     * Gets the current value from the system properties map for {@value #JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS}.
    2854     * <p>
    2855     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2856     * </p>
    2857     *
    2858     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2859     * @since 3.15.0
    2860     */
    2861    public static String getJavaxRmiSslClientEnabledProtocols() {
    2862        return getProperty(JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS);
    2863    }
    2864
    2865    /**
    2866     * Gets the current value from the system properties map for {@value #JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY}.
    2867     * <p>
    2868     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2869     * </p>
    2870     *
    2871     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2872     * @since 3.15.0
    2873     */
    2874    public static String getJavaxSecurityAuthUseSubjectCredsOnly() {
    2875        return getProperty(JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY);
    2876    }
    2877
    2878    /**
    2879     * Gets the current value from the system properties map for {@value #JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE}.
    2880     * <p>
    2881     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2882     * </p>
    2883     *
    2884     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2885     * @since 3.15.0
    2886     */
    2887    public static String getJavaxSmartCardIoTerminalFactoryDefaultType() {
    2888        return getProperty(JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE);
    2889    }
    2890
    2891    /**
    2892     * Gets the current value from the system properties map for {@value #JDBC_DRIVERS}.
    2893     * <p>
    2894     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2895     * </p>
    2896     *
    2897     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2898     * @since 3.15.0
    2899     */
    2900    public static String getJdbcDrivers() {
    2901        return getProperty(JDBC_DRIVERS);
    2902    }
    2903
    2904    /**
    2905     * Gets the current value from the system properties map for {@value #JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES}.
    2906     * <p>
    2907     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2908     * </p>
    2909     *
    2910     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2911     * @since 3.15.0
    2912     */
    2913    public static String getJdkHttpAuthProxyingDisabledSchemes() {
    2914        return getProperty(JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES);
    2915    }
    2916
    2917    /**
    2918     * Gets the current value from the system properties map for {@value #JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES}.
    2919     * <p>
    2920     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2921     * </p>
    2922     *
    2923     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2924     * @since 3.15.0
    2925     */
    2926    public static String getJdkHttpAuthTunnelingDisabledSchemes() {
    2927        return getProperty(JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES);
    2928    }
    2929
    2930    /**
    2931     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS}.
    2932     * <p>
    2933     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2934     * </p>
    2935     *
    2936     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2937     * @since 3.15.0
    2938     */
    2939    public static String getJdkHttpClientAllowRestrictedHeaders() {
    2940        return getProperty(JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS);
    2941    }
    2942
    2943    /**
    2944     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT}.
    2945     * <p>
    2946     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2947     * </p>
    2948     *
    2949     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2950     * @since 3.15.0
    2951     */
    2952    public static String getJdkHttpClientAuthRetryLimit() {
    2953        return getProperty(JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT);
    2954    }
    2955
    2956    /**
    2957     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_BUF_SIZE}.
    2958     * <p>
    2959     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2960     * </p>
    2961     *
    2962     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2963     * @since 3.15.0
    2964     */
    2965    public static String getJdkHttpClientBufSize() {
    2966        return getProperty(JDK_HTTP_CLIENT_BUF_SIZE);
    2967    }
    2968
    2969    /**
    2970     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE}.
    2971     * <p>
    2972     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2973     * </p>
    2974     *
    2975     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2976     * @since 3.15.0
    2977     */
    2978    public static String getJdkHttpClientConnectionPoolSize() {
    2979        return getProperty(JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE);
    2980    }
    2981
    2982    /**
    2983     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE}.
    2984     * <p>
    2985     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2986     * </p>
    2987     *
    2988     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    2989     * @since 3.15.0
    2990     */
    2991    public static String getJdkHttpClientConnectionWindowSize() {
    2992        return getProperty(JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE);
    2993    }
    2994
    2995    /**
    2996     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT}.
    2997     * <p>
    2998     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    2999     * </p>
    3000     *
    3001     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3002     * @since 3.15.0
    3003     */
    3004    public static String getJdkHttpClientDisableRetryConnect() {
    3005        return getProperty(JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT);
    3006    }
    3007
    3008    /**
    3009     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY}.
    3010     * <p>
    3011     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3012     * </p>
    3013     *
    3014     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3015     * @since 3.15.0
    3016     */
    3017    public static String getJdkHttpClientEnableAllMethodRetry() {
    3018        return getProperty(JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY);
    3019    }
    3020
    3021    /**
    3022     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_ENABLE_PUSH}.
    3023     * <p>
    3024     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3025     * </p>
    3026     *
    3027     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3028     * @since 3.15.0
    3029     */
    3030    public static String getJdkHttpClientEnablePush() {
    3031        return getProperty(JDK_HTTP_CLIENT_ENABLE_PUSH);
    3032    }
    3033
    3034    /**
    3035     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE}.
    3036     * <p>
    3037     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3038     * </p>
    3039     *
    3040     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3041     * @since 3.15.0
    3042     */
    3043    public static String getJdkHttpClientHpackMaxHeaderTableSize() {
    3044        return getProperty(JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE);
    3045    }
    3046
    3047    /**
    3048     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_HTTP_CLIENT_LOG}.
    3049     * <p>
    3050     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3051     * </p>
    3052     *
    3053     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3054     * @since 3.15.0
    3055     */
    3056    public static String getJdkHttpClientHttpClientLog() {
    3057        return getProperty(JDK_HTTP_CLIENT_HTTP_CLIENT_LOG);
    3058    }
    3059
    3060    /**
    3061     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT}.
    3062     * <p>
    3063     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3064     * </p>
    3065     *
    3066     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3067     * @since 3.15.0
    3068     */
    3069    public static String getJdkHttpClientKeepAliveTimeout() {
    3070        return getProperty(JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT);
    3071    }
    3072
    3073    /**
    3074     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2}.
    3075     * <p>
    3076     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3077     * </p>
    3078     *
    3079     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3080     * @since 3.15.0
    3081     */
    3082    public static String getJdkHttpClientKeepAliveTimeoutH2() {
    3083        return getProperty(JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2);
    3084    }
    3085
    3086    /**
    3087     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_MAX_FRAME_SIZE}.
    3088     * <p>
    3089     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3090     * </p>
    3091     *
    3092     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3093     * @since 3.15.0
    3094     */
    3095    public static String getJdkHttpClientMaxFrameSize() {
    3096        return getProperty(JDK_HTTP_CLIENT_MAX_FRAME_SIZE);
    3097    }
    3098
    3099    /**
    3100     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_MAX_STREAMS}.
    3101     * <p>
    3102     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3103     * </p>
    3104     *
    3105     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3106     * @since 3.15.0
    3107     */
    3108    public static String getJdkHttpClientMaxStreams() {
    3109        return getProperty(JDK_HTTP_CLIENT_MAX_STREAMS);
    3110    }
    3111
    3112    /**
    3113     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE}.
    3114     * <p>
    3115     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3116     * </p>
    3117     *
    3118     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3119     * @since 3.15.0
    3120     */
    3121    public static String getJdkHttpClientReceiveBufferSize() {
    3122        return getProperty(JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE);
    3123    }
    3124
    3125    /**
    3126     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT}.
    3127     * <p>
    3128     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3129     * </p>
    3130     *
    3131     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3132     * @since 3.15.0
    3133     */
    3134    public static String getJdkHttpClientRedirectsRetryLimit() {
    3135        return getProperty(JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT);
    3136    }
    3137
    3138    /**
    3139     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_SEND_BUFFER_SIZE}.
    3140     * <p>
    3141     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3142     * </p>
    3143     *
    3144     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3145     * @since 3.15.0
    3146     */
    3147    public static String getJdkHttpClientSendBufferSize() {
    3148        return getProperty(JDK_HTTP_CLIENT_SEND_BUFFER_SIZE);
    3149    }
    3150
    3151    /**
    3152     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE}.
    3153     * <p>
    3154     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3155     * </p>
    3156     *
    3157     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3158     * @since 3.15.0
    3159     */
    3160    public static String getJdkHttpClientWebSocketWriteBufferSize() {
    3161        return getProperty(JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE);
    3162    }
    3163
    3164    /**
    3165     * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_WINDOW_SIZE}.
    3166     * <p>
    3167     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3168     * </p>
    3169     *
    3170     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3171     * @since 3.15.0
    3172     */
    3173    public static String getJdkHttpClientWindowSize() {
    3174        return getProperty(JDK_HTTP_CLIENT_WINDOW_SIZE);
    3175    }
    3176
    3177    /**
    3178     * Gets the current value from the system properties map for {@value #JDK_HTTP_SERVER_MAX_CONNECTIONS}.
    3179     * <p>
    3180     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3181     * </p>
    3182     *
    3183     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3184     * @since 3.15.0
    3185     */
    3186    public static String getJdkHttpServerMaxConnections() {
    3187        return getProperty(JDK_HTTP_SERVER_MAX_CONNECTIONS);
    3188    }
    3189
    3190    /**
    3191     * Gets the current value from the system properties map for {@value #JDK_HTTPS_NEGOTIATE_CBT}.
    3192     * <p>
    3193     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3194     * </p>
    3195     *
    3196     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3197     * @since 3.15.0
    3198     */
    3199    public static String getJdkHttpsNegotiateCbt() {
    3200        return getProperty(JDK_HTTPS_NEGOTIATE_CBT);
    3201    }
    3202
    3203    /**
    3204     * Gets the current value from the system properties map for {@value #JDK_INCLUDE_IN_EXCEPTIONS}.
    3205     * <p>
    3206     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3207     * </p>
    3208     *
    3209     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3210     * @since 3.15.0
    3211     */
    3212    public static String getJdkIncludeInExceptions() {
    3213        return getProperty(JDK_INCLUDE_IN_EXCEPTIONS);
    3214    }
    3215
    3216    /**
    3217     * Gets the current value from the system properties map for {@value #JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION}.
    3218     * <p>
    3219     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3220     * </p>
    3221     *
    3222     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3223     * @since 3.15.0
    3224     */
    3225    public static String getJdkInternalHttpClientDisableHostNameVerification() {
    3226        return getProperty(JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION);
    3227    }
    3228
    3229    /**
    3230     * Gets the current value from the system properties map for {@value #JDK_IO_PERMISSIONS_USE_CANONICAL_PATH}.
    3231     * <p>
    3232     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3233     * </p>
    3234     *
    3235     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3236     * @since 3.15.0
    3237     */
    3238    public static String getJdkIoPermissionsUseCanonicalPath() {
    3239        return getProperty(JDK_IO_PERMISSIONS_USE_CANONICAL_PATH);
    3240    }
    3241
    3242    /**
    3243     * Gets the current value from the system properties map for {@value #JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER}.
    3244     * <p>
    3245     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3246     * </p>
    3247     *
    3248     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3249     * @since 3.15.0
    3250     */
    3251    public static String getJdkJndiLdapObjectFactoriesFilter() {
    3252        return getProperty(JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER);
    3253    }
    3254
    3255    /**
    3256     * Gets the current value from the system properties map for {@value #JDK_JNDI_OBJECT_FACTORIES_FILTER}.
    3257     * <p>
    3258     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3259     * </p>
    3260     *
    3261     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3262     * @since 3.15.0
    3263     */
    3264    public static String getJdkJndiObjectFactoriesFilter() {
    3265        return getProperty(JDK_JNDI_OBJECT_FACTORIES_FILTER);
    3266    }
    3267
    3268    /**
    3269     * Gets the current value from the system properties map for {@value #JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER}.
    3270     * <p>
    3271     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3272     * </p>
    3273     *
    3274     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3275     * @since 3.15.0
    3276     */
    3277    public static String getJdkJndiRmiObjectFactoriesFilter() {
    3278        return getProperty(JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER);
    3279    }
    3280
    3281    /**
    3282     * Gets the current value from the system properties map for {@value #JDK_MODULE_MAIN}.
    3283     * <p>
    3284     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3285     * </p>
    3286     *
    3287     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3288     * @since 3.15.0
    3289     */
    3290    public static String getJdkModuleMain() {
    3291        return getProperty(JDK_MODULE_MAIN);
    3292    }
    3293
    3294    /**
    3295     * Gets the current value from the system properties map for {@value #JDK_MODULE_MAIN_CLASS}.
    3296     * <p>
    3297     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3298     * </p>
    3299     *
    3300     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3301     * @since 3.15.0
    3302     */
    3303    public static String getJdkModuleMainClass() {
    3304        return getProperty(JDK_MODULE_MAIN_CLASS);
    3305    }
    3306
    3307    /**
    3308     * Gets the current value from the system properties map for {@value #JDK_MODULE_PATH}.
    3309     * <p>
    3310     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3311     * </p>
    3312     *
    3313     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3314     * @since 3.15.0
    3315     */
    3316    public static String getJdkModulePath() {
    3317        return getProperty(JDK_MODULE_PATH);
    3318    }
    3319
    3320    /**
    3321     * Gets the current value from the system properties map for {@value #JDK_MODULE_UPGRADE_PATH}.
    3322     * <p>
    3323     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3324     * </p>
    3325     *
    3326     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3327     * @since 3.15.0
    3328     */
    3329    public static String getJdkModuleUpgradePath() {
    3330        return getProperty(JDK_MODULE_UPGRADE_PATH);
    3331    }
    3332
    3333    /**
    3334     * Gets the current value from the system properties map for {@value #JDK_NET_UNIX_DOMAIN_TMPDIR}.
    3335     * <p>
    3336     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3337     * </p>
    3338     *
    3339     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3340     * @since 3.15.0
    3341     */
    3342    public static String getJdkNetUnixDomainTmpDir() {
    3343        return getProperty(JDK_NET_UNIX_DOMAIN_TMPDIR);
    3344    }
    3345
    3346    /**
    3347     * Gets the current value from the system properties map for {@value #JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES}.
    3348     * <p>
    3349     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3350     * </p>
    3351     *
    3352     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3353     * @since 3.15.0
    3354     */
    3355    public static String getJdkNetUrlClassPathShowIgnoredClassPathEntries() {
    3356        return getProperty(JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES);
    3357    }
    3358
    3359    /**
    3360     * Gets the current value from the system properties map for {@value #JDK_SERIAL_FILTER}.
    3361     * <p>
    3362     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3363     * </p>
    3364     *
    3365     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3366     * @since 3.15.0
    3367     */
    3368    public static String getJdkSerialFilter() {
    3369        return getProperty(JDK_SERIAL_FILTER);
    3370    }
    3371
    3372    /**
    3373     * Gets the current value from the system properties map for {@value #JDK_SERIAL_FILTER_FACTORY}.
    3374     * <p>
    3375     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3376     * </p>
    3377     *
    3378     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3379     * @since 3.15.0
    3380     */
    3381    public static String getJdkSerialFilterFactory() {
    3382        return getProperty(JDK_SERIAL_FILTER_FACTORY);
    3383    }
    3384
    3385    /**
    3386     * Gets the current value from the system properties map for {@value #JDK_TLS_CLIENT_SIGNATURE_SCHEMES}.
    3387     * <p>
    3388     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3389     * </p>
    3390     *
    3391     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3392     * @since 3.15.0
    3393     */
    3394    public static String getJdkTlsClientSignatureSchemes() {
    3395        return getProperty(JDK_TLS_CLIENT_SIGNATURE_SCHEMES);
    3396    }
    3397
    3398    /**
    3399     * Gets the current value from the system properties map for {@value #JDK_TLS_NAMED_GROUPS}.
    3400     * <p>
    3401     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3402     * </p>
    3403     *
    3404     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3405     * @since 3.15.0
    3406     */
    3407    public static String getJdkTlsNamedGroups() {
    3408        return getProperty(JDK_TLS_NAMED_GROUPS);
    3409    }
    3410
    3411    /**
    3412     * Gets the current value from the system properties map for {@value #JDK_TLS_SERVER_SIGNATURE_SCHEMES}.
    3413     * <p>
    3414     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3415     * </p>
    3416     *
    3417     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3418     * @since 3.15.0
    3419     */
    3420    public static String getJdkTlsServerSignatureSchemes() {
    3421        return getProperty(JDK_TLS_SERVER_SIGNATURE_SCHEMES);
    3422    }
    3423
    3424    /**
    3425     * Gets the current value from the system properties map for {@value #JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE}.
    3426     * <p>
    3427     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3428     * </p>
    3429     *
    3430     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3431     * @since 3.15.0
    3432     */
    3433    public static String getJdkVirtualThreadSchedulerMaxPoolSize() {
    3434        return getProperty(JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE);
    3435    }
    3436
    3437    /**
    3438     * Gets the current value from the system properties map for {@value #JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM}.
    3439     * <p>
    3440     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3441     * </p>
    3442     *
    3443     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3444     * @since 3.15.0
    3445     */
    3446    public static String getJdkVirtualThreadSchedulerParallelism() {
    3447        return getProperty(JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM);
    3448    }
    3449
    3450    /**
    3451     * Gets the current value from the system properties map for {@value #JDK_XML_CDATA_CHUNK_SIZE}.
    3452     * <p>
    3453     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3454     * </p>
    3455     *
    3456     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3457     * @since 3.15.0
    3458     */
    3459    public static String getJdkXmlCdataChunkSize() {
    3460        return getProperty(JDK_XML_CDATA_CHUNK_SIZE);
    3461    }
    3462
    3463    /**
    3464     * Gets the current value from the system properties map for {@value #JDK_XML_DTD_SUPPORT}.
    3465     * <p>
    3466     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3467     * </p>
    3468     *
    3469     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3470     * @since 3.15.0
    3471     */
    3472    public static String getJdkXmlDtdSupport() {
    3473        return getProperty(JDK_XML_DTD_SUPPORT);
    3474    }
    3475
    3476    /**
    3477     * Gets the current value from the system properties map for {@value #JDK_XML_ELEMENT_ATTRIBUTE_LIMIT}.
    3478     * <p>
    3479     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3480     * </p>
    3481     *
    3482     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3483     * @since 3.15.0
    3484     */
    3485    public static String getJdkXmlElementAttributeLimit() {
    3486        return getProperty(JDK_XML_ELEMENT_ATTRIBUTE_LIMIT);
    3487    }
    3488
    3489    /**
    3490     * Gets the current value from the system properties map for {@value #JDK_XML_ENABLE_EXTENSION_FUNCTIONS}.
    3491     * <p>
    3492     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3493     * </p>
    3494     *
    3495     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3496     * @since 3.15.0
    3497     */
    3498    public static String getJdkXmlEnableExtensionFunctions() {
    3499        return getProperty(JDK_XML_ENABLE_EXTENSION_FUNCTIONS);
    3500    }
    3501
    3502    /**
    3503     * Gets the current value from the system properties map for {@value #JDK_XML_ENTITY_EXPANSION_LIMIT}.
    3504     * <p>
    3505     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3506     * </p>
    3507     *
    3508     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3509     * @since 3.15.0
    3510     */
    3511    public static String getJdkXmlEntityExpansionLimit() {
    3512        return getProperty(JDK_XML_ENTITY_EXPANSION_LIMIT);
    3513    }
    3514
    3515    /**
    3516     * Gets the current value from the system properties map for {@value #JDK_XML_ENTITY_REPLACEMENT_LIMIT}.
    3517     * <p>
    3518     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3519     * </p>
    3520     *
    3521     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3522     * @since 3.15.0
    3523     */
    3524    public static String getJdkXmlEntityReplacementLimit() {
    3525        return getProperty(JDK_XML_ENTITY_REPLACEMENT_LIMIT);
    3526    }
    3527
    3528    /**
    3529     * Gets the current value from the system properties map for {@value #JDK_XML_IS_STANDALONE}.
    3530     * <p>
    3531     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3532     * </p>
    3533     *
    3534     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3535     * @since 3.15.0
    3536     */
    3537    public static String getJdkXmlIsStandalone() {
    3538        return getProperty(JDK_XML_IS_STANDALONE);
    3539    }
    3540
    3541    /**
    3542     * Gets the current value from the system properties map for {@value #JDK_XML_JDK_CATALOG_RESOLVE}.
    3543     * <p>
    3544     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3545     * </p>
    3546     *
    3547     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3548     * @since 3.15.0
    3549     */
    3550    public static String getJdkXmlJdkCatalogResolve() {
    3551        return getProperty(JDK_XML_JDK_CATALOG_RESOLVE);
    3552    }
    3553
    3554    /**
    3555     * Gets the current value from the system properties map for {@value #JDK_XML_MAX_ELEMENT_DEPTH}.
    3556     * <p>
    3557     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3558     * </p>
    3559     *
    3560     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3561     * @since 3.15.0
    3562     */
    3563    public static String getJdkXmlMaxElementDepth() {
    3564        return getProperty(JDK_XML_MAX_ELEMENT_DEPTH);
    3565    }
    3566
    3567    /**
    3568     * Gets the current value from the system properties map for {@value #JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT}.
    3569     * <p>
    3570     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3571     * </p>
    3572     *
    3573     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3574     * @since 3.15.0
    3575     */
    3576    public static String getJdkXmlMaxGeneralEntitySizeLimit() {
    3577        return getProperty(JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT);
    3578    }
    3579
    3580    /**
    3581     * Gets the current value from the system properties map for {@value #JDK_XML_MAX_OCCUR_LIMIT}.
    3582     * <p>
    3583     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3584     * </p>
    3585     *
    3586     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3587     * @since 3.15.0
    3588     */
    3589    public static String getJdkXmlMaxOccurLimit() {
    3590        return getProperty(JDK_XML_MAX_OCCUR_LIMIT);
    3591    }
    3592
    3593    /**
    3594     * Gets the current value from the system properties map for {@value #JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT}.
    3595     * <p>
    3596     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3597     * </p>
    3598     *
    3599     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3600     * @since 3.15.0
    3601     */
    3602    public static String getJdkXmlMaxParameterEntitySizeLimit() {
    3603        return getProperty(JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT);
    3604    }
    3605
    3606    /**
    3607     * Gets the current value from the system properties map for {@value #JDK_XML_MAX_XML_NAME_LIMIT}.
    3608     * <p>
    3609     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3610     * </p>
    3611     *
    3612     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3613     * @since 3.15.0
    3614     */
    3615    public static String getJdkXmlMaxXmlNameLimit() {
    3616        return getProperty(JDK_XML_MAX_XML_NAME_LIMIT);
    3617    }
    3618
    3619    /**
    3620     * Gets the current value from the system properties map for {@value #JDK_XML_OVERRIDE_DEFAULT_PARSER}.
    3621     * <p>
    3622     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3623     * </p>
    3624     *
    3625     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3626     * @since 3.15.0
    3627     */
    3628    public static String getJdkXmlOverrideDefaultParser() {
    3629        return getProperty(JDK_XML_OVERRIDE_DEFAULT_PARSER);
    3630    }
    3631
    3632    /**
    3633     * Gets the current value from the system properties map for {@value #JDK_XML_RESET_SYMBOL_TABLE}.
    3634     * <p>
    3635     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3636     * </p>
    3637     *
    3638     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3639     * @since 3.15.0
    3640     */
    3641    public static String getJdkXmlResetSymbolTable() {
    3642        return getProperty(JDK_XML_RESET_SYMBOL_TABLE);
    3643    }
    3644
    3645    /**
    3646     * Gets the current value from the system properties map for {@value #JDK_XML_TOTAL_ENTITY_SIZE_LIMIT}.
    3647     * <p>
    3648     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3649     * </p>
    3650     *
    3651     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3652     * @since 3.15.0
    3653     */
    3654    public static String getJdkXmlTotalEntitySizeLimit() {
    3655        return getProperty(JDK_XML_TOTAL_ENTITY_SIZE_LIMIT);
    3656    }
    3657
    3658    /**
    3659     * Gets the current value from the system properties map for {@value #JDK_XML_XSLTC_IS_STANDALONE}.
    3660     * <p>
    3661     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3662     * </p>
    3663     *
    3664     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3665     * @since 3.15.0
    3666     */
    3667    public static String getJdkXmlXsltcIsStandalone() {
    3668        return getProperty(JDK_XML_XSLTC_IS_STANDALONE);
    3669    }
    3670
    3671    /**
    3672     * Gets the current value from the system properties map for {@value #LINE_SEPARATOR}.
    3673     * <p>
    3674     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3675     * </p>
    3676     *
    3677     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3678     */
    3679    public static String getLineSeparator() {
    3680        return getProperty(LINE_SEPARATOR);
    3681    }
    3682
    3683    /**
    3684     * Gets the current value from the system properties map for {@value #LINE_SEPARATOR}.
    3685     * <p>
    3686     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3687     * </p>
    3688     *
    3689     * @param defaultIfAbsent get this Supplier when the property is empty or throws SecurityException.
    3690     * @return the current value from the system properties map.
    3691     * @since 3.15.0
    3692     */
    3693    public static String getLineSeparator(final Supplier<String> defaultIfAbsent) {
    3694        return getProperty(LINE_SEPARATOR, defaultIfAbsent);
    3695    }
    3696
    3697    /**
    3698     * Gets the current value for the property named {@code "SimpleClassName.Key"} as a {@code long}.
    3699     * <p>
    3700     * If a {@link SecurityException} is caught, the return value is {@code null}.
    3701     * </p>
    3702     *
    3703     * @param clazz           The Class to use for the SimpleClassName.
    3704     * @param key             The subkey.
    3705     * @param defaultIfAbsent The default value.
    3706     * @return a long or {@code defaultIfAbsent}'s value.
    3707     * @see Class#getSimpleName()
    3708     * @since 3.19.0
    3709     */
    3710    public static long getLong(final Class<?> clazz, final String key, final LongSupplier defaultIfAbsent) {
    3711        return getLong(toKey(clazz, key, true), defaultIfAbsent);
    3712    }
    3713
    3714    /**
    3715     * Gets the current value for the property named {@code key} as a {@code long}.
    3716     * <p>
    3717     * If a {@link SecurityException} is caught, the return value is {@code null}.
    3718     * </p>
    3719     *
    3720     * @param key             The key.
    3721     * @param defaultIfAbsent The default value.
    3722     * @return a {@code long} or {@code defaultIfAbsent}'s value.
    3723     */
    3724    public static long getLong(final String key, final LongSupplier defaultIfAbsent) {
    3725        final String str = getProperty(key);
    3726        return str == null ? defaultIfAbsent != null ? defaultIfAbsent.getAsLong() : 0 : Long.parseLong(str);
    3727    }
    3728
    3729    /**
    3730     * Gets the current value from the system properties map for {@value #NATIVE_ENCODING}.
    3731     * <p>
    3732     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3733     * </p>
    3734     *
    3735     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3736     * @since 3.15.0
    3737     */
    3738    public static String getNativeEncoding() {
    3739        return getProperty(NATIVE_ENCODING);
    3740    }
    3741
    3742    /**
    3743     * Gets the current value from the system properties map for {@value #NETWORK_ADDRESS_CACHE_NEGATIVE_TTL}.
    3744     * <p>
    3745     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3746     * </p>
    3747     *
    3748     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3749     * @since 3.15.0
    3750     */
    3751    public static String getNetworkAddressCacheNegativeTtl() {
    3752        return getProperty(NETWORK_ADDRESS_CACHE_NEGATIVE_TTL);
    3753    }
    3754
    3755    /**
    3756     * Gets the current value from the system properties map for {@value #NETWORK_ADDRESS_CACHE_STALE_TTL}.
    3757     * <p>
    3758     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3759     * </p>
    3760     *
    3761     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3762     * @since 3.15.0
    3763     */
    3764    public static String getNetworkAddressCacheStaleTtl() {
    3765        return getProperty(NETWORK_ADDRESS_CACHE_STALE_TTL);
    3766    }
    3767
    3768    /**
    3769     * Gets the current value from the system properties map for {@value #NETWORK_ADDRESS_CACHE_TTL}.
    3770     * <p>
    3771     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3772     * </p>
    3773     *
    3774     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3775     * @since 3.15.0
    3776     */
    3777    public static String getNetworkAddressCacheTtl() {
    3778        return getProperty(NETWORK_ADDRESS_CACHE_TTL);
    3779    }
    3780
    3781    /**
    3782     * Gets the current value from the system properties map for {@value #ORG_JCP_XML_DSIG_SECURE_VALIDATION}.
    3783     * <p>
    3784     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3785     * </p>
    3786     *
    3787     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3788     * @since 3.15.0
    3789     */
    3790    public static String getOrgJcpXmlDsigSecureValidation() {
    3791        return getProperty(ORG_JCP_XML_DSIG_SECURE_VALIDATION);
    3792    }
    3793
    3794    /**
    3795     * Gets the current value from the system properties map for {@value #ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE}.
    3796     * <p>
    3797     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3798     * </p>
    3799     *
    3800     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3801     * @since 3.15.0
    3802     */
    3803    public static String getOrgOpenJdkJavaUtilStreamTripwire() {
    3804        return getProperty(ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE);
    3805    }
    3806
    3807    /**
    3808     * Gets the current value from the system properties map for {@value #OS_ARCH}.
    3809     * <p>
    3810     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3811     * </p>
    3812     *
    3813     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3814     */
    3815    public static String getOsArch() {
    3816        return getProperty(OS_ARCH);
    3817    }
    3818
    3819    /**
    3820     * Gets the current value from the system properties map for {@value #OS_NAME}.
    3821     * <p>
    3822     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3823     * </p>
    3824     *
    3825     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3826     */
    3827    public static String getOsName() {
    3828        return getProperty(OS_NAME);
    3829    }
    3830
    3831    /**
    3832     * Gets the current value from the system properties map for {@value #OS_VERSION}.
    3833     * <p>
    3834     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3835     * </p>
    3836     *
    3837     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3838     */
    3839    public static String getOsVersion() {
    3840        return getProperty(OS_VERSION);
    3841    }
    3842
    3843    /**
    3844     * Gets the current value for the property named {@code key} as a {@link Path}.
    3845     * <p>
    3846     * If a {@link SecurityException} is caught, the return value is {@code null}.
    3847     * </p>
    3848     *
    3849     * @param key             The key.
    3850     * @param defaultIfAbsent The default value.
    3851     * @return a {@link Path} or {@code defaultIfAbsent}'s value.
    3852     * @since 3.20.0
    3853     */
    3854    public static Path getPath(final String key, final Supplier<Path> defaultIfAbsent) {
    3855        final String str = getProperty(key);
    3856        return str == null ? defaultIfAbsent != null ? defaultIfAbsent.get() : null : Paths.get(str);
    3857    }
    3858
    3859    /**
    3860     * Gets the current value from the system properties map for {@value #PATH_SEPARATOR}.
    3861     * <p>
    3862     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3863     * </p>
    3864     *
    3865     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3866     */
    3867    public static String getPathSeparator() {
    3868        return getProperty(PATH_SEPARATOR);
    3869    }
    3870
    3871    /**
    3872     * Gets a System property, defaulting to {@code null} if the property cannot be read.
    3873     * <p>
    3874     * If a {@link SecurityException} is caught, the return value is {@code null}.
    3875     * </p>
    3876     *
    3877     * @param property The system property name.
    3878     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3879     */
    3880    public static String getProperty(final String property) {
    3881        return getProperty(property, Suppliers.nul());
    3882    }
    3883
    3884    /**
    3885     * Gets a System property, defaulting to {@code null} if the property cannot be read.
    3886     * <p>
    3887     * If a {@link SecurityException} is caught, the return value is {@code null}.
    3888     * </p>
    3889     *
    3890     * @param property        the system property name.
    3891     * @param defaultIfAbsent use this value when the property is empty or throws SecurityException.
    3892     * @return the system property value or {@code null} if a security problem occurs.
    3893     */
    3894    static String getProperty(final String property, final String defaultIfAbsent) {
    3895        return getProperty(property, () -> defaultIfAbsent);
    3896    }
    3897
    3898    /**
    3899     * Gets a System property, defaulting to {@code null} if the property cannot be read.
    3900     * <p>
    3901     * If a {@link SecurityException} is caught, the return value is {@code null}.
    3902     * </p>
    3903     *
    3904     * @param property        the system property name.
    3905     * @param defaultIfAbsent get this Supplier when the property is empty or throws SecurityException.
    3906     * @return the system property value or {@code null} if a security problem occurs.
    3907     */
    3908    static String getProperty(final String property, final Supplier<String> defaultIfAbsent) {
    3909        try {
    3910            if (StringUtils.isEmpty(property)) {
    3911                return Suppliers.get(defaultIfAbsent);
    3912            }
    3913            return StringUtils.getIfEmpty(System.getProperty(property), defaultIfAbsent);
    3914        } catch (final SecurityException ignore) {
    3915            // We are not allowed to look at this property.
    3916            //
    3917            // System.err.println("Caught a SecurityException reading the system property '" + property
    3918            // + "'; the SystemUtils property value will default to null.");
    3919            return defaultIfAbsent.get();
    3920        }
    3921    }
    3922
    3923    /**
    3924     * Gets the current value from the system properties map for {@value #SOCKS_PROXY_HOST}.
    3925     * <p>
    3926     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3927     * </p>
    3928     *
    3929     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3930     * @since 3.15.0
    3931     */
    3932    public static String getSocksProxyHost() {
    3933        return getProperty(SOCKS_PROXY_HOST);
    3934    }
    3935
    3936    /**
    3937     * Gets the current value from the system properties map for {@value #SOCKS_PROXY_PORT}.
    3938     * <p>
    3939     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3940     * </p>
    3941     *
    3942     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3943     * @since 3.15.0
    3944     */
    3945    public static String getSocksProxyPort() {
    3946        return getProperty(SOCKS_PROXY_PORT);
    3947    }
    3948
    3949    /**
    3950     * Gets the current value from the system properties map for {@value #SOCKS_PROXY_VERSION}.
    3951     * <p>
    3952     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3953     * </p>
    3954     *
    3955     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3956     * @since 3.15.0
    3957     */
    3958    public static String getSocksProxyVersion() {
    3959        return getProperty(SOCKS_PROXY_VERSION);
    3960    }
    3961
    3962    /**
    3963     * Gets the current value from the system properties map for {@value #STDERR_ENCODING}.
    3964     * <p>
    3965     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3966     * </p>
    3967     *
    3968     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3969     * @since 3.15.0
    3970     */
    3971    public static String getStdErrEncoding() {
    3972        return getProperty(STDERR_ENCODING);
    3973    }
    3974
    3975    /**
    3976     * Gets the current value from the system properties map for {@value #STDOUT_ENCODING}.
    3977     * <p>
    3978     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3979     * </p>
    3980     *
    3981     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3982     * @since 3.15.0
    3983     */
    3984    public static String getStdOutEncoding() {
    3985        return getProperty(STDOUT_ENCODING);
    3986    }
    3987
    3988    /**
    3989     * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_DRAIN_AMOUNT}.
    3990     * <p>
    3991     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    3992     * </p>
    3993     *
    3994     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    3995     * @since 3.15.0
    3996     */
    3997    public static String getSunNetHttpServerDrainAmount() {
    3998        return getProperty(SUN_NET_HTTP_SERVER_DRAIN_AMOUNT);
    3999    }
    4000
    4001    /**
    4002     * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_IDLE_INTERVAL}.
    4003     * <p>
    4004     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4005     * </p>
    4006     *
    4007     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4008     * @since 3.15.0
    4009     */
    4010    public static String getSunNetHttpServerIdleInterval() {
    4011        return getProperty(SUN_NET_HTTP_SERVER_IDLE_INTERVAL);
    4012    }
    4013
    4014    /**
    4015     * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS}.
    4016     * <p>
    4017     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4018     * </p>
    4019     *
    4020     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4021     * @since 3.15.0
    4022     */
    4023    public static String getSunNetHttpServerMaxIdleConnections() {
    4024        return getProperty(SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS);
    4025    }
    4026
    4027    /**
    4028     * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS}.
    4029     * <p>
    4030     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4031     * </p>
    4032     *
    4033     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4034     * @since 3.15.0
    4035     */
    4036    public static String getSunNetHttpServerMaxReqHeaders() {
    4037        return getProperty(SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS);
    4038    }
    4039
    4040    /**
    4041     * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_MAX_REQ_TIME}.
    4042     * <p>
    4043     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4044     * </p>
    4045     *
    4046     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4047     * @since 3.15.0
    4048     */
    4049    public static String getSunNetHttpServerMaxReqTime() {
    4050        return getProperty(SUN_NET_HTTP_SERVER_MAX_REQ_TIME);
    4051    }
    4052
    4053    /**
    4054     * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_MAX_RSP_TIME}.
    4055     * <p>
    4056     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4057     * </p>
    4058     *
    4059     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4060     * @since 3.15.0
    4061     */
    4062    public static String getSunNetHttpServerMaxRspTime() {
    4063        return getProperty(SUN_NET_HTTP_SERVER_MAX_RSP_TIME);
    4064    }
    4065
    4066    /**
    4067     * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_NO_DELAY}.
    4068     * <p>
    4069     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4070     * </p>
    4071     *
    4072     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4073     * @since 3.15.0
    4074     */
    4075    public static String getSunNetHttpServerNoDelay() {
    4076        return getProperty(SUN_NET_HTTP_SERVER_NO_DELAY);
    4077    }
    4078
    4079    /**
    4080     * Gets the current value from the system properties map for {@value #SUN_SECURITY_KRB5_PRINCIPAL}.
    4081     * <p>
    4082     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4083     * </p>
    4084     *
    4085     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4086     * @since 3.15.0
    4087     */
    4088    public static String getSunSecurityKrb5Principal() {
    4089        return getProperty(SUN_SECURITY_KRB5_PRINCIPAL);
    4090    }
    4091
    4092    /**
    4093     * Gets the current value from the system properties map for {@value #USER_COUNTRY}.
    4094     * <p>
    4095     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4096     * </p>
    4097     *
    4098     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4099     */
    4100    public static String getUserCountry() {
    4101        return getProperty(USER_COUNTRY);
    4102    }
    4103
    4104    /**
    4105     * Gets the current value from the system properties map for {@value #USER_DIR}.
    4106     * <p>
    4107     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4108     * </p>
    4109     *
    4110     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4111     */
    4112    public static String getUserDir() {
    4113        return getProperty(USER_DIR);
    4114    }
    4115
    4116    /**
    4117     * Gets the current value from the system properties map for {@value #USER_EXTENSIONS}.
    4118     * <p>
    4119     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4120     * </p>
    4121     *
    4122     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4123     * @since 3.15.0
    4124     */
    4125    public static String getUserExtensions() {
    4126        return getProperty(USER_EXTENSIONS);
    4127    }
    4128
    4129    /**
    4130     * Gets the current value from the system properties map for {@value #USER_HOME}.
    4131     * <p>
    4132     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4133     * </p>
    4134     *
    4135     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4136     */
    4137    public static String getUserHome() {
    4138        return getProperty(USER_HOME);
    4139    }
    4140
    4141    /**
    4142     * Gets the current value from the system properties map for {@value #USER_LANGUAGE}.
    4143     * <p>
    4144     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4145     * </p>
    4146     *
    4147     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4148     */
    4149    public static String getUserLanguage() {
    4150        return getProperty(USER_LANGUAGE);
    4151    }
    4152
    4153    /**
    4154     * Gets the current value from the system properties map for {@value #USER_NAME}.
    4155     * <p>
    4156     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4157     * </p>
    4158     *
    4159     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4160     */
    4161    public static String getUserName() {
    4162        return getProperty(USER_NAME);
    4163    }
    4164
    4165    /**
    4166     * Gets the current value from the system properties map for {@value #USER_NAME}.
    4167     * <p>
    4168     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4169     * </p>
    4170     *
    4171     * @param defaultValue get this Supplier when the property is empty or throws SecurityException.
    4172     * @return The system property value or {@code defaultValue} if the property is absent or a security problem occurs.
    4173     * @since 3.15.0
    4174     */
    4175    public static String getUserName(final String defaultValue) {
    4176        return getProperty(USER_NAME, defaultValue);
    4177    }
    4178
    4179    /**
    4180     * Gets the current value from the system properties map for {@value #USER_REGION}.
    4181     * <p>
    4182     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4183     * </p>
    4184     *
    4185     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4186     * @since 3.15.0
    4187     */
    4188    public static String getUserRegion() {
    4189        return getProperty(USER_REGION);
    4190    }
    4191
    4192    /**
    4193     * Gets the current value from the system properties map for {@value #USER_SCRIPT}.
    4194     * <p>
    4195     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4196     * </p>
    4197     *
    4198     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4199     * @since 3.15.0
    4200     */
    4201    public static String getUserScript() {
    4202        return getProperty(USER_SCRIPT);
    4203    }
    4204
    4205    /**
    4206     * Gets the current value from the system properties map for {@value #USER_TIMEZONE}.
    4207     * <p>
    4208     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4209     * </p>
    4210     *
    4211     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4212     */
    4213    public static String getUserTimezone() {
    4214        return getProperty(USER_TIMEZONE);
    4215    }
    4216
    4217    /**
    4218     * Gets the current value from the system properties map for {@value #USER_VARIANT}.
    4219     * <p>
    4220     * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
    4221     * </p>
    4222     *
    4223     * @return The system property value or {@code null} if the property is absent or a security problem occurs.
    4224     * @since 3.15.0
    4225     */
    4226    public static String getUserVariant() {
    4227        return getProperty(USER_VARIANT);
    4228    }
    4229
    4230    /**
    4231     * Tests whether the given property is set.
    4232     * <p>
    4233     * Short-hand for {@code getProperty(property) != null}.
    4234     * </p>
    4235     * <p>
    4236     * If a {@link SecurityException} is caught, the return value is {@code false}.
    4237     * </p>
    4238     *
    4239     * @param property the system property name.
    4240     * @return whether the given property is set.
    4241     * @since 3.18.0
    4242     */
    4243    public static boolean isPropertySet(final String property) {
    4244        return getProperty(property) != null;
    4245    }
    4246
    4247    private static String toKey(final Class<?> clazz, final String key, final boolean simpleKey) {
    4248        return ClassUtils.getName(clazz, StringUtils.EMPTY, simpleKey) + "." + key;
    4249    }
    4250
    4251    /**
    4252     * Make private in 4.0.
    4253     *
    4254     * @deprecated TODO Make private in 4.0.
    4255     */
    4256    @Deprecated
    4257    public SystemProperties() {
    4258        // empty
    4259    }
    4260}