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