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