View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      https://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.lang3;
19  
20  import java.util.function.BooleanSupplier;
21  import java.util.function.IntSupplier;
22  import java.util.function.LongSupplier;
23  import java.util.function.Supplier;
24  
25  import org.apache.commons.lang3.function.Suppliers;
26  
27  /**
28   * Accesses current system property names and values.
29   *
30   * @see <a href="https://docs.oracle.com/en/java/javase/22/docs/api/system-properties.html">System Properties</a>
31   * @since 3.13.0
32   */
33  public final class SystemProperties {
34  
35      /**
36       * The System property name {@value}.
37       *
38       * @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>
39       * @since 3.15.0
40       */
41      public static final String APPLE_AWT_ENABLE_TEMPLATE_IMAGES = "apple.awt.enableTemplateImages";
42  
43      /**
44       * The System property name {@value}.
45       * <p>
46       * Not in Java 17 and 21 (Javadoc).
47       * </p>
48       *
49       * @see <a href="https://docs.oracle.com/en/java/javase/22/docs/api/system-properties.html">System Properties</a>
50       */
51      public static final String AWT_TOOLKIT = "awt.toolkit";
52  
53      /**
54       * The System property name {@value}.
55       *
56       * @see <a href=
57       *      "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>
58       * @since 3.15.0
59       */
60      public static final String COM_SUN_JNDI_LDAP_OBJECT_TRUST_SERIAL_DATA = "com.sun.jndi.ldap.object.trustSerialData";
61  
62      /**
63       * The System property name {@value}.
64       *
65       * @see <a href=
66       *      "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>
67       * @since 3.15.0
68       */
69      public static final String COM_SUN_NET_HTTP_SERVER_HTTP_SERVER_PROVIDER = "com.sun.net.httpserver.HttpServerProvider";
70  
71      /**
72       * The System property name {@value}.
73       */
74      public static final String FILE_ENCODING = "file.encoding";
75  
76      /**
77       * The System property name {@value}.
78       */
79      public static final String FILE_SEPARATOR = "file.separator";
80  
81      /**
82       * The System property name {@value}.
83       *
84       * @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>
85       * @since 3.15.0
86       */
87      public static final String FTP_NON_PROXY_HOST = "ftp.nonProxyHosts";
88  
89      /**
90       * The System property name {@value}.
91       *
92       * @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>
93       * @since 3.15.0
94       */
95      public static final String FTP_PROXY_HOST = "ftp.proxyHost";
96  
97      /**
98       * The System property name {@value}.
99       *
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 }