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