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