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