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.entityReplacementLimit</a>
1228      * @since 3.15.0
1229      */
1230     public static final String JDK_XML_ENTITY_REPLACEMENT_LIMIT = "jdk.xml.entityReplacementLimit";
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      * The parsing rules are defined by {@link Boolean#parseBoolean(String)}.
1605      * </p>
1606      * <p>
1607      * If a {@link SecurityException} is caught, the return value is {@code null}.
1608      * </p>
1609      *
1610      * @param clazz           The Class to use for the SimpleClassName.
1611      * @param key             The subkey.
1612      * @param defaultIfAbsent The default value.
1613      * @return An int or {@code defaultIfAbsent}'s value.
1614      * @see Boolean#parseBoolean(String)
1615      * @see Class#getSimpleName()
1616      * @since 3.19.0
1617      */
1618     public static boolean getBoolean(final Class<?> clazz, final String key, final BooleanSupplier defaultIfAbsent) {
1619         return getBoolean(toKey(clazz, key, true), defaultIfAbsent);
1620     }
1621 
1622     /**
1623      * Gets the current value for the property named {@code key} as a {@code boolean}.
1624      * <p>
1625      * The parsing rules are defined by {@link Boolean#parseBoolean(String)}.
1626      * </p>
1627      * <p>
1628      * If a {@link SecurityException} is caught, the return value is {@code null}.
1629      * </p>
1630      *
1631      * @param key             The key.
1632      * @param defaultIfAbsent The default value.
1633      * @return A {@code boolean} or {@code defaultIfAbsent}'s value.
1634      * @see Boolean#parseBoolean(String)
1635      */
1636     public static boolean getBoolean(final String key, final BooleanSupplier defaultIfAbsent) {
1637         final String str = getProperty(key);
1638         return str == null ? defaultIfAbsent != null && defaultIfAbsent.getAsBoolean() : Boolean.parseBoolean(str);
1639     }
1640 
1641     /**
1642      * Gets the current value from the system properties map.
1643      * <p>
1644      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1645      * </p>
1646      *
1647      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1648      * @since 3.15.0
1649      */
1650     public static String getComSunJndiLdapObjectTrustSerialData() {
1651         return getProperty(COM_SUN_JNDI_LDAP_OBJECT_TRUST_SERIAL_DATA);
1652     }
1653 
1654     /**
1655      * Gets the current value from the system properties map.
1656      * <p>
1657      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1658      * </p>
1659      *
1660      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1661      * @since 3.15.0
1662      */
1663     public static String getComSunNetHttpServerHttpServerProvider() {
1664         return getProperty(COM_SUN_NET_HTTP_SERVER_HTTP_SERVER_PROVIDER);
1665     }
1666 
1667     /**
1668      * Gets the current value from the system properties map.
1669      * <p>
1670      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1671      * </p>
1672      * <p>
1673      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1674      * </p>
1675      *
1676      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1677      */
1678     public static String getFileEncoding() {
1679         return getProperty(FILE_ENCODING);
1680     }
1681 
1682     /**
1683      * Gets the current value from the system properties map.
1684      * <p>
1685      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1686      * </p>
1687      *
1688      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1689      */
1690     public static String getFileSeparator() {
1691         return getProperty(FILE_SEPARATOR);
1692     }
1693 
1694     /**
1695      * Gets the current value from the system properties map.
1696      * <p>
1697      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1698      * </p>
1699      *
1700      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1701      * @since 3.15.0
1702      */
1703     public static String getFtpNonProxyHost() {
1704         return getProperty(FTP_NON_PROXY_HOST);
1705     }
1706 
1707     /**
1708      * Gets the current value from the system properties map.
1709      * <p>
1710      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1711      * </p>
1712      *
1713      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1714      * @since 3.15.0
1715      */
1716     public static String getFtpProxyHost() {
1717         return getProperty(FTP_PROXY_HOST);
1718     }
1719 
1720     /**
1721      * Gets the current value from the system properties map.
1722      * <p>
1723      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1724      * </p>
1725      *
1726      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1727      * @since 3.15.0
1728      */
1729     public static String getFtpProxyPort() {
1730         return getProperty(FTP_PROXY_PORT);
1731     }
1732 
1733     /**
1734      * Gets the current value from the system properties map.
1735      * <p>
1736      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1737      * </p>
1738      *
1739      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1740      * @since 3.15.0
1741      */
1742     public static String getHttpAgent() {
1743         return getProperty(HTTP_AGENT);
1744     }
1745 
1746     /**
1747      * Gets the current value from the system properties map.
1748      * <p>
1749      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1750      * </p>
1751      *
1752      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1753      * @since 3.15.0
1754      */
1755     public static String getHttpAuthDigestCnonceRepeat() {
1756         return getProperty(HTTP_AUTH_DIGEST_CNONCE_REPEAT);
1757     }
1758 
1759     /**
1760      * Gets the current value from the system properties map.
1761      * <p>
1762      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1763      * </p>
1764      *
1765      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1766      * @since 3.15.0
1767      */
1768     public static String getHttpAuthDigestReenabledAlgorithms() {
1769         return getProperty(HTTP_AUTH_DIGEST_RE_ENABLED_ALGORITHMS);
1770     }
1771 
1772     /**
1773      * Gets the current value from the system properties map.
1774      * <p>
1775      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1776      * </p>
1777      *
1778      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1779      * @since 3.15.0
1780      */
1781     public static String getHttpAuthDigestValidateProxy() {
1782         return getProperty(HTTP_AUTH_DIGEST_VALIDATE_PROXY);
1783     }
1784 
1785     /**
1786      * Gets the current value from the system properties map.
1787      * <p>
1788      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1789      * </p>
1790      *
1791      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1792      * @since 3.15.0
1793      */
1794     public static String getHttpAuthDigestValidateServer() {
1795         return getProperty(HTTP_AUTH_DIGEST_VALIDATE_SERVER);
1796     }
1797 
1798     /**
1799      * Gets the current value from the system properties map.
1800      * <p>
1801      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1802      * </p>
1803      *
1804      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1805      * @since 3.15.0
1806      */
1807     public static String getHttpAuthNtlmDomain() {
1808         return getProperty(HTTP_AUTH_NTLM_DOMAIN);
1809     }
1810 
1811     /**
1812      * Gets the current value from the system properties map.
1813      * <p>
1814      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1815      * </p>
1816      *
1817      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1818      * @since 3.15.0
1819      */
1820     public static String getHttpKeepAlive() {
1821         return getProperty(HTTP_KEEP_ALIVE);
1822     }
1823 
1824     /**
1825      * Gets the current value from the system properties map.
1826      * <p>
1827      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1828      * </p>
1829      *
1830      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1831      * @since 3.15.0
1832      */
1833     public static String getHttpKeepAliveTimeProxy() {
1834         return getProperty(HTTP_KEEP_ALIVE_TIME_PROXY);
1835     }
1836 
1837     /**
1838      * Gets the current value from the system properties map.
1839      * <p>
1840      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1841      * </p>
1842      *
1843      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1844      * @since 3.15.0
1845      */
1846     public static String getHttpKeepAliveTimeServer() {
1847         return getProperty(HTTP_KEEP_ALIVE_TIME_SERVER);
1848     }
1849 
1850     /**
1851      * Gets the current value from the system properties map.
1852      * <p>
1853      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1854      * </p>
1855      *
1856      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1857      * @since 3.15.0
1858      */
1859     public static String getHttpMaxConnections() {
1860         return getProperty(HTTP_MAX_CONNECTIONS);
1861     }
1862 
1863     /**
1864      * Gets the current value from the system properties map.
1865      * <p>
1866      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1867      * </p>
1868      *
1869      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1870      * @since 3.15.0
1871      */
1872     public static String getHttpMaxRedirects() {
1873         return getProperty(HTTP_MAX_REDIRECTS);
1874     }
1875 
1876     /**
1877      * Gets the current value from the system properties map.
1878      * <p>
1879      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1880      * </p>
1881      *
1882      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1883      * @since 3.15.0
1884      */
1885     public static String getHttpNonProxyHosts() {
1886         return getProperty(HTTP_NON_PROXY_HOSTS);
1887     }
1888 
1889     /**
1890      * Gets the current value from the system properties map.
1891      * <p>
1892      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1893      * </p>
1894      *
1895      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1896      * @since 3.15.0
1897      */
1898     public static String getHttpProxyHost() {
1899         return getProperty(HTTP_PROXY_HOST);
1900     }
1901 
1902     /**
1903      * Gets the current value from the system properties map.
1904      * <p>
1905      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1906      * </p>
1907      *
1908      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1909      * @since 3.15.0
1910      */
1911     public static String getHttpProxyPort() {
1912         return getProperty(HTTP_PROXY_PORT);
1913     }
1914 
1915     /**
1916      * Gets the current value from the system properties map.
1917      * <p>
1918      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1919      * </p>
1920      *
1921      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1922      * @since 3.15.0
1923      */
1924     public static String getHttpsProxyHost() {
1925         return getProperty(HTTPS_PROXY_HOST);
1926     }
1927 
1928     /**
1929      * Gets the current value from the system properties map.
1930      * <p>
1931      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
1932      * </p>
1933      *
1934      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
1935      * @since 3.15.0
1936      */
1937     public static String getHttpsProxyPort() {
1938         return getProperty(HTTPS_PROXY_PORT);
1939     }
1940 
1941     /**
1942      * Gets the current value for the property named {@code "SimpleClassName.Key"} as an {@code int}.
1943      * <p>
1944      * The parsing rules are as {@link Integer#parseInt(String)}.
1945      * </p>
1946      * <p>
1947      * If a {@link SecurityException} is caught, the return value is {@code null}.
1948      * </p>
1949      *
1950      * @param clazz           The Class to use for the SimpleClassName.
1951      * @param key             The subkey.
1952      * @param defaultIfAbsent The default value.
1953      * @return An int or {@code defaultIfAbsent}'s value.
1954      * @see Integer#parseInt(String)
1955      * @see Class#getSimpleName()
1956      * @since 3.19.0
1957      */
1958     public static int getInt(final Class<?> clazz, final String key, final IntSupplier defaultIfAbsent) {
1959         return getInt(toKey(clazz, key, true), defaultIfAbsent);
1960     }
1961 
1962     /**
1963      * Gets the current value for the property named {@code key} as an {@code int}.
1964      * <p>
1965      * The parsing rules are as {@link Integer#parseInt(String)}.
1966      * </p>
1967      * <p>
1968      * If a {@link SecurityException} is caught, the return value is {@code null}.
1969      * </p>
1970      *
1971      * @param key             The key.
1972      * @param defaultIfAbsent The default value.
1973      * @return An {@code int} or {@code defaultIfAbsent}'s value.
1974      * @see Integer#parseInt(String)
1975      */
1976     public static int getInt(final String key, final IntSupplier defaultIfAbsent) {
1977         final String str = getProperty(key);
1978         return str == null ? defaultIfAbsent != null ? defaultIfAbsent.getAsInt() : 0 : Integer.parseInt(str);
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      * @see #JAVA_AWT_FONTS
1990      * @deprecated Deprecated without replacement.
1991      */
1992     @Deprecated
1993     public static String getJavaAwtFonts() {
1994         return getProperty(JAVA_AWT_FONTS);
1995     }
1996 
1997     /**
1998      * Gets the current value from the system properties map.
1999      * <p>
2000      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2001      * </p>
2002      *
2003      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2004      * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
2005      * @deprecated Deprecated without replacement.
2006      */
2007     @Deprecated
2008     public static String getJavaAwtGraphicsenv() {
2009         return getProperty(JAVA_AWT_GRAPHICSENV);
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_HEADLESS
2021      * @deprecated Deprecated without replacement.
2022      */
2023     @Deprecated
2024     public static String getJavaAwtHeadless() {
2025         return getProperty(JAVA_AWT_HEADLESS);
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">System Properties</a>
2036      * @see #JAVA_AWT_PRINTERJOB
2037      * @deprecated Deprecated without replacement.
2038      */
2039     @Deprecated
2040     public static String getJavaAwtPrinterjob() {
2041         return getProperty(JAVA_AWT_PRINTERJOB);
2042     }
2043 
2044     /**
2045      * Gets the current value from the system properties map.
2046      * <p>
2047      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2048      * </p>
2049      *
2050      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2051      * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">java.class.path</a>
2052      * @see #JAVA_CLASS_PATH
2053      */
2054     public static String getJavaClassPath() {
2055         return getProperty(JAVA_CLASS_PATH);
2056     }
2057 
2058     /**
2059      * Gets the current value from the system properties map.
2060      * <p>
2061      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2062      * </p>
2063      *
2064      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2065      */
2066     public static String getJavaClassVersion() {
2067         return getProperty(JAVA_CLASS_VERSION);
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      * @see <a href="https://bugs.openjdk.org/browse/JDK-8305998">JDK-8305998</a>
2078      * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
2079      * @deprecated Deprecated without replacement.
2080      */
2081     @Deprecated
2082     public static String getJavaCompiler() {
2083         return getProperty(JAVA_COMPILER);
2084     }
2085 
2086     /**
2087      * Gets the current value from the system properties map.
2088      * <p>
2089      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2090      * </p>
2091      *
2092      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2093      * @since 3.15.0
2094      */
2095     public static String getJavaContentHandlerPkgs() {
2096         return getProperty(JAVA_CONTENT_HANDLER_PKGS);
2097     }
2098 
2099     /**
2100      * Gets the current value from the system properties map.
2101      * <p>
2102      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2103      * </p>
2104      *
2105      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2106      * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
2107      * @deprecated Deprecated without replacement.
2108      */
2109     @Deprecated
2110     public static String getJavaEndorsedDirs() {
2111         return getProperty(JAVA_ENDORSED_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      * @see <a href="https://docs.oracle.com/en/java/javase/25/docs/api/system-properties.html">System Properties</a>
2122      * @see #JAVA_EXT_DIRS
2123      * @deprecated Deprecated without replacement.
2124      */
2125     @Deprecated
2126     public static String getJavaExtDirs() {
2127         return getProperty(JAVA_EXT_DIRS);
2128     }
2129 
2130     /**
2131      * Gets the current value from the system properties map.
2132      * <p>
2133      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2134      * </p>
2135      *
2136      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2137      */
2138     public static String getJavaHome() {
2139         return getProperty(JAVA_HOME);
2140     }
2141 
2142     /**
2143      * Gets the current value from the system properties map.
2144      * <p>
2145      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2146      * </p>
2147      *
2148      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2149      */
2150     public static String getJavaIoTmpdir() {
2151         return getProperty(JAVA_IO_TMPDIR);
2152     }
2153 
2154     /**
2155      * Gets the current value from the system properties map.
2156      * <p>
2157      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2158      * </p>
2159      *
2160      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2161      */
2162     public static String getJavaLibraryPath() {
2163         return getProperty(JAVA_LIBRARY_PATH);
2164     }
2165 
2166     /**
2167      * Gets the current value from the system properties map.
2168      * <p>
2169      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2170      * </p>
2171      * <p>
2172      * Java 9 and above.
2173      * </p>
2174      *
2175      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2176      */
2177     public static String getJavaLocaleProviders() {
2178         return getProperty(JAVA_LOCALE_PROVIDERS);
2179     }
2180 
2181     /**
2182      * Gets the current value from the system properties map.
2183      * <p>
2184      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2185      * </p>
2186      *
2187      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2188      * @since 3.15.0
2189      */
2190     public static String getJavaLocaleUseOldIsoCodes() {
2191         return getProperty(JAVA_LOCALE_USE_OLD_ISO_CODES);
2192     }
2193 
2194     /**
2195      * Gets the current value from the system properties map.
2196      * <p>
2197      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2198      * </p>
2199      *
2200      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2201      * @since 3.15.0
2202      */
2203     public static String getJavaNetPreferIpv4Stack() {
2204         return getProperty(JAVA_NET_PREFER_IPV4_STACK);
2205     }
2206 
2207     /**
2208      * Gets the current value from the system properties map.
2209      * <p>
2210      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2211      * </p>
2212      *
2213      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2214      * @since 3.15.0
2215      */
2216     public static String getJavaNetPreferIpv6Addresses() {
2217         return getProperty(JAVA_NET_PREFER_IPV6_ADDRESSES);
2218     }
2219 
2220     /**
2221      * Gets the current value from the system properties map.
2222      * <p>
2223      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2224      * </p>
2225      *
2226      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2227      * @since 3.15.0
2228      */
2229     public static String getJavaNetSocksPassword() {
2230         return getProperty(JAVA_NET_SOCKS_PASSWORD);
2231     }
2232 
2233     /**
2234      * Gets the current value from the system properties map.
2235      * <p>
2236      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2237      * </p>
2238      *
2239      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2240      * @since 3.15.0
2241      */
2242     public static String getJavaNetSocksUserName() {
2243         return getProperty(JAVA_NET_SOCKS_USER_NAME);
2244     }
2245 
2246     /**
2247      * Gets the current value from the system properties map.
2248      * <p>
2249      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2250      * </p>
2251      *
2252      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2253      * @since 3.15.0
2254      */
2255     public static String getJavaNetUseSystemProxies() {
2256         return getProperty(JAVA_NET_USE_SYSTEM_PROXIES);
2257     }
2258 
2259     /**
2260      * Gets the current value from the system properties map.
2261      * <p>
2262      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2263      * </p>
2264      *
2265      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2266      * @since 3.15.0
2267      */
2268     public static String getJavaNioChannelsDefaultThreadPoolInitialSize() {
2269         return getProperty(JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_INITIAL_SIZE);
2270     }
2271 
2272     /**
2273      * Gets the current value from the system properties map.
2274      * <p>
2275      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2276      * </p>
2277      *
2278      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2279      * @since 3.15.0
2280      */
2281     public static String getJavaNioChannelsDefaultThreadPoolThreadFactory() {
2282         return getProperty(JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_THREAD_FACTORY);
2283     }
2284 
2285     /**
2286      * Gets the current value from the system properties map.
2287      * <p>
2288      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2289      * </p>
2290      *
2291      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2292      * @since 3.15.0
2293      */
2294     public static String getJavaNioChannelsSpiAsynchronousChannelProvider() {
2295         return getProperty(JAVA_NIO_CHANNELS_SPI_ASYNCHRONOUS_CHANNEL_PROVIDER);
2296     }
2297 
2298     /**
2299      * Gets the current value from the system properties map.
2300      * <p>
2301      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2302      * </p>
2303      *
2304      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2305      * @since 3.15.0
2306      */
2307     public static String getJavaNioChannelsSpiSelectorProvider() {
2308         return getProperty(JAVA_NIO_CHANNELS_SPI_SELECTOR_PROVIDER);
2309     }
2310 
2311     /**
2312      * Gets the current value from the system properties map.
2313      * <p>
2314      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2315      * </p>
2316      *
2317      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2318      * @since 3.15.0
2319      */
2320     public static String getJavaNioFileSpiDefaultFileSystemProvider() {
2321         return getProperty(JAVA_NIO_FILE_SPI_DEFAULT_FILE_SYSTEM_PROVIDER);
2322     }
2323 
2324     /**
2325      * Gets the current value from the system properties map.
2326      * <p>
2327      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2328      * </p>
2329      *
2330      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2331      * @since 3.15.0
2332      */
2333     public static String getJavaPropertiesDate() {
2334         return getProperty(JAVA_PROPERTIES_DATE);
2335     }
2336 
2337     /**
2338      * Gets the current value from the system properties map.
2339      * <p>
2340      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2341      * </p>
2342      *
2343      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2344      * @since 3.15.0
2345      */
2346     public static String getJavaProtocolHandlerPkgs() {
2347         return getProperty(JAVA_PROTOCOL_HANDLER_PKGS);
2348     }
2349 
2350     /**
2351      * Gets the current value from the system properties map.
2352      * <p>
2353      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2354      * </p>
2355      *
2356      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2357      * @since 3.15.0
2358      */
2359     public static String getJavaRmiServerCodebase() {
2360         return getProperty(JAVA_RMI_SERVER_CODEBASE);
2361     }
2362 
2363     /**
2364      * Gets the current value from the system properties map.
2365      * <p>
2366      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2367      * </p>
2368      *
2369      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2370      * @since 3.15.0
2371      */
2372     public static String getJavaRmiServerHostName() {
2373         return getProperty(JAVA_RMI_SERVER_HOST_NAME);
2374     }
2375 
2376     /**
2377      * Gets the current value from the system properties map.
2378      * <p>
2379      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2380      * </p>
2381      *
2382      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2383      * @since 3.15.0
2384      */
2385     public static String getJavaRmiServerRandomIds() {
2386         return getProperty(JAVA_RMI_SERVER_RANDOM_IDS);
2387     }
2388 
2389     /**
2390      * Gets the current value from the system properties map.
2391      * <p>
2392      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2393      * </p>
2394      *
2395      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2396      * @since 3.15.0
2397      */
2398     public static String getJavaRmiServerRmiClassLoaderSpi() {
2399         return getProperty(JAVA_RMI_SERVER_RMI_CLASS_LOADER_SPI);
2400     }
2401 
2402     /**
2403      * Gets the current value from the system properties map.
2404      * <p>
2405      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2406      * </p>
2407      *
2408      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2409      */
2410     public static String getJavaRuntimeName() {
2411         return getProperty(JAVA_RUNTIME_NAME);
2412     }
2413 
2414     /**
2415      * Gets the current value from the system properties map.
2416      * <p>
2417      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2418      * </p>
2419      *
2420      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2421      */
2422     public static String getJavaRuntimeVersion() {
2423         return getProperty(JAVA_RUNTIME_VERSION);
2424     }
2425 
2426     /**
2427      * Gets the current value from the system properties map.
2428      * <p>
2429      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2430      * </p>
2431      *
2432      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2433      * @since 3.15.0
2434      */
2435     public static String getJavaSecurityAuthLoginConfig() {
2436         return getProperty(JAVA_SECURITY_AUTH_LOGIN_CONFIG);
2437     }
2438 
2439     /**
2440      * Gets the current value from the system properties map.
2441      * <p>
2442      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2443      * </p>
2444      *
2445      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2446      * @since 3.15.0
2447      */
2448     public static String getJavaSecurityManager() {
2449         return getProperty(JAVA_SECURITY_MANAGER);
2450     }
2451 
2452     /**
2453      * Gets the current value from the system properties map.
2454      * <p>
2455      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2456      * </p>
2457      *
2458      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2459      * @since 3.15.0
2460      */
2461     public static String getJavaSpecificationMaintenanceVersion() {
2462         return getProperty(JAVA_SPECIFICATION_MAINTENANCE_VERSION);
2463     }
2464 
2465     /**
2466      * Gets the current value from the system properties map.
2467      * <p>
2468      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2469      * </p>
2470      *
2471      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2472      */
2473     public static String getJavaSpecificationName() {
2474         return getProperty(JAVA_SPECIFICATION_NAME);
2475     }
2476 
2477     /**
2478      * Gets the current value from the system properties map.
2479      * <p>
2480      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2481      * </p>
2482      *
2483      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2484      */
2485     public static String getJavaSpecificationVendor() {
2486         return getProperty(JAVA_SPECIFICATION_VENDOR);
2487     }
2488 
2489     /**
2490      * Gets the current value from the system properties map.
2491      * <p>
2492      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2493      * </p>
2494      *
2495      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2496      */
2497     public static String getJavaSpecificationVersion() {
2498         return getProperty(JAVA_SPECIFICATION_VERSION);
2499     }
2500 
2501     /**
2502      * Gets the current value from the system properties map for {@value #JAVA_SPECIFICATION_VERSION}.
2503      * <p>
2504      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2505      * </p>
2506      *
2507      * @param defaultValue get this Supplier when the property is empty or throws SecurityException.
2508      * @return The system property value or {@code defaultValue} if the property is absent or a security problem occurs.
2509      * @since 3.15.0
2510      */
2511     public static String getJavaSpecificationVersion(final String defaultValue) {
2512         return getProperty(JAVA_SPECIFICATION_VERSION, defaultValue);
2513     }
2514 
2515     /**
2516      * Gets the current value from the system properties map for {@value #JAVA_SYSTEM_CLASS_LOADER}.
2517      * <p>
2518      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2519      * </p>
2520      *
2521      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2522      * @since 3.15.0
2523      */
2524     public static String getJavaSystemClassLoader() {
2525         return getProperty(JAVA_SYSTEM_CLASS_LOADER);
2526     }
2527 
2528     /**
2529      * Gets the current value from the system properties map for {@value #JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER}.
2530      * <p>
2531      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2532      * </p>
2533      *
2534      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2535      * @since 3.15.0
2536      */
2537     public static String getJavaTimeZoneDefaultZoneRulesProvider() {
2538         return getProperty(JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER);
2539     }
2540 
2541     /**
2542      * Gets the current value from the system properties map for {@value #JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER}.
2543      * <p>
2544      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2545      * </p>
2546      *
2547      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2548      * @since 3.15.0
2549      */
2550     public static String getJavaUtilConcurrentForkJoinPoolCommonExceptionHandler() {
2551         return getProperty(JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER);
2552     }
2553 
2554     /**
2555      * Gets the current value from the system properties map for {@value #JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES}.
2556      * <p>
2557      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2558      * </p>
2559      *
2560      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2561      * @since 3.15.0
2562      */
2563     public static String getJavaUtilConcurrentForkJoinPoolCommonMaximumSpares() {
2564         return getProperty(JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES);
2565     }
2566 
2567     /**
2568      * Gets the current value from the system properties map for {@value #JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM}.
2569      * <p>
2570      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2571      * </p>
2572      *
2573      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2574      * @since 3.15.0
2575      */
2576     public static String getJavaUtilConcurrentForkJoinPoolCommonParallelism() {
2577         return getProperty(JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM);
2578     }
2579 
2580     /**
2581      * Gets the current value from the system properties map for {@value #JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY}.
2582      * <p>
2583      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2584      * </p>
2585      *
2586      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2587      * @since 3.15.0
2588      */
2589     public static String getJavaUtilConcurrentForkJoinPoolCommonThreadFactory() {
2590         return getProperty(JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY);
2591     }
2592 
2593     /**
2594      * Gets the current value from the system properties map for {@value #JAVA_UTIL_CURRENCY_DATA}.
2595      * <p>
2596      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2597      * </p>
2598      *
2599      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2600      * @since 3.15.0
2601      */
2602     public static String getJavaUtilCurrencyData() {
2603         return getProperty(JAVA_UTIL_CURRENCY_DATA);
2604     }
2605 
2606     /**
2607      * Gets the current value from the system properties map for {@value #JAVA_UTIL_LOGGING_CONFIG_CLASS}.
2608      * <p>
2609      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2610      * </p>
2611      *
2612      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2613      * @since 3.15.0
2614      */
2615     public static String getJavaUtilLoggingConfigClass() {
2616         return getProperty(JAVA_UTIL_LOGGING_CONFIG_CLASS);
2617     }
2618 
2619     /**
2620      * Gets the current value from the system properties map for {@value #JAVA_UTIL_LOGGING_CONFIG_FILE}.
2621      * <p>
2622      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2623      * </p>
2624      *
2625      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2626      * @since 3.15.0
2627      */
2628     public static String getJavaUtilLoggingConfigFile() {
2629         return getProperty(JAVA_UTIL_LOGGING_CONFIG_FILE);
2630     }
2631 
2632     /**
2633      * Gets the current value from the system properties map for {@value #JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT}.
2634      * <p>
2635      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2636      * </p>
2637      *
2638      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2639      * @since 3.15.0
2640      */
2641     public static String getJavaUtilLoggingSimpleFormatterFormat() {
2642         return getProperty(JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT);
2643     }
2644 
2645     /**
2646      * Gets the current value from the system properties map for {@value #JAVA_UTIL_PREFS_PREFERENCES_FACTORY}.
2647      * <p>
2648      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2649      * </p>
2650      *
2651      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2652      */
2653     public static String getJavaUtilPrefsPreferencesFactory() {
2654         return getProperty(JAVA_UTIL_PREFS_PREFERENCES_FACTORY);
2655     }
2656 
2657     /**
2658      * Gets the current value from the system properties map for {@value #JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING}.
2659      * <p>
2660      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2661      * </p>
2662      *
2663      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2664      * @since 3.15.0
2665      */
2666     public static String getJavaUtilPropertyResourceBundleEncoding() {
2667         return getProperty(JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING);
2668     }
2669 
2670     /**
2671      * Gets the current value from the system properties map for {@value #JAVA_VENDOR}.
2672      * <p>
2673      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2674      * </p>
2675      *
2676      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2677      */
2678     public static String getJavaVendor() {
2679         return getProperty(JAVA_VENDOR);
2680     }
2681 
2682     /**
2683      * Gets the current value from the system properties map for {@value #JAVA_VENDOR_URL}.
2684      * <p>
2685      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2686      * </p>
2687      *
2688      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2689      */
2690     public static String getJavaVendorUrl() {
2691         return getProperty(JAVA_VENDOR_URL);
2692     }
2693 
2694     /**
2695      * Gets the current value from the system properties map for {@value #JAVA_VENDOR_VERSION}.
2696      * <p>
2697      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2698      * </p>
2699      *
2700      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2701      * @since 3.15.0
2702      */
2703     public static String getJavaVendorVersion() {
2704         return getProperty(JAVA_VENDOR_VERSION);
2705     }
2706 
2707     /**
2708      * Gets the current value from the system properties map for {@value #JAVA_VERSION}.
2709      * <p>
2710      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2711      * </p>
2712      *
2713      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2714      */
2715     public static String getJavaVersion() {
2716         return getProperty(JAVA_VERSION);
2717     }
2718 
2719     /**
2720      * Gets the current value from the system properties map for {@value #JAVA_VERSION_DATE}.
2721      * <p>
2722      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2723      * </p>
2724      *
2725      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2726      * @since 3.15.0
2727      */
2728     public static String getJavaVersionDate() {
2729         return getProperty(JAVA_VERSION_DATE);
2730     }
2731 
2732     /**
2733      * Gets the current value from the system properties map for {@value #JAVA_VM_INFO}.
2734      * <p>
2735      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2736      * </p>
2737      *
2738      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2739      */
2740     public static String getJavaVmInfo() {
2741         return getProperty(JAVA_VM_INFO);
2742     }
2743 
2744     /**
2745      * Gets the current value from the system properties map for {@value #JAVA_VM_NAME}.
2746      * <p>
2747      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2748      * </p>
2749      *
2750      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2751      */
2752     public static String getJavaVmName() {
2753         return getProperty(JAVA_VM_NAME);
2754     }
2755 
2756     /**
2757      * Gets the current value from the system properties map for {@value #JAVA_VM_SPECIFICATION_NAME}.
2758      * <p>
2759      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2760      * </p>
2761      *
2762      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2763      */
2764     public static String getJavaVmSpecificationName() {
2765         return getProperty(JAVA_VM_SPECIFICATION_NAME);
2766     }
2767 
2768     /**
2769      * Gets the current value from the system properties map for {@value #JAVA_VM_SPECIFICATION_VENDOR}.
2770      * <p>
2771      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2772      * </p>
2773      *
2774      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2775      */
2776     public static String getJavaVmSpecificationVendor() {
2777         return getProperty(JAVA_VM_SPECIFICATION_VENDOR);
2778     }
2779 
2780     /**
2781      * Gets the current value from the system properties map for {@value #JAVA_VM_SPECIFICATION_VERSION}.
2782      * <p>
2783      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2784      * </p>
2785      *
2786      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2787      */
2788     public static String getJavaVmSpecificationVersion() {
2789         return getProperty(JAVA_VM_SPECIFICATION_VERSION);
2790     }
2791 
2792     /**
2793      * Gets the current value from the system properties map for {@value #JAVA_VM_VENDOR}.
2794      * <p>
2795      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2796      * </p>
2797      *
2798      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2799      */
2800     public static String getJavaVmVendor() {
2801         return getProperty(JAVA_VM_VENDOR);
2802     }
2803 
2804     /**
2805      * Gets the current value from the system properties map for {@value #JAVA_VM_VERSION}.
2806      * <p>
2807      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2808      * </p>
2809      *
2810      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2811      */
2812     public static String getJavaVmVersion() {
2813         return getProperty(JAVA_VM_VERSION);
2814     }
2815 
2816     /**
2817      * Gets the current value from the system properties map for {@value #JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES}.
2818      * <p>
2819      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2820      * </p>
2821      *
2822      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2823      * @since 3.15.0
2824      */
2825     public static String getJavaxAccessibilityAssistiveTechnologies() {
2826         return getProperty(JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES);
2827     }
2828 
2829     /**
2830      * Gets the current value from the system properties map for {@value #JAVA_XML_CONFIG_FILE}.
2831      * <p>
2832      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2833      * </p>
2834      *
2835      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2836      * @since 3.15.0
2837      */
2838     public static String getJavaXmlConfigFile() {
2839         return getProperty(JAVA_XML_CONFIG_FILE);
2840     }
2841 
2842     /**
2843      * Gets the current value from the system properties map for {@value #JAVAX_NET_SSL_SESSION_CACHE_SIZE}.
2844      * <p>
2845      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2846      * </p>
2847      *
2848      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2849      * @since 3.15.0
2850      */
2851     public static String getJavaxNetSslSessionCacheSize() {
2852         return getProperty(JAVAX_NET_SSL_SESSION_CACHE_SIZE);
2853     }
2854 
2855     /**
2856      * Gets the current value from the system properties map for {@value #JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES}.
2857      * <p>
2858      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2859      * </p>
2860      *
2861      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2862      * @since 3.15.0
2863      */
2864     public static String getJavaxRmiSslClientEnabledCipherSuites() {
2865         return getProperty(JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES);
2866     }
2867 
2868     /**
2869      * Gets the current value from the system properties map for {@value #JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS}.
2870      * <p>
2871      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2872      * </p>
2873      *
2874      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2875      * @since 3.15.0
2876      */
2877     public static String getJavaxRmiSslClientEnabledProtocols() {
2878         return getProperty(JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS);
2879     }
2880 
2881     /**
2882      * Gets the current value from the system properties map for {@value #JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY}.
2883      * <p>
2884      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2885      * </p>
2886      *
2887      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2888      * @since 3.15.0
2889      */
2890     public static String getJavaxSecurityAuthUseSubjectCredsOnly() {
2891         return getProperty(JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY);
2892     }
2893 
2894     /**
2895      * Gets the current value from the system properties map for {@value #JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE}.
2896      * <p>
2897      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2898      * </p>
2899      *
2900      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2901      * @since 3.15.0
2902      */
2903     public static String getJavaxSmartCardIoTerminalFactoryDefaultType() {
2904         return getProperty(JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE);
2905     }
2906 
2907     /**
2908      * Gets the current value from the system properties map for {@value #JDBC_DRIVERS}.
2909      * <p>
2910      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2911      * </p>
2912      *
2913      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2914      * @since 3.15.0
2915      */
2916     public static String getJdbcDrivers() {
2917         return getProperty(JDBC_DRIVERS);
2918     }
2919 
2920     /**
2921      * Gets the current value from the system properties map for {@value #JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES}.
2922      * <p>
2923      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2924      * </p>
2925      *
2926      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2927      * @since 3.15.0
2928      */
2929     public static String getJdkHttpAuthProxyingDisabledSchemes() {
2930         return getProperty(JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES);
2931     }
2932 
2933     /**
2934      * Gets the current value from the system properties map for {@value #JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES}.
2935      * <p>
2936      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2937      * </p>
2938      *
2939      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2940      * @since 3.15.0
2941      */
2942     public static String getJdkHttpAuthTunnelingDisabledSchemes() {
2943         return getProperty(JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES);
2944     }
2945 
2946     /**
2947      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS}.
2948      * <p>
2949      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2950      * </p>
2951      *
2952      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2953      * @since 3.15.0
2954      */
2955     public static String getJdkHttpClientAllowRestrictedHeaders() {
2956         return getProperty(JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS);
2957     }
2958 
2959     /**
2960      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT}.
2961      * <p>
2962      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2963      * </p>
2964      *
2965      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2966      * @since 3.15.0
2967      */
2968     public static String getJdkHttpClientAuthRetryLimit() {
2969         return getProperty(JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT);
2970     }
2971 
2972     /**
2973      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_BUF_SIZE}.
2974      * <p>
2975      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2976      * </p>
2977      *
2978      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2979      * @since 3.15.0
2980      */
2981     public static String getJdkHttpClientBufSize() {
2982         return getProperty(JDK_HTTP_CLIENT_BUF_SIZE);
2983     }
2984 
2985     /**
2986      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE}.
2987      * <p>
2988      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
2989      * </p>
2990      *
2991      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
2992      * @since 3.15.0
2993      */
2994     public static String getJdkHttpClientConnectionPoolSize() {
2995         return getProperty(JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE);
2996     }
2997 
2998     /**
2999      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE}.
3000      * <p>
3001      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3002      * </p>
3003      *
3004      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3005      * @since 3.15.0
3006      */
3007     public static String getJdkHttpClientConnectionWindowSize() {
3008         return getProperty(JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE);
3009     }
3010 
3011     /**
3012      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT}.
3013      * <p>
3014      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3015      * </p>
3016      *
3017      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3018      * @since 3.15.0
3019      */
3020     public static String getJdkHttpClientDisableRetryConnect() {
3021         return getProperty(JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT);
3022     }
3023 
3024     /**
3025      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY}.
3026      * <p>
3027      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3028      * </p>
3029      *
3030      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3031      * @since 3.15.0
3032      */
3033     public static String getJdkHttpClientEnableAllMethodRetry() {
3034         return getProperty(JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY);
3035     }
3036 
3037     /**
3038      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_ENABLE_PUSH}.
3039      * <p>
3040      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3041      * </p>
3042      *
3043      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3044      * @since 3.15.0
3045      */
3046     public static String getJdkHttpClientEnablePush() {
3047         return getProperty(JDK_HTTP_CLIENT_ENABLE_PUSH);
3048     }
3049 
3050     /**
3051      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE}.
3052      * <p>
3053      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3054      * </p>
3055      *
3056      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3057      * @since 3.15.0
3058      */
3059     public static String getJdkHttpClientHpackMaxHeaderTableSize() {
3060         return getProperty(JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE);
3061     }
3062 
3063     /**
3064      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_HTTP_CLIENT_LOG}.
3065      * <p>
3066      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3067      * </p>
3068      *
3069      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3070      * @since 3.15.0
3071      */
3072     public static String getJdkHttpClientHttpClientLog() {
3073         return getProperty(JDK_HTTP_CLIENT_HTTP_CLIENT_LOG);
3074     }
3075 
3076     /**
3077      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT}.
3078      * <p>
3079      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3080      * </p>
3081      *
3082      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3083      * @since 3.15.0
3084      */
3085     public static String getJdkHttpClientKeepAliveTimeout() {
3086         return getProperty(JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT);
3087     }
3088 
3089     /**
3090      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2}.
3091      * <p>
3092      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3093      * </p>
3094      *
3095      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3096      * @since 3.15.0
3097      */
3098     public static String getJdkHttpClientKeepAliveTimeoutH2() {
3099         return getProperty(JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2);
3100     }
3101 
3102     /**
3103      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_MAX_FRAME_SIZE}.
3104      * <p>
3105      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3106      * </p>
3107      *
3108      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3109      * @since 3.15.0
3110      */
3111     public static String getJdkHttpClientMaxFrameSize() {
3112         return getProperty(JDK_HTTP_CLIENT_MAX_FRAME_SIZE);
3113     }
3114 
3115     /**
3116      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_MAX_STREAMS}.
3117      * <p>
3118      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3119      * </p>
3120      *
3121      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3122      * @since 3.15.0
3123      */
3124     public static String getJdkHttpClientMaxStreams() {
3125         return getProperty(JDK_HTTP_CLIENT_MAX_STREAMS);
3126     }
3127 
3128     /**
3129      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE}.
3130      * <p>
3131      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3132      * </p>
3133      *
3134      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3135      * @since 3.15.0
3136      */
3137     public static String getJdkHttpClientReceiveBufferSize() {
3138         return getProperty(JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE);
3139     }
3140 
3141     /**
3142      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT}.
3143      * <p>
3144      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3145      * </p>
3146      *
3147      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3148      * @since 3.15.0
3149      */
3150     public static String getJdkHttpClientRedirectsRetryLimit() {
3151         return getProperty(JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT);
3152     }
3153 
3154     /**
3155      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_SEND_BUFFER_SIZE}.
3156      * <p>
3157      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3158      * </p>
3159      *
3160      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3161      * @since 3.15.0
3162      */
3163     public static String getJdkHttpClientSendBufferSize() {
3164         return getProperty(JDK_HTTP_CLIENT_SEND_BUFFER_SIZE);
3165     }
3166 
3167     /**
3168      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE}.
3169      * <p>
3170      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3171      * </p>
3172      *
3173      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3174      * @since 3.15.0
3175      */
3176     public static String getJdkHttpClientWebSocketWriteBufferSize() {
3177         return getProperty(JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE);
3178     }
3179 
3180     /**
3181      * Gets the current value from the system properties map for {@value #JDK_HTTP_CLIENT_WINDOW_SIZE}.
3182      * <p>
3183      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3184      * </p>
3185      *
3186      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3187      * @since 3.15.0
3188      */
3189     public static String getJdkHttpClientWindowSize() {
3190         return getProperty(JDK_HTTP_CLIENT_WINDOW_SIZE);
3191     }
3192 
3193     /**
3194      * Gets the current value from the system properties map for {@value #JDK_HTTP_SERVER_MAX_CONNECTIONS}.
3195      * <p>
3196      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3197      * </p>
3198      *
3199      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3200      * @since 3.15.0
3201      */
3202     public static String getJdkHttpServerMaxConnections() {
3203         return getProperty(JDK_HTTP_SERVER_MAX_CONNECTIONS);
3204     }
3205 
3206     /**
3207      * Gets the current value from the system properties map for {@value #JDK_HTTPS_NEGOTIATE_CBT}.
3208      * <p>
3209      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3210      * </p>
3211      *
3212      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3213      * @since 3.15.0
3214      */
3215     public static String getJdkHttpsNegotiateCbt() {
3216         return getProperty(JDK_HTTPS_NEGOTIATE_CBT);
3217     }
3218 
3219     /**
3220      * Gets the current value from the system properties map for {@value #JDK_INCLUDE_IN_EXCEPTIONS}.
3221      * <p>
3222      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3223      * </p>
3224      *
3225      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3226      * @since 3.15.0
3227      */
3228     public static String getJdkIncludeInExceptions() {
3229         return getProperty(JDK_INCLUDE_IN_EXCEPTIONS);
3230     }
3231 
3232     /**
3233      * Gets the current value from the system properties map for {@value #JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION}.
3234      * <p>
3235      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3236      * </p>
3237      *
3238      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3239      * @since 3.15.0
3240      */
3241     public static String getJdkInternalHttpClientDisableHostNameVerification() {
3242         return getProperty(JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION);
3243     }
3244 
3245     /**
3246      * Gets the current value from the system properties map for {@value #JDK_IO_PERMISSIONS_USE_CANONICAL_PATH}.
3247      * <p>
3248      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3249      * </p>
3250      *
3251      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3252      * @since 3.15.0
3253      */
3254     public static String getJdkIoPermissionsUseCanonicalPath() {
3255         return getProperty(JDK_IO_PERMISSIONS_USE_CANONICAL_PATH);
3256     }
3257 
3258     /**
3259      * Gets the current value from the system properties map for {@value #JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER}.
3260      * <p>
3261      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3262      * </p>
3263      *
3264      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3265      * @since 3.15.0
3266      */
3267     public static String getJdkJndiLdapObjectFactoriesFilter() {
3268         return getProperty(JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER);
3269     }
3270 
3271     /**
3272      * Gets the current value from the system properties map for {@value #JDK_JNDI_OBJECT_FACTORIES_FILTER}.
3273      * <p>
3274      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3275      * </p>
3276      *
3277      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3278      * @since 3.15.0
3279      */
3280     public static String getJdkJndiObjectFactoriesFilter() {
3281         return getProperty(JDK_JNDI_OBJECT_FACTORIES_FILTER);
3282     }
3283 
3284     /**
3285      * Gets the current value from the system properties map for {@value #JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER}.
3286      * <p>
3287      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3288      * </p>
3289      *
3290      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3291      * @since 3.15.0
3292      */
3293     public static String getJdkJndiRmiObjectFactoriesFilter() {
3294         return getProperty(JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER);
3295     }
3296 
3297     /**
3298      * Gets the current value from the system properties map for {@value #JDK_MODULE_MAIN}.
3299      * <p>
3300      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3301      * </p>
3302      *
3303      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3304      * @since 3.15.0
3305      */
3306     public static String getJdkModuleMain() {
3307         return getProperty(JDK_MODULE_MAIN);
3308     }
3309 
3310     /**
3311      * Gets the current value from the system properties map for {@value #JDK_MODULE_MAIN_CLASS}.
3312      * <p>
3313      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3314      * </p>
3315      *
3316      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3317      * @since 3.15.0
3318      */
3319     public static String getJdkModuleMainClass() {
3320         return getProperty(JDK_MODULE_MAIN_CLASS);
3321     }
3322 
3323     /**
3324      * Gets the current value from the system properties map for {@value #JDK_MODULE_PATH}.
3325      * <p>
3326      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3327      * </p>
3328      *
3329      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3330      * @since 3.15.0
3331      */
3332     public static String getJdkModulePath() {
3333         return getProperty(JDK_MODULE_PATH);
3334     }
3335 
3336     /**
3337      * Gets the current value from the system properties map for {@value #JDK_MODULE_UPGRADE_PATH}.
3338      * <p>
3339      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3340      * </p>
3341      *
3342      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3343      * @since 3.15.0
3344      */
3345     public static String getJdkModuleUpgradePath() {
3346         return getProperty(JDK_MODULE_UPGRADE_PATH);
3347     }
3348 
3349     /**
3350      * Gets the current value from the system properties map for {@value #JDK_NET_UNIX_DOMAIN_TMPDIR}.
3351      * <p>
3352      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3353      * </p>
3354      *
3355      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3356      * @since 3.15.0
3357      */
3358     public static String getJdkNetUnixDomainTmpDir() {
3359         return getProperty(JDK_NET_UNIX_DOMAIN_TMPDIR);
3360     }
3361 
3362     /**
3363      * Gets the current value from the system properties map for {@value #JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES}.
3364      * <p>
3365      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3366      * </p>
3367      *
3368      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3369      * @since 3.15.0
3370      */
3371     public static String getJdkNetUrlClassPathShowIgnoredClassPathEntries() {
3372         return getProperty(JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES);
3373     }
3374 
3375     /**
3376      * Gets the current value from the system properties map for {@value #JDK_SERIAL_FILTER}.
3377      * <p>
3378      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3379      * </p>
3380      *
3381      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3382      * @since 3.15.0
3383      */
3384     public static String getJdkSerialFilter() {
3385         return getProperty(JDK_SERIAL_FILTER);
3386     }
3387 
3388     /**
3389      * Gets the current value from the system properties map for {@value #JDK_SERIAL_FILTER_FACTORY}.
3390      * <p>
3391      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3392      * </p>
3393      *
3394      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3395      * @since 3.15.0
3396      */
3397     public static String getJdkSerialFilterFactory() {
3398         return getProperty(JDK_SERIAL_FILTER_FACTORY);
3399     }
3400 
3401     /**
3402      * Gets the current value from the system properties map for {@value #JDK_TLS_CLIENT_SIGNATURE_SCHEMES}.
3403      * <p>
3404      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3405      * </p>
3406      *
3407      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3408      * @since 3.15.0
3409      */
3410     public static String getJdkTlsClientSignatureSchemes() {
3411         return getProperty(JDK_TLS_CLIENT_SIGNATURE_SCHEMES);
3412     }
3413 
3414     /**
3415      * Gets the current value from the system properties map for {@value #JDK_TLS_NAMED_GROUPS}.
3416      * <p>
3417      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3418      * </p>
3419      *
3420      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3421      * @since 3.15.0
3422      */
3423     public static String getJdkTlsNamedGroups() {
3424         return getProperty(JDK_TLS_NAMED_GROUPS);
3425     }
3426 
3427     /**
3428      * Gets the current value from the system properties map for {@value #JDK_TLS_SERVER_SIGNATURE_SCHEMES}.
3429      * <p>
3430      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3431      * </p>
3432      *
3433      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3434      * @since 3.15.0
3435      */
3436     public static String getJdkTlsServerSignatureSchemes() {
3437         return getProperty(JDK_TLS_SERVER_SIGNATURE_SCHEMES);
3438     }
3439 
3440     /**
3441      * Gets the current value from the system properties map for {@value #JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE}.
3442      * <p>
3443      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3444      * </p>
3445      *
3446      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3447      * @since 3.15.0
3448      */
3449     public static String getJdkVirtualThreadSchedulerMaxPoolSize() {
3450         return getProperty(JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE);
3451     }
3452 
3453     /**
3454      * Gets the current value from the system properties map for {@value #JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM}.
3455      * <p>
3456      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3457      * </p>
3458      *
3459      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3460      * @since 3.15.0
3461      */
3462     public static String getJdkVirtualThreadSchedulerParallelism() {
3463         return getProperty(JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM);
3464     }
3465 
3466     /**
3467      * Gets the current value from the system properties map for {@value #JDK_XML_CDATA_CHUNK_SIZE}.
3468      * <p>
3469      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3470      * </p>
3471      *
3472      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3473      * @since 3.15.0
3474      */
3475     public static String getJdkXmlCdataChunkSize() {
3476         return getProperty(JDK_XML_CDATA_CHUNK_SIZE);
3477     }
3478 
3479     /**
3480      * Gets the current value from the system properties map for {@value #JDK_XML_DTD_SUPPORT}.
3481      * <p>
3482      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3483      * </p>
3484      *
3485      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3486      * @since 3.15.0
3487      */
3488     public static String getJdkXmlDtdSupport() {
3489         return getProperty(JDK_XML_DTD_SUPPORT);
3490     }
3491 
3492     /**
3493      * Gets the current value from the system properties map for {@value #JDK_XML_ELEMENT_ATTRIBUTE_LIMIT}.
3494      * <p>
3495      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3496      * </p>
3497      *
3498      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3499      * @since 3.15.0
3500      */
3501     public static String getJdkXmlElementAttributeLimit() {
3502         return getProperty(JDK_XML_ELEMENT_ATTRIBUTE_LIMIT);
3503     }
3504 
3505     /**
3506      * Gets the current value from the system properties map for {@value #JDK_XML_ENABLE_EXTENSION_FUNCTIONS}.
3507      * <p>
3508      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3509      * </p>
3510      *
3511      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3512      * @since 3.15.0
3513      */
3514     public static String getJdkXmlEnableExtensionFunctions() {
3515         return getProperty(JDK_XML_ENABLE_EXTENSION_FUNCTIONS);
3516     }
3517 
3518     /**
3519      * Gets the current value from the system properties map for {@value #JDK_XML_ENTITY_EXPANSION_LIMIT}.
3520      * <p>
3521      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3522      * </p>
3523      *
3524      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3525      * @since 3.15.0
3526      */
3527     public static String getJdkXmlEntityExpansionLimit() {
3528         return getProperty(JDK_XML_ENTITY_EXPANSION_LIMIT);
3529     }
3530 
3531     /**
3532      * Gets the current value from the system properties map for {@value #JDK_XML_ENTITY_REPLACEMENT_LIMIT}.
3533      * <p>
3534      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3535      * </p>
3536      *
3537      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3538      * @since 3.15.0
3539      */
3540     public static String getJdkXmlEntityReplacementLimit() {
3541         return getProperty(JDK_XML_ENTITY_REPLACEMENT_LIMIT);
3542     }
3543 
3544     /**
3545      * Gets the current value from the system properties map for {@value #JDK_XML_IS_STANDALONE}.
3546      * <p>
3547      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3548      * </p>
3549      *
3550      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3551      * @since 3.15.0
3552      */
3553     public static String getJdkXmlIsStandalone() {
3554         return getProperty(JDK_XML_IS_STANDALONE);
3555     }
3556 
3557     /**
3558      * Gets the current value from the system properties map for {@value #JDK_XML_JDK_CATALOG_RESOLVE}.
3559      * <p>
3560      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3561      * </p>
3562      *
3563      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3564      * @since 3.15.0
3565      */
3566     public static String getJdkXmlJdkCatalogResolve() {
3567         return getProperty(JDK_XML_JDK_CATALOG_RESOLVE);
3568     }
3569 
3570     /**
3571      * Gets the current value from the system properties map for {@value #JDK_XML_MAX_ELEMENT_DEPTH}.
3572      * <p>
3573      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3574      * </p>
3575      *
3576      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3577      * @since 3.15.0
3578      */
3579     public static String getJdkXmlMaxElementDepth() {
3580         return getProperty(JDK_XML_MAX_ELEMENT_DEPTH);
3581     }
3582 
3583     /**
3584      * Gets the current value from the system properties map for {@value #JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT}.
3585      * <p>
3586      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3587      * </p>
3588      *
3589      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3590      * @since 3.15.0
3591      */
3592     public static String getJdkXmlMaxGeneralEntitySizeLimit() {
3593         return getProperty(JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT);
3594     }
3595 
3596     /**
3597      * Gets the current value from the system properties map for {@value #JDK_XML_MAX_OCCUR_LIMIT}.
3598      * <p>
3599      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3600      * </p>
3601      *
3602      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3603      * @since 3.15.0
3604      */
3605     public static String getJdkXmlMaxOccurLimit() {
3606         return getProperty(JDK_XML_MAX_OCCUR_LIMIT);
3607     }
3608 
3609     /**
3610      * Gets the current value from the system properties map for {@value #JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT}.
3611      * <p>
3612      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3613      * </p>
3614      *
3615      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3616      * @since 3.15.0
3617      */
3618     public static String getJdkXmlMaxParameterEntitySizeLimit() {
3619         return getProperty(JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT);
3620     }
3621 
3622     /**
3623      * Gets the current value from the system properties map for {@value #JDK_XML_MAX_XML_NAME_LIMIT}.
3624      * <p>
3625      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3626      * </p>
3627      *
3628      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3629      * @since 3.15.0
3630      */
3631     public static String getJdkXmlMaxXmlNameLimit() {
3632         return getProperty(JDK_XML_MAX_XML_NAME_LIMIT);
3633     }
3634 
3635     /**
3636      * Gets the current value from the system properties map for {@value #JDK_XML_OVERRIDE_DEFAULT_PARSER}.
3637      * <p>
3638      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3639      * </p>
3640      *
3641      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3642      * @since 3.15.0
3643      */
3644     public static String getJdkXmlOverrideDefaultParser() {
3645         return getProperty(JDK_XML_OVERRIDE_DEFAULT_PARSER);
3646     }
3647 
3648     /**
3649      * Gets the current value from the system properties map for {@value #JDK_XML_RESET_SYMBOL_TABLE}.
3650      * <p>
3651      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3652      * </p>
3653      *
3654      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3655      * @since 3.15.0
3656      */
3657     public static String getJdkXmlResetSymbolTable() {
3658         return getProperty(JDK_XML_RESET_SYMBOL_TABLE);
3659     }
3660 
3661     /**
3662      * Gets the current value from the system properties map for {@value #JDK_XML_TOTAL_ENTITY_SIZE_LIMIT}.
3663      * <p>
3664      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3665      * </p>
3666      *
3667      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3668      * @since 3.15.0
3669      */
3670     public static String getJdkXmlTotalEntitySizeLimit() {
3671         return getProperty(JDK_XML_TOTAL_ENTITY_SIZE_LIMIT);
3672     }
3673 
3674     /**
3675      * Gets the current value from the system properties map for {@value #JDK_XML_XSLTC_IS_STANDALONE}.
3676      * <p>
3677      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3678      * </p>
3679      *
3680      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3681      * @since 3.15.0
3682      */
3683     public static String getJdkXmlXsltcIsStandalone() {
3684         return getProperty(JDK_XML_XSLTC_IS_STANDALONE);
3685     }
3686 
3687     /**
3688      * Gets the current value from the system properties map for {@value #LINE_SEPARATOR}.
3689      * <p>
3690      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3691      * </p>
3692      *
3693      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3694      */
3695     public static String getLineSeparator() {
3696         return getProperty(LINE_SEPARATOR);
3697     }
3698 
3699     /**
3700      * Gets the current value from the system properties map for {@value #LINE_SEPARATOR}.
3701      * <p>
3702      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3703      * </p>
3704      *
3705      * @param defaultIfAbsent get this Supplier when the property is empty or throws SecurityException.
3706      * @return The current value from the system properties map.
3707      * @since 3.15.0
3708      */
3709     public static String getLineSeparator(final Supplier<String> defaultIfAbsent) {
3710         return getProperty(LINE_SEPARATOR, defaultIfAbsent);
3711     }
3712 
3713     /**
3714      * Gets the current value for the property named {@code "SimpleClassName.Key"} as a {@code long}.
3715      * <p>
3716      * The parsing rules are as {@link Long#parseLong(String)}.
3717      * </p>
3718      * <p>
3719      * If a {@link SecurityException} is caught, the return value is {@code null}.
3720      * </p>
3721      *
3722      * @param clazz           The Class to use for the SimpleClassName.
3723      * @param key             The subkey.
3724      * @param defaultIfAbsent The default value.
3725      * @return A long or {@code defaultIfAbsent}'s value.
3726      * @see Long#parseLong(String)
3727      * @see Class#getSimpleName()
3728      * @since 3.19.0
3729      */
3730     public static long getLong(final Class<?> clazz, final String key, final LongSupplier defaultIfAbsent) {
3731         return getLong(toKey(clazz, key, true), defaultIfAbsent);
3732     }
3733 
3734     /**
3735      * Gets the current value for the property named {@code key} as a {@code long}.
3736      * <p>
3737      * The parsing rules are as {@link Long#parseLong(String)}.
3738      * </p>
3739      * <p>
3740      * If a {@link SecurityException} is caught, the return value is {@code null}.
3741      * </p>
3742      *
3743      * @param key             The key.
3744      * @param defaultIfAbsent The default value.
3745      * @return A {@code long} or {@code defaultIfAbsent}'s value.
3746      * @see Long#parseLong(String)
3747      */
3748     public static long getLong(final String key, final LongSupplier defaultIfAbsent) {
3749         final String str = getProperty(key);
3750         return str == null ? defaultIfAbsent != null ? defaultIfAbsent.getAsLong() : 0 : Long.parseLong(str);
3751     }
3752 
3753     /**
3754      * Gets the current value from the system properties map for {@value #NATIVE_ENCODING}.
3755      * <p>
3756      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3757      * </p>
3758      *
3759      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3760      * @since 3.15.0
3761      */
3762     public static String getNativeEncoding() {
3763         return getProperty(NATIVE_ENCODING);
3764     }
3765 
3766     /**
3767      * Gets the current value from the system properties map for {@value #NETWORK_ADDRESS_CACHE_NEGATIVE_TTL}.
3768      * <p>
3769      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3770      * </p>
3771      *
3772      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3773      * @since 3.15.0
3774      */
3775     public static String getNetworkAddressCacheNegativeTtl() {
3776         return getProperty(NETWORK_ADDRESS_CACHE_NEGATIVE_TTL);
3777     }
3778 
3779     /**
3780      * Gets the current value from the system properties map for {@value #NETWORK_ADDRESS_CACHE_STALE_TTL}.
3781      * <p>
3782      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3783      * </p>
3784      *
3785      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3786      * @since 3.15.0
3787      */
3788     public static String getNetworkAddressCacheStaleTtl() {
3789         return getProperty(NETWORK_ADDRESS_CACHE_STALE_TTL);
3790     }
3791 
3792     /**
3793      * Gets the current value from the system properties map for {@value #NETWORK_ADDRESS_CACHE_TTL}.
3794      * <p>
3795      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3796      * </p>
3797      *
3798      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3799      * @since 3.15.0
3800      */
3801     public static String getNetworkAddressCacheTtl() {
3802         return getProperty(NETWORK_ADDRESS_CACHE_TTL);
3803     }
3804 
3805     /**
3806      * Gets the current value from the system properties map for {@value #ORG_JCP_XML_DSIG_SECURE_VALIDATION}.
3807      * <p>
3808      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3809      * </p>
3810      *
3811      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3812      * @since 3.15.0
3813      */
3814     public static String getOrgJcpXmlDsigSecureValidation() {
3815         return getProperty(ORG_JCP_XML_DSIG_SECURE_VALIDATION);
3816     }
3817 
3818     /**
3819      * Gets the current value from the system properties map for {@value #ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE}.
3820      * <p>
3821      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3822      * </p>
3823      *
3824      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3825      * @since 3.15.0
3826      */
3827     public static String getOrgOpenJdkJavaUtilStreamTripwire() {
3828         return getProperty(ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE);
3829     }
3830 
3831     /**
3832      * Gets the current value from the system properties map for {@value #OS_ARCH}.
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 getOsArch() {
3840         return getProperty(OS_ARCH);
3841     }
3842 
3843     /**
3844      * Gets the current value from the system properties map for {@value #OS_NAME}.
3845      * <p>
3846      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3847      * </p>
3848      *
3849      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3850      */
3851     public static String getOsName() {
3852         return getProperty(OS_NAME);
3853     }
3854 
3855     /**
3856      * Gets the current value from the system properties map for {@value #OS_VERSION}.
3857      * <p>
3858      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3859      * </p>
3860      *
3861      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3862      */
3863     public static String getOsVersion() {
3864         return getProperty(OS_VERSION);
3865     }
3866 
3867     /**
3868      * Gets the current value for the property named {@code key} as a {@link Path}.
3869      * <p>
3870      * If a {@link SecurityException} is caught, the return value is {@code null}.
3871      * </p>
3872      *
3873      * @param key             The key.
3874      * @param defaultIfAbsent The default value.
3875      * @return A {@link Path} or {@code defaultIfAbsent}'s value.
3876      * @since 3.20.0
3877      */
3878     public static Path getPath(final String key, final Supplier<Path> defaultIfAbsent) {
3879         final String str = getProperty(key);
3880         return str == null ? Suppliers.get(defaultIfAbsent) : Paths.get(str);
3881     }
3882 
3883     /**
3884      * Gets the current value from the system properties map for {@value #PATH_SEPARATOR}.
3885      * <p>
3886      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3887      * </p>
3888      *
3889      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3890      */
3891     public static String getPathSeparator() {
3892         return getProperty(PATH_SEPARATOR);
3893     }
3894 
3895     /**
3896      * Gets a System property, defaulting to {@code null} if the property cannot be read.
3897      * <p>
3898      * If a {@link SecurityException} is caught, the return value is {@code null}.
3899      * </p>
3900      *
3901      * @param property The system property name.
3902      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3903      */
3904     public static String getProperty(final String property) {
3905         return getProperty(property, Suppliers.nul());
3906     }
3907 
3908     /**
3909      * Gets a System property, defaulting to {@code null} if the property cannot be read.
3910      * <p>
3911      * If a {@link SecurityException} is caught, the return value is {@code null}.
3912      * </p>
3913      *
3914      * @param property        The system property name.
3915      * @param defaultIfAbsent use this value when the property is empty or throws SecurityException.
3916      * @return The system property value or {@code null} if a security problem occurs.
3917      */
3918     static String getProperty(final String property, final String defaultIfAbsent) {
3919         return getProperty(property, () -> defaultIfAbsent);
3920     }
3921 
3922     /**
3923      * Gets a System property, defaulting to {@code null} if the property cannot be read.
3924      * <p>
3925      * If a {@link SecurityException} is caught, the return value is {@code null}.
3926      * </p>
3927      *
3928      * @param property        The system property name.
3929      * @param defaultIfAbsent get this Supplier when the property is empty or throws SecurityException.
3930      * @return The system property value or {@code null} if a security problem occurs.
3931      */
3932     static String getProperty(final String property, final Supplier<String> defaultIfAbsent) {
3933         try {
3934             if (StringUtils.isEmpty(property)) {
3935                 return Suppliers.get(defaultIfAbsent);
3936             }
3937             return StringUtils.getIfEmpty(System.getProperty(property), defaultIfAbsent);
3938         } catch (final SecurityException ignore) {
3939             // We are not allowed to look at this property; fall through to the default silently
3940             // (the SecurityManager that raises this is terminally deprecated as of Java 17 / JEP 411).
3941             return defaultIfAbsent.get();
3942         }
3943     }
3944 
3945     /**
3946      * Gets the current value from the system properties map for {@value #SOCKS_PROXY_HOST}.
3947      * <p>
3948      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3949      * </p>
3950      *
3951      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3952      * @since 3.15.0
3953      */
3954     public static String getSocksProxyHost() {
3955         return getProperty(SOCKS_PROXY_HOST);
3956     }
3957 
3958     /**
3959      * Gets the current value from the system properties map for {@value #SOCKS_PROXY_PORT}.
3960      * <p>
3961      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3962      * </p>
3963      *
3964      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3965      * @since 3.15.0
3966      */
3967     public static String getSocksProxyPort() {
3968         return getProperty(SOCKS_PROXY_PORT);
3969     }
3970 
3971     /**
3972      * Gets the current value from the system properties map for {@value #SOCKS_PROXY_VERSION}.
3973      * <p>
3974      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3975      * </p>
3976      *
3977      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3978      * @since 3.15.0
3979      */
3980     public static String getSocksProxyVersion() {
3981         return getProperty(SOCKS_PROXY_VERSION);
3982     }
3983 
3984     /**
3985      * Gets the current value from the system properties map for {@value #STDERR_ENCODING}.
3986      * <p>
3987      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
3988      * </p>
3989      *
3990      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
3991      * @since 3.15.0
3992      */
3993     public static String getStdErrEncoding() {
3994         return getProperty(STDERR_ENCODING);
3995     }
3996 
3997     /**
3998      * Gets the current value from the system properties map for {@value #STDOUT_ENCODING}.
3999      * <p>
4000      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4001      * </p>
4002      *
4003      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4004      * @since 3.15.0
4005      */
4006     public static String getStdOutEncoding() {
4007         return getProperty(STDOUT_ENCODING);
4008     }
4009 
4010     /**
4011      * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_DRAIN_AMOUNT}.
4012      * <p>
4013      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4014      * </p>
4015      *
4016      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4017      * @since 3.15.0
4018      */
4019     public static String getSunNetHttpServerDrainAmount() {
4020         return getProperty(SUN_NET_HTTP_SERVER_DRAIN_AMOUNT);
4021     }
4022 
4023     /**
4024      * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_IDLE_INTERVAL}.
4025      * <p>
4026      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4027      * </p>
4028      *
4029      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4030      * @since 3.15.0
4031      */
4032     public static String getSunNetHttpServerIdleInterval() {
4033         return getProperty(SUN_NET_HTTP_SERVER_IDLE_INTERVAL);
4034     }
4035 
4036     /**
4037      * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS}.
4038      * <p>
4039      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4040      * </p>
4041      *
4042      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4043      * @since 3.15.0
4044      */
4045     public static String getSunNetHttpServerMaxIdleConnections() {
4046         return getProperty(SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS);
4047     }
4048 
4049     /**
4050      * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS}.
4051      * <p>
4052      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4053      * </p>
4054      *
4055      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4056      * @since 3.15.0
4057      */
4058     public static String getSunNetHttpServerMaxReqHeaders() {
4059         return getProperty(SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS);
4060     }
4061 
4062     /**
4063      * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_MAX_REQ_TIME}.
4064      * <p>
4065      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4066      * </p>
4067      *
4068      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4069      * @since 3.15.0
4070      */
4071     public static String getSunNetHttpServerMaxReqTime() {
4072         return getProperty(SUN_NET_HTTP_SERVER_MAX_REQ_TIME);
4073     }
4074 
4075     /**
4076      * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_MAX_RSP_TIME}.
4077      * <p>
4078      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4079      * </p>
4080      *
4081      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4082      * @since 3.15.0
4083      */
4084     public static String getSunNetHttpServerMaxRspTime() {
4085         return getProperty(SUN_NET_HTTP_SERVER_MAX_RSP_TIME);
4086     }
4087 
4088     /**
4089      * Gets the current value from the system properties map for {@value #SUN_NET_HTTP_SERVER_NO_DELAY}.
4090      * <p>
4091      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4092      * </p>
4093      *
4094      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4095      * @since 3.15.0
4096      */
4097     public static String getSunNetHttpServerNoDelay() {
4098         return getProperty(SUN_NET_HTTP_SERVER_NO_DELAY);
4099     }
4100 
4101     /**
4102      * Gets the current value from the system properties map for {@value #SUN_SECURITY_KRB5_PRINCIPAL}.
4103      * <p>
4104      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4105      * </p>
4106      *
4107      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4108      * @since 3.15.0
4109      */
4110     public static String getSunSecurityKrb5Principal() {
4111         return getProperty(SUN_SECURITY_KRB5_PRINCIPAL);
4112     }
4113 
4114     /**
4115      * Gets the current value from the system properties map for {@value #USER_COUNTRY}.
4116      * <p>
4117      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4118      * </p>
4119      *
4120      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4121      */
4122     public static String getUserCountry() {
4123         return getProperty(USER_COUNTRY);
4124     }
4125 
4126     /**
4127      * Gets the current value from the system properties map for {@value #USER_DIR}.
4128      * <p>
4129      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4130      * </p>
4131      *
4132      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4133      */
4134     public static String getUserDir() {
4135         return getProperty(USER_DIR);
4136     }
4137 
4138     /**
4139      * Gets the current value from the system properties map for {@value #USER_EXTENSIONS}.
4140      * <p>
4141      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4142      * </p>
4143      *
4144      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4145      * @since 3.15.0
4146      */
4147     public static String getUserExtensions() {
4148         return getProperty(USER_EXTENSIONS);
4149     }
4150 
4151     /**
4152      * Gets the current value from the system properties map for {@value #USER_HOME}.
4153      * <p>
4154      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4155      * </p>
4156      *
4157      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4158      */
4159     public static String getUserHome() {
4160         return getProperty(USER_HOME);
4161     }
4162 
4163     /**
4164      * Gets the current value from the system properties map for {@value #USER_LANGUAGE}.
4165      * <p>
4166      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4167      * </p>
4168      *
4169      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4170      */
4171     public static String getUserLanguage() {
4172         return getProperty(USER_LANGUAGE);
4173     }
4174 
4175     /**
4176      * Gets the current value from the system properties map for {@value #USER_NAME}.
4177      * <p>
4178      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4179      * </p>
4180      *
4181      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4182      */
4183     public static String getUserName() {
4184         return getProperty(USER_NAME);
4185     }
4186 
4187     /**
4188      * Gets the current value from the system properties map for {@value #USER_NAME}.
4189      * <p>
4190      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4191      * </p>
4192      *
4193      * @param defaultValue get this Supplier when the property is empty or throws SecurityException.
4194      * @return The system property value or {@code defaultValue} if the property is absent or a security problem occurs.
4195      * @since 3.15.0
4196      */
4197     public static String getUserName(final String defaultValue) {
4198         return getProperty(USER_NAME, defaultValue);
4199     }
4200 
4201     /**
4202      * Gets the current value from the system properties map for {@value #USER_REGION}.
4203      * <p>
4204      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4205      * </p>
4206      *
4207      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4208      * @since 3.15.0
4209      */
4210     public static String getUserRegion() {
4211         return getProperty(USER_REGION);
4212     }
4213 
4214     /**
4215      * Gets the current value from the system properties map for {@value #USER_SCRIPT}.
4216      * <p>
4217      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4218      * </p>
4219      *
4220      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4221      * @since 3.15.0
4222      */
4223     public static String getUserScript() {
4224         return getProperty(USER_SCRIPT);
4225     }
4226 
4227     /**
4228      * Gets the current value from the system properties map for {@value #USER_TIMEZONE}.
4229      * <p>
4230      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4231      * </p>
4232      *
4233      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4234      */
4235     public static String getUserTimezone() {
4236         return getProperty(USER_TIMEZONE);
4237     }
4238 
4239     /**
4240      * Gets the current value from the system properties map for {@value #USER_VARIANT}.
4241      * <p>
4242      * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
4243      * </p>
4244      *
4245      * @return The system property value or {@code null} if the property is absent or a security problem occurs.
4246      * @since 3.15.0
4247      */
4248     public static String getUserVariant() {
4249         return getProperty(USER_VARIANT);
4250     }
4251 
4252     /**
4253      * Tests whether the given property is set.
4254      * <p>
4255      * Short-hand for {@code getProperty(property) != null}.
4256      * </p>
4257      * <p>
4258      * If a {@link SecurityException} is caught, the return value is {@code false}.
4259      * </p>
4260      *
4261      * @param property The system property name.
4262      * @return whether the given property is set.
4263      * @since 3.18.0
4264      */
4265     public static boolean isPropertySet(final String property) {
4266         return getProperty(property) != null;
4267     }
4268 
4269     private static String toKey(final Class<?> clazz, final String key, final boolean simpleKey) {
4270         return ClassUtils.getName(clazz, StringUtils.EMPTY, simpleKey) + "." + key;
4271     }
4272 
4273     /**
4274      * Make private in 4.0.
4275      *
4276      * @deprecated TODO Make private in 4.0.
4277      */
4278     @Deprecated
4279     public SystemProperties() {
4280         // empty
4281     }
4282 }