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