--- a/src/java.base/share/man/java.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/java.base/share/man/java.1 Fri May 31 17:27:28 2019 -0700
@@ -1,4 +1,4 @@
-'\" t
+.\"t
.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
@@ -20,3706 +20,5618 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Title: java
-.\" Language: English
-.\" Date: 03 March 2015
-.\" SectDesc: Basic Tools
-.\" Software: JDK 8
-.\" Arch: generic
-.\" Part Number: E38207-04
-.\" Doc ID: JSSON
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH "java" "1" "03 March 2015" "JDK 8" "Basic Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-java \- Launches a Java application\&.
-.SH "SYNOPSIS"
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjava\fR [\fIoptions\fR] \fIclassname\fR [\fIargs\fR]
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjava\fR [\fIoptions\fR] \fB\-jar\fR \fIfilename\fR [\fIargs\fR]
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-\fIoptions\fR
-.RS 4
-Command\-line options separated by spaces\&. See Options\&.
-.RE
-.PP
-\fIclassname\fR
-.RS 4
-The name of the class to be launched\&.
-.RE
-.PP
-\fIfilename\fR
-.RS 4
-The name of the Java Archive (JAR) file to be called\&. Used only with the
-\fB\-jar\fR
-option\&.
-.RE
-.PP
-\fIargs\fR
-.RS 4
-The arguments passed to the
-\fBmain()\fR
-method separated by spaces\&.
-.RE
-.SH "DESCRIPTION"
-.PP
-The
-\fBjava\fR
-command starts a Java application\&. It does this by starting the Java Runtime Environment (JRE), loading the specified class, and calling that class\*(Aqs
-\fBmain()\fR
-method\&. The method must be declared
-\fIpublic\fR
-and
-\fIstatic\fR, it must not return any value, and it must accept a
-\fBString\fR
-array as a parameter\&. The method declaration has the following form:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBpublic static void main(String[] args)\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-The
-\fBjava\fR
-command can be used to launch a JavaFX application by loading a class that either has a
-\fBmain()\fR
-method or that extends
-\fBjavafx\&.application\&.Application\fR\&. In the latter case, the launcher constructs an instance of the
-\fBApplication\fR
-class, calls its
-\fBinit()\fR
-method, and then calls the
-\fBstart(javafx\&.stage\&.Stage)\fR
-method\&.
-.PP
-By default, the first argument that is not an option of the
-\fBjava\fR
-command is the fully qualified name of the class to be called\&. If the
-\fB\-jar\fR
-option is specified, its argument is the name of the JAR file containing class and resource files for the application\&. The startup class must be indicated by the
-\fBMain\-Class\fR
-manifest header in its source code\&.
-.PP
-The JRE searches for the startup class (and other classes used by the application) in three sets of locations: the bootstrap class path, the installed extensions, and the user\(cqs class path\&.
-.PP
-Arguments after the class file name or the JAR file name are passed to the
-\fBmain()\fR
-method\&.
-.SH "OPTIONS"
-.PP
-The
-\fBjava\fR
-command supports a wide range of options that can be divided into the following categories:
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Standard Options
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Non\-Standard Options
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Advanced Runtime Options
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Advanced JIT Compiler Options
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Advanced Serviceability Options
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Advanced Garbage Collection Options
-.RE
-.PP
-Standard options are guaranteed to be supported by all implementations of the Java Virtual Machine (JVM)\&. They are used for common actions, such as checking the version of the JRE, setting the class path, enabling verbose output, and so on\&.
-.PP
-Non\-standard options are general purpose options that are specific to the Java HotSpot Virtual Machine, so they are not guaranteed to be supported by all JVM implementations, and are subject to change\&. These options start with
-\fB\-X\fR\&.
-.PP
-Advanced options are not recommended for casual use\&. These are developer options used for tuning specific areas of the Java HotSpot Virtual Machine operation that often have specific system requirements and may require privileged access to system configuration parameters\&. They are also not guaranteed to be supported by all JVM implementations, and are subject to change\&. Advanced options start with
-\fB\-XX\fR\&.
-.PP
-To keep track of the options that were deprecated or removed in the latest release, there is a section named Deprecated and Removed Options at the end of the document\&.
-.PP
-Boolean options are used to either enable a feature that is disabled by default or disable a feature that is enabled by default\&. Such options do not require a parameter\&. Boolean
-\fB\-XX\fR
-options are enabled using the plus sign (\fB\-XX:+\fR\fIOptionName\fR) and disabled using the minus sign (\fB\-XX:\-\fR\fIOptionName\fR)\&.
-.PP
-For options that require an argument, the argument may be separated from the option name by a space, a colon (:), or an equal sign (=), or the argument may directly follow the option (the exact syntax differs for each option)\&. If you are expected to specify the size in bytes, you can use no suffix, or use the suffix
-\fBk\fR
+.TH "JAVA" "1" "2019" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+java \- launch a Java application
+.SH SYNOPSIS
+.PP
+To launch a class file:
+.PP
+\f[CB]java\f[R] [\f[I]options\f[R]] \f[I]mainclass\f[R] [\f[I]args\f[R] ...]
+.PP
+To launch the main class in a JAR file:
+.PP
+\f[CB]java\f[R] [\f[I]options\f[R]] \f[CB]\-jar\f[R] \f[I]jarfile\f[R]
+[\f[I]args\f[R] ...]
+.PP
+To launch the main class in a module:
+.PP
+\f[CB]java\f[R] [\f[I]options\f[R]] \f[CB]\-m\f[R]
+\f[I]module\f[R][\f[CB]/\f[R]\f[I]mainclass\f[R]] [\f[I]args\f[R] ...]
+.PP
or
-\fBK\fR
-for kilobytes (KB),
-\fBm\fR
-or
-\fBM\fR
-for megabytes (MB),
-\fBg\fR
-or
-\fBG\fR
-for gigabytes (GB)\&. For example, to set the size to 8 GB, you can specify either
-\fB8g\fR,
-\fB8192m\fR,
-\fB8388608k\fR, or
-\fB8589934592\fR
-as the argument\&. If you are expected to specify the percentage, use a number from 0 to 1 (for example, specify
-\fB0\&.25\fR
-for 25%)\&.
-.SS "Standard Options"
-.PP
-These are the most commonly used options that are supported by all implementations of the JVM\&.
-.PP
-\-agentlib:\fIlibname\fR[=\fIoptions\fR]
-.RS 4
-Loads the specified native agent library\&. After the library name, a comma\-separated list of options specific to the library can be used\&.
-.sp
-If the option
-\fB\-agentlib:foo\fR
-is specified, then the JVM attempts to load the library named
-\fBlibfoo\&.so\fR
-in the location specified by the
-\fBLD_LIBRARY_PATH\fR
-system variable (on OS X this variable is
-\fBDYLD_LIBRARY_PATH\fR)\&.
-.sp
-The following example shows how to load the heap profiling tool (HPROF) library and get sample CPU information every 20 ms, with a stack depth of 3:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+\f[CB]java\f[R] [\f[I]options\f[R]] \f[CB]\-\-module\f[R]
+\f[I]module\f[R][\f[CB]/\f[R]\f[I]mainclass\f[R]] [\f[I]args\f[R] ...]
+.PP
+To launch a single source\-file program:
+.PP
+\f[CB]java\f[R] [\f[I]options\f[R]] \f[I]source\-file\f[R] [\f[I]args\f[R]
+\&...]
+.TP
+.B \f[I]options\f[R]
+Optional: Specifies command\-line options separated by spaces.
+See \f[B]Overview of Java Options\f[R] for a description of available
+options.
+.RS
+.RE
+.TP
+.B \f[I]mainclass\f[R]
+Specifies the name of the class to be launched.
+Command\-line entries following \f[CB]classname\f[R] are the arguments for
+the main method.
+.RS
+.RE
+.TP
+.B \f[CB]\-jar\f[R] \f[I]jarfile\f[R]
+Executes a program encapsulated in a JAR file.
+The \f[I]jarfile\f[R] argument is the name of a JAR file with a manifest
+that contains a line in the form \f[CB]Main\-Class:\f[R]\f[I]classname\f[R]
+that defines the class with the
+\f[CB]public\ static\ void\ main(String[]\ args)\f[R] method that serves
+as your application\[aq]s starting point.
+When you use \f[CB]\-jar\f[R], the specified JAR file is the source of all
+user classes, and other class path settings are ignored.
+If you\[aq]re using JAR files, then see \f[B]jar\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-m\f[R] or \f[CB]\-\-module\f[R] \f[I]module\f[R][\f[CB]/\f[R]\f[I]mainclass\f[R]]
+Executes the main class in a module specified by \f[I]mainclass\f[R] if
+it is given, or, if it is not given, the value in the \f[I]module\f[R].
+In other words, \f[I]mainclass\f[R] can be used when it is not specified
+by the module, or to override the value when it is specified.
+.RS
+.PP
+See \f[B]Standard Options for Java\f[R].
+.RE
+.TP
+.B \f[I]source\-file\f[R]
+Only used to launch a single source\-file program.
+Specifies the source file that contains the main class when using
+source\-file mode.
+See \f[B]Using Source\-File Mode to Launch Single\-File Source\-Code
+Programs\f[R]
+.RS
+.RE
+.TP
+.B \f[I]args\f[R] ...
+Optional: Arguments following \f[I]mainclass\f[R], \f[I]source\-file\f[R],
+\f[CB]\-jar\f[R] \f[I]jarfile\f[R], and \f[CB]\-m\f[R] or \f[CB]\-\-module\f[R]
+\f[I]module\f[R]\f[CB]/\f[R]\f[I]mainclass\f[R] are passed as arguments to
+the main class.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]java\f[R] command starts a Java application.
+It does this by starting the Java Runtime Environment (JRE), loading the
+specified class, and calling that class\[aq]s \f[CB]main()\f[R] method.
+The method must be declared \f[CB]public\f[R] and \f[CB]static\f[R], it must
+not return any value, and it must accept a \f[CB]String\f[R] array as a
+parameter.
+The method declaration has the following form:
+.RS
+.PP
+\f[CB]public\ static\ void\ main(String[]\ args)\f[R]
+.RE
+.PP
+In source\-file mode, the \f[CB]java\f[R] command can launch a class
+declared in a source file.
+See \f[B]Using Source\-File Mode to Launch Single\-File Source\-Code
+Programs\f[R] for a description of using the source\-file mode.
+.RS
+.PP
+\f[B]Note:\f[R] You can use the \f[CB]JDK_JAVA_OPTIONS\f[R] launcher
+environment variable to prepend its content to the actual command line
+of the \f[CB]java\f[R] launcher.
+See \f[B]Using the JDK_JAVA_OPTIONS Launcher Environment Variable\f[R].
+.RE
+.PP
+By default, the first argument that isn\[aq]t an option of the
+\f[CB]java\f[R] command is the fully qualified name of the class to be
+called.
+If \f[CB]\-jar\f[R] is specified, then its argument is the name of the JAR
+file containing class and resource files for the application.
+The startup class must be indicated by the \f[CB]Main\-Class\f[R] manifest
+header in its manifest file.
+.PP
+Arguments after the class file name or the JAR file name are passed to
+the \f[CB]main()\f[R] method.
+.SS \f[CB]javaw\f[R]
+.PP
+\f[B]Windows:\f[R] The \f[CB]javaw\f[R] command is identical to
+\f[CB]java\f[R], except that with \f[CB]javaw\f[R] there\[aq]s no associated
+console window.
+Use \f[CB]javaw\f[R] when you don\[aq]t want a command prompt window to
+appear.
+The \f[CB]javaw\f[R] launcher will, however, display a dialog box with
+error information if a launch fails.
+.SH USING SOURCE\-FILE MODE TO LAUNCH SINGLE\-FILE SOURCE\-CODE PROGRAMS
+.PP
+To launch a class declared in a source file, run the \f[CB]java\f[R]
+launcher in source\-file mode.
+Entering source\-file mode is determined by two items on the
+\f[CB]java\f[R] command line:
+.IP \[bu] 2
+The first item on the command line that is not an option or part of an
+option.
+In other words, the item in the command line that would otherwise be the
+main class name.
+.IP \[bu] 2
+The \f[CB]\-\-source\f[R] \f[I]version\f[R] option, if present.
+.PP
+If the class identifies an existing file that has a \f[CB]\&.java\f[R]
+extension, or if the \f[CB]\-\-source\f[R] option is specified, then
+source\-file mode is selected.
+The source file is then compiled and run.
+The \f[CB]\-\-source\f[R] option can be used to specify the source
+\f[I]version\f[R] or \f[I]N\f[R] of the source code.
+This determines the API that can be used.
+When you set \f[CB]\-\-source\f[R] \f[I]N\f[R], you can only use the public
+API that was defined in JDK \f[I]N\f[R].
+.RS
+.PP
+\f[B]Note:\f[R] The valid values of \f[I]N\f[R] change for each release,
+with new values added and old values removed.
+You\[aq]ll get an error message if you use a value of \f[I]N\f[R] that is
+no longer supported.
+Supported values of \f[I]N\f[R] for this release are \f[CB]7\f[R],
+\f[CB]8\f[R], \f[CB]9\f[R], \f[CB]10\f[R], \f[CB]11\f[R], \f[CB]12\f[R], and
+\f[CB]13\f[R].
+.RE
+.PP
+If the file does not have the \f[CB]\&.java\f[R] extension, the
+\f[CB]\-\-source\f[R] option must be used to tell the \f[CB]java\f[R]
+command to use the source\-file mode.
+The \f[CB]\-\-source\f[R] option is used for cases when the source file is
+a "script" to be executed and the name of the source file does not
+follow the normal naming conventions for Java source files.
+.PP
+In source\-file mode, the effect is as though the source file is
+compiled into memory, and the first class found in the source file is
+executed.
+Any arguments placed after the name of the source file in the original
+command line are passed to the compiled class when it is executed.
+.PP
+For example, if a file were named \f[CB]HelloWorld.java\f[R] and contained
+a class named \f[CB]hello.World\f[R], then the source\-file mode command
+to launch the class would be:
+.RS
+.PP
+\f[CB]java\ HelloWorld.java\f[R]
+.RE
+.PP
+The example illustrates that the class can be in a named package, and
+does not need to be in the unnamed package.
+This use of source\-file mode is informally equivalent to using the
+following two commands where \f[CB]hello.World\f[R] is the name of the
+class in the package:
+.IP
.nf
-\fB\-agentlib:hprof=cpu=samples,interval=20,depth=3\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-The following example shows how to load the Java Debug Wire Protocol (JDWP) library and listen for the socket connection on port 8000, suspending the JVM before the main class loads:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-agentlib:jdwp=transport=dt_socket,server=y,address=8000\fR
-
+\f[CB]
+javac\ \-d\ <memory>\ HelloWorld.java
+java\ \-cp\ <memory>\ hello.World
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-For more information about the native agent libraries, refer to the following:
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-The
-\fBjava\&.lang\&.instrument\fR
-package description at http://docs\&.oracle\&.com/javase/8/docs/api/java/lang/instrument/package\-summary\&.html
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Agent Command Line Options in the JVM Tools Interface guide at http://docs\&.oracle\&.com/javase/8/docs/platform/jvmti/jvmti\&.html#starting
-.RE
-.RE
-.PP
-\-agentpath:\fIpathname\fR[=\fIoptions\fR]
-.RS 4
-Loads the native agent library specified by the absolute path name\&. This option is equivalent to
-\fB\-agentlib\fR
-but uses the full path and file name of the library\&.
-.RE
-.PP
-\-client
-.RS 4
-Selects the Java HotSpot Client VM\&. The 64\-bit version of the Java SE Development Kit (JDK) currently ignores this option and instead uses the Server JVM\&.
-.sp
-For default JVM selection, see Server\-Class Machine Detection at
-http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/server\-class\&.html
-.RE
-.PP
-\-D\fIproperty\fR=\fIvalue\fR
-.RS 4
-Sets a system property value\&. The
-\fIproperty\fR
-variable is a string with no spaces that represents the name of the property\&. The
-\fIvalue\fR
-variable is a string that represents the value of the property\&. If
-\fIvalue\fR
-is a string with spaces, then enclose it in quotation marks (for example
-\fB\-Dfoo="foo bar"\fR)\&.
-.RE
-.PP
-\-d32
-.RS 4
-Runs the application in a 32\-bit environment\&. If a 32\-bit environment is not installed or is not supported, then an error will be reported\&. By default, the application is run in a 32\-bit environment unless a 64\-bit system is used\&.
-.RE
-.PP
-\-d64
-.RS 4
-Runs the application in a 64\-bit environment\&. If a 64\-bit environment is not installed or is not supported, then an error will be reported\&. By default, the application is run in a 32\-bit environment unless a 64\-bit system is used\&.
-.sp
-Currently only the Java HotSpot Server VM supports 64\-bit operation, and the
-\fB\-server\fR
-option is implicit with the use of
-\fB\-d64\fR\&. The
-\fB\-client\fR
-option is ignored with the use of
-\fB\-d64\fR\&. This is subject to change in a future release\&.
-.RE
-.PP
-\-disableassertions[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR]
-.br
-\-da[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR]
-.RS 4
-Disables assertions\&. By default, assertions are disabled in all packages and classes\&.
-.sp
-With no arguments,
-\fB\-disableassertions\fR
-(\fB\-da\fR) disables assertions in all packages and classes\&. With the
-\fIpackagename\fR
-argument ending in
-\fB\&.\&.\&.\fR, the switch disables assertions in the specified package and any subpackages\&. If the argument is simply
-\fB\&.\&.\&.\fR, then the switch disables assertions in the unnamed package in the current working directory\&. With the
-\fIclassname\fR
-argument, the switch disables assertions in the specified class\&.
-.sp
-The
-\fB\-disableassertions\fR
-(\fB\-da\fR) option applies to all class loaders and to system classes (which do not have a class loader)\&. There is one exception to this rule: if the option is provided with no arguments, then it does not apply to system classes\&. This makes it easy to disable assertions in all classes except for system classes\&. The
-\fB\-disablesystemassertions\fR
-option enables you to disable assertions in all system classes\&.
-.sp
-To explicitly enable assertions in specific packages or classes, use the
-\fB\-enableassertions\fR
-(\fB\-ea\fR) option\&. Both options can be used at the same time\&. For example, to run the
-\fBMyClass\fR
-application with assertions enabled in package
-\fBcom\&.wombat\&.fruitbat\fR
-(and any subpackages) but disabled in class
-\fBcom\&.wombat\&.fruitbat\&.Brickbat\fR, use the following command:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+\f[B]In source\-file mode, any additional command\-line options are
+processed as follows:\f[R]
+.IP \[bu] 2
+The launcher scans the options specified before the source file for any
+that are relevant in order to compile the source file.
+.RS 2
+.PP
+This includes: \f[CB]\-\-class\-path\f[R], \f[CB]\-\-module\-path\f[R],
+\f[CB]\-\-add\-exports\f[R], \f[CB]\-\-add\-modules\f[R],
+\f[CB]\-\-limit\-modules\f[R], \f[CB]\-\-patch\-module\f[R],
+\f[CB]\-\-upgrade\-module\-path\f[R], and any variant forms of those
+options.
+It also includes the new \f[CB]\-\-enable\-preview\f[R] option, described
+in JEP 12.
+.RE
+.IP \[bu] 2
+No provision is made to pass any additional options to the compiler,
+such as \f[CB]\-processor\f[R] or \f[CB]\-Werror\f[R].
+.IP \[bu] 2
+Command\-line argument files (\f[CB]\@\f[R]\-files) may be used in the
+standard way.
+Long lists of arguments for either the VM or the program being invoked
+may be placed in files specified on the command\-line by prefixing the
+filename with an \f[CB]\@\f[R] character.
+.PP
+\f[B]In source\-file mode, compilation proceeds as follows:\f[R]
+.IP \[bu] 2
+Any command\-line options that are relevant to the compilation
+environment are taken into account.
+.IP \[bu] 2
+No other source files are found and compiled, as if the source path is
+set to an empty value.
+.IP \[bu] 2
+Annotation processing is disabled, as if \f[CB]\-proc:none\f[R] is in
+effect.
+.IP \[bu] 2
+If a version is specified, via the \f[CB]\-\-source\f[R] option, the value
+is used as the argument for an implicit \f[CB]\-\-release\f[R] option for
+the compilation.
+This sets both the source version accepted by compiler and the system
+API that may be used by the code in the source file.
+.IP \[bu] 2
+The source file is compiled in the context of an unnamed module.
+.IP \[bu] 2
+The source file should contain one or more top\-level classes, the first
+of which is taken as the class to be executed.
+.IP \[bu] 2
+The compiler does not enforce the optional restriction defined at the
+end of JLS §7.6, that a type in a named package should exist in a file
+whose name is composed from the type name followed by the
+\f[CB]\&.java\f[R] extension.
+.IP \[bu] 2
+If the source file contains errors, appropriate error messages are
+written to the standard error stream, and the launcher exits with a
+non\-zero exit code.
+.PP
+\f[B]In source\-file mode, execution proceeds as follows:\f[R]
+.IP \[bu] 2
+The class to be executed is the first top\-level class found in the
+source file.
+It must contain a declaration of the standard
+\f[CB]public\ static\ void\ main(String[])\f[R] method.
+.IP \[bu] 2
+The compiled classes are loaded by a custom class loader, that delegates
+to the application class loader.
+This implies that classes appearing on the application class path cannot
+refer to any classes declared in the source file.
+.IP \[bu] 2
+The compiled classes are executed in the context of an unnamed module,
+as though \f[CB]\-\-add\-modules=ALL\-DEFAULT\f[R] is in effect.
+This is in addition to any other \f[CB]\-\-add\-module\f[R] options that
+may be have been specified on the command line.
+.IP \[bu] 2
+Any arguments appearing after the name of the file on the command line
+are passed to the standard main method in the obvious way.
+.IP \[bu] 2
+It is an error if there is a class on the application class path whose
+name is the same as that of the class to be executed.
+.PP
+See \f[B]JEP 330: Launch Single\-File Source\-Code Programs\f[R]
+[http://openjdk.java.net/jeps/330] for complete details.
+.SH USING THE JDK_JAVA_OPTIONS LAUNCHER ENVIRONMENT VARIABLE
+.PP
+\f[CB]JDK_JAVA_OPTIONS\f[R] prepends its content to the options parsed
+from the command line.
+The content of the \f[CB]JDK_JAVA_OPTIONS\f[R] environment variable is a
+list of arguments separated by white\-space characters (as determined by
+\f[CB]isspace()\f[R]).
+These are prepended to the command line arguments passed to
+\f[CB]java\f[R] launcher.
+The encoding requirement for the environment variable is the same as the
+\f[CB]java\f[R] command line on the system.
+\f[CB]JDK_JAVA_OPTIONS\f[R] environment variable content is treated in the
+same manner as that specified in the command line.
+.PP
+Single (\f[CB]\[aq]\f[R]) or double (\f[CB]"\f[R]) quotes can be used to
+enclose arguments that\ contain whitespace characters.
+All content between the open quote and the first matching close quote
+are preserved by simply removing the pair of quotes.
+In case a matching quote is not found, the launcher will abort with an
+error message.
+\f[CB]\@\f[R]\-files are supported as they are specified in the command
+line.
+However, as in \f[CB]\@\f[R]\-files, use of a wildcard is not supported.
+In order to mitigate potential misuse of \f[CB]JDK_JAVA_OPTIONS\f[R]
+behavior, options that specify the main class (such as \f[CB]\-jar\f[R])
+or cause the \f[CB]java\f[R] launcher to exit without executing the main
+class (such as \f[CB]\-h\f[R]) are disallowed in the environment variable.
+If any of these options appear in the environment variable, the launcher
+will abort with an error message.
+When \f[CB]JDK_JAVA_OPTIONS\f[R] is set, the launcher prints a message to
+stderr as a reminder.
+.PP
+\f[B]Example:\f[R]
+.IP
.nf
-\fBjava \-ea:com\&.wombat\&.fruitbat\&.\&.\&. \-da:com\&.wombat\&.fruitbat\&.Brickbat MyClass\fR
-
+\f[CB]
+$\ export\ JDK_JAVA_OPTIONS=\[aq]\-g\ \@file1\ \-Dprop=value\ \@file2\ \-Dws.prop="white\ spaces"\[aq]
+$\ java\ \-Xint\ \@file3
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-disablesystemassertions
-.br
-\-dsa
-.RS 4
-Disables assertions in all system classes\&.
-.RE
-.PP
-\-enableassertions[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR]
-.br
-\-ea[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR]
-.RS 4
-Enables assertions\&. By default, assertions are disabled in all packages and classes\&.
-.sp
-With no arguments,
-\fB\-enableassertions\fR
-(\fB\-ea\fR) enables assertions in all packages and classes\&. With the
-\fIpackagename\fR
-argument ending in
-\fB\&.\&.\&.\fR, the switch enables assertions in the specified package and any subpackages\&. If the argument is simply
-\fB\&.\&.\&.\fR, then the switch enables assertions in the unnamed package in the current working directory\&. With the
-\fIclassname\fR
-argument, the switch enables assertions in the specified class\&.
-.sp
-The
-\fB\-enableassertions\fR
-(\fB\-ea\fR) option applies to all class loaders and to system classes (which do not have a class loader)\&. There is one exception to this rule: if the option is provided with no arguments, then it does not apply to system classes\&. This makes it easy to enable assertions in all classes except for system classes\&. The
-\fB\-enablesystemassertions\fR
-option provides a separate switch to enable assertions in all system classes\&.
-.sp
-To explicitly disable assertions in specific packages or classes, use the
-\fB\-disableassertions\fR
-(\fB\-da\fR) option\&. If a single command contains multiple instances of these switches, then they are processed in order before loading any classes\&. For example, to run the
-\fBMyClass\fR
-application with assertions enabled only in package
-\fBcom\&.wombat\&.fruitbat\fR
-(and any subpackages) but disabled in class
-\fBcom\&.wombat\&.fruitbat\&.Brickbat\fR, use the following command:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+is equivalent to the command line:
+.IP
.nf
-\fBjava \-ea:com\&.wombat\&.fruitbat\&.\&.\&. \-da:com\&.wombat\&.fruitbat\&.Brickbat MyClass\fR
-
+\f[CB]
+java\ \-g\ \@file1\ \-Dprop=value\ \@file2\ \-Dws.prop="white\ spaces"\ \-Xint\ \@file3
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-enablesystemassertions
-.br
-\-esa
-.RS 4
-Enables assertions in all system classes\&.
-.RE
-.PP
-\-help
-.br
-\-?
-.RS 4
-Displays usage information for the
-\fBjava\fR
-command without actually running the JVM\&.
-.RE
-.PP
-\-jar \fIfilename\fR
-.RS 4
-Executes a program encapsulated in a JAR file\&. The
-\fIfilename\fR
-argument is the name of a JAR file with a manifest that contains a line in the form
-\fBMain\-Class:\fR\fIclassname\fR
-that defines the class with the
-\fBpublic static void main(String[] args)\fR
-method that serves as your application\*(Aqs starting point\&.
-.sp
-When you use the
-\fB\-jar\fR
-option, the specified JAR file is the source of all user classes, and other class path settings are ignored\&.
-.sp
-For more information about JAR files, see the following resources:
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jar(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-The Java Archive (JAR) Files guide at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jar/index\&.html
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Lesson: Packaging Programs in JAR Files at
-
-http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.html
-.RE
-.RE
-.PP
-\-javaagent:\fIjarpath\fR[=\fIoptions\fR]
-.RS 4
-Loads the specified Java programming language agent\&. For more information about instrumenting Java applications, see the
-\fBjava\&.lang\&.instrument\fR
-package description in the Java API documentation at http://docs\&.oracle\&.com/javase/8/docs/api/java/lang/instrument/package\-summary\&.html
-.RE
-.PP
-\-jre\-restrict\-search
-.RS 4
-Includes user\-private JREs in the version search\&.
-.RE
-.PP
-\-no\-jre\-restrict\-search
-.RS 4
-Excludes user\-private JREs from the version search\&.
-.RE
-.PP
-\-server
-.RS 4
-Selects the Java HotSpot Server VM\&. The 64\-bit version of the JDK supports only the Server VM, so in that case the option is implicit\&.
-.sp
-For default JVM selection, see Server\-Class Machine Detection at
-http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/server\-class\&.html
-.RE
-.PP
-\-showversion
-.RS 4
-Displays version information and continues execution of the application\&. This option is equivalent to the
-\fB\-version\fR
-option except that the latter instructs the JVM to exit after displaying version information\&.
-.RE
-.PP
-\-splash:\fIimgname\fR
-.RS 4
-Shows the splash screen with the image specified by
-\fIimgname\fR\&. For example, to show the
-\fBsplash\&.gif\fR
-file from the
-\fBimages\fR
-directory when starting your application, use the following option:
-.sp
-.if n \{\
-.RS 4
-.\}
+.SH OVERVIEW OF JAVA OPTIONS
+.PP
+The \f[CB]java\f[R] command supports a wide range of options in the
+following categories:
+.IP \[bu] 2
+\f[B]Standard Options for Java\f[R]: Options guaranteed to be supported
+by all implementations of the Java Virtual Machine (JVM).
+They\[aq]re used for common actions, such as checking the version of the
+JRE, setting the class path, enabling verbose output, and so on.
+.IP \[bu] 2
+\f[B]Extra Options for Java\f[R]: General purpose options that are
+specific to the Java HotSpot Virtual Machine.
+They aren\[aq]t guaranteed to be supported by all JVM implementations,
+and are subject to change.
+These options start with \f[CB]\-X\f[R].
+.PP
+The advanced options aren\[aq]t recommended for casual use.
+These are developer options used for tuning specific areas of the Java
+HotSpot Virtual Machine operation that often have specific system
+requirements and may require privileged access to system configuration
+parameters.
+Several examples of performance tuning are provided in \f[B]Performance
+Tuning Examples\f[R].
+These options aren\[aq]t guaranteed to be supported by all JVM
+implementations and are subject to change.
+Advanced options start with \f[CB]\-XX\f[R].
+.IP \[bu] 2
+\f[B]Advanced Runtime Options for Java\f[R]: Control the runtime behavior
+of the Java HotSpot VM.
+.IP \[bu] 2
+\f[B]Advanced JIT Compiler Options for java\f[R]: Control the dynamic
+just\-in\-time (JIT) compilation performed by the Java HotSpot VM.
+.IP \[bu] 2
+\f[B]Advanced Serviceability Options for Java\f[R]: Enable gathering
+system information and performing extensive debugging.
+.IP \[bu] 2
+\f[B]Advanced Garbage Collection Options for Java\f[R]: Control how
+garbage collection (GC) is performed by the Java HotSpot
+.PP
+Boolean options are used to either enable a feature that\[aq]s disabled
+by default or disable a feature that\[aq]s enabled by default.
+Such options don\[aq]t require a parameter.
+Boolean \f[CB]\-XX\f[R] options are enabled using the plus sign
+(\f[CB]\-XX:+\f[R]\f[I]OptionName\f[R]) and disabled using the minus sign
+(\f[CB]\-XX:\-\f[R]\f[I]OptionName\f[R]).
+.PP
+For options that require an argument, the argument may be separated from
+the option name by a space, a colon (:), or an equal sign (=), or the
+argument may directly follow the option (the exact syntax differs for
+each option).
+If you\[aq]re expected to specify the size in bytes, then you can use no
+suffix, or use the suffix \f[CB]k\f[R] or \f[CB]K\f[R] for kilobytes (KB),
+\f[CB]m\f[R] or \f[CB]M\f[R] for megabytes (MB), or \f[CB]g\f[R] or \f[CB]G\f[R]
+for gigabytes (GB).
+For example, to set the size to 8 GB, you can specify either
+\f[CB]8g\f[R], \f[CB]8192m\f[R], \f[CB]8388608k\f[R], or \f[CB]8589934592\f[R]
+as the argument.
+If you are expected to specify the percentage, then use a number from 0
+to 1.
+For example, specify \f[CB]0.25\f[R] for 25%.
+.PP
+The following sections describe the options that are obsolete,
+deprecated, and removed:
+.IP \[bu] 2
+\f[B]Deprecated Java Options\f[R]: Accepted and acted upon \-\-\- a
+warning is issued when they\[aq]re used.
+.IP \[bu] 2
+\f[B]Obsolete Java Options\f[R]: Accepted but ignored \-\-\- a warning is
+issued when they\[aq]re used.
+.IP \[bu] 2
+\f[B]Removed Java Options\f[R]: Removed \-\-\- using them results in an
+error.
+.SH STANDARD OPTIONS FOR JAVA
+.PP
+These are the most commonly used options supported by all
+implementations of the JVM.
+.RS
+.PP
+\f[B]Note:\f[R] To specify an argument for a long option, you can use
+either \f[CB]\-\-\f[R]\f[I]name\f[R]\f[CB]=\f[R]\f[I]value\f[R] or
+\f[CB]\-\-\f[R]\f[I]name\f[R] \f[I]value\f[R].
+.RE
+.TP
+.B \f[CB]\-agentlib:\f[R]\f[I]libname\f[R][\f[CB]=\f[R]\f[I]options\f[R]]
+Loads the specified native agent library.
+After the library name, a comma\-separated list of options specific to
+the library can be used.
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] If the option
+\f[CB]\-agentlib:foo\f[R] is specified, then the JVM attempts to load the
+library named \f[CB]libfoo.so\f[R] in the location specified by the
+\f[CB]LD_LIBRARY_PATH\f[R] system variable (on macOS this variable is
+\f[CB]DYLD_LIBRARY_PATH\f[R]).
+.IP \[bu] 2
+\f[B]Windows:\f[R] If the option \f[CB]\-agentlib:foo\f[R] is specified,
+then the JVM attempts to load the library named \f[CB]foo.dll\f[R] in the
+location specified by the \f[CB]PATH\f[R] system variable.
+.RS 2
+.PP
+The following example shows how to load the Java Debug Wire Protocol
+(JDWP) library and listen for the socket connection on port 8000,
+suspending the JVM before the main class loads:
+.RS
+.PP
+\f[CB]\-agentlib:jdwp=transport=dt_socket,server=y,address=8000\f[R]
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]\-agentpath:\f[R]\f[I]pathname\f[R][\f[CB]=\f[R]\f[I]options\f[R]]
+Loads the native agent library specified by the absolute path name.
+This option is equivalent to \f[CB]\-agentlib\f[R] but uses the full path
+and file name of the library.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-class\-path\f[R] \f[I]classpath\f[R], \f[CB]\-classpath\f[R] \f[I]classpath\f[R], or \f[CB]\-cp\f[R] \f[I]classpath\f[R]
+A semicolon (\f[CB];\f[R]) separated list of directories, JAR archives,
+and ZIP archives to search for class files.
+.RS
+.PP
+Specifying \f[I]classpath\f[R] overrides any setting of the
+\f[CB]CLASSPATH\f[R] environment variable.
+If the class path option isn\[aq]t used and \f[I]classpath\f[R] isn\[aq]t
+set, then the user class path consists of the current directory (.).
+.PP
+As a special convenience, a class path element that contains a base name
+of an asterisk (*) is considered equivalent to specifying a list of all
+the files in the directory with the extension \f[CB]\&.jar\f[R] or
+\f[CB]\&.JAR\f[R] .
+A Java program can\[aq]t tell the difference between the two
+invocations.
+For example, if the directory mydir contains \f[CB]a.jar\f[R] and
+\f[CB]b.JAR\f[R], then the class path element mydir/* is expanded to
+\f[CB]A.jar:b.JAR\f[R], except that the order of JAR files is unspecified.
+All \f[CB]\&.jar\f[R] files in the specified directory, even hidden ones,
+are included in the list.
+A class path entry consisting of an asterisk (*) expands to a list of
+all the jar files in the current directory.
+The \f[CB]CLASSPATH\f[R] environment variable, where defined, is similarly
+expanded.
+Any class path wildcard expansion that occurs before the Java VM is
+started.
+Java programs never see wildcards that aren\[aq]t expanded except by
+querying the environment, such as by calling
+\f[CB]System.getenv("CLASSPATH")\f[R].
+.RE
+.TP
+.B \f[CB]\-\-disable\-\@files\f[R]
+Can be used anywhere on the command line, including in an argument file,
+to prevent further \f[CB]\@filename\f[R] expansion.
+This option stops expanding \f[CB]\@\f[R]\-argfiles after the option.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-enable\-preview\f[R]
+Allows classes to depend on \f[B]preview features\f[R]
+[https://docs.oracle.com/en/java/javase/12/language/index.html#JSLAN\-GUID\-5A82FE0E\-0CA4\-4F1F\-B075\-564874FE2823]
+of the release.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]... or \f[CB]\-p\f[R] \f[I]modulepath\f[R]
+A semicolon (\f[CB];\f[R]) separated list of directories in which each
+directory is a directory of modules.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-upgrade\-module\-path\f[R] \f[I]modulepath\f[R]...
+A semicolon (\f[CB];\f[R]) separated list of directories in which each
+directory is a directory of modules that replace upgradeable modules in
+the runtime image.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
+Specifies the root modules to resolve in addition to the initial module.
+\f[I]module\f[R] also can be \f[CB]ALL\-DEFAULT\f[R], \f[CB]ALL\-SYSTEM\f[R],
+and \f[CB]ALL\-MODULE\-PATH\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-list\-modules\f[R]
+Lists the observable modules and then exits.
+.RS
+.RE
+.TP
+.B \f[CB]\-d\f[R] \f[I]module_name\f[R] or \f[CB]\-\-describe\-module\f[R] \f[I]module_name\f[R]
+Describes a specified module and then exits.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-dry\-run\f[R]
+Creates the VM but doesn\[aq]t execute the main method.
+This \f[CB]\-\-dry\-run\f[R] option might be useful for validating the
+command\-line options such as the module system configuration.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-validate\-modules\f[R]
+Validates all modules and exit.
+This option is helpful for finding conflicts and other errors with
+modules on the module path.
+.RS
+.RE
+.TP
+.B \f[CB]\-D\f[R]\f[I]property\f[R]\f[CB]=\f[R]\f[I]value\f[R]
+Sets a system property value.
+The \f[I]property\f[R] variable is a string with no spaces that
+represents the name of the property.
+The \f[I]value\f[R] variable is a string that represents the value of the
+property.
+If \f[I]value\f[R] is a string with spaces, then enclose it in quotation
+marks (for example \f[CB]\-Dfoo="foo\ bar"\f[R]).
+.RS
+.RE
+.TP
+.B \f[CB]\-disableassertions\f[R][\f[CB]:\f[R][\f[I]packagename\f[R]]...|\f[CB]:\f[R]\f[I]classname\f[R]] or \f[CB]\-da\\[\f[R]:\f[CB]\\[*packagename*\\]...|\f[R]:`\f[I]classname\f[R]]
+Disables assertions.
+By default, assertions are disabled in all packages and classes.
+With no arguments, \f[CB]\-disableassertions\f[R] (\f[CB]\-da\f[R]) disables
+assertions in all packages and classes.
+With the \f[I]packagename\f[R] argument ending in \f[CB]\&...\f[R], the
+switch disables assertions in the specified package and any subpackages.
+If the argument is simply \f[CB]\&...\f[R], then the switch disables
+assertions in the unnamed package in the current working directory.
+With the \f[I]classname\f[R] argument, the switch disables assertions in
+the specified class.
+.RS
+.PP
+The \f[CB]\-disableassertions\f[R] (\f[CB]\-da\f[R]) option applies to all
+class loaders and to system classes (which don\[aq]t have a class
+loader).
+There\[aq]s one exception to this rule: If the option is provided with
+no arguments, then it doesn\[aq]t apply to system classes.
+This makes it easy to disable assertions in all classes except for
+system classes.
+The \f[CB]\-disablesystemassertions\f[R] option enables you to disable
+assertions in all system classes.
+To explicitly enable assertions in specific packages or classes, use the
+\f[CB]\-enableassertions\f[R] (\f[CB]\-ea\f[R]) option.
+Both options can be used at the same time.
+For example, to run the \f[CB]MyClass\f[R] application with assertions
+enabled in the package \f[CB]com.wombat.fruitbat\f[R] (and any
+subpackages) but disabled in the class
+\f[CB]com.wombat.fruitbat.Brickbat\f[R], use the following command:
+.RS
+.PP
+\f[CB]java\ \-ea:com.wombat.fruitbat...\ \-da:com.wombat.fruitbat.Brickbat\ MyClass\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-disablesystemassertions\f[R] or \f[CB]\-dsa\f[R]
+Disables assertions in all system classes.
+.RS
+.RE
+.TP
+.B \f[CB]\-enableassertions\f[R][\f[CB]:\f[R][\f[I]packagename\f[R]]...|\f[CB]:\f[R]\f[I]classname\f[R]] or \f[CB]\-ea\\[\f[R]:\f[CB]\\[*packagename*\\]...|\f[R]:`\f[I]classname\f[R]]
+Enables assertions.
+By default, assertions are disabled in all packages and classes.
+With no arguments, \f[CB]\-enableassertions\f[R] (\f[CB]\-ea\f[R]) enables
+assertions in all packages and classes.
+With the \f[I]packagename\f[R] argument ending in \f[CB]\&...\f[R], the
+switch enables assertions in the specified package and any subpackages.
+If the argument is simply \f[CB]\&...\f[R], then the switch enables
+assertions in the unnamed package in the current working directory.
+With the \f[I]classname\f[R] argument, the switch enables assertions in
+the specified class.
+.RS
+.PP
+The \f[CB]\-enableassertions\f[R] (\f[CB]\-ea\f[R]) option applies to all
+class loaders and to system classes (which don\[aq]t have a class
+loader).
+There\[aq]s one exception to this rule: If the option is provided with
+no arguments, then it doesn\[aq]t apply to system classes.
+This makes it easy to enable assertions in all classes except for system
+classes.
+The \f[CB]\-enablesystemassertions\f[R] option provides a separate switch
+to enable assertions in all system classes.
+To explicitly disable assertions in specific packages or classes, use
+the \f[CB]\-disableassertions\f[R] (\f[CB]\-da\f[R]) option.
+If a single command contains multiple instances of these switches, then
+they\[aq]re processed in order, before loading any classes.
+For example, to run the \f[CB]MyClass\f[R] application with assertions
+enabled only in the package \f[CB]com.wombat.fruitbat\f[R] (and any
+subpackages) but disabled in the class
+\f[CB]com.wombat.fruitbat.Brickbat\f[R], use the following command:
+.RS
+.PP
+\f[CB]java\ \-ea:com.wombat.fruitbat...\ \-da:com.wombat.fruitbat.Brickbat\ MyClass\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-enablesystemassertions\f[R] or \f[CB]\-esa\f[R]
+Enables assertions in all system classes.
+.RS
+.RE
+.TP
+.B \f[CB]\-help\f[R], \f[CB]\-h\f[R], or \f[CB]\-?\f[R]
+Prints the help message to the error stream.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\f[R]
+Prints the help message to the output stream.
+.RS
+.RE
+.TP
+.B \f[CB]\-javaagent:\f[R]\f[I]jarpath\f[R][\f[CB]=\f[R]\f[I]options\f[R]]
+Loads the specified Java programming language agent.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-show\-version\f[R]
+Prints the product version to the output stream and continues.
+.RS
+.RE
+.TP
+.B \f[CB]\-showversion\f[R]
+Prints the product version to the error stream and continues.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-show\-module\-resolution\f[R]
+Shows module resolution output during startup.
+.RS
+.RE
+.TP
+.B \f[CB]\-splash:\f[R]\f[I]imagepath\f[R]
+Shows the splash screen with the image specified by \f[I]imagepath\f[R].
+HiDPI scaled images are automatically supported and used if available.
+The unscaled image file name, such as \f[CB]image.ext\f[R], should always
+be passed as the argument to the \f[CB]\-splash\f[R] option.
+The most appropriate scaled image provided is picked up automatically.
+.RS
+.PP
+For example, to show the \f[CB]splash.gif\f[R] file from the
+\f[CB]images\f[R] directory when starting your application, use the
+following option:
+.RS
+.PP
+\f[CB]\-splash:images/splash.gif\f[R]
+.RE
+.PP
+See the SplashScreen API documentation for more information.
+.RE
+.TP
+.B \f[CB]\-verbose:class\f[R]
+Displays information about each loaded class.
+.RS
+.RE
+.TP
+.B \f[CB]\-verbose:gc\f[R]
+Displays information about each garbage collection (GC) event.
+.RS
+.RE
+.TP
+.B \f[CB]\-verbose:jni\f[R]
+Displays information about the use of native methods and other Java
+Native Interface (JNI) activity.
+.RS
+.RE
+.TP
+.B \f[CB]\-verbose:module\f[R]
+Displays information about the modules in use.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-version\f[R]
+Prints product version to the error stream and exits.
+.RS
+.RE
+.TP
+.B \f[CB]\-version\f[R]
+Prints product version to the output stream and exits.
+.RS
+.RE
+.TP
+.B \f[CB]\-X\f[R]
+Prints the help on extra options to the error stream.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\-extra\f[R]
+Prints the help on extra options to the output stream.
+.RS
+.RE
+.TP
+.B \f[CB]\@\f[R]\f[I]argfile\f[R]
+Specifies one or more argument files prefixed by \f[CB]\@\f[R] used by the
+\f[CB]java\f[R] command.
+It isn\[aq]t uncommon for the \f[CB]java\f[R] command line to be very long
+because of the \f[CB]\&.jar\f[R] files needed in the classpath.
+The \f[CB]\@\f[R]\f[I]argfile\f[R] option overcomes command\-line length
+limitations by enabling the launcher to expand the contents of argument
+files after shell expansion, but before argument processing.
+Contents in the argument files are expanded because otherwise, they
+would be specified on the command line until the
+\f[CB]\-Xdisable\-\@files\f[R] option was encountered.
+.RS
+.PP
+The argument files can also contain the main class name and all options.
+If an argument file contains all of the options required by the
+\f[CB]java\f[R] command, then the command line could simply be:
+.RS
+.PP
+\f[CB]java\ \@\f[R]\f[I]argfile\f[R]
+.RE
+.PP
+See \f[B]java Command\-Line Argument Files\f[R] for a description and
+examples of using \f[CB]\@\f[R]\-argfiles.
+.RE
+.SH EXTRA OPTIONS FOR JAVA
+.PP
+The following \f[CB]java\f[R] options are general purpose options that are
+specific to the Java HotSpot Virtual Machine.
+.TP
+.B \f[CB]\-Xbatch\f[R]
+Disables background compilation.
+By default, the JVM compiles the method as a background task, running
+the method in interpreter mode until the background compilation is
+finished.
+The \f[CB]\-Xbatch\f[R] flag disables background compilation so that
+compilation of all methods proceeds as a foreground task until
+completed.
+This option is equivalent to \f[CB]\-XX:\-BackgroundCompilation\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-Xbootclasspath/a:\f[R]\f[I]directories\f[R]|\f[I]zip\f[R]|\f[I]JAR\-files\f[R]
+Specifies a list of directories, JAR files, and ZIP archives to append
+to the end of the default bootstrap class path.
+.RS
+.PP
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] Colons (\f[CB]:\f[R]) separate
+entities in this list.
+.PP
+\f[B]Windows:\f[R] Semicolons (\f[CB];\f[R]) separate entities in this
+list.
+.RE
+.TP
+.B \f[CB]\-Xcheck:jni\f[R]
+Performs additional checks for Java Native Interface (JNI) functions.
+Specifically, it validates the parameters passed to the JNI function and
+the runtime environment data before processing the JNI request.
+It also checks for pending exceptions between JNI calls.
+Any invalid data encountered indicates a problem in the native code, and
+the JVM terminates with an irrecoverable error in such cases.
+Expect a performance degradation when this option is used.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xcomp\f[R]
+Forces compilation of methods on first invocation.
+By default, the Client VM (\f[CB]\-client\f[R]) performs 1,000 interpreted
+method invocations and the Server VM (\f[CB]\-server\f[R]) performs 10,000
+interpreted method invocations to gather information for efficient
+compilation.
+Specifying the \f[CB]\-Xcomp\f[R] option disables interpreted method
+invocations to increase compilation performance at the expense of
+efficiency.
+You can also change the number of interpreted method invocations before
+compilation using the \f[CB]\-XX:CompileThreshold\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xdebug\f[R]
+Does nothing.
+Provided for backward compatibility.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xdiag\f[R]
+Shows additional diagnostic messages.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xint\f[R]
+Runs the application in interpreted\-only mode.
+Compilation to native code is disabled, and all bytecode is executed by
+the interpreter.
+The performance benefits offered by the just\-in\-time (JIT) compiler
+aren\[aq]t present in this mode.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xinternalversion\f[R]
+Displays more detailed JVM version information than the
+\f[CB]\-version\f[R] option, and then exits.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:\f[R]\f[I]option\f[R]
+Configure or enable logging with the Java Virtual Machine (JVM) unified
+logging framework.
+See \f[B]Enable Logging with the JVM Unified Logging Framework\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-Xmixed\f[R]
+Executes all bytecode by the interpreter except for hot methods, which
+are compiled to native code.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xmn\f[R] \f[I]size\f[R]
+Sets the initial and maximum size (in bytes) of the heap for the young
+generation (nursery).
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+The young generation region of the heap is used for new objects.
+GC is performed in this region more often than in other regions.
+If the size for the young generation is too small, then a lot of minor
+garbage collections are performed.
+If the size is too large, then only full garbage collections are
+performed, which can take a long time to complete.
+It is recommended that you keep the size for the young generation
+greater than 25% and less than 50% of the overall heap size.
+The following examples show how to set the initial and maximum size of
+young generation to 256 MB using various units:
+.RS
+.IP
.nf
-\fB\-splash:images/splash\&.gif\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-verbose:class
-.RS 4
-Displays information about each loaded class\&.
-.RE
-.PP
-\-verbose:gc
-.RS 4
-Displays information about each garbage collection (GC) event\&.
-.RE
-.PP
-\-verbose:jni
-.RS 4
-Displays information about the use of native methods and other Java Native Interface (JNI) activity\&.
-.RE
-.PP
-\-version
-.RS 4
-Displays version information and then exits\&. This option is equivalent to the
-\fB\-showversion\fR
-option except that the latter does not instruct the JVM to exit after displaying version information\&.
-.RE
-.PP
-\-version:\fIrelease\fR
-.RS 4
-Specifies the release version to be used for running the application\&. If the version of the
-\fBjava\fR
-command called does not meet this specification and an appropriate implementation is found on the system, then the appropriate implementation will be used\&.
-.sp
-The
-\fIrelease\fR
-argument specifies either the exact version string, or a list of version strings and ranges separated by spaces\&. A
-\fIversion string\fR
-is the developer designation of the version number in the following form:
-\fB1\&.\fR\fIx\fR\fB\&.0_\fR\fIu\fR
-(where
-\fIx\fR
-is the major version number, and
-\fIu\fR
-is the update version number)\&. A
-\fIversion range\fR
-is made up of a version string followed by a plus sign (\fB+\fR) to designate this version or later, or a part of a version string followed by an asterisk (\fB*\fR) to designate any version string with a matching prefix\&. Version strings and ranges can be combined using a space for a logical
-\fIOR\fR
-combination, or an ampersand (\fB&\fR) for a logical
-\fIAND\fR
-combination of two version strings/ranges\&. For example, if running the class or JAR file requires either JRE 6u13 (1\&.6\&.0_13), or any JRE 6 starting from 6u10 (1\&.6\&.0_10), specify the following:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-version:"1\&.6\&.0_13 1\&.6* & 1\&.6\&.0_10+"\fR
-
+\f[CB]
+\-Xmn256m
+\-Xmn262144k
+\-Xmn268435456
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-Quotation marks are necessary only if there are spaces in the
-\fIrelease\fR
-parameter\&.
-.sp
-For JAR files, the preference is to specify version requirements in the JAR file manifest rather than on the command line\&.
-.RE
-.SS "Non\-Standard Options"
-.PP
-These options are general purpose options that are specific to the Java HotSpot Virtual Machine\&.
-.PP
-\-X
-.RS 4
-Displays help for all available
-\fB\-X\fR
-options\&.
-.RE
-.PP
-\-Xbatch
-.RS 4
-Disables background compilation\&. By default, the JVM compiles the method as a background task, running the method in interpreter mode until the background compilation is finished\&. The
-\fB\-Xbatch\fR
-flag disables background compilation so that compilation of all methods proceeds as a foreground task until completed\&.
-.sp
-This option is equivalent to
-\fB\-XX:\-BackgroundCompilation\fR\&.
-.RE
-.PP
-\-Xbootclasspath:\fIpath\fR
-.RS 4
-Specifies a list of directories, JAR files, and ZIP archives separated by colons (:) to search for boot class files\&. These are used in place of the boot class files included in the JDK\&.
-.sp
-Do not deploy applications that use this option to override a class in
-\fBrt\&.jar\fR, because this violates the JRE binary code license\&.
-.RE
-.PP
-\-Xbootclasspath/a:\fIpath\fR
-.RS 4
-Specifies a list of directories, JAR files, and ZIP archives separated by colons (:) to append to the end of the default bootstrap class path\&.
-.sp
-Do not deploy applications that use this option to override a class in
-\fBrt\&.jar\fR, because this violates the JRE binary code license\&.
-.RE
-.PP
-\-Xbootclasspath/p:\fIpath\fR
-.RS 4
-Specifies a list of directories, JAR files, and ZIP archives separated by colons (:) to prepend to the front of the default bootstrap class path\&.
-.sp
-Do not deploy applications that use this option to override a class in
-\fBrt\&.jar\fR, because this violates the JRE binary code license\&.
-.RE
-.PP
-\-Xcheck:jni
-.RS 4
-Performs additional checks for Java Native Interface (JNI) functions\&. Specifically, it validates the parameters passed to the JNI function and the runtime environment data before processing the JNI request\&. Any invalid data encountered indicates a problem in the native code, and the JVM will terminate with an irrecoverable error in such cases\&. Expect a performance degradation when this option is used\&.
-.RE
-.PP
-\-Xcomp
-.RS 4
-Forces compilation of methods on first invocation\&. By default, the Client VM (\fB\-client\fR) performs 1,000 interpreted method invocations and the Server VM (\fB\-server\fR) performs 10,000 interpreted method invocations to gather information for efficient compilation\&. Specifying the
-\fB\-Xcomp\fR
-option disables interpreted method invocations to increase compilation performance at the expense of efficiency\&.
-.sp
-You can also change the number of interpreted method invocations before compilation using the
-\fB\-XX:CompileThreshold\fR
-option\&.
-.RE
-.PP
-\-Xdebug
-.RS 4
-Does nothing\&. Provided for backward compatibility\&.
-.RE
-.PP
-\-Xdiag
-.RS 4
-Shows additional diagnostic messages\&.
-.RE
-.PP
-\-Xfuture
-.RS 4
-Enables strict class\-file format checks that enforce close conformance to the class\-file format specification\&. Developers are encouraged to use this flag when developing new code because the stricter checks will become the default in future releases\&.
-.sp
-This option is deprecated and may be removed in a future release.
-.RE
-.PP
-\-Xint
-.RS 4
-Runs the application in interpreted\-only mode\&. Compilation to native code is disabled, and all bytecode is executed by the interpreter\&. The performance benefits offered by the just in time (JIT) compiler are not present in this mode\&.
-.RE
-.PP
-\-Xinternalversion
-.RS 4
-Displays more detailed JVM version information than the
-\fB\-version\fR
-option, and then exits\&.
-.RE
-.PP
-\-Xloggc:\fIfilename\fR
-.RS 4
-Sets the file to which verbose GC events information should be redirected for logging\&. The information written to this file is similar to the output of
-\fB\-verbose:gc\fR
-with the time elapsed since the first GC event preceding each logged event\&. The
-\fB\-Xloggc\fR
-option overrides
-\fB\-verbose:gc\fR
-if both are given with the same
-\fBjava\fR
-command\&.
-.sp
-Example:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+Instead of the \f[CB]\-Xmn\f[R] option to set both the initial and maximum
+size of the heap for the young generation, you can use
+\f[CB]\-XX:NewSize\f[R] to set the initial size and
+\f[CB]\-XX:MaxNewSize\f[R] to set the maximum size.
+.RE
+.TP
+.B \f[CB]\-Xms\f[R] \f[I]size\f[R]
+Sets the initial size (in bytes) of the heap.
+This value must be a multiple of 1024 and greater than 1 MB.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, \f[CB]g\f[R] or \f[CB]G\f[R]
+to indicate gigabytes.
+The following examples show how to set the size of allocated memory to 6
+MB using various units:
+.RS
+.IP
.nf
-\fB\-Xloggc:garbage\-collection\&.log\fR
-
+\f[CB]
+\-Xms6291456
+\-Xms6144k
+\-Xms6m
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-Xmaxjitcodesize=\fIsize\fR
-.RS 4
-Specifies the maximum code cache size (in bytes) for JIT\-compiled code\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. The default maximum code cache size is 240 MB; if you disable tiered compilation with the option
-\fB\-XX:\-TieredCompilation\fR, then the default size is 48 MB:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-Xmaxjitcodesize=240m\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-This option is equivalent to
-\fB\-XX:ReservedCodeCacheSize\fR\&.
-.RE
-.PP
-\-Xmixed
-.RS 4
-Executes all bytecode by the interpreter except for hot methods, which are compiled to native code\&.
-.RE
-.PP
-\-Xmn\fIsize\fR
-.RS 4
-Sets the initial and maximum size (in bytes) of the heap for the young generation (nursery)\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&.
-.sp
-The young generation region of the heap is used for new objects\&. GC is performed in this region more often than in other regions\&. If the size for the young generation is too small, then a lot of minor garbage collections will be performed\&. If the size is too large, then only full garbage collections will be performed, which can take a long time to complete\&. Oracle recommends that you keep the size for the young generation between a half and a quarter of the overall heap size\&.
-.sp
-The following examples show how to set the initial and maximum size of young generation to 256 MB using various units:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+If you don\[aq]t set this option, then the initial size is set as the
+sum of the sizes allocated for the old generation and the young
+generation.
+The initial size of the heap for the young generation can be set using
+the \f[CB]\-Xmn\f[R] option or the \f[CB]\-XX:NewSize\f[R] option.
+.RE
+.TP
+.B \f[CB]\-Xmx\f[R] \f[I]size\f[R]
+Specifies the maximum size (in bytes) of the memory allocation pool in
+bytes.
+This value must be a multiple of 1024 and greater than 2 MB.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+The default value is chosen at runtime based on system configuration.
+For server deployments, \f[CB]\-Xms\f[R] and \f[CB]\-Xmx\f[R] are often set
+to the same value.
+The following examples show how to set the maximum allowed size of
+allocated memory to 80 MB using various units:
+.RS
+.IP
.nf
-\fB\-Xmn256m\fR
-\fB\-Xmn262144k\fR
-\fB\-Xmn268435456\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Instead of the
-\fB\-Xmn\fR
-option to set both the initial and maximum size of the heap for the young generation, you can use
-\fB\-XX:NewSize\fR
-to set the initial size and
-\fB\-XX:MaxNewSize\fR
-to set the maximum size\&.
-.RE
-.PP
-\-Xms\fIsize\fR
-.RS 4
-Sets the initial size (in bytes) of the heap\&. This value must be a multiple of 1024 and greater than 1 MB\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&.
-.sp
-The following examples show how to set the size of allocated memory to 6 MB using various units:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-Xms6291456\fR
-\fB\-Xms6144k\fR
-\fB\-Xms6m\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-If you do not set this option, then the initial size will be set as the sum of the sizes allocated for the old generation and the young generation\&. The initial size of the heap for the young generation can be set using the
-\fB\-Xmn\fR
-option or the
-\fB\-XX:NewSize\fR
-option\&.
-.RE
-.PP
-\-Xmx\fIsize\fR
-.RS 4
-Specifies the maximum size (in bytes) of the memory allocation pool in bytes\&. This value must be a multiple of 1024 and greater than 2 MB\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. The default value is chosen at runtime based on system configuration\&. For server deployments,
-\fB\-Xms\fR
-and
-\fB\-Xmx\fR
-are often set to the same value\&. See the section "Ergonomics" in
-\fIJava SE HotSpot Virtual Machine Garbage Collection Tuning Guide\fR
-at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gctuning/index\&.html\&.
-.sp
-The following examples show how to set the maximum allowed size of allocated memory to 80 MB using various units:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-Xmx83886080\fR
-\fB\-Xmx81920k\fR
-\fB\-Xmx80m\fR
-
+\f[CB]
+\-Xmx83886080
+\-Xmx81920k
+\-Xmx80m
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-The
-\fB\-Xmx\fR
-option is equivalent to
-\fB\-XX:MaxHeapSize\fR\&.
-.RE
-.PP
-\-Xnoclassgc
-.RS 4
-Disables garbage collection (GC) of classes\&. This can save some GC time, which shortens interruptions during the application run\&.
-.sp
-When you specify
-\fB\-Xnoclassgc\fR
-at startup, the class objects in the application will be left untouched during GC and will always be considered live\&. This can result in more memory being permanently occupied which, if not used carefully, will throw an out of memory exception\&.
-.RE
-.PP
-\-Xprof
-.RS 4
-Profiles the running program and sends profiling data to standard output\&. This option is provided as a utility that is useful in program development and is not intended to be used in production systems\&.
-.RE
-.PP
-\-Xrs
-.RS 4
-Reduces the use of operating system signals by the JVM\&.
-.sp
-Shutdown hooks enable orderly shutdown of a Java application by running user cleanup code (such as closing database connections) at shutdown, even if the JVM terminates abruptly\&.
-.sp
-The JVM catches signals to implement shutdown hooks for unexpected termination\&. The JVM uses
-\fBSIGHUP\fR,
-\fBSIGINT\fR, and
-\fBSIGTERM\fR
-to initiate the running of shutdown hooks\&.
-.sp
-The JVM uses a similar mechanism to implement the feature of dumping thread stacks for debugging purposes\&. The JVM uses
-\fBSIGQUIT\fR
-to perform thread dumps\&.
-.sp
+.PP
+The \f[CB]\-Xmx\f[R] option is equivalent to \f[CB]\-XX:MaxHeapSize\f[R].
+.RE
+.TP
+.B \f[CB]\-Xnoclassgc\f[R]
+Disables garbage collection (GC) of classes.
+This can save some GC time, which shortens interruptions during the
+application run.
+When you specify \f[CB]\-Xnoclassgc\f[R] at startup, the class objects in
+the application are left untouched during GC and are always be
+considered live.
+This can result in more memory being permanently occupied which, if not
+used carefully, throws an out\-of\-memory exception.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xrs\f[R]
+Reduces the use of operating system signals by the JVM.
+Shutdown hooks enable the orderly shutdown of a Java application by
+running user cleanup code (such as closing database connections) at
+shutdown, even if the JVM terminates abruptly.
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R]
+.RS 2
+.IP \[bu] 2
+The JVM catches signals to implement shutdown hooks for unexpected
+termination.
+The JVM uses \f[CB]SIGHUP\f[R], \f[CB]SIGINT\f[R], and \f[CB]SIGTERM\f[R] to
+initiate the running of shutdown hooks.
+.IP \[bu] 2
Applications embedding the JVM frequently need to trap signals such as
-\fBSIGINT\fR
-or
-\fBSIGTERM\fR, which can lead to interference with the JVM signal handlers\&. The
-\fB\-Xrs\fR
-option is available to address this issue\&. When
-\fB\-Xrs\fR
-is used, the signal masks for
-\fBSIGINT\fR,
-\fBSIGTERM\fR,
-\fBSIGHUP\fR, and
-\fBSIGQUIT\fR
-are not changed by the JVM, and signal handlers for these signals are not installed\&.
-.sp
-There are two consequences of specifying
-\fB\-Xrs\fR:
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-\fBSIGQUIT\fR
-thread dumps are not available\&.
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-User code is responsible for causing shutdown hooks to run, for example, by calling
-\fBSystem\&.exit()\fR
-when the JVM is to be terminated\&.
-.RE
-.RE
-.PP
-\-Xshare:\fImode\fR
-.RS 4
-Sets the class data sharing (CDS) mode\&. Possible
-\fImode\fR
-arguments for this option include the following:
-.PP
-auto
-.RS 4
-Use CDS if possible\&. This is the default value for Java HotSpot 32\-Bit Client VM\&.
-.RE
-.PP
-on
-.RS 4
-Require the use of CDS\&. Print an error message and exit if class data sharing cannot be used\&.
-.RE
-.PP
-off
-.RS 4
-Do not use CDS\&. This is the default value for Java HotSpot 32\-Bit Server VM, Java HotSpot 64\-Bit Client VM, and Java HotSpot 64\-Bit Server VM\&.
-.RE
-.PP
-dump
-.RS 4
-Manually generate the CDS archive\&. Specify the application class path as described in "Setting the Class Path "\&.
-.sp
-You should regenerate the CDS archive with each new JDK release\&.
-.RE
-.RE
-.PP
-\-XshowSettings:\fIcategory\fR
-.RS 4
-Shows settings and continues\&. Possible
-\fIcategory\fR
-arguments for this option include the following:
-.PP
-all
-.RS 4
-Shows all categories of settings\&. This is the default value\&.
-.RE
-.PP
-locale
-.RS 4
-Shows settings related to locale\&.
-.RE
-.PP
-properties
-.RS 4
-Shows settings related to system properties\&.
-.RE
-.PP
-vm
-.RS 4
-Shows the settings of the JVM\&.
-.RE
-.RE
-.PP
-\-Xss\fIsize\fR
-.RS 4
-Sets the thread stack size (in bytes)\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate KB,
-\fBm\fR
-or
-\fBM\fR
-to indicate MB,
-\fBg\fR
-or
-\fBG\fR
-to indicate GB\&. The default value depends on the platform:
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Linux/ARM (32\-bit): 320 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Linux/i386 (32\-bit): 320 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
+\f[CB]SIGINT\f[R] or \f[CB]SIGTERM\f[R], which can lead to interference with
+the JVM signal handlers.
+The \f[CB]\-Xrs\f[R] option is available to address this issue.
+When \f[CB]\-Xrs\f[R] is used, the signal masks for \f[CB]SIGINT\f[R],
+\f[CB]SIGTERM\f[R], \f[CB]SIGHUP\f[R], and \f[CB]SIGQUIT\f[R] aren\[aq]t
+changed by the JVM, and signal handlers for these signals aren\[aq]t
+installed.
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R]
+.RS 2
+.IP \[bu] 2
+The JVM watches for console control events to implement shutdown hooks
+for unexpected termination.
+Specifically, the JVM registers a console control handler that begins
+shutdown\-hook processing and returns \f[CB]TRUE\f[R] for
+\f[CB]CTRL_C_EVENT\f[R], \f[CB]CTRL_CLOSE_EVENT\f[R],
+\f[CB]CTRL_LOGOFF_EVENT\f[R], and \f[CB]CTRL_SHUTDOWN_EVENT\f[R].
+.IP \[bu] 2
+The JVM uses a similar mechanism to implement the feature of dumping
+thread stacks for debugging purposes.
+The JVM uses \f[CB]CTRL_BREAK_EVENT\f[R] to perform thread dumps.
+.IP \[bu] 2
+If the JVM is run as a service (for example, as a servlet engine for a
+web server), then it can receive \f[CB]CTRL_LOGOFF_EVENT\f[R] but
+shouldn\[aq]t initiate shutdown because the operating system doesn\[aq]t
+actually terminate the process.
+To avoid possible interference such as this, the \f[CB]\-Xrs\f[R] option
+can be used.
+When the \f[CB]\-Xrs\f[R] option is used, the JVM doesn\[aq]t install a
+console control handler, implying that it doesn\[aq]t watch for or
+process \f[CB]CTRL_C_EVENT\f[R], \f[CB]CTRL_CLOSE_EVENT\f[R],
+\f[CB]CTRL_LOGOFF_EVENT\f[R], or \f[CB]CTRL_SHUTDOWN_EVENT\f[R].
+.RE
+.PP
+There are two consequences of specifying \f[CB]\-Xrs\f[R]:
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] \f[CB]SIGQUIT\f[R] thread dumps
+aren\[aq]t available.
+.IP \[bu] 2
+\f[B]Windows:\f[R] Ctrl + Break thread dumps aren\[aq]t available.
+.PP
+User code is responsible for causing shutdown hooks to run, for example,
+by calling the \f[CB]System.exit()\f[R] when the JVM is to be terminated.
+.RE
+.TP
+.B \f[CB]\-Xshare:\f[R]\f[I]mode\f[R]
+Sets the class data sharing (CDS) mode.
+.RS
+.PP
+Possible \f[I]mode\f[R] arguments for this option include the following:
+.TP
+.B \f[CB]auto\f[R]
+Use shared class data if possible (default).
+.RS
+.RE
+.TP
+.B \f[CB]on\f[R]
+Require using shared class data, otherwise fail.
+.RS
+.RE
+.RS
+.PP
+\f[B]Note:\f[R] The \f[CB]\-Xshare:on\f[R] option is used for testing
+purposes only and may cause intermittent failures due to the use of
+address space layout randomization by the operation system.
+This option should not be used in production environments.
+.RE
+.TP
+.B \f[CB]off\f[R]
+Do not attempt to use shared class data.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]\-XshowSettings\f[R]
+Shows all settings and then continues.
+.RS
+.RE
+.TP
+.B \f[CB]\-XshowSettings:\f[R]\f[I]category\f[R]
+Shows settings and continues.
+Possible \f[I]category\f[R] arguments for this option include the
+following:
+.RS
+.TP
+.B \f[CB]all\f[R]
+Shows all categories of settings.
+This is the default value.
+.RS
+.RE
+.TP
+.B \f[CB]locale\f[R]
+Shows settings related to locale.
+.RS
+.RE
+.TP
+.B \f[CB]properties\f[R]
+Shows settings related to system properties.
+.RS
+.RE
+.TP
+.B \f[CB]vm\f[R]
+Shows the settings of the JVM.
+.RS
+.RE
+.TP
+.B \f[CB]system\f[R]
+\f[B]Linux:\f[R] Shows host system or container configuration and
+continues.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]\-Xss\f[R] \f[I]size\f[R]
+Sets the thread stack size (in bytes).
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate KB, \f[CB]m\f[R] or
+\f[CB]M\f[R] to indicate MB, or \f[CB]g\f[R] or \f[CB]G\f[R] to indicate GB.
+The default value depends on the platform:
+.RS
+.IP \[bu] 2
Linux/x64 (64\-bit): 1024 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-OS X (64\-bit): 1024 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Oracle Solaris/i386 (32\-bit): 320 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Oracle Solaris/x64 (64\-bit): 1024 KB
-.RE
-.sp
-The following examples set the thread stack size to 1024 KB in different units:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-Xss1m\fR
-\fB\-Xss1024k\fR
-\fB\-Xss1048576\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-This option is equivalent to
-\fB\-XX:ThreadStackSize\fR\&.
-.RE
-.PP
-\-Xusealtsigs
-.RS 4
-Use alternative signals instead of
-\fBSIGUSR1\fR
-and
-\fBSIGUSR2\fR
-for JVM internal signals\&. This option is equivalent to
-\fB\-XX:+UseAltSigs\fR\&.
-.RE
-.PP
-\-Xverify:\fImode\fR
-.RS 4
-Sets the mode of the bytecode verifier\&. Bytecode verification helps to troubleshoot some problems, but it also adds overhead to the running application\&. Possible
-\fImode\fR
-arguments for this option include the following:
-.PP
-none
-.RS 4
-Do not verify the bytecode\&. This reduces startup time and also reduces the protection provided by Java\&.
-.sp
-This option is deprecated and may be removed in a future release.
-.RE
-.PP
-remote
-.RS 4
-Verify those classes that are not loaded by the bootstrap class loader\&. This is the default behavior if you do not specify the
-\fB\-Xverify\fR
-option\&.
-.RE
-.PP
-all
-.RS 4
-Verify all classes\&.
-.RE
-.RE
-.SS "Advanced Runtime Options"
-.PP
-These options control the runtime behavior of the Java HotSpot VM\&.
-.PP
-\-XX:+DisableAttachMechanism
-.RS 4
-Enables the option that disables the mechanism that lets tools attach to the JVM\&. By default, this option is disabled, meaning that the attach mechanism is enabled and you can use tools such as
-\fBjcmd\fR,
-\fBjstack\fR,
-\fBjmap\fR, and
-\fBjinfo\fR\&.
-.RE
-.PP
-\-XX:ErrorFile=\fIfilename\fR
-.RS 4
-Specifies the path and file name to which error data is written when an irrecoverable error occurs\&. By default, this file is created in the current working directory and named
-\fBhs_err_pid\fR\fIpid\fR\fB\&.log\fR
-where
-\fIpid\fR
-is the identifier of the process that caused the error\&. The following example shows how to set the default log file (note that the identifier of the process is specified as
-\fB%p\fR):
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:ErrorFile=\&./hs_err_pid%p\&.log\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-The following example shows how to set the error log to
-\fB/var/log/java/java_error\&.log\fR:
-.sp
-.if n \{\
-.RS 4
-.\}
+.IP \[bu] 2
+macOS (64\-bit): 1024 KB
+.IP \[bu] 2
+Oracle Solaris (64\-bit): 1024 KB
+.IP \[bu] 2
+Windows: The default value depends on virtual memory
+.PP
+The following examples set the thread stack size to 1024 KB in different
+units:
+.IP
.nf
-\fB\-XX:ErrorFile=/var/log/java/java_error\&.log\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-If the file cannot be created in the specified directory (due to insufficient space, permission problem, or another issue), then the file is created in the temporary directory for the operating system\&. The temporary directory is
-\fB/tmp\fR\&.
-.RE
-.PP
-\-XX:+FailOverToOldVerifier
-.RS 4
-Enables automatic failover to the old verifier when the new type checker fails\&. By default, this option is disabled and it is ignored (that is, treated as disabled) for classes with a recent bytecode version\&. You can enable it for classes with older versions of the bytecode\&.
-.RE
-.PP
-\-XX:LargePageSizeInBytes=\fIsize\fR
-.RS 4
-On Solaris, sets the maximum size (in bytes) for large pages used for Java heap\&. The
-\fIsize\fR
-argument must be a power of 2 (2, 4, 8, 16, \&.\&.\&.)\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. By default, the size is set to 0, meaning that the JVM chooses the size for large pages automatically\&.
-.sp
-The following example illustrates how to set the large page size to 4 megabytes (MB):
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:LargePageSizeInBytes=4m\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:MaxDirectMemorySize=\fIsize\fR
-.RS 4
-Sets the maximum total size (in bytes) of the New I/O (the
-\fBjava\&.nio\fR
-package) direct\-buffer allocations\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. By default, the size is set to 0, meaning that the JVM chooses the size for NIO direct\-buffer allocations automatically\&.
-.sp
-The following examples illustrate how to set the NIO size to 1024 KB in different units:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxDirectMemorySize=1m\fR
-\fB\-XX:MaxDirectMemorySize=1024k\fR
-\fB\-XX:MaxDirectMemorySize=1048576\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:NativeMemoryTracking=\fImode\fR
-.RS 4
-Specifies the mode for tracking JVM native memory usage\&. Possible
-\fImode\fR
-arguments for this option include the following:
-.PP
-off
-.RS 4
-Do not track JVM native memory usage\&. This is the default behavior if you do not specify the
-\fB\-XX:NativeMemoryTracking\fR
-option\&.
-.RE
-.PP
-summary
-.RS 4
-Only track memory usage by JVM subsystems, such as Java heap, class, code, and thread\&.
-.RE
-.PP
-detail
-.RS 4
-In addition to tracking memory usage by JVM subsystems, track memory usage by individual
-\fBCallSite\fR, individual virtual memory region and its committed regions\&.
-.RE
-.RE
-.PP
-\-XX:ObjectAlignmentInBytes=\fIalignment\fR
-.RS 4
-Sets the memory alignment of Java objects (in bytes)\&. By default, the value is set to 8 bytes\&. The specified value should be a power of two, and must be within the range of 8 and 256 (inclusive)\&. This option makes it possible to use compressed pointers with large Java heap sizes\&.
-.sp
-The heap size limit in bytes is calculated as:
-.sp
-\fB4GB * ObjectAlignmentInBytes\fR
-.sp
-Note: As the alignment value increases, the unused space between objects will also increase\&. As a result, you may not realize any benefits from using compressed pointers with large Java heap sizes\&.
-.RE
-.PP
-\-XX:OnError=\fIstring\fR
-.RS 4
-Sets a custom command or a series of semicolon\-separated commands to run when an irrecoverable error occurs\&. If the string contains spaces, then it must be enclosed in quotation marks\&.
-.sp
-The following example shows how the
-\fB\-XX:OnError\fR
-option can be used to run the
-\fBgcore\fR
-command to create the core image, and the debugger is started to attach to the process in case of an irrecoverable error (the
-\fB%p\fR
-designates the current process):
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:OnError="gcore %p;dbx \- %p"\fR
-
+\f[CB]
+\-Xss1m
+\-Xss1024k
+\-Xss1048576
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:OnOutOfMemoryError=\fIstring\fR
-.RS 4
-Sets a custom command or a series of semicolon\-separated commands to run when an
-\fBOutOfMemoryError\fR
-exception is first thrown\&. If the string contains spaces, then it must be enclosed in quotation marks\&. For an example of a command string, see the description of the
-\fB\-XX:OnError\fR
-option\&.
-.RE
-.PP
-\-XX:+PerfDataSaveToFile
-.RS 4
-If enabled, saves
-jstat(1) binary data when the Java application exits\&. This binary data is saved in a file named
-\fBhsperfdata_\fR\fI<pid>\fR, where
-\fI<pid>\fR
-is the process identifier of the Java application you ran\&. Use
-\fBjstat\fR
-to display the performance data contained in this file as follows:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+This option is similar to \f[CB]\-XX:ThreadStackSize\f[R].
+.RE
+.TP
+.B \f[CB]\-\-add\-reads\f[R] \f[I]module\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R](\f[CB],\f[R]\f[I]target\-module\f[R])*
+Updates \f[I]module\f[R] to read the \f[I]target\-module\f[R], regardless
+of the module declaration.
+\f[I]target\-module\f[R] can be all unnamed to read all unnamed modules.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-add\-exports\f[R] \f[I]module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R](\f[CB],\f[R]\f[I]target\-module\f[R])*
+Updates \f[I]module\f[R] to export \f[I]package\f[R] to
+\f[I]target\-module\f[R], regardless of module declaration.
+The \f[I]target\-module\f[R] can be all unnamed to export to all unnamed
+modules.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-add\-opens\f[R] \f[I]module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R](\f[CB],\f[R]\f[I]target\-module\f[R])*
+Updates \f[I]module\f[R] to open \f[I]package\f[R] to
+\f[I]target\-module\f[R], regardless of module declaration.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-illegal\-access=\f[R]\f[I]parameter\f[R]
+When present at run time, \f[CB]\-\-illegal\-access=\f[R] takes a keyword
+\f[I]parameter\f[R] to specify a mode of operation:
+.RS
+.RS
+.PP
+\f[B]Note:\f[R] This option will be removed in a future release.
+.RE
+.IP \[bu] 2
+\f[CB]permit\f[R]: This mode opens each package in each module in the
+run\-time image to code in all unnamed modules ( such as code on the
+class path), if that package existed in JDK 8.
+This enables both static access, (for example, by compiled bytecode, and
+deep reflective access) through the platform\[aq]s various reflection
+APIs.
+The first reflective\-access operation to any such package causes a
+warning to be issued.
+However, no warnings are issued after the first occurrence.
+This single warning describes how to enable further warnings.
+This mode is the default for the current JDK but will change in a future
+release.
+.IP \[bu] 2
+\f[CB]warn\f[R]: This mode is identical to \f[CB]permit\f[R] except that a
+warning message is issued for each illegal reflective\-access operation.
+.IP \[bu] 2
+\f[CB]debug\f[R]: This mode is identical to \f[CB]warn\f[R] except that both
+a warning message and a stack trace are issued for each illegal
+reflective\-access operation.
+.IP \[bu] 2
+\f[CB]deny\f[R]: This mode disables all illegal\-access operations except
+for those enabled by other command\-line options, such as
+\f[CB]\-\-add\-opens\f[R].
+This mode will become the default in a future release.
+.PP
+The default mode, \f[CB]\-\-illegal\-access=permit\f[R], is intended to
+make you aware of code on the class path that reflectively accesses any
+JDK\-internal APIs at least once.
+To learn about all such accesses, you can use the \f[CB]warn\f[R] or the
+\f[CB]debug\f[R] modes.
+For each library or framework on the class path that requires illegal
+access, you have two options:
+.IP \[bu] 2
+If the component\[aq]s maintainers have already released a fixed version
+that no longer uses JDK\-internal APIs then you can consider upgrading
+to that version.
+.IP \[bu] 2
+If the component still needs to be fixed, then you can contact its
+maintainers and ask them to replace their use of JDK\-internal APIs with
+the proper exported APIs.
+.PP
+If you must continue to use a component that requires illegal access,
+then you can eliminate the warning messages by using one or more
+\f[CB]\-\-add\-opens\f[R] options to open only those internal packages to
+which access is required.
+.PP
+To verify that your application is ready for a future version of the
+JDK, run it with \f[CB]\-\-illegal\-access=deny\f[R] along with any
+necessary \f[CB]\-\-add\-opens\f[R] options.
+Any remaining illegal\-access errors will most likely be due to static
+references from compiled code to JDK\-internal APIs.
+You can identify those by running the \f[B]jdeps\f[R] tool with the
+\f[CB]\-\-jdk\-internals\f[R] option.
+For performance reasons, the current JDK does not issue warnings for
+illegal static\-access operations.
+.RE
+.TP
+.B \f[CB]\-\-limit\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
+Specifies the limit of the universe of observable modules.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-patch\-module\f[R] \f[I]module\f[R]\f[CB]=\f[R]\f[I]file\f[R](\f[CB];\f[R]\f[I]file\f[R])*
+Overrides or augments a module with classes and resources in JAR files
+or directories.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-disable\-\@files\f[R]
+Can be used anywhere on the command line, including in an argument file,
+to prevent further \f[CB]\@\f[R]\f[I]filename\f[R] expansion.
+This option stops expanding \f[CB]\@\f[R]\-argfiles after the option.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-source\f[R] \f[I]version\f[R]
+Sets the version of the source in source\-file mode.
+.RS
+.RE
+.SH EXTRA OPTIONS FOR MACOS
+.PP
+The following extra options are macOS specific.
+.TP
+.B \f[CB]\-XstartOnFirstThread\f[R]
+Runs the \f[CB]main()\f[R] method on the first (AppKit) thread.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xdock:name=\f[R]\f[I]application_name\f[R]
+Overrides the default application name displayed in dock.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xdock:icon=\f[R]\f[I]path_to_icon_file\f[R]
+Overrides the default icon displayed in dock.
+.RS
+.RE
+.SH ADVANCED OPTIONS FOR JAVA
+.PP
+These \f[CB]java\f[R] options can be used to enable other advanced
+options.
+.TP
+.B \f[CB]\-XX:+UnlockDiagnosticVMOptions\f[R]
+Unlocks the options intended for diagnosing the JVM.
+By default, this option is disabled and diagnostic options aren\[aq]t
+available.
+.RS
+.PP
+Command line options that are enabled with the use of this option are
+not supported.
+If you encounter issues while using any of these options, it is very
+likely that you will be required to reproduce the problem without using
+any of these unsupported options before Oracle Support can assist with
+an investigation.
+It is also possible that any of these options may be removed or their
+behavior changed without any warning.
+.RE
+.TP
+.B \f[CB]\-XX:+UnlockExperimentalVMOptions\f[R]
+Unlocks the options that provide experimental features in the JVM.
+By default, this option is disabled and experimental features aren\[aq]t
+available.
+.RS
+.RE
+.SH ADVANCED RUNTIME OPTIONS FOR JAVA
+.PP
+These \f[CB]java\f[R] options control the runtime behavior of the Java
+HotSpot VM.
+.TP
+.B \f[CB]\-XX:ActiveProcessorCount=\f[R]\f[I]x\f[R]
+Overrides the number of CPUs that the VM will use to calculate the size
+of thread pools it will use for various operations such as Garbage
+Collection and ForkJoinPool.
+.RS
+.PP
+The VM normally determines the number of available processors from the
+operating system.
+This flag can be useful for partitioning CPU resources when running
+multiple Java processes in docker containers.
+This flag is honored even if \f[CB]UseContainerSupport\f[R] is not
+enabled.
+See \f[CB]\-XX:\-UseContainerSupport\f[R] for a description of enabling
+and disabling container support.
+.RE
+.TP
+.B \f[CB]\-XX:AllocateHeapAt=\f[R]\f[I]path\f[R]
+Takes a path to the file system and uses memory mapping to allocate the
+object heap on the memory device.
+Using this option enables the HotSpot VM to allocate the Java object
+heap on an alternative memory device, such as an NV\-DIMM, specified by
+the user.
+.RS
+.PP
+Alternative memory devices that have the same semantics as DRAM,
+including the semantics of atomic operations, can be used instead of
+DRAM for the object heap without changing the existing application code.
+All other memory structures (such as the code heap, metaspace, and
+thread stacks) continue to reside in DRAM.
+.PP
+Some operating systems expose non\-DRAM memory through the file system.
+Memory\-mapped files in these file systems bypass the page cache and
+provide a direct mapping of virtual memory to the physical memory on the
+device.
+The existing heap related flags (such as \f[CB]\-Xmx\f[R] and
+\f[CB]\-Xms\f[R]) and garbage\-collection related flags continue to work
+as before.
+.RE
+.TP
+.B \f[CB]\-XX:\-CompactStrings\f[R]
+Disables the Compact Strings feature.
+By default, this option is enabled.
+When this option is enabled, Java Strings containing only single\-byte
+characters are internally represented and stored as
+single\-byte\-per\-character Strings using ISO\-8859\-1 / Latin\-1
+encoding.
+This reduces, by 50%, the amount of space required for Strings
+containing only single\-byte characters.
+For Java Strings containing at least one multibyte character: these are
+represented and stored as 2 bytes per character using UTF\-16 encoding.
+Disabling the Compact Strings feature forces the use of UTF\-16 encoding
+as the internal representation for all Java Strings.
+.RS
+.PP
+Cases where it may be beneficial to disable Compact Strings include the
+following:
+.IP \[bu] 2
+When it\[aq]s known that an application overwhelmingly will be
+allocating multibyte character Strings
+.IP \[bu] 2
+In the unexpected event where a performance regression is observed in
+migrating from Java SE 8 to Java SE 9 and an analysis shows that Compact
+Strings introduces the regression
+.PP
+In both of these scenarios, disabling Compact Strings makes sense.
+.RE
+.TP
+.B \f[CB]\-XX:ErrorFile=\f[R]\f[I]filename\f[R]
+Specifies the path and file name to which error data is written when an
+irrecoverable error occurs.
+By default, this file is created in the current working directory and
+named \f[CB]hs_err_pid\f[R]\f[I]pid\f[R]\f[CB]\&.log\f[R] where \f[I]pid\f[R]
+is the identifier of the process that encountered the error.
+.RS
+.PP
+The following example shows how to set the default log file (note that
+the identifier of the process is specified as \f[CB]%p\f[R]):
+.RS
+.PP
+\f[CB]\-XX:ErrorFile=./hs_err_pid%p.log\f[R]
+.RE
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] The following example shows
+how to set the error log to \f[CB]/var/log/java/java_error.log\f[R]:
+.RS 2
+.RS
+.PP
+\f[CB]\-XX:ErrorFile=/var/log/java/java_error.log\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R] The following example shows how to set the error log
+file to \f[CB]C:/log/java/java_error.log\f[R]:
+.RS 2
+.RS
+.PP
+\f[CB]\-XX:ErrorFile=C:/log/java/java_error.log\f[R]
+.RE
+.RE
+.PP
+If the file exists, and is writeable, then it will be overwritten.
+Otherwise, if the file can\[aq]t be created in the specified directory
+(due to insufficient space, permission problem, or another issue), then
+the file is created in the temporary directory for the operating system:
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] The temporary directory is
+\f[CB]/tmp\f[R].
+.IP \[bu] 2
+\f[B]Windows:\f[R] The temporary directory is specified by the value of
+the \f[CB]TMP\f[R] environment variable; if that environment variable
+isn\[aq]t defined, then the value of the \f[CB]TEMP\f[R] environment
+variable is used.
+.RE
+.TP
+.B \f[CB]\-XX:+ExtensiveErrorReports\f[R]
+Enables the reporting of more extensive error information in the
+\f[CB]ErrorFile\f[R].
+This option can be turned on in environments where maximal information
+is desired \- even if the resulting logs may be quite large and/or
+contain information that might be considered sensitive.
+The information can vary from release to release, and across different
+platforms.
+By default this option is disabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+FlightRecorder\f[R]
+Enables the use of Java Flight Recorder (JFR) during the runtime of the
+application.
+.RS
+.RS
+.PP
+\f[B]Note:\f[R] The \f[CB]\-XX:+FlightRecorder\f[R] option is no longer
+required to use JFR.
+This was a change made in JDK 8u40.
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:FlightRecorderOptions=\f[R]\f[I]parameter\f[R]\f[CB]=\f[R]\f[I]value\f[R]
+Sets the parameters that control the behavior of JFR.
+.RS
+.PP
+The following list contains the available JFR
+\f[I]parameter\f[R]\f[CB]=\f[R]\f[I]value\f[R] entries:
+.TP
+.B \f[CB]allow_threadbuffers_to_disk=\f[R]{\f[CB]true\f[R]|\f[CB]false\f[R]}
+Specifies whether thread buffers are written directly to disk if the
+buffer thread is blocked.
+By default, this parameter is disabled.
+.RS
+.RE
+.TP
+.B \f[CB]globalbuffersize=\f[R]\f[I]size\f[R]
+Specifies the total amount of primary memory used for data retention.
+The default value is based on the value specified for
+\f[CB]memorysize\f[R].
+Change the \f[CB]memorysize\f[R] parameter to alter the size of global
+buffers.
+.RS
+.RE
+.TP
+.B \f[CB]maxchunksize=\f[R]\f[I]size\f[R]
+Specifies the maximum size (in bytes) of the data chunks in a recording.
+Append \f[CB]m\f[R] or \f[CB]M\f[R] to specify the size in megabytes (MB),
+or \f[CB]g\f[R] or \f[CB]G\f[R] to specify the size in gigabytes (GB).
+By default, the maximum size of data chunks is set to 12 MB.
+The minimum allowed is 1 MB.
+.RS
+.RE
+.TP
+.B \f[CB]memorysize=\f[R]\f[I]size\f[R]
+Determines how much buffer memory should be used, and sets the
+\f[CB]globalbuffersize\f[R] and \f[CB]numglobalbuffers\f[R] parameters based
+on the size specified.
+Append \f[CB]m\f[R] or \f[CB]M\f[R] to specify the size in megabytes (MB),
+or \f[CB]g\f[R] or \f[CB]G\f[R] to specify the size in gigabytes (GB).
+By default, the memory size is set to 10 MB.
+.RS
+.RE
+.TP
+.B \f[CB]numglobalbuffers\f[R]
+Specifies the number of global buffers used.
+The default value is based on the memory size specified.
+Change the \f[CB]memorysize\f[R] parameter to alter the number of global
+buffers.
+.RS
+.RE
+.TP
+.B \f[CB]old\-object\-queue\-size=number\-of\-objects\f[R]
+Maximum number of old objects to track.
+By default, the number of objects is set to 256.
+.RS
+.RE
+.TP
+.B \f[CB]repository=\f[R]\f[I]path\f[R]
+Specifies the repository (a directory) for temporary disk storage.
+By default, the system\[aq]s temporary directory is used.
+.RS
+.RE
+.TP
+.B \f[CB]retransform=\f[R]{\f[CB]true\f[R]|\f[CB]false\f[R]}
+Specifies whether event classes should be retransformed using JVMTI.
+If false, instrumentation is added when event classes are loaded.
+By default, this parameter is enabled.
+.RS
+.RE
+.TP
+.B \f[CB]samplethreads=\f[R]{\f[CB]true\f[R]|\f[CB]false\f[R]}
+Specifies whether thread sampling is enabled.
+Thread sampling occurs only if the sampling event is enabled along with
+this parameter.
+By default, this parameter is enabled.
+.RS
+.RE
+.TP
+.B \f[CB]stackdepth=\f[R]\f[I]depth\f[R]
+Stack depth for stack traces.
+By default, the depth is set to 64 method calls.
+The maximum is 2048.
+Values greater than 64 could create significant overhead and reduce
+performance.
+.RS
+.RE
+.TP
+.B \f[CB]threadbuffersize=\f[R]\f[I]size\f[R]
+Specifies the per\-thread local buffer size (in bytes).
+By default, the local buffer size is set to 8 kilobytes.
+Overriding this parameter could reduce performance and is not
+recommended.
+.RS
+.RE
+.PP
+You can specify values for multiple parameters by separating them with a
+comma.
+.RE
+.TP
+.B \f[CB]\-XX:LargePageSizeInBytes=\f[R]\f[I]size\f[R]
+Sets the maximum size (in bytes) for large pages used for the Java heap.
+The \f[I]size\f[R] argument must be a power of 2 (2, 4, 8, 16, and so
+on).
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+By default, the size is set to 0, meaning that the JVM chooses the size
+for large pages automatically.
+See \f[B]Large Pages\f[R].
+.RS
+.PP
+The following example describes how to set the large page size to 4
+megabytes (MB):
+.RS
+.PP
+\f[CB]\-XX:LargePageSizeInBytes=4m\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:MaxDirectMemorySize=\f[R]\f[I]size\f[R]
+Sets the maximum total size (in bytes) of the \f[CB]java.nio\f[R] package,
+direct\-buffer allocations.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+By default, the size is set to 0, meaning that the JVM chooses the size
+for NIO direct\-buffer allocations automatically.
+.RS
+.PP
+The following examples illustrate how to set the NIO size to 1024 KB in
+different units:
+.IP
.nf
-\fBjstat \-class file:///\fR\fB\fI<path>\fR\fR\fB/hsperfdata_\fR\fB\fI<pid>\fR\fR
-\fBjstat \-gc file:///\fR\fB\fI<path>\fR\fR\fB/hsperfdata_\fR\fB\fI<pid>\fR\fR
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+PrintCommandLineFlags
-.RS 4
-Enables printing of ergonomically selected JVM flags that appeared on the command line\&. It can be useful to know the ergonomic values set by the JVM, such as the heap space size and the selected garbage collector\&. By default, this option is disabled and flags are not printed\&.
-.RE
-.PP
-\-XX:+PrintNMTStatistics
-.RS 4
-Enables printing of collected native memory tracking data at JVM exit when native memory tracking is enabled (see
-\fB\-XX:NativeMemoryTracking\fR)\&. By default, this option is disabled and native memory tracking data is not printed\&.
-.RE
-.PP
-\-XX:+ShowMessageBoxOnError
-.RS 4
-Enables displaying of a dialog box when the JVM experiences an irrecoverable error\&. This prevents the JVM from exiting and keeps the process active so that you can attach a debugger to it to investigate the cause of the error\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:ThreadStackSize=\fIsize\fR
-.RS 4
-Sets the thread stack size (in bytes)\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. The default value depends on the platform:
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Linux/ARM (32\-bit): 320 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Linux/i386 (32\-bit): 320 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Linux/x64 (64\-bit): 1024 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-OS X (64\-bit): 1024 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Oracle Solaris/i386 (32\-bit): 320 KB
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Oracle Solaris/x64 (64\-bit): 1024 KB
-.RE
-.sp
-The following examples show how to set the thread stack size to 1024 KB in different units:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:ThreadStackSize=1m\fR
-\fB\-XX:ThreadStackSize=1024k\fR
-\fB\-XX:ThreadStackSize=1048576\fR
-
+\f[CB]
+\-XX:MaxDirectMemorySize=1m
+\-XX:MaxDirectMemorySize=1024k
+\-XX:MaxDirectMemorySize=1048576
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-This option is equivalent to
-\fB\-Xss\fR\&.
-.RE
-.PP
-\-XX:+TraceClassLoading
-.RS 4
-Enables tracing of classes as they are loaded\&. By default, this option is disabled and classes are not traced\&.
-.RE
-.PP
-\-XX:+TraceClassLoadingPreorder
-.RS 4
-Enables tracing of all loaded classes in the order in which they are referenced\&. By default, this option is disabled and classes are not traced\&.
-.RE
-.PP
-\-XX:+TraceClassResolution
-.RS 4
-Enables tracing of constant pool resolutions\&. By default, this option is disabled and constant pool resolutions are not traced\&.
-.RE
-.PP
-\-XX:+TraceClassUnloading
-.RS 4
-Enables tracing of classes as they are unloaded\&. By default, this option is disabled and classes are not traced\&.
-.RE
-.PP
-\-XX:+TraceLoaderConstraints
-.RS 4
-Enables tracing of the loader constraints recording\&. By default, this option is disabled and loader constraints recording is not traced\&.
-.RE
-.PP
-\-XX:+UseAltSigs
-.RS 4
-Enables the use of alternative signals instead of
-\fBSIGUSR1\fR
-and
-\fBSIGUSR2\fR
-for JVM internal signals\&. By default, this option is disabled and alternative signals are not used\&. This option is equivalent to
-\fB\-Xusealtsigs\fR\&.
-.RE
-.PP
-\-XX:\-UseBiasedLocking
-.RS 4
-Disables the use of biased locking\&. Some applications with significant amounts of uncontended synchronization may attain significant speedups with this flag enabled, whereas applications with certain patterns of locking may see slowdowns\&. For more information about the biased locking technique, see the example in Java Tuning White Paper at http://www\&.oracle\&.com/technetwork/java/tuning\-139912\&.html#section4\&.2\&.5
-.sp
-By default, this option is enabled\&.
-.RE
-.PP
-\-XX:\-UseCompressedOops
-.RS 4
-Disables the use of compressed pointers\&. By default, this option is enabled, and compressed pointers are used when Java heap sizes are less than 32 GB\&. When this option is enabled, object references are represented as 32\-bit offsets instead of 64\-bit pointers, which typically increases performance when running the application with Java heap sizes less than 32 GB\&. This option works only for 64\-bit JVMs\&.
-.sp
-It is also possible to use compressed pointers when Java heap sizes are greater than 32GB\&. See the
-\fB\-XX:ObjectAlignmentInBytes\fR
-option\&.
-.RE
-.PP
-\-XX:+UseHugeTLBFS
-.RS 4
-This option for Linux is the equivalent of specifying
-\fB\-XX:+UseLargePages\fR\&. This option is disabled by default\&. This option pre\-allocates all large pages up\-front, when memory is reserved; consequently the JVM cannot dynamically grow or shrink large pages memory areas; see
-\fB\-XX:UseTransparentHugePages\fR
-if you want this behavior\&.
-.sp
-For more information, see "Large Pages"\&.
-.RE
-.PP
-\-XX:+UseLargePages
-.RS 4
-Enables the use of large page memory\&. By default, this option is disabled and large page memory is not used\&.
-.sp
-For more information, see "Large Pages"\&.
-.RE
-.PP
-\-XX:+UseMembar
-.RS 4
-Enables issuing of membars on thread state transitions\&. This option is disabled by default on all platforms except ARM servers, where it is enabled\&. (It is recommended that you do not disable this option on ARM servers\&.)
-.RE
-.PP
-\-XX:+UsePerfData
-.RS 4
-Enables the
-\fBperfdata\fR
-feature\&. This option is enabled by default to allow JVM monitoring and performance testing\&. Disabling it suppresses the creation of the
-\fBhsperfdata_userid\fR
-directories\&. To disable the
-\fBperfdata\fR
-feature, specify
-\fB\-XX:\-UsePerfData\fR\&.
-.RE
-.PP
-\-XX:+UseTransparentHugePages
-.RS 4
-On Linux, enables the use of large pages that can dynamically grow or shrink\&. This option is disabled by default\&. You may encounter performance problems with transparent huge pages as the OS moves other pages around to create huge pages; this option is made available for experimentation\&.
-.sp
-For more information, see "Large Pages"\&.
-.RE
-.PP
-\-XX:+AllowUserSignalHandlers
-.RS 4
-Enables installation of signal handlers by the application\&. By default, this option is disabled and the application is not allowed to install signal handlers\&.
-.RE
-.SS "Advanced JIT Compiler Options"
-.PP
-These options control the dynamic just\-in\-time (JIT) compilation performed by the Java HotSpot VM\&.
-.PP
-\-XX:AllocateInstancePrefetchLines=\fIlines\fR
-.RS 4
-Sets the number of lines to prefetch ahead of the instance allocation pointer\&. By default, the number of lines to prefetch is set to 1:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:AllocateInstancePrefetchLines=1\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:AllocatePrefetchDistance=\fIsize\fR
-.RS 4
-Sets the size (in bytes) of the prefetch distance for object allocation\&. Memory about to be written with the value of new objects is prefetched up to this distance starting from the address of the last allocated object\&. Each Java thread has its own allocation point\&.
-.sp
-Negative values denote that prefetch distance is chosen based on the platform\&. Positive values are bytes to prefetch\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. The default value is set to \-1\&.
-.sp
-The following example shows how to set the prefetch distance to 1024 bytes:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:AllocatePrefetchDistance=1024\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:AllocatePrefetchInstr=\fIinstruction\fR
-.RS 4
-Sets the prefetch instruction to prefetch ahead of the allocation pointer\&. Only the Java HotSpot Server VM supports this option\&. Possible values are from 0 to 3\&. The actual instructions behind the values depend on the platform\&. By default, the prefetch instruction is set to 0:
-.sp
-.if n \{\
-.RS 4
-.\}
+.RE
+.TP
+.B \f[CB]\-XX:\-MaxFDLimit\f[R]
+Disables the attempt to set the soft limit for the number of open file
+descriptors to the hard limit.
+By default, this option is enabled on all platforms, but is ignored on
+Windows.
+The only time that you may need to disable this is on Mac OS, where its
+use imposes a maximum of 10240, which is lower than the actual system
+maximum.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:NativeMemoryTracking=\f[R]\f[I]mode\f[R]
+Specifies the mode for tracking JVM native memory usage.
+Possible \f[I]mode\f[R] arguments for this option include the following:
+.RS
+.TP
+.B \f[CB]off\f[R]
+Instructs not to track JVM native memory usage.
+This is the default behavior if you don\[aq]t specify the
+\f[CB]\-XX:NativeMemoryTracking\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]summary\f[R]
+Tracks memory usage only by JVM subsystems, such as Java heap, class,
+code, and thread.
+.RS
+.RE
+.TP
+.B \f[CB]detail\f[R]
+In addition to tracking memory usage by JVM subsystems, track memory
+usage by individual \f[CB]CallSite\f[R], individual virtual memory region
+and its committed regions.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:ObjectAlignmentInBytes=\f[R]\f[I]alignment\f[R]
+Sets the memory alignment of Java objects (in bytes).
+By default, the value is set to 8 bytes.
+The specified value should be a power of 2, and must be within the range
+of 8 and 256 (inclusive).
+This option makes it possible to use compressed pointers with large Java
+heap sizes.
+.RS
+.PP
+The heap size limit in bytes is calculated as:
+.RS
+.PP
+\f[CB]4GB\ *\ ObjectAlignmentInBytes\f[R]
+.RE
+.RS
+.PP
+\f[B]Note:\f[R] As the alignment value increases, the unused space
+between objects also increases.
+As a result, you may not realize any benefits from using compressed
+pointers with large Java heap sizes.
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:OnError=\f[R]\f[I]string\f[R]
+Sets a custom command or a series of semicolon\-separated commands to
+run when an irrecoverable error occurs.
+If the string contains spaces, then it must be enclosed in quotation
+marks.
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] The following example shows
+how the \f[CB]\-XX:OnError\f[R] option can be used to run the
+\f[CB]gcore\f[R] command to create a core image, and start the
+\f[CB]gdb\f[R] debugger to attach to the process in case of an
+irrecoverable error (the \f[CB]%p\f[R] designates the current process
+identifier):
+.RS 2
+.RS
+.PP
+\f[CB]\-XX:OnError="gcore\ %p;gdb\ \-p\ %p"\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R] The following example shows how the
+\f[CB]\-XX:OnError\f[R] option can be used to run the
+\f[CB]userdump.exe\f[R] utility to obtain a crash dump in case of an
+irrecoverable error (the \f[CB]%p\f[R] designates the current process
+identifier).
+This example assumes that the path to the \f[CB]userdump.exe\f[R] utility
+is specified in the \f[CB]PATH\f[R] environment variable:
+.RS 2
+.RS
+.PP
+\f[CB]\-XX:OnError="userdump.exe\ %p"\f[R]
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:OnOutOfMemoryError=\f[R]\f[I]string\f[R]
+Sets a custom command or a series of semicolon\-separated commands to
+run when an \f[CB]OutOfMemoryError\f[R] exception is first thrown.
+If the string contains spaces, then it must be enclosed in quotation
+marks.
+For an example of a command string, see the description of the
+\f[CB]\-XX:OnError\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+PrintCommandLineFlags\f[R]
+Enables printing of ergonomically selected JVM flags that appeared on
+the command line.
+It can be useful to know the ergonomic values set by the JVM, such as
+the heap space size and the selected garbage collector.
+By default, this option is disabled and flags aren\[aq]t printed.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+PreserveFramePointer\f[R]
+Selects between using the RBP register as a general purpose register
+(\f[CB]\-XX:\-PreserveFramePointer\f[R]) and using the RBP register to
+hold the frame pointer of the currently executing method
+(\f[CB]\-XX:+PreserveFramePointer\f[R] .
+If the frame pointer is available, then external profiling tools\ (for
+example, Linux perf) can construct more accurate stack traces.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+PrintNMTStatistics\f[R]
+Enables printing of collected native memory tracking data at JVM exit
+when native memory tracking is enabled (see
+\f[CB]\-XX:NativeMemoryTracking\f[R]).
+By default, this option is disabled and native memory tracking data
+isn\[aq]t printed.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:SharedArchiveFile=\f[R]\f[I]path\f[R]
+Specifies the path and name of the class data sharing (CDS) archive file
+.RS
+.PP
+See \f[B]Application Class Data Sharing\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:SharedArchiveConfigFile\f[R]=\f[I]shared_config_file\f[R]
+Specifies additional shared data added to the archive file.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:SharedClassListFile=\f[R]\f[I]file_name\f[R]
+Specifies the text file that contains the names of the classes to store
+in the class data sharing (CDS) archive.
+This file contains the full name of one class per line, except slashes
+(\f[CB]/\f[R]) replace dots (\f[CB]\&.\f[R]).
+For example, to specify the classes \f[CB]java.lang.Object\f[R] and
+\f[CB]hello.Main\f[R], create a text file that contains the following two
+lines:
+.RS
+.IP
.nf
-\fB\-XX:AllocatePrefetchInstr=0\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:AllocatePrefetchLines=\fIlines\fR
-.RS 4
-Sets the number of cache lines to load after the last object allocation by using the prefetch instructions generated in compiled code\&. The default value is 1 if the last allocated object was an instance, and 3 if it was an array\&.
-.sp
-The following example shows how to set the number of loaded cache lines to 5:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:AllocatePrefetchLines=5\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:AllocatePrefetchStepSize=\fIsize\fR
-.RS 4
-Sets the step size (in bytes) for sequential prefetch instructions\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. By default, the step size is set to 16 bytes:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:AllocatePrefetchStepSize=16\fR
-
+\f[CB]
+java/lang/Object
+hello/Main
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:AllocatePrefetchStyle=\fIstyle\fR
-.RS 4
-Sets the generated code style for prefetch instructions\&. The
-\fIstyle\fR
-argument is an integer from 0 to 3:
-.PP
-0
-.RS 4
-Do not generate prefetch instructions\&.
-.RE
-.PP
-1
-.RS 4
-Execute prefetch instructions after each allocation\&. This is the default parameter\&.
-.RE
-.PP
-2
-.RS 4
-Use the thread\-local allocation block (TLAB) watermark pointer to determine when prefetch instructions are executed\&.
-.RE
-.PP
-3
-.RS 4
-Use BIS instruction on SPARC for allocation prefetch\&.
-.RE
-.sp
-Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:+BackgroundCompilation
-.RS 4
-Enables background compilation\&. This option is enabled by default\&. To disable background compilation, specify
-\fB\-XX:\-BackgroundCompilation\fR
-(this is equivalent to specifying
-\fB\-Xbatch\fR)\&.
-.RE
-.PP
-\-XX:CICompilerCount=\fIthreads\fR
-.RS 4
-Sets the number of compiler threads to use for compilation\&. By default, the number of threads is set to 2 for the server JVM, to 1 for the client JVM, and it scales to the number of cores if tiered compilation is used\&. The following example shows how to set the number of threads to 2:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+The classes that you specify in this text file should include the
+classes that are commonly used by the application.
+They may include any classes from the application, extension, or
+bootstrap class paths.
+.PP
+See \f[B]Application Class Data Sharing\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:+ShowMessageBoxOnError\f[R]
+Enables the display of a dialog box when the JVM experiences an
+irrecoverable error.
+This prevents the JVM from exiting and keeps the process active so that
+you can attach a debugger to it to investigate the cause of the error.
+By default, this option is disabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:StartFlightRecording=\f[R]\f[I]parameter\f[R]\f[CB]=\f[R]\f[I]value\f[R]
+Starts a JFR recording for the Java application.
+This option is equivalent to the \f[CB]JFR.start\f[R] diagnostic command
+that starts a recording during runtime.
+You can set the following \f[I]parameter\f[R]\f[CB]=\f[R]\f[I]value\f[R]
+entries when starting a JFR recording:
+.RS
+.TP
+.B \f[CB]delay=\f[R]\f[I]time\f[R]
+Specifies the delay between the Java application launch time and the
+start of the recording.
+Append \f[CB]s\f[R] to specify the time in seconds, \f[CB]m\f[R] for
+minutes, \f[CB]h\f[R] for hours, or \f[CB]d\f[R] for days (for example,
+specifying \f[CB]10m\f[R] means 10 minutes).
+By default, there\[aq]s no delay, and this parameter is set to 0.
+.RS
+.RE
+.TP
+.B \f[CB]disk=\f[R]{\f[CB]true\f[R]|\f[CB]false\f[R]}
+Specifies whether to write data to disk while recording.
+By default, this parameter is enabled.
+.RS
+.RE
+.TP
+.B \f[CB]dumponexit=\f[R]{\f[CB]true\f[R]|\f[CB]false\f[R]}
+Specifies if the running recording is dumped when the JVM shuts down.
+If enabled and a \f[CB]filename\f[R] is not entered, the recording is
+written to a file in the directory where the process was started.
+The file name is a system\-generated name that contains the process ID,
+recording ID, and current timestamp, similar to
+\f[CB]hotspot\-pid\-47496\-id\-1\-2018_01_25_19_10_41.jfr\f[R].
+By default, this parameter is disabled.
+.RS
+.RE
+.TP
+.B \f[CB]duration=\f[R]\f[I]time\f[R]
+Specifies the duration of the recording.
+Append \f[CB]s\f[R] to specify the time in seconds, \f[CB]m\f[R] for
+minutes, \f[CB]h\f[R] for hours, or \f[CB]d\f[R] for days (for example,
+specifying \f[CB]5h\f[R] means 5 hours).
+By default, the duration isn\[aq]t limited, and this parameter is set to
+0.
+.RS
+.RE
+.TP
+.B \f[CB]filename=\f[R]\f[I]path\f[R]
+Specifies the path and name of the file to which the recording is
+written when the recording is stopped, for example:
+.RS
+.IP \[bu] 2
+\f[CB]recording.jfr\f[R]
+.IP \[bu] 2
+\f[CB]/home/user/recordings/recording.jfr\f[R]
+.IP \[bu] 2
+\f[CB]c:\\recordings\\recording.jfr\f[R]
+.RE
+.TP
+.B \f[CB]name=\f[R]\f[I]identifier\f[R]
+Takes both the name and the identifier of a recording.
+.RS
+.RE
+.TP
+.B \f[CB]maxage=\f[R]\f[I]time\f[R]
+Specifies the maximum age of disk data to keep for the recording.
+This parameter is valid only when the \f[CB]disk\f[R] parameter is set to
+\f[CB]true\f[R].
+Append \f[CB]s\f[R] to specify the time in seconds, \f[CB]m\f[R] for
+minutes, \f[CB]h\f[R] for hours, or \f[CB]d\f[R] for days (for example,
+specifying \f[CB]30s\f[R] means 30 seconds).
+By default, the maximum age isn\[aq]t limited, and this parameter is set
+to \f[CB]0s\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]maxsize=\f[R]\f[I]size\f[R]
+Specifies the maximum size (in bytes) of disk data to keep for the
+recording.
+This parameter is valid only when the \f[CB]disk\f[R] parameter is set to
+\f[CB]true\f[R].
+The value must not be less than the value for the \f[CB]maxchunksize\f[R]
+parameter set with \f[CB]\-XX:FlightRecorderOptions\f[R].
+Append \f[CB]m\f[R] or \f[CB]M\f[R] to specify the size in megabytes, or
+\f[CB]g\f[R] or \f[CB]G\f[R] to specify the size in gigabytes.
+By default, the maximum size of disk data isn\[aq]t limited, and this
+parameter is set to \f[CB]0\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]path\-to\-gc\-roots=\f[R]{\f[CB]true\f[R]|\f[CB]false\f[R]}
+Specifies whether to collect the path to garbage collection (GC) roots
+at the end of a recording.
+By default, this parameter is disabled.
+.RS
+.PP
+The path to GC roots is useful for finding memory leaks, but collecting
+it is time\-consuming.
+Enable this option only when you start a recording for an application
+that you suspect has a memory leak.
+If the \f[CB]settings\f[R] parameter is set to \f[CB]profile\f[R], the stack
+trace from where the potential leaking object was allocated is included
+in the information collected.
+.RE
+.TP
+.B \f[CB]settings=\f[R]\f[I]path\f[R]
+Specifies the path and name of the event settings file (of type JFC).
+By default, the \f[CB]default.jfc\f[R] file is used, which is located in
+\f[CB]JRE_HOME/lib/jfr\f[R].
+This default settings file collects a predefined set of information with
+low overhead, so it has minimal impact on performance and can be used
+with recordings that run continuously.
+.RS
+.PP
+A second settings file is also provided, profile.jfc, which provides
+more data than the default configuration, but can have more overhead and
+impact performance.
+Use this configuration for short periods of time when more information
+is needed.
+.RE
+.PP
+You can specify values for multiple parameters by separating them with a
+comma.
+.RE
+.TP
+.B \f[CB]\-XX:ThreadStackSize=\f[R]\f[I]size\f[R]
+Sets the Java thread stack size (in kilobytes).
+Use of a scaling suffix, such as \f[CB]k\f[R], results in the scaling of
+the kilobytes value so that \f[CB]\-XX:ThreadStackSize=1k\f[R] sets the
+Java thread stack size\ to 1024*1024 bytes or 1 megabyte.
+The default value depends on the platform:
+.RS
+.IP \[bu] 2
+Linux/x64 (64\-bit): 1024 KB
+.IP \[bu] 2
+macOS (64\-bit): 1024 KB
+.IP \[bu] 2
+Oracle Solaris (64\-bit): 1024 KB
+.IP \[bu] 2
+Windows: The default value depends on virtual memory
+.PP
+The following examples show how to set the thread stack size to 1
+megabyte in different units:
+.IP
.nf
-\fB\-XX:CICompilerCount=2\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:CodeCacheMinimumFreeSpace=\fIsize\fR
-.RS 4
-Sets the minimum free space (in bytes) required for compilation\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. When less than the minimum free space remains, compiling stops\&. By default, this option is set to 500 KB\&. The following example shows how to set the minimum free space to 1024 MB:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CodeCacheMinimumFreeSpace=1024m\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:CompileCommand=\fIcommand\fR,\fImethod\fR[,\fIoption\fR]
-.RS 4
-Specifies a command to perform on a method\&. For example, to exclude the
-\fBindexOf()\fR
-method of the
-\fBString\fR
-class from being compiled, use the following:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileCommand=exclude,java/lang/String\&.indexOf\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Note that the full class name is specified, including all packages and subpackages separated by a slash (\fB/\fR)\&. For easier cut and paste operations, it is also possible to use the method name format produced by the
-\fB\-XX:+PrintCompilation\fR
-and
-\fB\-XX:+LogCompilation\fR
-options:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileCommand=exclude,java\&.lang\&.String::indexOf\fR
-
+\f[CB]
+\-XX:ThreadStackSize=1k
+\-XX:ThreadStackSize=1024
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-If the method is specified without the signature, the command will be applied to all methods with the specified name\&. However, you can also specify the signature of the method in the class file format\&. In this case, you should enclose the arguments in quotation marks, because otherwise the shell treats the semicolon as command end\&. For example, if you want to exclude only the
-\fBindexOf(String)\fR
-method of the
-\fBString\fR
-class from being compiled, use the following:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileCommand="exclude,java/lang/String\&.indexOf,(Ljava/lang/String;)I"\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-You can also use the asterisk (*) as a wildcard for class and method names\&. For example, to exclude all
-\fBindexOf()\fR
-methods in all classes from being compiled, use the following:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileCommand=exclude,*\&.indexOf\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-The commas and periods are aliases for spaces, making it easier to pass compiler commands through a shell\&. You can pass arguments to
-\fB\-XX:CompileCommand\fR
-using spaces as separators by enclosing the argument in quotation marks:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+This option is similar to \f[CB]\-Xss\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:\-UseBiasedLocking\f[R]
+Disables the use of biased locking.
+Some applications with significant amounts of uncontended
+synchronization may attain significant speedups with this flag enabled,
+but applications with certain patterns of locking may see slowdowns.
+\&.
+.RS
+.PP
+By default, this option is enabled.
+.RE
+.TP
+.B \f[CB]\-XX:\-UseCompressedOops\f[R]
+Disables the use of compressed pointers.
+By default, this option is enabled, and compressed pointers are used
+when Java heap sizes are less than 32 GB.
+When this option is enabled, object references are represented as
+32\-bit offsets instead of 64\-bit pointers, which typically increases
+performance when running the application with Java heap sizes of less
+than 32 GB.
+This option works only for 64\-bit JVMs.
+.RS
+.PP
+It\[aq]s also possible to use compressed pointers when Java heap sizes
+are greater than 32 GB.
+See the \f[CB]\-XX:ObjectAlignmentInBytes\f[R] option.
+.RE
+.TP
+.B \f[CB]\-XX:\-UseContainerSupport\f[R]
+The VM now provides automatic container detection support, which allows
+the VM to determine the amount of memory and number of processors that
+are available to a Java process running in docker containers.
+It uses this information to allocate system resources.
+This support is only available on Linux x64 platforms.
+\ If supported, the default for this flag is\ \f[CB]true\f[R], and
+container support is enabled by default.
+\ It\ can be disabled with\ \f[CB]\-XX:\-UseContainerSupport\f[R].
+.RS
+.PP
+Unified Logging is available to help to diagnose issues related to this
+support.
+.PP
+Use \f[CB]\-Xlog:os+container=trace\f[R] for maximum logging of container
+information.
+See \f[B]Enable Logging with the JVM Unified Logging Framework\f[R] for a
+description of using Unified Logging.
+.RE
+.TP
+.B \f[CB]\-XX:+UseHugeTLBFS\f[R]
+\f[B]Linux only:\f[R] This option is the equivalent of specifying
+\f[CB]\-XX:+UseLargePages\f[R].
+This option is disabled by default.
+This option pre\-allocates all large pages up\-front, when memory is
+reserved; consequently the JVM can\[aq]t dynamically grow or shrink
+large pages memory areas; see \f[CB]\-XX:UseTransparentHugePages\f[R] if
+you want this behavior.
+.RS
+.PP
+See \f[B]Large Pages\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:+UseLargePages\f[R]
+Enables the use of large page memory.
+By default, this option is disabled and large page memory isn\[aq]t
+used.
+.RS
+.PP
+See \f[B]Large Pages\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:+UseTransparentHugePages\f[R]
+\f[B]Linux only:\f[R] Enables the use of large pages that can dynamically
+grow or shrink.
+This option is disabled by default.
+You may encounter performance problems with transparent huge pages as
+the OS moves other pages around to create huge pages; this option is
+made available for experimentation.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+AllowUserSignalHandlers\f[R]
+Enables installation of signal handlers by the application.
+By default, this option is disabled and the application isn\[aq]t
+allowed to install signal handlers.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:VMOptionsFile=\f[R]\f[I]filename\f[R]
+Allows user to specify VM options in a file, for example,
+\f[CB]java\ \-XX:VMOptionsFile=/var/my_vm_options\ HelloWorld\f[R].
+.RS
+.RE
+.SH ADVANCED JIT COMPILER OPTIONS FOR JAVA
+.PP
+These \f[CB]java\f[R] options control the dynamic just\-in\-time (JIT)
+compilation performed by the Java HotSpot VM.
+.TP
+.B \f[CB]\-XX:AllocateInstancePrefetchLines=\f[R]\f[I]lines\f[R]
+Sets the number of lines to prefetch ahead of the instance allocation
+pointer.
+By default, the number of lines to prefetch is set to 1:
+.RS
+.RS
+.PP
+\f[CB]\-XX:AllocateInstancePrefetchLines=1\f[R]
+.RE
+.PP
+Only the Java HotSpot Server VM supports this option.
+.RE
+.TP
+.B \f[CB]\-XX:AllocatePrefetchDistance=\f[R]\f[I]size\f[R]
+Sets the size (in bytes) of the prefetch distance for object allocation.
+Memory about to be written with the value of new objects is prefetched
+up to this distance starting from the address of the last allocated
+object.
+Each Java thread has its own allocation point.
+.RS
+.PP
+Negative values denote that prefetch distance is chosen based on the
+platform.
+Positive values are bytes to prefetch.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+The default value is set to \-1.
+.PP
+The following example shows how to set the prefetch distance to 1024
+bytes:
+.RS
+.PP
+\f[CB]\-XX:AllocatePrefetchDistance=1024\f[R]
+.RE
+.PP
+Only the Java HotSpot Server VM supports this option.
+.RE
+.TP
+.B \f[CB]\-XX:AllocatePrefetchInstr=\f[R]\f[I]instruction\f[R]
+Sets the prefetch instruction to prefetch ahead of the allocation
+pointer.
+Only the Java HotSpot Server VM supports this option.
+Possible values are from 0 to 3.
+The actual instructions behind the values depend on the platform.
+By default, the prefetch instruction is set to 0:
+.RS
+.RS
+.PP
+\f[CB]\-XX:AllocatePrefetchInstr=0\f[R]
+.RE
+.PP
+Only the Java HotSpot Server VM supports this option.
+.RE
+.TP
+.B \f[CB]\-XX:AllocatePrefetchLines=\f[R]\f[I]lines\f[R]
+Sets the number of cache lines to load after the last object allocation
+by using the prefetch instructions generated in compiled code.
+The default value is 1 if the last allocated object was an instance, and
+3 if it was an array.
+.RS
+.PP
+The following example shows how to set the number of loaded cache lines
+to 5:
+.RS
+.PP
+\f[CB]\-XX:AllocatePrefetchLines=5\f[R]
+.RE
+.PP
+Only the Java HotSpot Server VM supports this option.
+.RE
+.TP
+.B \f[CB]\-XX:AllocatePrefetchStepSize=\f[R]\f[I]size\f[R]
+Sets the step size (in bytes) for sequential prefetch instructions.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, \f[CB]g\f[R] or \f[CB]G\f[R]
+to indicate gigabytes.
+By default, the step size is set to 16 bytes:
+.RS
+.RS
+.PP
+\f[CB]\-XX:AllocatePrefetchStepSize=16\f[R]
+.RE
+.PP
+Only the Java HotSpot Server VM supports this option.
+.RE
+.TP
+.B \f[CB]\-XX:AllocatePrefetchStyle=\f[R]\f[I]style\f[R]
+Sets the generated code style for prefetch instructions.
+The \f[I]style\f[R] argument is an integer from 0 to 3:
+.RS
+.TP
+.B \f[CB]0\f[R]
+Don\[aq]t generate prefetch instructions.
+.RS
+.RE
+.TP
+.B \f[CB]1\f[R]
+Execute prefetch instructions after each allocation.
+This is the default parameter.
+.RS
+.RE
+.TP
+.B \f[CB]2\f[R]
+Use the thread\-local allocation block (TLAB) watermark pointer to
+determine when prefetch instructions are executed.
+.RS
+.RE
+.TP
+.B \f[CB]3\f[R]
+Use BIS instruction on SPARC for allocation prefetch.
+.RS
+.RE
+.PP
+Only the Java HotSpot Server VM supports this option.
+.RE
+.TP
+.B \f[CB]\-XX:+BackgroundCompilation\f[R]
+Enables background compilation.
+This option is enabled by default.
+To disable background compilation, specify
+\f[CB]\-XX:\-BackgroundCompilation\f[R] (this is equivalent to specifying
+\f[CB]\-Xbatch\f[R]).
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:CICompilerCount=\f[R]\f[I]threads\f[R]
+Sets the number of compiler threads to use for compilation.
+By default, the number of threads is set to 2 for the server JVM, to 1
+for the client JVM, and it scales to the number of cores if tiered
+compilation is used.
+The following example shows how to set the number of threads to 2:
+.RS
+.RS
+.PP
+\f[CB]\-XX:CICompilerCount=2\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:CompileCommand=\f[R]\f[I]command\f[R]\f[CB],\f[R]\f[I]method\f[R][\f[CB],\f[R]\f[I]option\f[R]]
+Specifies a \f[I]command\f[R] to perform on a \f[I]method\f[R].
+For example, to exclude the \f[CB]indexOf()\f[R] method of the
+\f[CB]String\f[R] class from being compiled, use the following:
+.RS
+.RS
+.PP
+\f[CB]\-XX:CompileCommand=exclude,java/lang/String.indexOf\f[R]
+.RE
+.PP
+Note that the full class name is specified, including all packages and
+subpackages separated by a slash (\f[CB]/\f[R]).
+For easier cut\-and\-paste operations, it\[aq]s also possible to use the
+method name format produced by the \f[CB]\-XX:+PrintCompilation\f[R] and
+\f[CB]\-XX:+LogCompilation\f[R] options:
+.RS
+.PP
+\f[CB]\-XX:CompileCommand=exclude,java.lang.String::indexOf\f[R]
+.RE
+.PP
+If the method is specified without the signature, then the command is
+applied to all methods with the specified name.
+However, you can also specify the signature of the method in the class
+file format.
+In this case, you should enclose the arguments in quotation marks,
+because otherwise the shell treats the semicolon as a command end.
+For example, if you want to exclude only the \f[CB]indexOf(String)\f[R]
+method of the \f[CB]String\f[R] class from being compiled, use the
+following:
+.RS
+.PP
+\f[CB]\-XX:CompileCommand="exclude,java/lang/String.indexOf,(Ljava/lang/String;)I"\f[R]
+.RE
+.PP
+You can also use the asterisk (*) as a wildcard for class and method
+names.
+For example, to exclude all \f[CB]indexOf()\f[R] methods in all classes
+from being compiled, use the following:
+.RS
+.PP
+\f[CB]\-XX:CompileCommand=exclude,*.indexOf\f[R]
+.RE
+.PP
+The commas and periods are aliases for spaces, making it easier to pass
+compiler commands through a shell.
+You can pass arguments to \f[CB]\-XX:CompileCommand\f[R] using spaces as
+separators by enclosing the argument in quotation marks:
+.RS
+.PP
+\f[CB]\-XX:CompileCommand="exclude\ java/lang/String\ indexOf"\f[R]
+.RE
+.PP
+Note that after parsing the commands passed on the command line using
+the \f[CB]\-XX:CompileCommand\f[R] options, the JIT compiler then reads
+commands from the \f[CB]\&.hotspot_compiler\f[R] file.
+You can add commands to this file or specify a different file using the
+\f[CB]\-XX:CompileCommandFile\f[R] option.
+.PP
+To add several commands, either specify the \f[CB]\-XX:CompileCommand\f[R]
+option multiple times, or separate each argument with the new line
+separator (\f[CB]\\n\f[R]).
+The following commands are available:
+.TP
+.B \f[CB]break\f[R]
+Sets a breakpoint when debugging the JVM to stop at the beginning of
+compilation of the specified method.
+.RS
+.RE
+.TP
+.B \f[CB]compileonly\f[R]
+Excludes all methods from compilation except for the specified method.
+As an alternative, you can use the \f[CB]\-XX:CompileOnly\f[R] option,
+which lets you specify several methods.
+.RS
+.RE
+.TP
+.B \f[CB]dontinline\f[R]
+Prevents inlining of the specified method.
+.RS
+.RE
+.TP
+.B \f[CB]exclude\f[R]
+Excludes the specified method from compilation.
+.RS
+.RE
+.TP
+.B \f[CB]help\f[R]
+Prints a help message for the \f[CB]\-XX:CompileCommand\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]inline\f[R]
+Attempts to inline the specified method.
+.RS
+.RE
+.TP
+.B \f[CB]log\f[R]
+Excludes compilation logging (with the \f[CB]\-XX:+LogCompilation\f[R]
+option) for all methods except for the specified method.
+By default, logging is performed for all compiled methods.
+.RS
+.RE
+.TP
+.B \f[CB]option\f[R]
+Passes a JIT compilation option to the specified method in place of the
+last argument (\f[CB]option\f[R]).
+The compilation option is set at the end, after the method name.
+For example, to enable the \f[CB]BlockLayoutByFrequency\f[R] option for
+the \f[CB]append()\f[R] method of the \f[CB]StringBuffer\f[R] class, use the
+following:
+.RS
+.RS
+.PP
+\f[CB]\-XX:CompileCommand=option,java/lang/StringBuffer.append,BlockLayoutByFrequency\f[R]
+.RE
+.PP
+You can specify multiple compilation options, separated by commas or
+spaces.
+.RE
+.TP
+.B \f[CB]print\f[R]
+Prints generated assembler code after compilation of the specified
+method.
+.RS
+.RE
+.TP
+.B \f[CB]quiet\f[R]
+Instructs not to print the compile commands.
+By default, the commands that you specify with the
+\f[CB]\-XX:CompileCommand\f[R] option are printed; for example, if you
+exclude from compilation the \f[CB]indexOf()\f[R] method of the
+\f[CB]String\f[R] class, then the following is printed to standard output:
+.RS
+.RS
+.PP
+\f[CB]CompilerOracle:\ exclude\ java/lang/String.indexOf\f[R]
+.RE
+.PP
+You can suppress this by specifying the
+\f[CB]\-XX:CompileCommand=quiet\f[R] option before other
+\f[CB]\-XX:CompileCommand\f[R] options.
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:CompileCommandFile=\f[R]\f[I]filename\f[R]
+Sets the file from which JIT compiler commands are read.
+By default, the \f[CB]\&.hotspot_compiler\f[R] file is used to store
+commands performed by the JIT compiler.
+.RS
+.PP
+Each line in the command file represents a command, a class name, and a
+method name for which the command is used.
+For example, this line prints assembly code for the \f[CB]toString()\f[R]
+method of the \f[CB]String\f[R] class:
+.RS
+.PP
+\f[CB]print\ java/lang/String\ toString\f[R]
+.RE
+.PP
+If you\[aq]re using commands for the JIT compiler to perform on methods,
+then see the \f[CB]\-XX:CompileCommand\f[R] option.
+.RE
+.TP
+.B \f[CB]\-XX:CompilerDirectivesFile=\f[R]\f[I]file\f[R]
+Adds directives from a file to the directives stack when a program
+starts.
+See \f[B]Compiler Control\f[R]
+[https://docs.oracle.com/en/java/javase/12/vm/compiler\-control1.html#GUID\-94AD8194\-786A\-4F19\-BFFF\-278F8E237F3A].
+.RS
+.PP
+The \f[CB]\-XX:CompilerDirectivesFile\f[R] option has to be used together
+with the \f[CB]\-XX:UnlockDiagnosticVMOptions\f[R] option that unlocks
+diagnostic JVM options.
+.RE
+.TP
+.B \f[CB]\-XX:+CompilerDirectivesPrint\f[R]
+Prints the directives stack when the program starts or when a new
+directive is added.
+.RS
+.PP
+The \f[CB]\-XX:+CompilerDirectivesPrint\f[R] option has to be used
+together with the \f[CB]\-XX:UnlockDiagnosticVMOptions\f[R] option that
+unlocks diagnostic JVM options.
+.RE
+.TP
+.B \f[CB]\-XX:CompileOnly=\f[R]\f[I]methods\f[R]
+Sets the list of methods (separated by commas) to which compilation
+should be restricted.
+Only the specified methods are compiled.
+Specify each method with the full class name (including the packages and
+subpackages).
+For example, to compile only the \f[CB]length()\f[R] method of the
+\f[CB]String\f[R] class and the \f[CB]size()\f[R] method of the
+\f[CB]List\f[R] class, use the following:
+.RS
+.RS
+.PP
+\f[CB]\-XX:CompileOnly=java/lang/String.length,java/util/List.size\f[R]
+.RE
+.PP
+Note that the full class name is specified, including all packages and
+subpackages separated by a slash (\f[CB]/\f[R]).
+For easier cut and paste operations, it\[aq]s also possible to use the
+method name format produced by the \f[CB]\-XX:+PrintCompilation\f[R] and
+\f[CB]\-XX:+LogCompilation\f[R] options:
+.RS
+.PP
+\f[CB]\-XX:CompileOnly=java.lang.String::length,java.util.List::size\f[R]
+.RE
+.PP
+Although wildcards aren\[aq]t supported, you can specify only the class
+or package name to compile all methods in that class or package, as well
+as specify just the method to compile methods with this name in any
+class:
+.IP
.nf
-\fB\-XX:CompileCommand="exclude java/lang/String indexOf"\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Note that after parsing the commands passed on the command line using the
-\fB\-XX:CompileCommand\fR
-options, the JIT compiler then reads commands from the
-\fB\&.hotspot_compiler\fR
-file\&. You can add commands to this file or specify a different file using the
-\fB\-XX:CompileCommandFile\fR
-option\&.
-.sp
-To add several commands, either specify the
-\fB\-XX:CompileCommand\fR
-option multiple times, or separate each argument with the newline separator (\fB\en\fR)\&. The following commands are available:
-.PP
-break
-.RS 4
-Set a breakpoint when debugging the JVM to stop at the beginning of compilation of the specified method\&.
-.RE
-.PP
-compileonly
-.RS 4
-Exclude all methods from compilation except for the specified method\&. As an alternative, you can use the
-\fB\-XX:CompileOnly\fR
-option, which allows to specify several methods\&.
-.RE
-.PP
-dontinline
-.RS 4
-Prevent inlining of the specified method\&.
-.RE
-.PP
-exclude
-.RS 4
-Exclude the specified method from compilation\&.
-.RE
-.PP
-help
-.RS 4
-Print a help message for the
-\fB\-XX:CompileCommand\fR
-option\&.
-.RE
-.PP
-inline
-.RS 4
-Attempt to inline the specified method\&.
-.RE
-.PP
-log
-.RS 4
-Exclude compilation logging (with the
-\fB\-XX:+LogCompilation\fR
-option) for all methods except for the specified method\&. By default, logging is performed for all compiled methods\&.
-.RE
-.PP
-option
-.RS 4
-This command can be used to pass a JIT compilation option to the specified method in place of the last argument (\fIoption\fR)\&. The compilation option is set at the end, after the method name\&. For example, to enable the
-\fBBlockLayoutByFrequency\fR
-option for the
-\fBappend()\fR
-method of the
-\fBStringBuffer\fR
-class, use the following:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-You can specify multiple compilation options, separated by commas or spaces\&.
-.RE
-.PP
-print
-.RS 4
-Print generated assembler code after compilation of the specified method\&.
-.RE
-.PP
-quiet
-.RS 4
-Do not print the compile commands\&. By default, the commands that you specify with the \-\fBXX:CompileCommand\fR
-option are printed; for example, if you exclude from compilation the
-\fBindexOf()\fR
-method of the
-\fBString\fR
-class, then the following will be printed to standard output:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBCompilerOracle: exclude java/lang/String\&.indexOf\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-You can suppress this by specifying the
-\fB\-XX:CompileCommand=quiet\fR
-option before other
-\fB\-XX:CompileCommand\fR
-options\&.
-.RE
-.RE
-.PP
-\-XX:CompileCommandFile=\fIfilename\fR
-.RS 4
-Sets the file from which JIT compiler commands are read\&. By default, the
-\fB\&.hotspot_compiler\fR
-file is used to store commands performed by the JIT compiler\&.
-.sp
-Each line in the command file represents a command, a class name, and a method name for which the command is used\&. For example, this line prints assembly code for the
-\fBtoString()\fR
-method of the
-\fBString\fR
-class:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBprint java/lang/String toString\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-For more information about specifying the commands for the JIT compiler to perform on methods, see the
-\fB\-XX:CompileCommand\fR
-option\&.
-.RE
-.PP
-\-XX:CompileOnly=\fImethods\fR
-.RS 4
-Sets the list of methods (separated by commas) to which compilation should be restricted\&. Only the specified methods will be compiled\&. Specify each method with the full class name (including the packages and subpackages)\&. For example, to compile only the
-\fBlength()\fR
-method of the
-\fBString\fR
-class and the
-\fBsize()\fR
-method of the
-\fBList\fR
-class, use the following:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Note that the full class name is specified, including all packages and subpackages separated by a slash (\fB/\fR)\&. For easier cut and paste operations, it is also possible to use the method name format produced by the
-\fB\-XX:+PrintCompilation\fR
-and
-\fB\-XX:+LogCompilation\fR
-options:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileOnly=java\&.lang\&.String::length,java\&.util\&.List::size\fR
-
+\f[CB]
+\-XX:CompileOnly=java/lang/String
+\-XX:CompileOnly=java/lang
+\-XX:CompileOnly=.length
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-Although wildcards are not supported, you can specify only the class or package name to compile all methods in that class or package, as well as specify just the method to compile methods with this name in any class:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileOnly=java/lang/String\fR
-\fB\-XX:CompileOnly=java/lang\fR
-\fB\-XX:CompileOnly=\&.length\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:CompileThreshold=\fIinvocations\fR
-.RS 4
-Sets the number of interpreted method invocations before compilation\&. By default, in the server JVM, the JIT compiler performs 10,000 interpreted method invocations to gather information for efficient compilation\&. For the client JVM, the default setting is 1,500 invocations\&. This option is ignored when tiered compilation is enabled; see the option
-\fB\-XX:+TieredCompilation\fR\&. The following example shows how to set the number of interpreted method invocations to 5,000:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CompileThreshold=5000\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-You can completely disable interpretation of Java methods before compilation by specifying the
-\fB\-Xcomp\fR
-option\&.
-.RE
-.PP
-\-XX:+DoEscapeAnalysis
-.RS 4
-Enables the use of escape analysis\&. This option is enabled by default\&. To disable the use of escape analysis, specify
-\fB\-XX:\-DoEscapeAnalysis\fR\&. Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:InitialCodeCacheSize=\fIsize\fR
-.RS 4
-Sets the initial code cache size (in bytes)\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. The default value is set to 500 KB\&. The initial code cache size should be not less than the system\*(Aqs minimal memory page size\&. The following example shows how to set the initial code cache size to 32 KB:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:InitialCodeCacheSize=32k\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+Inline
-.RS 4
-Enables method inlining\&. This option is enabled by default to increase performance\&. To disable method inlining, specify
-\fB\-XX:\-Inline\fR\&.
-.RE
-.PP
-\-XX:InlineSmallCode=\fIsize\fR
-.RS 4
-Sets the maximum code size (in bytes) for compiled methods that should be inlined\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. Only compiled methods with the size smaller than the specified size will be inlined\&. By default, the maximum code size is set to 1000 bytes:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:InlineSmallCode=1000\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+LogCompilation
-.RS 4
+.RE
+.TP
+.B \f[CB]\-XX:CompileThreshold=\f[R]\f[I]invocations\f[R]
+Sets the number of interpreted method invocations before compilation.
+By default, in the server JVM, the JIT compiler performs 10,000
+interpreted method invocations to gather information for efficient
+compilation.
+For the client JVM, the default setting is 1,500 invocations.
+This option is ignored when tiered compilation is enabled; see the
+option \f[CB]\-XX:\-TieredCompilation\f[R].
+The following example shows how to set the number of interpreted method
+invocations to 5,000:
+.RS
+.RS
+.PP
+\f[CB]\-XX:CompileThreshold=5000\f[R]
+.RE
+.PP
+You can completely disable interpretation of Java methods before
+compilation by specifying the \f[CB]\-Xcomp\f[R] option.
+.RE
+.TP
+.B \f[CB]\-XX:CompileThresholdScaling=\f[R]\f[I]scale\f[R]
+Provides unified control of first compilation.
+This option controls when methods are first compiled for both the tiered
+and the nontiered modes of operation.
+The \f[CB]CompileThresholdScaling\f[R] option has an integer value between
+0 and +Inf and scales the thresholds corresponding to the current mode
+of operation (both tiered and nontiered).
+Setting \f[CB]CompileThresholdScaling\f[R] to a value less than 1.0
+results in earlier compilation while values greater than 1.0 delay
+compilation.
+Setting \f[CB]CompileThresholdScaling\f[R] to 0 is equivalent to disabling
+compilation.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+DoEscapeAnalysis\f[R]
+Enables the use of escape analysis.
+This option is enabled by default.
+To disable the use of escape analysis, specify
+\f[CB]\-XX:\-DoEscapeAnalysis\f[R].
+Only the Java HotSpot Server VM supports this option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:InitialCodeCacheSize=\f[R]\f[I]size\f[R]
+Sets the initial code cache size (in bytes).
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+The default value is set to 500 KB.
+The initial code cache size shouldn\[aq]t be less than the system\[aq]s
+minimal memory page size.
+The following example shows how to set the initial code cache size to 32
+KB:
+.RS
+.RS
+.PP
+\f[CB]\-XX:InitialCodeCacheSize=32k\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+Inline\f[R]
+Enables method inlining.
+This option is enabled by default to increase performance.
+To disable method inlining, specify \f[CB]\-XX:\-Inline\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:InlineSmallCode=\f[R]\f[I]size\f[R]
+Sets the maximum code size (in bytes) for compiled methods that should
+be inlined.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+Only compiled methods with the size smaller than the specified size is
+inlined.
+By default, the maximum code size is set to 1000 bytes:
+.RS
+.RS
+.PP
+\f[CB]\-XX:InlineSmallCode=1000\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+LogCompilation\f[R]
Enables logging of compilation activity to a file named
-\fBhotspot\&.log\fR
-in the current working directory\&. You can specify a different log file path and name using the
-\fB\-XX:LogFile\fR
-option\&.
-.sp
-By default, this option is disabled and compilation activity is not logged\&. The
-\fB\-XX:+LogCompilation\fR
-option has to be used together with the
-\fB\-XX:UnlockDiagnosticVMOptions\fR
-option that unlocks diagnostic JVM options\&.
-.sp
-You can enable verbose diagnostic output with a message printed to the console every time a method is compiled by using the
-\fB\-XX:+PrintCompilation\fR
-option\&.
-.RE
-.PP
-\-XX:MaxInlineSize=\fIsize\fR
-.RS 4
-Sets the maximum bytecode size (in bytes) of a method to be inlined\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. By default, the maximum bytecode size is set to 35 bytes:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxInlineSize=35\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:MaxNodeLimit=\fInodes\fR
-.RS 4
-Sets the maximum number of nodes to be used during single method compilation\&. By default, the maximum number of nodes is set to 65,000:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxNodeLimit=65000\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:MaxTrivialSize=\fIsize\fR
-.RS 4
-Sets the maximum bytecode size (in bytes) of a trivial method to be inlined\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. By default, the maximum bytecode size of a trivial method is set to 6 bytes:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxTrivialSize=6\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+OptimizeStringConcat
-.RS 4
-Enables the optimization of
-\fBString\fR
-concatenation operations\&. This option is enabled by default\&. To disable the optimization of
-\fBString\fR
-concatenation operations, specify
-\fB\-XX:\-OptimizeStringConcat\fR\&. Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:+PrintAssembly
-.RS 4
-Enables printing of assembly code for bytecoded and native methods by using the external
-\fBdisassembler\&.so\fR
-library\&. This enables you to see the generated code, which may help you to diagnose performance issues\&.
-.sp
-By default, this option is disabled and assembly code is not printed\&. The
-\fB\-XX:+PrintAssembly\fR
-option has to be used together with the
-\fB\-XX:UnlockDiagnosticVMOptions\fR
-option that unlocks diagnostic JVM options\&.
-.RE
-.PP
-\-XX:+PrintCompilation
-.RS 4
-Enables verbose diagnostic output from the JVM by printing a message to the console every time a method is compiled\&. This enables you to see which methods actually get compiled\&. By default, this option is disabled and diagnostic output is not printed\&.
-.sp
+\f[CB]hotspot.log\f[R] in the current working directory.
+You can specify a different log file path and name using the
+\f[CB]\-XX:LogFile\f[R] option.
+.RS
+.PP
+By default, this option is disabled and compilation activity isn\[aq]t
+logged.
+The \f[CB]\-XX:+LogCompilation\f[R] option has to be used together with
+the \f[CB]\-XX:UnlockDiagnosticVMOptions\f[R] option that unlocks
+diagnostic JVM options.
+.PP
+You can enable verbose diagnostic output with a message printed to the
+console every time a method is compiled by using the
+\f[CB]\-XX:+PrintCompilation\f[R] option.
+.RE
+.TP
+.B \f[CB]\-XX:MaxInlineSize=\f[R]\f[I]size\f[R]
+Sets the maximum bytecode size (in bytes) of a method to be inlined.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+By default, the maximum bytecode size is set to 35 bytes:
+.RS
+.RS
+.PP
+\f[CB]\-XX:MaxInlineSize=35\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:MaxNodeLimit=\f[R]\f[I]nodes\f[R]
+Sets the maximum number of nodes to be used during single method
+compilation.
+By default, the maximum number of nodes is set to 65,000:
+.RS
+.RS
+.PP
+\f[CB]\-XX:MaxNodeLimit=65000\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:NonNMethodCodeHeapSize=\f[R]\f[I]size\f[R]
+Sets the size in bytes of the code segment containing nonmethod code.
+.RS
+.PP
+A nonmethod code segment containing nonmethod code, such as compiler
+buffers and the bytecode interpreter.
+This code type stays in the code cache forever.
+This flag is used only if \f[CB]\-XX:SegmentedCodeCache\f[R] is enabled.
+.RE
+.TP
+.B \f[CB]\-XX:NonProfiledCodeHeapSize=\f[R]\f[I]size\f[R]
+Sets the size in bytes of the code segment containing nonprofiled
+methods.
+This flag is used only if \f[CB]\-XX:SegmentedCodeCache\f[R] is enabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:MaxTrivialSize=\f[R]\f[I]size\f[R]
+Sets the maximum bytecode size (in bytes) of a trivial method to be
+inlined.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+By default, the maximum bytecode size of a trivial method is set to 6
+bytes:
+.RS
+.RS
+.PP
+\f[CB]\-XX:MaxTrivialSize=6\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+OptimizeStringConcat\f[R]
+Enables the optimization of \f[CB]String\f[R] concatenation operations.
+This option is enabled by default.
+To disable the optimization of \f[CB]String\f[R] concatenation operations,
+specify \f[CB]\-XX:\-OptimizeStringConcat\f[R].
+Only the Java HotSpot Server VM supports this option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+PrintAssembly\f[R]
+Enables printing of assembly code for bytecoded and native methods by
+using the external \f[CB]hsdis\-<arch>.so\f[R] or \f[CB]\&.dll\f[R] library.
+For 64\-bit VM on Windows, it\[aq]s \f[CB]hsdis\-amd64.dll\f[R].
+This lets you to see the generated code, which may help you to diagnose
+performance issues.
+.RS
+.PP
+By default, this option is disabled and assembly code isn\[aq]t printed.
+The \f[CB]\-XX:+PrintAssembly\f[R] option has to be used together with the
+\f[CB]\-XX:UnlockDiagnosticVMOptions\f[R] option that unlocks diagnostic
+JVM options.
+.RE
+.TP
+.B \f[CB]\-XX:ProfiledCodeHeapSize=\f[R]\f[I]size\f[R]
+Sets the size in bytes of the code segment containing profiled methods.
+This flag is used only if \f[CB]\-XX:SegmentedCodeCache\f[R] is enabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+PrintCompilation\f[R]
+Enables verbose diagnostic output from the JVM by printing a message to
+the console every time a method is compiled.
+This lets you to see which methods actually get compiled.
+By default, this option is disabled and diagnostic output isn\[aq]t
+printed.
+.RS
+.PP
You can also log compilation activity to a file by using the
-\fB\-XX:+LogCompilation\fR
-option\&.
-.RE
-.PP
-\-XX:+PrintInlining
-.RS 4
-Enables printing of inlining decisions\&. This enables you to see which methods are getting inlined\&.
-.sp
-By default, this option is disabled and inlining information is not printed\&. The
-\fB\-XX:+PrintInlining\fR
-option has to be used together with the
-\fB\-XX:+UnlockDiagnosticVMOptions\fR
-option that unlocks diagnostic JVM options\&.
-.RE
-.PP
-\-XX:ReservedCodeCacheSize=\fIsize\fR
-.RS 4
-Sets the maximum code cache size (in bytes) for JIT\-compiled code\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. The default maximum code cache size is 240 MB; if you disable tiered compilation with the option
-\fB\-XX:\-TieredCompilation\fR, then the default size is 48 MB\&. This option has a limit of 2 GB; otherwise, an error is generated\&. The maximum code cache size should not be less than the initial code cache size; see the option
-\fB\-XX:InitialCodeCacheSize\fR\&. This option is equivalent to
-\fB\-Xmaxjitcodesize\fR\&.
-.RE
-.PP
-\-XX:RTMAbortRatio=\fIabort_ratio\fR
-.RS 4
-The RTM abort ratio is specified as a percentage (%) of all executed RTM transactions\&. If a number of aborted transactions becomes greater than this ratio, then the compiled code will be deoptimized\&. This ratio is used when the
-\fB\-XX:+UseRTMDeopt\fR
-option is enabled\&. The default value of this option is 50\&. This means that the compiled code will be deoptimized if 50% of all transactions are aborted\&.
-.RE
-.PP
-\-XX:RTMRetryCount=\fInumber_of_retries\fR
-.RS 4
-RTM locking code will be retried, when it is aborted or busy, the number of times specified by this option before falling back to the normal locking mechanism\&. The default value for this option is 5\&. The
-\fB\-XX:UseRTMLocking\fR
-option must be enabled\&.
-.RE
-.PP
-\-XX:\-TieredCompilation
-.RS 4
-Disables the use of tiered compilation\&. By default, this option is enabled\&. Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:+UseAES
-.RS 4
-Enables hardware\-based AES intrinsics for Intel, AMD, and SPARC hardware\&. Intel Westmere (2010 and newer), AMD Bulldozer (2011 and newer), and SPARC (T4 and newer) are the supported hardware\&. UseAES is used in conjunction with UseAESIntrinsics\&.
-.RE
-.PP
-\-XX:+UseAESIntrinsics
-.RS 4
-UseAES and UseAESIntrinsics flags are enabled by default and are supported only for Java HotSpot Server VM 32\-bit and 64\-bit\&. To disable hardware\-based AES intrinsics, specify
-\fB\-XX:\-UseAES \-XX:\-UseAESIntrinsics\fR\&. For example, to enable hardware AES, use the following flags:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:+UseAES \-XX:+UseAESIntrinsics\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-To support UseAES and UseAESIntrinsics flags for 32\-bit and 64\-bit use
-\fB\-server\fR
-option to choose Java HotSpot Server VM\&. These flags are not supported on Client VM\&.
-.RE
-.PP
-\-XX:+UseCodeCacheFlushing
-.RS 4
-Enables flushing of the code cache before shutting down the compiler\&. This option is enabled by default\&. To disable flushing of the code cache before shutting down the compiler, specify
-\fB\-XX:\-UseCodeCacheFlushing\fR\&.
-.RE
-.PP
-\-XX:+UseCondCardMark
-.RS 4
-Enables checking of whether the card is already marked before updating the card table\&. This option is disabled by default and should only be used on machines with multiple sockets, where it will increase performance of Java applications that rely heavily on concurrent operations\&. Only the Java HotSpot Server VM supports this option\&.
-.RE
-.PP
-\-XX:+UseRTMDeopt
-.RS 4
-Auto\-tunes RTM locking depending on the abort ratio\&. This ratio is specified by
-\fB\-XX:RTMAbortRatio\fR
-option\&. If the number of aborted transactions exceeds the abort ratio, then the method containing the lock will be deoptimized and recompiled with all locks as normal locks\&. This option is disabled by default\&. The
-\fB\-XX:+UseRTMLocking\fR
-option must be enabled\&.
-.RE
-.PP
-\-XX:+UseRTMLocking
-.RS 4
-Generate Restricted Transactional Memory (RTM) locking code for all inflated locks, with the normal locking mechanism as the fallback handler\&. This option is disabled by default\&. Options related to RTM are only available for the Java HotSpot Server VM on x86 CPUs that support Transactional Synchronization Extensions (TSX)\&.
-.sp
-RTM is part of Intel\*(Aqs TSX, which is an x86 instruction set extension and facilitates the creation of multithreaded applications\&. RTM introduces the new instructions
-\fBXBEGIN\fR,
-\fBXABORT\fR,
-\fBXEND\fR, and
-\fBXTEST\fR\&. The
-\fBXBEGIN\fR
-and
-\fBXEND\fR
-instructions enclose a set of instructions to run as a transaction\&. If no conflict is found when running the transaction, the memory and register modifications are committed together at the
-\fBXEND\fR
-instruction\&. The
-\fBXABORT\fR
-instruction can be used to explicitly abort a transaction and the
-\fBXEND\fR
-instruction to check if a set of instructions are being run in a transaction\&.
-.sp
-A lock on a transaction is inflated when another thread tries to access the same transaction, thereby blocking the thread that did not originally request access to the transaction\&. RTM requires that a fallback set of operations be specified in case a transaction aborts or fails\&. An RTM lock is a lock that has been delegated to the TSX\*(Aqs system\&.
-.sp
-RTM improves performance for highly contended locks with low conflict in a critical region (which is code that must not be accessed by more than one thread concurrently)\&. RTM also improves the performance of coarse\-grain locking, which typically does not perform well in multithreaded applications\&. (Coarse\-grain locking is the strategy of holding locks for long periods to minimize the overhead of taking and releasing locks, while fine\-grained locking is the strategy of trying to achieve maximum parallelism by locking only when necessary and unlocking as soon as possible\&.) Also, for lightly contended locks that are used by different threads, RTM can reduce false cache line sharing, also known as cache line ping\-pong\&. This occurs when multiple threads from different processors are accessing different resources, but the resources share the same cache line\&. As a result, the processors repeatedly invalidate the cache lines of other processors, which forces them to read from main memory instead of their cache\&.
-.RE
-.PP
-\-XX:+UseSHA
-.RS 4
-Enables hardware\-based intrinsics for SHA crypto hash functions for SPARC hardware\&.
-\fBUseSHA\fR
-is used in conjunction with the
-\fBUseSHA1Intrinsics\fR,
-\fBUseSHA256Intrinsics\fR, and
-\fBUseSHA512Intrinsics\fR
-options\&.
-.sp
-The
-\fBUseSHA\fR
-and
-\fBUseSHA*Intrinsics\fR
-flags are enabled by default, and are supported only for Java HotSpot Server VM 64\-bit on SPARC T4 and newer\&.
-.sp
-This feature is only applicable when using the
-\fBsun\&.security\&.provider\&.Sun\fR
-provider for SHA operations\&.
-.sp
-To disable all hardware\-based SHA intrinsics, specify
-\fB\-XX:\-UseSHA\fR\&. To disable only a particular SHA intrinsic, use the appropriate corresponding option\&. For example:
-\fB\-XX:\-UseSHA256Intrinsics\fR\&.
-.RE
-.PP
-\-XX:+UseSHA1Intrinsics
-.RS 4
-Enables intrinsics for SHA\-1 crypto hash function\&.
-.RE
-.PP
-\-XX:+UseSHA256Intrinsics
-.RS 4
-Enables intrinsics for SHA\-224 and SHA\-256 crypto hash functions\&.
-.RE
-.PP
-\-XX:+UseSHA512Intrinsics
-.RS 4
-Enables intrinsics for SHA\-384 and SHA\-512 crypto hash functions\&.
-.RE
-.PP
-\-XX:+UseSuperWord
-.RS 4
-Enables the transformation of scalar operations into superword operations\&. This option is enabled by default\&. To disable the transformation of scalar operations into superword operations, specify
-\fB\-XX:\-UseSuperWord\fR\&. Only the Java HotSpot Server VM supports this option\&.
-.RE
-.SS "Advanced Serviceability Options"
-.PP
-These options provide the ability to gather system information and perform extensive debugging\&.
-.PP
-\-XX:+ExtendedDTraceProbes
-.RS 4
-Enables additional
-\fBdtrace\fR
-tool probes that impact the performance\&. By default, this option is disabled and
-\fBdtrace\fR
-performs only standard probes\&.
-.RE
-.PP
-\-XX:+HeapDumpOnOutOfMemory
-.RS 4
-Enables the dumping of the Java heap to a file in the current directory by using the heap profiler (HPROF) when a
-\fBjava\&.lang\&.OutOfMemoryError\fR
-exception is thrown\&. You can explicitly set the heap dump file path and name using the
-\fB\-XX:HeapDumpPath\fR
-option\&. By default, this option is disabled and the heap is not dumped when an
-\fBOutOfMemoryError\fR
-exception is thrown\&.
-.RE
-.PP
-\-XX:HeapDumpPath=\fIpath\fR
-.RS 4
-Sets the path and file name for writing the heap dump provided by the heap profiler (HPROF) when the
-\fB\-XX:+HeapDumpOnOutOfMemoryError\fR
-option is set\&. By default, the file is created in the current working directory, and it is named
-\fBjava_pid\fR\fIpid\fR\fB\&.hprof\fR
-where
-\fIpid\fR
-is the identifier of the process that caused the error\&. The following example shows how to set the default file explicitly (\fB%p\fR
-represents the current process identificator):
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:HeapDumpPath=\&./java_pid%p\&.hprof\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-The following example shows how to set the heap dump file to
-\fB/var/log/java/java_heapdump\&.hprof\fR:
-.sp
-.if n \{\
-.RS 4
-.\}
+\f[CB]\-XX:+LogCompilation\f[R] option.
+.RE
+.TP
+.B \f[CB]\-XX:+PrintInlining\f[R]
+Enables printing of inlining decisions.
+This let\[aq]s you see which methods are getting inlined.
+.RS
+.PP
+By default, this option is disabled and inlining information isn\[aq]t
+printed.
+The \f[CB]\-XX:+PrintInlining\f[R] option has to be used together with the
+\f[CB]\-XX:+UnlockDiagnosticVMOptions\f[R] option that unlocks diagnostic
+JVM options.
+.RE
+.TP
+.B \f[CB]\-XX:ReservedCodeCacheSize=\f[R]\f[I]size\f[R]
+Sets the maximum code cache size (in bytes) for JIT\-compiled code.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+The default maximum code cache size is 240 MB; if you disable tiered
+compilation with the option \f[CB]\-XX:\-TieredCompilation\f[R], then the
+default size is 48 MB.
+This option has a limit of 2 GB; otherwise, an error is generated.
+The maximum code cache size shouldn\[aq]t be less than the initial code
+cache size; see the option \f[CB]\-XX:InitialCodeCacheSize\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:RTMAbortRatio=\f[R]\f[I]abort_ratio\f[R]
+Specifies the RTM abort ratio is specified as a percentage (%) of all
+executed RTM transactions.
+If a number of aborted transactions becomes greater than this ratio,
+then the compiled code is deoptimized.
+This ratio is used when the \f[CB]\-XX:+UseRTMDeopt\f[R] option is
+enabled.
+The default value of this option is 50.
+This means that the compiled code is deoptimized if 50% of all
+transactions are aborted.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:RTMRetryCount=\f[R]\f[I]number_of_retries\f[R]
+Specifies the number of times that the RTM locking code is retried, when
+it is aborted or busy, before falling back to the normal locking
+mechanism.
+The default value for this option is 5.
+The \f[CB]\-XX:UseRTMLocking\f[R] option must be enabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+SegmentedCodeCache\f[R]
+Enables segmentation of the code cache.
+Without the \f[CB]\-XX:+SegmentedCodeCache\f[R], the code cache consists
+of one large segment.
+With \f[CB]\-XX:+SegmentedCodeCache\f[R], we have separate segments for
+nonmethod, profiled method, and nonprofiled method code.
+These segments aren\[aq]t resized at runtime.
+The feature is enabled by default if tiered compilation is enabled
+(\f[CB]\-XX:+TieredCompilation\f[R] ) and
+\f[CB]\-XX:ReservedCodeCacheSize\f[R] >= 240 MB.
+The advantages are better control of the memory footprint, reduced code
+fragmentation, and better iTLB/iCache behavior due to improved locality.
+iTLB/iCache is a CPU\-specific term meaning Instruction Translation
+Lookaside Buffer (ITLB).
+ICache is an instruction cache in theCPU.
+The implementation of the code cache can be found in the file:
+\f[CB]/share/vm/code/codeCache.cpp\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:StartAggressiveSweepingAt=\f[R]\f[I]percent\f[R]
+Forces stack scanning of active methods to aggressively remove unused
+code when only the given percentage of the code cache is free.
+The default value is 10%.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:\-TieredCompilation\f[R]
+Disables the use of tiered compilation.
+By default, this option is enabled.
+Only the Java HotSpot Server VM supports this option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseAES\f[R]
+Enables hardware\-based AES intrinsics for Intel, AMD, and SPARC
+hardware.
+Intel Westmere (2010 and newer), AMD Bulldozer (2011 and newer), and
+SPARC (T4 and newer) are the supported hardware.
+The \f[CB]\-XX:+UseAES\f[R] is used in conjunction with UseAESIntrinsics.
+Flags that control intrinsics now require the option
+\f[CB]\-XX:+UnlockDiagnosticVMOptions\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseAESIntrinsics\f[R]
+Enables \f[CB]\-XX:+UseAES\f[R] and \f[CB]\-XX:+UseAESIntrinsics\f[R] flags
+by default and are supported only for the Java HotSpot Server VM.
+To disable hardware\-based AES intrinsics, specify
+\f[CB]\-XX:\-UseAES\ \-XX:\-UseAESIntrinsics\f[R].
+For example, to enable hardware AES, use the following flags:
+.RS
+.RS
+.PP
+\f[CB]\-XX:+UseAES\ \-XX:+UseAESIntrinsics\f[R]
+.RE
+.PP
+Flags that control intrinsics now require the option
+\f[CB]\-XX:+UnlockDiagnosticVMOptions\f[R].
+To support UseAES and UseAESIntrinsics flags, use the \f[CB]\-server\f[R]
+option to select the Java HotSpot Server VM.
+These flags aren\[aq]t supported on Client VM.
+.RE
+.TP
+.B \f[CB]\-XX:+UseCMoveUnconditionally\f[R]
+Generates CMove (scalar and vector) instructions regardless of
+profitability analysis.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseCodeCacheFlushing\f[R]
+Enables flushing of the code cache before shutting down the compiler.
+This option is enabled by default.
+To disable flushing of the code cache before shutting down the compiler,
+specify \f[CB]\-XX:\-UseCodeCacheFlushing\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseCondCardMark\f[R]
+Enables checking if the card is already marked before updating the card
+table.
+This option is disabled by default.
+It should be used only on machines with multiple sockets, where it
+increases the performance of Java applications that rely on concurrent
+operations.
+Only the Java HotSpot Server VM supports this option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseCountedLoopSafepoints\f[R]
+Keeps safepoints in counted loops.
+Its default value is false.\
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseFMA\f[R]
+Enables hardware\-based FMA intrinsics for hardware where FMA
+instructions are available (such as, Intel, SPARC, and ARM64).
+FMA intrinsics are generated for the
+\f[CB]java.lang.Math.fma(\f[R]\f[I]a\f[R]\f[CB],\f[R] \f[I]b\f[R]\f[CB],\f[R]
+\f[I]c\f[R]\f[CB])\f[R] methods that calculate the value of \f[CB](\f[R]
+\f[I]a\f[R] \f[CB]*\f[R] \f[I]b\f[R] \f[CB]+\f[R] \f[I]c\f[R] \f[CB])\f[R]
+expressions.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseRTMDeopt\f[R]
+Autotunes RTM locking depending on the abort ratio.
+This ratio is specified by the \f[CB]\-XX:RTMAbortRatio\f[R] option.
+If the number of aborted transactions exceeds the abort ratio, then the
+method containing the lock is deoptimized and recompiled with all locks
+as normal locks.
+This option is disabled by default.
+The \f[CB]\-XX:+UseRTMLocking\f[R] option must be enabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseRTMLocking\f[R]
+Generates Restricted Transactional Memory (RTM) locking code for all
+inflated locks, with the normal locking mechanism as the fallback
+handler.
+This option is disabled by default.
+Options related to RTM are available only for the Java HotSpot Server VM
+on x86 CPUs that support Transactional Synchronization Extensions (TSX).
+.RS
+.PP
+RTM is part of Intel\[aq]s TSX, which is an x86 instruction set
+extension and facilitates the creation of multithreaded applications.
+RTM introduces the new instructions \f[CB]XBEGIN\f[R], \f[CB]XABORT\f[R],
+\f[CB]XEND\f[R], and \f[CB]XTEST\f[R].
+The \f[CB]XBEGIN\f[R] and \f[CB]XEND\f[R] instructions enclose a set of
+instructions to run as a transaction.
+If no conflict is found when running the transaction, then the memory
+and register modifications are committed together at the \f[CB]XEND\f[R]
+instruction.
+The \f[CB]XABORT\f[R] instruction can be used to explicitly abort a
+transaction and the \f[CB]XEND\f[R] instruction checks if a set of
+instructions is being run in a transaction.
+.PP
+A lock on a transaction is inflated when another thread tries to access
+the same transaction, thereby blocking the thread that didn\[aq]t
+originally request access to the transaction.
+RTM requires that a fallback set of operations be specified in case a
+transaction aborts or fails.
+An RTM lock is a lock that has been delegated to the TSX\[aq]s system.
+.PP
+RTM improves performance for highly contended locks with low conflict in
+a critical region (which is code that must not be accessed by more than
+one thread concurrently).
+RTM also improves the performance of coarse\-grain locking, which
+typically doesn\[aq]t perform well in multithreaded applications.
+(Coarse\-grain locking is the strategy of holding locks for long periods
+to minimize the overhead of taking and releasing locks, while
+fine\-grained locking is the strategy of trying to achieve maximum
+parallelism by locking only when necessary and unlocking as soon as
+possible.) Also, for lightly contended locks that are used by different
+threads, RTM can reduce false cache line sharing, also known as cache
+line ping\-pong.
+This occurs when multiple threads from different processors are
+accessing different resources, but the resources share the same cache
+line.
+As a result, the processors repeatedly invalidate the cache lines of
+other processors, which forces them to read from main memory instead of
+their cache.
+.RE
+.TP
+.B \f[CB]\-XX:+UseSHA\f[R]
+Enables hardware\-based intrinsics for SHA crypto hash functions for
+SPARC hardware.
+The \f[CB]UseSHA\f[R] option is used in conjunction with the
+\f[CB]UseSHA1Intrinsics\f[R], \f[CB]UseSHA256Intrinsics\f[R], and
+\f[CB]UseSHA512Intrinsics\f[R] options.
+.RS
+.PP
+The \f[CB]UseSHA\f[R] and \f[CB]UseSHA*Intrinsics\f[R] flags are enabled by
+default, and are supported only for Java HotSpot Server VM 64\-bit on
+SPARC T4 and newer.
+.PP
+This feature is applicable only when using the
+\f[CB]sun.security.provider.Sun\f[R] provider for SHA operations.
+Flags that control intrinsics now require the option
+\f[CB]\-XX:+UnlockDiagnosticVMOptions\f[R].
+.PP
+To disable all hardware\-based SHA intrinsics, specify the
+\f[CB]\-XX:\-UseSHA\f[R].
+To disable only a particular SHA intrinsic, use the appropriate
+corresponding option.
+For example: \f[CB]\-XX:\-UseSHA256Intrinsics\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:+UseSHA1Intrinsics\f[R]
+Enables intrinsics for SHA\-1 crypto hash function.
+Flags that control intrinsics now require the option
+\f[CB]\-XX:+UnlockDiagnosticVMOptions\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseSHA256Intrinsics\f[R]
+Enables intrinsics for SHA\-224 and SHA\-256 crypto hash functions.
+Flags that control intrinsics now require the option
+\f[CB]\-XX:+UnlockDiagnosticVMOptions\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseSHA512Intrinsics\f[R]
+Enables intrinsics for SHA\-384 and SHA\-512 crypto hash functions.
+Flags that control intrinsics now require the option
+\f[CB]\-XX:+UnlockDiagnosticVMOptions\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseSuperWord\f[R]
+Enables the transformation of scalar operations into superword
+operations.
+Superword is a vectorization optimization.
+This option is enabled by default.
+To disable the transformation of scalar operations into superword
+operations, specify \f[CB]\-XX:\-UseSuperWord\f[R].
+Only the Java HotSpot Server VM supports this option.
+.RS
+.RE
+.SH ADVANCED SERVICEABILITY OPTIONS FOR JAVA
+.PP
+These \f[CB]java\f[R] options provide the ability to gather system
+information and perform extensive debugging.
+.TP
+.B \f[CB]\-XX:+DisableAttachMechanism\f[R]
+Disables the mechanism that lets tools attach to the JVM.
+By default, this option is disabled, meaning that the attach mechanism
+is enabled and you can use diagnostics and troubleshooting tools such as
+\f[CB]jcmd\f[R], \f[CB]jstack\f[R], \f[CB]jmap\f[R], and \f[CB]jinfo\f[R].
+.RS
+.RS
+.PP
+\f[B]Note:\f[R] The tools such as \f[B]jcmd\f[R], \f[B]jinfo\f[R],
+\f[B]jmap\f[R], and \f[B]jstack\f[R] shipped with the JDK aren\[aq]t
+supported when using the tools from one JDK version to troubleshoot a
+different JDK version.
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+ExtendedDTraceProbes\f[R]
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] Enables additional
+\f[CB]dtrace\f[R] tool probes that affect the performance.
+By default, this option is disabled and \f[CB]dtrace\f[R] performs only
+standard probes.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+HeapDumpOnOutOfMemoryError\f[R]
+Enables the dumping of the Java heap to a file in the current directory
+by using the heap profiler (HPROF) when a
+\f[CB]java.lang.OutOfMemoryError\f[R] exception is thrown.
+You can explicitly set the heap dump file path and name using the
+\f[CB]\-XX:HeapDumpPath\f[R] option.
+By default, this option is disabled and the heap isn\[aq]t dumped when
+an \f[CB]OutOfMemoryError\f[R] exception is thrown.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:HeapDumpPath=path\f[R]
+Sets the path and file name for writing the heap dump provided by the
+heap profiler (HPROF) when the \f[CB]\-XX:+HeapDumpOnOutOfMemoryError\f[R]
+option is set.
+By default, the file is created in the current working directory, and
+it\[aq]s named \f[CB]java_pid<pid>.hprof\f[R] where \f[CB]<pid>\f[R] is the
+identifier of the process that caused the error.
+The following example shows how to set the default file explicitly
+(\f[CB]%p\f[R] represents the current process identifier):
+.RS
+.RS
+.PP
+\f[CB]\-XX:HeapDumpPath=./java_pid%p.hprof\f[R]
+.RE
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] The following example shows
+how to set the heap dump file to
+\f[CB]/var/log/java/java_heapdump.hprof\f[R]:
+.RS 2
+.RS
+.PP
+\f[CB]\-XX:HeapDumpPath=/var/log/java/java_heapdump.hprof\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R] The following example shows how to set the heap dump
+file to \f[CB]C:/log/java/java_heapdump.log\f[R]:
+.RS 2
+.RS
+.PP
+\f[CB]\-XX:HeapDumpPath=C:/log/java/java_heapdump.log\f[R]
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:LogFile=\f[R]\f[I]path\f[R]
+Sets the path and file name to where log data is written.
+By default, the file is created in the current working directory, and
+it\[aq]s named \f[CB]hotspot.log\f[R].
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] The following example shows
+how to set the log file to \f[CB]/var/log/java/hotspot.log\f[R]:
+.RS 2
+.RS
+.PP
+\f[CB]\-XX:LogFile=/var/log/java/hotspot.log\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R] The following example shows how to set the log file to
+\f[CB]C:/log/java/hotspot.log\f[R]:
+.RS 2
+.RS
+.PP
+\f[CB]\-XX:LogFile=C:/log/java/hotspot.log\f[R]
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+PrintClassHistogram\f[R]
+Enables printing of a class instance histogram after one of the
+following events:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] \f[CB]Control+Break\f[R]
+.IP \[bu] 2
+\f[B]Windows:\f[R] \f[CB]Control+C\f[R] (\f[CB]SIGTERM\f[R])
+.PP
+By default, this option is disabled.
+.PP
+Setting this option is equivalent to running the \f[CB]jmap\ \-histo\f[R]
+command, or the \f[CB]jcmd\f[R] \f[I]pid\f[R] \f[CB]GC.class_histogram\f[R]
+command, where \f[I]pid\f[R] is the current Java process identifier.
+.RE
+.TP
+.B \f[CB]\-XX:+PrintConcurrentLocks\f[R]
+Enables printing of \f[CB]java.util.concurrent\f[R] locks after one of the
+following events:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and macOS:\f[R] \f[CB]Control+Break\f[R]
+.IP \[bu] 2
+\f[B]Windows:\f[R] \f[CB]Control+C\f[R] (\f[CB]SIGTERM\f[R])
+.PP
+By default, this option is disabled.
+.PP
+Setting this option is equivalent to running the \f[CB]jstack\ \-l\f[R]
+command or the \f[CB]jcmd\f[R] \f[I]pid\f[R] \f[CB]Thread.print\ \-l\f[R]
+command, where \f[I]pid\f[R] is the current Java process identifier.
+.RE
+.TP
+.B \f[CB]\-XX:+PrintFlagsRanges\f[R]
+Prints the range specified and allows automatic testing of the values.
+See \f[B]Validate Java Virtual Machine Flag Arguments\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+PerfDataSaveToFile\f[R]
+If enabled, saves \f[B]jstat\f[R] binary data when the Java application
+exits.
+This binary data is saved in a file named
+\f[CB]hsperfdata_\f[R]\f[I]pid\f[R], where \f[I]pid\f[R] is the process
+identifier of the Java application that you ran.
+Use the \f[CB]jstat\f[R] command to display the performance data contained
+in this file as follows:
+.RS
+.RS
+.PP
+\f[CB]jstat\ \-class\ file:///\f[R]\f[I]path\f[R]\f[CB]/hsperfdata_\f[R]\f[I]pid\f[R]
+.RE
+.RS
+.PP
+\f[CB]jstat\ \-gc\ file:///\f[R]\f[I]path\f[R]\f[CB]/hsperfdata_\f[R]\f[I]pid\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+UsePerfData\f[R]
+Enables the \f[CB]perfdata\f[R] feature.
+This option is enabled by default to allow JVM monitoring and
+performance testing.
+Disabling it suppresses the creation of the \f[CB]hsperfdata_userid\f[R]
+directories.
+To disable the \f[CB]perfdata\f[R] feature, specify
+\f[CB]\-XX:\-UsePerfData\f[R].
+.RS
+.RE
+.SH ADVANCED GARBAGE COLLECTION OPTIONS FOR JAVA
+.PP
+These \f[CB]java\f[R] options control how garbage collection (GC) is
+performed by the Java HotSpot VM.
+.TP
+.B \f[CB]\-XX:+AggressiveHeap\f[R]
+Enables Java heap optimization.
+This sets various parameters to be optimal for long\-running jobs with
+intensive memory allocation, based on the configuration of the computer
+(RAM and CPU).
+By default, the option is disabled and the heap isn't optimized.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+AlwaysPreTouch\f[R]
+Enables touching of every page on the Java heap during JVM
+initialization.
+This gets all pages into memory before entering the \f[CB]main()\f[R]
+method.
+The option can be used in testing to simulate a long\-running system
+with all virtual memory mapped to physical memory.
+By default, this option is disabled and all pages are committed as JVM
+heap space fills.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+CMSClassUnloadingEnabled\f[R]
+Enables class unloading when using the concurrent mark\-sweep (CMS)
+garbage collector.
+This option is enabled by default.
+To disable class unloading for the CMS garbage collector, specify
+\f[CB]\-XX:\-CMSClassUnloadingEnabled\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:CMSExpAvgFactor=\f[R]\f[I]percent\f[R]
+Sets the percentage of time (0 to 100) used to weight the current sample
+when computing exponential averages for the concurrent collection
+statistics.
+By default, the exponential averages factor is set to 25%.
+The following example shows how to set the factor to 15%:
+.RS
+.RS
+.PP
+\f[CB]\-XX:CMSExpAvgFactor=15\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:CMSInitiatingOccupancyFraction=\f[R]\f[I]percent\f[R]
+Sets the percentage of the old generation occupancy (0 to 100) at which
+to start a CMS collection cycle.
+The default value is set to \-1.
+Any negative value (including the default) implies that the option
+\f[CB]\-XX:CMSTriggerRatio\f[R] is used to define the value of the
+initiating occupancy fraction.
+.RS
+.PP
+The following example shows how to set the factor to 20%:
+.IP
.nf
-\fB\-XX:HeapDumpPath=/var/log/java/java_heapdump\&.hprof\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:LogFile=\fIpath\fR
-.RS 4
-Sets the path and file name where log data is written\&. By default, the file is created in the current working directory, and it is named
-\fBhotspot\&.log\fR\&.
-.sp
-The following example shows how to set the log file to
-\fB/var/log/java/hotspot\&.log\fR:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:LogFile=/var/log/java/hotspot\&.log\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+PrintClassHistogram
-.RS 4
-Enables printing of a class instance histogram after a
-\fBControl+C\fR
-event (\fBSIGTERM\fR)\&. By default, this option is disabled\&.
-.sp
-Setting this option is equivalent to running the
-\fBjmap \-histo\fR
-command, or the
-\fBjcmd \fR\fIpid\fR\fB GC\&.class_histogram\fR
-command, where
-\fIpid\fR
-is the current Java process identifier\&.
-.RE
-.PP
-\-XX:+PrintConcurrentLocks
-.RS 4
-Enables printing of locks after a event\&. By default, this option is disabled\&.
-.sp
-Enables printing of
-\fBjava\&.util\&.concurrent\fR
-locks after a
-\fBControl+C\fR
-event (\fBSIGTERM\fR)\&. By default, this option is disabled\&.
-.sp
-Setting this option is equivalent to running the
-\fBjstack \-l\fR
-command or the
-\fBjcmd \fR\fIpid\fR\fB Thread\&.print \-l\fR
-command, where
-\fIpid\fR
-is the current Java process identifier\&.
-.RE
-.PP
-\-XX:+UnlockDiagnosticVMOptions
-.RS 4
-Unlocks the options intended for diagnosing the JVM\&. By default, this option is disabled and diagnostic options are not available\&.
-.RE
-.SS "Advanced Garbage Collection Options"
-.PP
-These options control how garbage collection (GC) is performed by the Java HotSpot VM\&.
-.PP
-\-XX:+AggressiveHeap
-.RS 4
-Enables Java heap optimization\&. This sets various parameters to be optimal for long\-running jobs with intensive memory allocation, based on the configuration of the computer (RAM and CPU)\&. By default, the option is disabled and the heap is not optimized\&.
-.RE
-.PP
-\-XX:+AlwaysPreTouch
-.RS 4
-Enables touching of every page on the Java heap during JVM initialization\&. This gets all pages into the memory before entering the
-\fBmain()\fR
-method\&. The option can be used in testing to simulate a long\-running system with all virtual memory mapped to physical memory\&. By default, this option is disabled and all pages are committed as JVM heap space fills\&.
-.RE
-.PP
-\-XX:+CMSClassUnloadingEnabled
-.RS 4
-Enables class unloading when using the concurrent mark\-sweep (CMS) garbage collector\&. This option is enabled by default\&. To disable class unloading for the CMS garbage collector, specify
-\fB\-XX:\-CMSClassUnloadingEnabled\fR\&.
-.RE
-.PP
-\-XX:CMSExpAvgFactor=\fIpercent\fR
-.RS 4
-Sets the percentage of time (0 to 100) used to weight the current sample when computing exponential averages for the concurrent collection statistics\&. By default, the exponential averages factor is set to 25%\&. The following example shows how to set the factor to 15%:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CMSExpAvgFactor=15\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:CMSInitiatingOccupancyFraction=\fIpercent\fR
-.RS 4
-Sets the percentage of the old generation occupancy (0 to 100) at which to start a CMS collection cycle\&. The default value is set to \-1\&. Any negative value (including the default) implies that
-\fB\-XX:CMSTriggerRatio\fR
-is used to define the value of the initiating occupancy fraction\&.
-.sp
-The following example shows how to set the occupancy fraction to 20%:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CMSInitiatingOccupancyFraction=20\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+CMSScavengeBeforeRemark
-.RS 4
-Enables scavenging attempts before the CMS remark step\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:CMSTriggerRatio=\fIpercent\fR
-.RS 4
-Sets the percentage (0 to 100) of the value specified by
-\fB\-XX:MinHeapFreeRatio\fR
-that is allocated before a CMS collection cycle commences\&. The default value is set to 80%\&.
-.sp
-The following example shows how to set the occupancy fraction to 75%:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:CMSTriggerRatio=75\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:ConcGCThreads=\fIthreads\fR
-.RS 4
-Sets the number of threads used for concurrent GC\&. The default value depends on the number of CPUs available to the JVM\&.
-.sp
-For example, to set the number of threads for concurrent GC to 2, specify the following option:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:ConcGCThreads=2\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+DisableExplicitGC
-.RS 4
-Enables the option that disables processing of calls to
-\fBSystem\&.gc()\fR\&. This option is disabled by default, meaning that calls to
-\fBSystem\&.gc()\fR
-are processed\&. If processing of calls to
-\fBSystem\&.gc()\fR
-is disabled, the JVM still performs GC when necessary\&.
-.RE
-.PP
-\-XX:+ExplicitGCInvokesConcurrent
-.RS 4
-Enables invoking of concurrent GC by using the
-\fBSystem\&.gc()\fR
-request\&. This option is disabled by default and can be enabled only together with the
-\fB\-XX:+UseConcMarkSweepGC\fR
-option\&.
-.RE
-.PP
-\-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
-.RS 4
-Enables invoking of concurrent GC by using the
-\fBSystem\&.gc()\fR
-request and unloading of classes during the concurrent GC cycle\&. This option is disabled by default and can be enabled only together with the
-\fB\-XX:+UseConcMarkSweepGC\fR
-option\&.
-.RE
-.PP
-\-XX:G1HeapRegionSize=\fIsize\fR
-.RS 4
-Sets the size of the regions into which the Java heap is subdivided when using the garbage\-first (G1) collector\&. The value can be between 1 MB and 32 MB\&. The default region size is determined ergonomically based on the heap size\&.
-.sp
-The following example shows how to set the size of the subdivisions to 16 MB:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:G1HeapRegionSize=16m\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+G1PrintHeapRegions
-.RS 4
-Enables the printing of information about which regions are allocated and which are reclaimed by the G1 collector\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:G1ReservePercent=\fIpercent\fR
-.RS 4
-Sets the percentage of the heap (0 to 50) that is reserved as a false ceiling to reduce the possibility of promotion failure for the G1 collector\&. By default, this option is set to 10%\&.
-.sp
-The following example shows how to set the reserved heap to 20%:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:G1ReservePercent=20\fR
-
+\f[CB]
+>\ \ \ `\-XX:CMSInitiatingOccupancyFraction=20`
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:InitialHeapSize=\fIsize\fR
-.RS 4
-Sets the initial size (in bytes) of the memory allocation pool\&. This value must be either 0, or a multiple of 1024 and greater than 1 MB\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. The default value is chosen at runtime based on system configuration\&. See the section "Ergonomics" in
-\fIJava SE HotSpot Virtual Machine Garbage Collection Tuning Guide\fR
-at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gctuning/index\&.html\&.
-.sp
-The following examples show how to set the size of allocated memory to 6 MB using various units:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:InitialHeapSize=6291456\fR
-\fB\-XX:InitialHeapSize=6144k\fR
-\fB\-XX:InitialHeapSize=6m\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-If you set this option to 0, then the initial size will be set as the sum of the sizes allocated for the old generation and the young generation\&. The size of the heap for the young generation can be set using the
-\fB\-XX:NewSize\fR
-option\&.
-.RE
-.PP
-\-XX:InitialSurvivorRatio=\fIratio\fR
-.RS 4
-Sets the initial survivor space ratio used by the throughput garbage collector (which is enabled by the
-\fB\-XX:+UseParallelGC\fR
-and/or \-\fBXX:+UseParallelOldGC\fR
-options)\&. Adaptive sizing is enabled by default with the throughput garbage collector by using the
-\fB\-XX:+UseParallelGC\fR
-and
-\fB\-XX:+UseParallelOldGC\fR
-options, and survivor space is resized according to the application behavior, starting with the initial value\&. If adaptive sizing is disabled (using the
-\fB\-XX:\-UseAdaptiveSizePolicy\fR
-option), then the
-\fB\-XX:SurvivorRatio\fR
-option should be used to set the size of the survivor space for the entire execution of the application\&.
-.sp
-The following formula can be used to calculate the initial size of survivor space (S) based on the size of the young generation (Y), and the initial survivor space ratio (R):
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBS=Y/(R+2)\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-The 2 in the equation denotes two survivor spaces\&. The larger the value specified as the initial survivor space ratio, the smaller the initial survivor space size\&.
-.sp
-By default, the initial survivor space ratio is set to 8\&. If the default value for the young generation space size is used (2 MB), the initial size of the survivor space will be 0\&.2 MB\&.
-.sp
-The following example shows how to set the initial survivor space ratio to 4:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:InitialSurvivorRatio=4\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:InitiatingHeapOccupancyPercent=\fIpercent\fR
-.RS 4
-Sets the percentage of the heap occupancy (0 to 100) at which to start a concurrent GC cycle\&. It is used by garbage collectors that trigger a concurrent GC cycle based on the occupancy of the entire heap, not just one of the generations (for example, the G1 garbage collector)\&.
-.sp
-By default, the initiating value is set to 45%\&. A value of 0 implies nonstop GC cycles\&. The following example shows how to set the initiating heap occupancy to 75%:
-.sp
-.if n \{\
-.RS 4
-.\}
+.RE
+.TP
+.B \f[CB]\-XX:CMSIncrementalDutySafetyFactor=\f[R]\f[I]percent\f[R]
+Sets the percentage (0 to 100) used to add conservatism when computing
+the duty cycle.
+The default value is 10.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+CMSScavengeBeforeRemark\f[R]
+Enables scavenging attempts before the CMS remark step.
+By default, this option is disabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:CMSTriggerRatio=percent\f[R]
+Sets the percentage (0 to 100) of the value specified by the option
+\f[CB]\-XX:MinHeapFreeRatio\f[R] that\[aq]s allocated before a CMS
+collection cycle commences.
+The default value is set to 80%.
+.RS
+.PP
+The following example shows how to set the occupancy fraction to 75%:
+.RS
+.PP
+\f[CB]\-XX:CMSTriggerRatio=75\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:ConcGCThreads=\f[R]\f[I]threads\f[R]
+Sets the number of threads used for concurrent GC.
+Sets \f[I]\f[CI]threads\f[I]\f[R] to approximately 1/4 of the number of
+parallel garbage collection threads.
+The default value depends on the number of CPUs available to the JVM.
+.RS
+.PP
+For example, to set the number of threads for concurrent GC to 2,
+specify the following option:
+.RS
+.PP
+\f[CB]\-XX:ConcGCThreads=2\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+DisableExplicitGC\f[R]
+Enables the option that disables processing of calls to the
+\f[CB]System.gc()\f[R] method.
+This option is disabled by default, meaning that calls to
+\f[CB]System.gc()\f[R] are processed.
+If processing of calls to \f[CB]System.gc()\f[R] is disabled, then the JVM
+still performs GC when necessary.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+ExplicitGCInvokesConcurrent\f[R]
+Enables invoking of concurrent GC by using the \f[CB]System.gc()\f[R]
+request.
+This option is disabled by default and can be enabled only with the
+deprecated \f[CB]\-XX:+UseConcMarkSweepGC\f[R] option and the
+\f[CB]\-XX:+UseG1GC\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses\f[R]
+Enables invoking of concurrent GC by using the \f[CB]System.gc()\f[R]
+request and unloading of classes during the concurrent GC cycle.
+This option is disabled by default and can be enabled only with the
+deprecated \f[CB]\-XX:+UseConcMarkSweepGC\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:G1HeapRegionSize=size\f[R]
+Sets the size of the regions into which the Java heap is subdivided when
+using the garbage\-first (G1) collector.
+The value is a power of 2 and can range from 1 MB to 32 MB.
+The goal is to have around 2048 regions based on the minimum Java heap
+size.
+The default region size is determined ergonomically based on the heap
+size.
+.RS
+.PP
+The following example sets the size of the subdivisions to 16 MB:
+.RS
+.PP
+\f[CB]\-XX:G1HeapRegionSize=16m\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:G1HeapWastePercent=\f[R]\f[I]percent\f[R]
+Sets the percentage of heap that you\[aq]re willing to waste.
+The Java HotSpot VM doesn\[aq]t initiate the mixed garbage collection
+cycle when the reclaimable percentage is less than the heap waste
+percentage.
+The default is 5 percent.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:G1MaxNewSizePercent=\f[R]\f[I]percent\f[R]
+Sets the percentage of the heap size to use as the maximum for the young
+generation size.
+The default value is 60 percent of your Java heap.
+.RS
+.PP
+This is an experimental flag.
+This setting replaces the \f[CB]\-XX:DefaultMaxNewGenPercent\f[R] setting.
+.PP
+This setting isn\[aq]t available in Java HotSpot VM build 23 or earlier.
+.RE
+.TP
+.B \f[CB]\-XX:G1MixedGCCountTarget=\f[R]\f[I]number\f[R]
+Sets the target number of mixed garbage collections after a marking
+cycle to collect old regions with at most
+\f[CB]G1MixedGCLIveThresholdPercent\f[R] live data.
+The default is 8 mixed garbage collections.
+The goal for mixed collections is to be within this target number.
+.RS
+.PP
+This setting isn\[aq]t available in Java HotSpot VM build 23 or earlier.
+.RE
+.TP
+.B \f[CB]\-XX:G1MixedGCLiveThresholdPercent=\f[R]\f[I]percent\f[R]
+Sets the occupancy threshold for an old region to be included in a mixed
+garbage collection cycle.
+The default occupancy is 85 percent.
+.RS
+.PP
+This is an experimental flag.
+This setting replaces the
+\f[CB]\-XX:G1OldCSetRegionLiveThresholdPercent\f[R] setting.
+.PP
+This setting isn\[aq]t available in Java HotSpot VM build 23 or earlier.
+.RE
+.TP
+.B \f[CB]\-XX:G1NewSizePercent=\f[R]\f[I]percent\f[R]
+Sets the percentage of the heap to use as the minimum for the young
+generation size.
+The default value is 5 percent of your Java heap.
+.RS
+.PP
+This is an experimental flag.
+This setting replaces the \f[CB]\-XX:DefaultMinNewGenPercent\f[R] setting.
+.PP
+This setting isn\[aq]t available in Java HotSpot VM build 23 or earlier.
+.RE
+.TP
+.B \f[CB]\-XX:G1OldCSetRegionThresholdPercent=\f[R]\f[I]percent\f[R]
+Sets an upper limit on the number of old regions to be collected during
+a mixed garbage collection cycle.
+The default is 10 percent of the Java heap.
+.RS
+.PP
+This setting isn\[aq]t available in Java HotSpot VM build 23 or earlier.
+.RE
+.TP
+.B \f[CB]\-XX:G1ReservePercent=\f[R]\f[I]percent\f[R]
+Sets the percentage of the heap (0 to 50) that\[aq]s reserved as a false
+ceiling to reduce the possibility of promotion failure for the G1
+collector.
+When you increase or decrease the percentage, ensure that you adjust the
+total Java heap by the same amount.
+By default, this option is set to 10%.
+.RS
+.PP
+The following example sets the reserved heap to 20%:
+.RS
+.PP
+\f[CB]\-XX:G1ReservePercent=20\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:InitialHeapOccupancyPercent=\f[R]\f[I]percent\f[R]
+Sets the Java heap occupancy threshold that triggers a marking cycle.
+The default occupancy is 45 percent of the entire Java heap.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:InitialHeapSize=\f[R]\f[I]size\f[R]
+Sets the initial size (in bytes) of the memory allocation pool.
+This value must be either 0, or a multiple of 1024 and greater than 1
+MB.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+The default value is selected at run time based on the system
+configuration.
+.RS
+.PP
+The following examples show how to set the size of allocated memory to 6
+MB using various units:
+.IP
.nf
-\fB\-XX:InitiatingHeapOccupancyPercent=75\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:MaxGCPauseMillis=\fItime\fR
-.RS 4
-Sets a target for the maximum GC pause time (in milliseconds)\&. This is a soft goal, and the JVM will make its best effort to achieve it\&. By default, there is no maximum pause time value\&.
-.sp
-The following example shows how to set the maximum target pause time to 500 ms:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxGCPauseMillis=500\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:MaxHeapSize=\fIsize\fR
-.RS 4
-Sets the maximum size (in byes) of the memory allocation pool\&. This value must be a multiple of 1024 and greater than 2 MB\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. The default value is chosen at runtime based on system configuration\&. For server deployments,
-\fB\-XX:InitialHeapSize\fR
-and
-\fB\-XX:MaxHeapSize\fR
-are often set to the same value\&. See the section "Ergonomics" in
-\fIJava SE HotSpot Virtual Machine Garbage Collection Tuning Guide\fR
-at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gctuning/index\&.html\&.
-.sp
-The following examples show how to set the maximum allowed size of allocated memory to 80 MB using various units:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxHeapSize=83886080\fR
-\fB\-XX:MaxHeapSize=81920k\fR
-\fB\-XX:MaxHeapSize=80m\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-On Oracle Solaris 7 and Oracle Solaris 8 SPARC platforms, the upper limit for this value is approximately 4,000 MB minus overhead amounts\&. On Oracle Solaris 2\&.6 and x86 platforms, the upper limit is approximately 2,000 MB minus overhead amounts\&. On Linux platforms, the upper limit is approximately 2,000 MB minus overhead amounts\&.
-.sp
-The
-\fB\-XX:MaxHeapSize\fR
-option is equivalent to
-\fB\-Xmx\fR\&.
-.RE
-.PP
-\-XX:MaxHeapFreeRatio=\fIpercent\fR
-.RS 4
-Sets the maximum allowed percentage of free heap space (0 to 100) after a GC event\&. If free heap space expands above this value, then the heap will be shrunk\&. By default, this value is set to 70%\&.
-.sp
-The following example shows how to set the maximum free heap ratio to 75%:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxHeapFreeRatio=75\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:MaxMetaspaceSize=\fIsize\fR
-.RS 4
-Sets the maximum amount of native memory that can be allocated for class metadata\&. By default, the size is not limited\&. The amount of metadata for an application depends on the application itself, other running applications, and the amount of memory available on the system\&.
-.sp
-The following example shows how to set the maximum class metadata size to 256 MB:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxMetaspaceSize=256m\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:MaxNewSize=\fIsize\fR
-.RS 4
-Sets the maximum size (in bytes) of the heap for the young generation (nursery)\&. The default value is set ergonomically\&.
-.RE
-.PP
-\-XX:MaxTenuringThreshold=\fIthreshold\fR
-.RS 4
-Sets the maximum tenuring threshold for use in adaptive GC sizing\&. The largest value is 15\&. The default value is 15 for the parallel (throughput) collector, and 6 for the CMS collector\&.
-.sp
-The following example shows how to set the maximum tenuring threshold to 10:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MaxTenuringThreshold=10\fR
-
+\f[CB]
+\-XX:InitialHeapSize=6291456
+\-XX:InitialHeapSize=6144k
+\-XX:InitialHeapSize=6m
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:MetaspaceSize=\fIsize\fR
-.RS 4
-Sets the size of the allocated class metadata space that will trigger a garbage collection the first time it is exceeded\&. This threshold for a garbage collection is increased or decreased depending on the amount of metadata used\&. The default size depends on the platform\&.
-.RE
-.PP
-\-XX:MinHeapFreeRatio=\fIpercent\fR
-.RS 4
-Sets the minimum allowed percentage of free heap space (0 to 100) after a GC event\&. If free heap space falls below this value, then the heap will be expanded\&. By default, this value is set to 40%\&.
-.sp
-The following example shows how to set the minimum free heap ratio to 25%:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:MinHeapFreeRatio=25\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:NewRatio=\fIratio\fR
-.RS 4
-Sets the ratio between young and old generation sizes\&. By default, this option is set to 2\&. The following example shows how to set the young/old ratio to 1:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+If you set this option to 0, then the initial size is set as the sum of
+the sizes allocated for the old generation and the young generation.
+The size of the heap for the young generation can be set using the
+\f[CB]\-XX:NewSize\f[R] option.
+.RE
+.TP
+.B \f[CB]\-XX:InitialSurvivorRatio=\f[R]\f[I]ratio\f[R]
+Sets the initial survivor space ratio used by the throughput garbage
+collector (which is enabled by the \f[CB]\-XX:+UseParallelGC\f[R] and/or
+\f[CB]\-XX:+UseParallelOldGC\f[R] options).
+Adaptive sizing is enabled by default with the throughput garbage
+collector by using the \f[CB]\-XX:+UseParallelGC\f[R] and
+\f[CB]\-XX:+UseParallelOldGC\f[R] options, and the survivor space is
+resized according to the application behavior, starting with the initial
+value.
+If adaptive sizing is disabled (using the
+\f[CB]\-XX:\-UseAdaptiveSizePolicy\f[R] option), then the
+\f[CB]\-XX:SurvivorRatio\f[R] option should be used to set the size of the
+survivor space for the entire execution of the application.
+.RS
+.PP
+The following formula can be used to calculate the initial size of
+survivor space (S) based on the size of the young generation (Y), and
+the initial survivor space ratio (R):
+.RS
+.PP
+\f[CB]S=Y/(R+2)\f[R]
+.RE
+.PP
+The 2 in the equation denotes two survivor spaces.
+The larger the value specified as the initial survivor space ratio, the
+smaller the initial survivor space size.
+.PP
+By default, the initial survivor space ratio is set to 8.
+If the default value for the young generation space size is used (2 MB),
+then the initial size of the survivor space is 0.2 MB.
+.PP
+The following example shows how to set the initial survivor space ratio
+to 4:
+.RS
+.PP
+\f[CB]\-XX:InitialSurvivorRatio=4\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:InitiatingHeapOccupancyPercent=\f[R]\f[I]percent\f[R]
+Sets the percentage of the heap occupancy (0 to 100) at which to start a
+concurrent GC cycle.
+It\[aq]s used by garbage collectors that trigger a concurrent GC cycle
+based on the occupancy of the entire heap, not just one of the
+generations (for example, the G1 garbage collector).
+.RS
+.PP
+By default, the initiating value is set to 45%.
+A value of 0 implies nonstop GC cycles.
+The following example shows how to set the initiating heap occupancy to
+75%:
+.RS
+.PP
+\f[CB]\-XX:InitiatingHeapOccupancyPercent=75\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:MaxGCPauseMillis=\f[R]\f[I]time\f[R]
+Sets a target for the maximum GC pause time (in milliseconds).
+This is a soft goal, and the JVM will make its best effort to achieve
+it.
+The specified value doesn\[aq]t adapt to your heap size.
+By default, there\[aq]s no maximum pause time value.
+.RS
+.PP
+The following example shows how to set the maximum target pause time to
+500 ms:
+.RS
+.PP
+\f[CB]\-XX:MaxGCPauseMillis=500\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:MaxHeapSize=\f[R]\f[I]size\f[R]
+Sets the maximum size (in byes) of the memory allocation pool.
+This value must be a multiple of 1024 and greater than 2 MB.
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+The default value is selected at run time based on the system
+configuration.
+For server deployments, the options \f[CB]\-XX:InitialHeapSize\f[R] and
+\f[CB]\-XX:MaxHeapSize\f[R] are often set to the same value.
+.RS
+.PP
+The following examples show how to set the maximum allowed size of
+allocated memory to 80 MB using various units:
+.IP
.nf
-\fB\-XX:NewRatio=1\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:NewSize=\fIsize\fR
-.RS 4
-Sets the initial size (in bytes) of the heap for the young generation (nursery)\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&.
-.sp
-The young generation region of the heap is used for new objects\&. GC is performed in this region more often than in other regions\&. If the size for the young generation is too low, then a large number of minor GCs will be performed\&. If the size is too high, then only full GCs will be performed, which can take a long time to complete\&. Oracle recommends that you keep the size for the young generation between a half and a quarter of the overall heap size\&.
-.sp
-The following examples show how to set the initial size of young generation to 256 MB using various units:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:NewSize=256m\fR
-\fB\-XX:NewSize=262144k\fR
-\fB\-XX:NewSize=268435456\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-The
-\fB\-XX:NewSize\fR
-option is equivalent to
-\fB\-Xmn\fR\&.
-.RE
-.PP
-\-XX:ParallelGCThreads=\fIthreads\fR
-.RS 4
-Sets the number of threads used for parallel garbage collection in the young and old generations\&. The default value depends on the number of CPUs available to the JVM\&.
-.sp
-For example, to set the number of threads for parallel GC to 2, specify the following option:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:ParallelGCThreads=2\fR
-
+\f[CB]
+\-XX:MaxHeapSize=83886080
+\-XX:MaxHeapSize=81920k
+\-XX:MaxHeapSize=80m
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+ParallelRefProcEnabled
-.RS 4
-Enables parallel reference processing\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintAdaptiveSizePolicy
-.RS 4
-Enables printing of information about adaptive generation sizing\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintGC
-.RS 4
-Enables printing of messages at every GC\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintGCApplicationConcurrentTime
-.RS 4
-Enables printing of how much time elapsed since the last pause (for example, a GC pause)\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintGCApplicationStoppedTime
-.RS 4
-Enables printing of how much time the pause (for example, a GC pause) lasted\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintGCDateStamps
-.RS 4
-Enables printing of a date stamp at every GC\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintGCDetails
-.RS 4
-Enables printing of detailed messages at every GC\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintGCTaskTimeStamps
-.RS 4
-Enables printing of time stamps for every individual GC worker thread task\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintGCTimeStamps
-.RS 4
-Enables printing of time stamps at every GC\&. By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+PrintStringDeduplicationStatistics
-.RS 4
-Prints detailed deduplication statistics\&. By default, this option is disabled\&. See the
-\fB\-XX:+UseStringDeduplication\fR
-option\&.
-.RE
-.PP
-\-XX:+PrintTenuringDistribution
-.RS 4
-Enables printing of tenuring age information\&. The following is an example of the output:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+On Oracle Solaris 7 and Oracle Solaris 8 SPARC platforms, the upper
+limit for this value is approximately 4,000 MB minus overhead amounts.
+On Oracle Solaris 2.6 and x86 platforms, the upper limit is
+approximately 2,000 MB minus overhead amounts.
+On Linux platforms, the upper limit is approximately 2,000 MB minus
+overhead amounts.
+.PP
+The \f[CB]\-XX:MaxHeapSize\f[R] option is equivalent to \f[CB]\-Xmx\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:MaxHeapFreeRatio=\f[R]\f[I]percent\f[R]
+Sets the maximum allowed percentage of free heap space (0 to 100) after
+a GC event.
+If free heap space expands above this value, then the heap is shrunk.
+By default, this value is set to 70%.
+.RS
+.PP
+Minimize the Java heap size by lowering the values of the parameters
+\f[CB]MaxHeapFreeRatio\f[R] (default value is 70%) and
+\f[CB]MinHeapFreeRatio\f[R] (default value is 40%) with the command\-line
+options \f[CB]\-XX:MaxHeapFreeRatio\f[R] and
+\f[CB]\-XX:MinHeapFreeRatio\f[R].
+Lowering \f[CB]MaxHeapFreeRatio\f[R] to as low as 10% and
+\f[CB]MinHeapFreeRatio\f[R] to 5% has successfully reduced the heap size
+without too much performance regression; however, results may vary
+greatly depending on your application.
+Try different values for these parameters until they\[aq]re as low as
+possible yet still retain acceptable performance.
+.RS
+.PP
+\f[CB]\-XX:MaxHeapFreeRatio=10\ \-XX:MinHeapFreeRatio=5\f[R]
+.RE
+.PP
+Customers trying to keep the heap small should also add the option
+\f[CB]\-XX:\-ShrinkHeapInSteps\f[R].
+See \f[B]Performance Tuning Examples\f[R] for a description of using this
+option to keep the Java heap small by reducing the dynamic footprint for
+embedded applications.
+.RE
+.TP
+.B \f[CB]\-XX:MaxMetaspaceSize=\f[R]\f[I]size\f[R]
+Sets the maximum amount of native memory that can be allocated for class
+metadata.
+By default, the size isn\[aq]t limited.
+The amount of metadata for an application depends on the application
+itself, other running applications, and the amount of memory available
+on the system.
+.RS
+.PP
+The following example shows how to set the maximum class metadata size
+to 256 MB:
+.RS
+.PP
+\f[CB]\-XX:MaxMetaspaceSize=256m\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:MaxNewSize=\f[R]\f[I]size\f[R]
+Sets the maximum size (in bytes) of the heap for the young generation
+(nursery).
+The default value is set ergonomically.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:MaxTenuringThreshold=\f[R]\f[I]threshold\f[R]
+Sets the maximum tenuring threshold for use in adaptive GC sizing.
+The largest value is 15.
+The default value is 15 for the parallel (throughput) collector, and 6
+for the CMS collector.
+.RS
+.PP
+The following example shows how to set the maximum tenuring threshold to
+10:
+.RS
+.PP
+\f[CB]\-XX:MaxTenuringThreshold=10\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:MetaspaceSize=\f[R]\f[I]size\f[R]
+Sets the size of the allocated class metadata space that triggers a
+garbage collection the first time it\[aq]s exceeded.
+This threshold for a garbage collection is increased or decreased
+depending on the amount of metadata used.
+The default size depends on the platform.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:MinHeapFreeRatio=\f[R]\f[I]percent\f[R]
+Sets the minimum allowed percentage of free heap space (0 to 100) after
+a GC event.
+If free heap space falls below this value, then the heap is expanded.
+By default, this value is set to 40%.
+.RS
+.PP
+Minimize Java heap size by lowering the values of the parameters
+\f[CB]MaxHeapFreeRatio\f[R] (default value is 70%) and
+\f[CB]MinHeapFreeRatio\f[R] (default value is 40%) with the command\-line
+options \f[CB]\-XX:MaxHeapFreeRatio\f[R] and
+\f[CB]\-XX:MinHeapFreeRatio\f[R].
+Lowering \f[CB]MaxHeapFreeRatio\f[R] to as low as 10% and
+\f[CB]MinHeapFreeRatio\f[R] to 5% has successfully reduced the heap size
+without too much performance regression; however, results may vary
+greatly depending on your application.
+Try different values for these parameters until they\[aq]re as low as
+possible, yet still retain acceptable performance.
+.RS
+.PP
+\f[CB]\-XX:MaxHeapFreeRatio=10\ \-XX:MinHeapFreeRatio=5\f[R]
+.RE
+.PP
+Customers trying to keep the heap small should also add the option
+\f[CB]\-XX:\-ShrinkHeapInSteps\f[R].
+See \f[B]Performance Tuning Examples\f[R] for a description of using this
+option to keep the Java heap small by reducing the dynamic footprint for
+embedded applications.
+.RE
+.TP
+.B \f[CB]\-XX:NewRatio=\f[R]\f[I]ratio\f[R]
+Sets the ratio between young and old generation sizes.
+By default, this option is set to 2.
+The following example shows how to set the young\-to\-old ratio to 1:
+.RS
+.RS
+.PP
+\f[CB]\-XX:NewRatio=1\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:NewSize=\f[R]\f[I]size\f[R]
+Sets the initial size (in bytes) of the heap for the young generation
+(nursery).
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+.RS
+.PP
+The young generation region of the heap is used for new objects.
+GC is performed in this region more often than in other regions.
+If the size for the young generation is too low, then a large number of
+minor GCs are performed.
+If the size is too high, then only full GCs are performed, which can
+take a long time to complete.
+It is recommended that you keep the size for the young generation
+greater than 25% and less than 50% of the overall heap size.
+.PP
+The following examples show how to set the initial size of the young
+generation to 256 MB using various units:
+.IP
.nf
-\fBDesired survivor size 48286924 bytes, new threshold 10 (max 10)\fR
-\fB\- age 1: 28992024 bytes, 28992024 total\fR
-\fB\- age 2: 1366864 bytes, 30358888 total\fR
-\fB\- age 3: 1425912 bytes, 31784800 total\fR
-\fB\&.\&.\&.\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-Age 1 objects are the youngest survivors (they were created after the previous scavenge, survived the latest scavenge, and moved from eden to survivor space)\&. Age 2 objects have survived two scavenges (during the second scavenge they were copied from one survivor space to the next)\&. And so on\&.
-.sp
-In the preceding example, 28 992 024 bytes survived one scavenge and were copied from eden to survivor space, 1 366 864 bytes are occupied by age 2 objects, etc\&. The third value in each row is the cumulative size of objects of age n or less\&.
-.sp
-By default, this option is disabled\&.
-.RE
-.PP
-\-XX:+ScavengeBeforeFullGC
-.RS 4
-Enables GC of the young generation before each full GC\&. This option is enabled by default\&. Oracle recommends that you
-\fIdo not\fR
-disable it, because scavenging the young generation before a full GC can reduce the number of objects reachable from the old generation space into the young generation space\&. To disable GC of the young generation before each full GC, specify
-\fB\-XX:\-ScavengeBeforeFullGC\fR\&.
-.RE
-.PP
-\-XX:SoftRefLRUPolicyMSPerMB=\fItime\fR
-.RS 4
-Sets the amount of time (in milliseconds) a softly reachable object is kept active on the heap after the last time it was referenced\&. The default value is one second of lifetime per free megabyte in the heap\&. The
-\fB\-XX:SoftRefLRUPolicyMSPerMB\fR
-option accepts integer values representing milliseconds per one megabyte of the current heap size (for Java HotSpot Client VM) or the maximum possible heap size (for Java HotSpot Server VM)\&. This difference means that the Client VM tends to flush soft references rather than grow the heap, whereas the Server VM tends to grow the heap rather than flush soft references\&. In the latter case, the value of the
-\fB\-Xmx\fR
-option has a significant effect on how quickly soft references are garbage collected\&.
-.sp
-The following example shows how to set the value to 2\&.5 seconds:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:SoftRefLRUPolicyMSPerMB=2500\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:StringDeduplicationAgeThreshold=\fIthreshold\fR
-.RS 4
-\fBString\fR
-objects reaching the specified age are considered candidates for deduplication\&. An object\*(Aqs age is a measure of how many times it has survived garbage collection\&. This is sometimes referred to as tenuring; see the
-\fB\-XX:+PrintTenuringDistribution\fR
-option\&. Note that
-\fBString\fR
-objects that are promoted to an old heap region before this age has been reached are always considered candidates for deduplication\&. The default value for this option is
-\fB3\fR\&. See the
-\fB\-XX:+UseStringDeduplication\fR
-option\&.
-.RE
-.PP
-\-XX:SurvivorRatio=\fIratio\fR
-.RS 4
-Sets the ratio between eden space size and survivor space size\&. By default, this option is set to 8\&. The following example shows how to set the eden/survivor space ratio to 4:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:SurvivorRatio=4\fR
-
+\f[CB]
+\-XX:NewSize=256m
+\-XX:NewSize=262144k
+\-XX:NewSize=268435456
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:TargetSurvivorRatio=\fIpercent\fR
-.RS 4
-Sets the desired percentage of survivor space (0 to 100) used after young garbage collection\&. By default, this option is set to 50%\&.
-.sp
-The following example shows how to set the target survivor space ratio to 30%:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:TargetSurvivorRatio=30\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:TLABSize=\fIsize\fR
-.RS 4
-Sets the initial size (in bytes) of a thread\-local allocation buffer (TLAB)\&. Append the letter
-\fBk\fR
-or
-\fBK\fR
-to indicate kilobytes,
-\fBm\fR
-or
-\fBM\fR
-to indicate megabytes,
-\fBg\fR
-or
-\fBG\fR
-to indicate gigabytes\&. If this option is set to 0, then the JVM chooses the initial size automatically\&.
-.sp
+.PP
+The \f[CB]\-XX:NewSize\f[R] option is equivalent to \f[CB]\-Xmn\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:ParallelGCThreads=\f[R]\f[I]threads\f[R]
+Sets the value of the stop\-the\-world (STW) worker threads.
+This option sets the value of \f[I]threads\f[R] to the number of logical
+processors.
+The value of \f[I]threads\f[R] is the same as the number of logical
+processors up to a value of 8.
+.RS
+.PP
+If there are more than 8 logical processors, then this option sets the
+value of \f[I]threads\f[R] to approximately 5/8 of the logical
+processors.
+This works in most cases except for larger SPARC systems where the value
+of \f[I]threads\f[R] can be approximately 5/16 of the logical processors.
+.PP
+The default value depends on the number of CPUs available to the JVM.
+.PP
+For example, to set the number of threads for parallel GC to 2, specify
+the following option:
+.RS
+.PP
+\f[CB]\-XX:ParallelGCThreads=2\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+ParallelRefProcEnabled\f[R]
+Enables parallel reference processing.
+By default, this option is disabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+PrintAdaptiveSizePolicy\f[R]
+Enables printing of information about adaptive\-generation sizing.
+By default, this option is disabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+ScavengeBeforeFullGC\f[R]
+Enables GC of the young generation before each full GC.
+This option is enabled by default.
+It is recommended that you \f[I]don\[aq]t\f[R] disable it, because
+scavenging the young generation before a full GC can reduce the number
+of objects reachable from the old generation space into the young
+generation space.
+To disable GC of the young generation before each full GC, specify the
+option \f[CB]\-XX:\-ScavengeBeforeFullGC\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:SoftRefLRUPolicyMSPerMB=\f[R]\f[I]time\f[R]
+Sets the amount of time (in milliseconds) a softly reachable object is
+kept active on the heap after the last time it was referenced.
+The default value is one second of lifetime per free megabyte in the
+heap.
+The \f[CB]\-XX:SoftRefLRUPolicyMSPerMB\f[R] option accepts integer values
+representing milliseconds per one megabyte of the current heap size (for
+Java HotSpot Client VM) or the maximum possible heap size (for Java
+HotSpot Server VM).
+This difference means that the Client VM tends to flush soft references
+rather than grow the heap, whereas the Server VM tends to grow the heap
+rather than flush soft references.
+In the latter case, the value of the \f[CB]\-Xmx\f[R] option has a
+significant effect on how quickly soft references are garbage collected.
+.RS
+.PP
+The following example shows how to set the value to 2.5 seconds:
+.PP
+\f[CB]\-XX:SoftRefLRUPolicyMSPerMB=2500\f[R]
+.RE
+.TP
+.B \f[CB]\-XX:\-ShrinkHeapInSteps\f[R]
+Incrementally reduces the Java heap to the target size, specified by the
+option \f[CB]\-XX:MaxHeapFreeRatio\f[R].
+This option is enabled by default.
+If disabled, then it immediately reduces the Java heap to the target
+size instead of requiring multiple garbage collection cycles.
+Disable this option if you want to minimize the Java heap size.
+You will likely encounter performance degradation when this option is
+disabled.
+.RS
+.PP
+See \f[B]Performance Tuning Examples\f[R] for a description of using the
+\f[CB]MaxHeapFreeRatio\f[R] option to keep the Java heap small by reducing
+the dynamic footprint for embedded applications.
+.RE
+.TP
+.B \f[CB]\-XX:StringDeduplicationAgeThreshold=\f[R]\f[I]threshold\f[R]
+Identifies \f[CB]String\f[R] objects reaching the specified age that are
+considered candidates for deduplication.
+An object\[aq]s age is a measure of how many times it has survived
+garbage collection.
+This is sometimes referred to as tenuring.
+.RS
+.RS
+.PP
+\f[B]Note:\f[R] \f[CB]String\f[R] objects that are promoted to an old heap
+region before this age has been reached are always considered candidates
+for deduplication.
+The default value for this option is \f[CB]3\f[R].
+See the \f[CB]\-XX:+UseStringDeduplication\f[R] option.
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:SurvivorRatio=\f[R]\f[I]ratio\f[R]
+Sets the ratio between eden space size and survivor space size.
+By default, this option is set to 8.
+The following example shows how to set the eden/survivor space ratio to
+4:
+.RS
+.RS
+.PP
+\f[CB]\-XX:SurvivorRatio=4\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:TargetSurvivorRatio=\f[R]\f[I]percent\f[R]
+Sets the desired percentage of survivor space (0 to 100) used after
+young garbage collection.
+By default, this option is set to 50%.
+.RS
+.PP
+The following example shows how to set the target survivor space ratio
+to 30%:
+.RS
+.PP
+\f[CB]\-XX:TargetSurvivorRatio=30\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:TLABSize=\f[R]\f[I]size\f[R]
+Sets the initial size (in bytes) of a thread\-local allocation buffer
+(TLAB).
+Append the letter \f[CB]k\f[R] or \f[CB]K\f[R] to indicate kilobytes,
+\f[CB]m\f[R] or \f[CB]M\f[R] to indicate megabytes, or \f[CB]g\f[R] or
+\f[CB]G\f[R] to indicate gigabytes.
+If this option is set to 0, then the JVM selects the initial size
+automatically.
+.RS
+.PP
The following example shows how to set the initial TLAB size to 512 KB:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\-XX:TLABSize=512k\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\-XX:+UseAdaptiveSizePolicy
-.RS 4
-Enables the use of adaptive generation sizing\&. This option is enabled by default\&. To disable adaptive generation sizing, specify
-\fB\-XX:\-UseAdaptiveSizePolicy\fR
-and set the size of the memory allocation pool explicitly (see the
-\fB\-XX:SurvivorRatio\fR
-option)\&.
-.RE
-.PP
-\-XX:+UseCMSInitiatingOccupancyOnly
-.RS 4
-Enables the use of the occupancy value as the only criterion for initiating the CMS collector\&. By default, this option is disabled and other criteria may be used\&.
-.RE
-.PP
-\-XX:+UseConcMarkSweepGC
-.RS 4
-Enables the use of the CMS garbage collector for the old generation\&. Oracle recommends that you use the CMS garbage collector when application latency requirements cannot be met by the throughput (\fB\-XX:+UseParallelGC\fR) garbage collector\&. The G1 garbage collector (\fB\-XX:+UseG1GC\fR) is another alternative\&.
-.sp
-By default, this option is disabled and the collector is chosen automatically based on the configuration of the machine and type of the JVM\&. When this option is enabled, the
-\fB\-XX:+UseParNewGC\fR
-option is automatically set and you should not disable it, because the following combination of options has been deprecated in JDK 8:
-\fB\-XX:+UseConcMarkSweepGC \-XX:\-UseParNewGC\fR\&.
-.RE
-.PP
-\-XX:+UseG1GC
-.RS 4
-Enables the use of the garbage\-first (G1) garbage collector\&. It is a server\-style garbage collector, targeted for multiprocessor machines with a large amount of RAM\&. It meets GC pause time goals with high probability, while maintaining good throughput\&. The G1 collector is recommended for applications requiring large heaps (sizes of around 6 GB or larger) with limited GC latency requirements (stable and predictable pause time below 0\&.5 seconds)\&.
-.sp
-By default, this option is disabled and the collector is chosen automatically based on the configuration of the machine and type of the JVM\&.
-.RE
-.PP
-\-XX:+UseGCOverheadLimit
-.RS 4
-Enables the use of a policy that limits the proportion of time spent by the JVM on GC before an
-\fBOutOfMemoryError\fR
-exception is thrown\&. This option is enabled, by default and the parallel GC will throw an
-\fBOutOfMemoryError\fR
-if more than 98% of the total time is spent on garbage collection and less than 2% of the heap is recovered\&. When the heap is small, this feature can be used to prevent applications from running for long periods of time with little or no progress\&. To disable this option, specify
-\fB\-XX:\-UseGCOverheadLimit\fR\&.
-.RE
-.PP
-\-XX:+UseNUMA
-.RS 4
-Enables performance optimization of an application on a machine with nonuniform memory architecture (NUMA) by increasing the application\*(Aqs use of lower latency memory\&. By default, this option is disabled and no optimization for NUMA is made\&. The option is only available when the parallel garbage collector is used (\fB\-XX:+UseParallelGC\fR)\&.
-.RE
-.PP
-\-XX:+UseParallelGC
-.RS 4
-Enables the use of the parallel scavenge garbage collector (also known as the throughput collector) to improve the performance of your application by leveraging multiple processors\&.
-.sp
-By default, this option is disabled and the collector is chosen automatically based on the configuration of the machine and type of the JVM\&. If it is enabled, then the
-\fB\-XX:+UseParallelOldGC\fR
-option is automatically enabled, unless you explicitly disable it\&.
-.RE
-.PP
-\-XX:+UseParallelOldGC
-.RS 4
-Enables the use of the parallel garbage collector for full GCs\&. By default, this option is disabled\&. Enabling it automatically enables the
-\fB\-XX:+UseParallelGC\fR
-option\&.
-.RE
-.PP
-\-XX:+UseParNewGC
-.RS 4
-Enables the use of parallel threads for collection in the young generation\&. By default, this option is disabled\&. It is automatically enabled when you set the
-\fB\-XX:+UseConcMarkSweepGC\fR
-option\&. Using the
-\fB\-XX:+UseParNewGC\fR
-option without the
-\fB\-XX:+UseConcMarkSweepGC\fR
-option was deprecated in JDK 8\&.
-.RE
-.PP
-\-XX:+UseSerialGC
-.RS 4
-Enables the use of the serial garbage collector\&. This is generally the best choice for small and simple applications that do not require any special functionality from garbage collection\&. By default, this option is disabled and the collector is chosen automatically based on the configuration of the machine and type of the JVM\&.
-.RE
-.PP
-\-XX:+UseSHM
-.RS 4
-On Linux, enables the JVM to use shared memory to setup large pages\&.
-.sp
-For more information, see "Large Pages"\&.
-.RE
-.PP
-\-XX:+UseStringDeduplication
-.RS 4
-Enables string deduplication\&. By default, this option is disabled\&. To use this option, you must enable the garbage\-first (G1) garbage collector\&. See the
-\fB\-XX:+UseG1GC\fR
-option\&.
-.sp
-\fIString deduplication\fR
-reduces the memory footprint of
-\fBString\fR
+.RS
+.PP
+\f[CB]\-XX:TLABSize=512k\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-XX:+UseAdaptiveSizePolicy\f[R]
+Enables the use of adaptive generation sizing.
+This option is enabled by default.
+To disable adaptive generation sizing, specify
+\f[CB]\-XX:\-UseAdaptiveSizePolicy\f[R] and set the size of the memory
+allocation pool explicitly.
+See the \f[CB]\-XX:SurvivorRatio\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseCMSInitiatingOccupancyOnly\f[R]
+Enables the use of the occupancy value as the only criterion for
+initiating the CMS collector.
+By default, this option is disabled and other criteria may be used.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseG1GC\f[R]
+Enables the use of the garbage\-first (G1) garbage collector.
+It\[aq]s a server\-style garbage collector, targeted for multiprocessor
+machines with a large amount of RAM.
+This option meets GC pause time goals with high probability, while
+maintaining good throughput.
+The G1 collector is recommended for applications requiring large heaps
+(sizes of around 6 GB or larger) with limited GC latency requirements (a
+stable and predictable pause time below 0.5 seconds).
+By default, this option is enabled and G1 is used as the default garbage
+collector.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseGCOverheadLimit\f[R]
+Enables the use of a policy that limits the proportion of time spent by
+the JVM on GC before an \f[CB]OutOfMemoryError\f[R] exception is thrown.
+This option is enabled, by default, and the parallel GC will throw an
+\f[CB]OutOfMemoryError\f[R] if more than 98% of the total time is spent on
+garbage collection and less than 2% of the heap is recovered.
+When the heap is small, this feature can be used to prevent applications
+from running for long periods of time with little or no progress.
+To disable this option, specify the option
+\f[CB]\-XX:\-UseGCOverheadLimit\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseNUMA\f[R]
+Enables performance optimization of an application on a machine with
+nonuniform memory architecture (NUMA) by increasing the
+application\[aq]s use of lower latency memory.
+By default, this option is disabled and no optimization for NUMA is
+made.
+The option is available only when the parallel garbage collector is used
+(\f[CB]\-XX:+UseParallelGC\f[R]).
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseParallelGC\f[R]
+Enables the use of the parallel scavenge garbage collector (also known
+as the throughput collector) to improve the performance of your
+application by leveraging multiple processors.
+.RS
+.PP
+By default, this option is disabled and the default collector is used.
+If it\[aq]s enabled, then the \f[CB]\-XX:+UseParallelOldGC\f[R] option is
+automatically enabled, unless you explicitly disable it.
+.RE
+.TP
+.B \f[CB]\-XX:+UseParallelOldGC\f[R]
+Enables the use of the parallel garbage collector for full GCs.
+By default, this option is disabled.
+Enabling it automatically enables the \f[CB]\-XX:+UseParallelGC\f[R]
+option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseSerialGC\f[R]
+Enables the use of the serial garbage collector.
+This is generally the best choice for small and simple applications that
+don\[aq]t require any special functionality from garbage collection.
+By default, this option is disabled and the default collector is used.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+UseSHM\f[R]
+\f[B]Linux only:\f[R] Enables the JVM to use shared memory to set up
+large pages.
+.RS
+.PP
+See \f[B]Large Pages\f[R] for setting up large pages.
+.RE
+.TP
+.B \f[CB]\-XX:+UseStringDeduplication\f[R]
+Enables string deduplication.
+By default, this option is disabled.
+To use this option, you must enable the garbage\-first (G1) garbage
+collector.
+.RS
+.PP
+String deduplication reduces the memory footprint of \f[CB]String\f[R]
objects on the Java heap by taking advantage of the fact that many
-\fBString\fR
-objects are identical\&. Instead of each
-\fBString\fR
-object pointing to its own character array, identical
-\fBString\fR
-objects can point to and share the same character array\&.
-.RE
-.PP
-\-XX:+UseTLAB
-.RS 4
-Enables the use of thread\-local allocation blocks (TLABs) in the young generation space\&. This option is enabled by default\&. To disable the use of TLABs, specify
-\fB\-XX:\-UseTLAB\fR\&.
-.RE
-.SS "Deprecated and Removed Options"
-.PP
-These options were included in the previous release, but have since been considered unnecessary\&.
-.PP
-\-Xincgc
-.RS 4
-Enables incremental garbage collection\&. This option was deprecated in JDK 8 with no replacement\&.
-.RE
-.PP
-\-Xrun\fIlibname\fR
-.RS 4
-Loads the specified debugging/profiling library\&. This option was superseded by the
-\fB\-agentlib\fR
-option\&.
-.RE
-.PP
-\-XX:CMSIncrementalDutyCycle=\fIpercent\fR
-.RS 4
-Sets the percentage of time (0 to 100) between minor collections that the concurrent collector is allowed to run\&. This option was deprecated in JDK 8 with no replacement, following the deprecation of the
-\fB\-XX:+CMSIncrementalMode\fR
-option\&.
-.RE
-.PP
-\-XX:CMSIncrementalDutyCycleMin=\fIpercent\fR
-.RS 4
-Sets the percentage of time (0 to 100) between minor collections that is the lower bound for the duty cycle when
-\fB\-XX:+CMSIncrementalPacing\fR
-is enabled\&. This option was deprecated in JDK 8 with no replacement, following the deprecation of the
-\fB\-XX:+CMSIncrementalMode\fR
-option\&.
-.RE
-.PP
-\-XX:+CMSIncrementalMode
-.RS 4
-Enables the incremental mode for the CMS collector\&. This option was deprecated in JDK 8 with no replacement, along with other options that start with
-\fBCMSIncremental\fR\&.
-.RE
-.PP
-\-XX:CMSIncrementalOffset=\fIpercent\fR
-.RS 4
-Sets the percentage of time (0 to 100) by which the incremental mode duty cycle is shifted to the right within the period between minor collections\&. This option was deprecated in JDK 8 with no replacement, following the deprecation of the
-\fB\-XX:+CMSIncrementalMode\fR
-option\&.
-.RE
-.PP
-\-XX:+CMSIncrementalPacing
-.RS 4
-Enables automatic adjustment of the incremental mode duty cycle based on statistics collected while the JVM is running\&. This option was deprecated in JDK 8 with no replacement, following the deprecation of the
-\fB\-XX:+CMSIncrementalMode\fR
-option\&.
-.RE
-.PP
-\-XX:CMSIncrementalSafetyFactor=\fIpercent\fR
-.RS 4
-Sets the percentage of time (0 to 100) used to add conservatism when computing the duty cycle\&. This option was deprecated in JDK 8 with no replacement, following the deprecation of the
-\fB\-XX:+CMSIncrementalMode\fR
-option\&.
-.RE
-.PP
-\-XX:CMSInitiatingPermOccupancyFraction=\fIpercent\fR
-.RS 4
-Sets the percentage of the permanent generation occupancy (0 to 100) at which to start a GC\&. This option was deprecated in JDK 8 with no replacement\&.
-.RE
-.PP
-\-XX:MaxPermSize=\fIsize\fR
-.RS 4
-Sets the maximum permanent generation space size (in bytes)\&. This option was deprecated in JDK 8, and superseded by the
-\fB\-XX:MaxMetaspaceSize\fR
-option\&.
-.RE
-.PP
-\-XX:PermSize=\fIsize\fR
-.RS 4
-Sets the space (in bytes) allocated to the permanent generation that triggers a garbage collection if it is exceeded\&. This option was deprecated un JDK 8, and superseded by the
-\fB\-XX:MetaspaceSize\fR
-option\&.
-.RE
-.PP
-\-XX:+UseSplitVerifier
-.RS 4
-Enables splitting of the verification process\&. By default, this option was enabled in the previous releases, and verification was split into two phases: type referencing (performed by the compiler) and type checking (performed by the JVM runtime)\&. This option was deprecated in JDK 8, and verification is now split by default without a way to disable it\&.
-.RE
-.PP
-\-XX:+UseStringCache
-.RS 4
-Enables caching of commonly allocated strings\&. This option was removed from JDK 8 with no replacement\&.
-.RE
-.SH "PERFORMANCE TUNING EXAMPLES"
-.PP
-The following examples show how to use experimental tuning flags to either optimize throughput or to provide lower response time\&.
-.PP
-\fBExample 1 \fRTuning for Higher Throughput
-.RS 4
-.sp
-.if n \{\
-.RS 4
-.\}
+\f[CB]String\f[R] objects are identical.
+Instead of each \f[CB]String\f[R] object pointing to its own character
+array, identical \f[CB]String\f[R] objects can point to and share the same
+character array.
+.RE
+.TP
+.B \f[CB]\-XX:+UseTLAB\f[R]
+Enables the use of thread\-local allocation blocks (TLABs) in the young
+generation space.
+This option is enabled by default.
+To disable the use of TLABs, specify the option \f[CB]\-XX:\-UseTLAB\f[R].
+.RS
+.RE
+.SH DEPRECATED JAVA OPTIONS
+.PP
+These \f[CB]java\f[R] options are deprecated and might be removed in a
+future JDK release.
+They\[aq]re still accepted and acted upon, but a warning is issued when
+they\[aq]re used.
+.TP
+.B \f[CB]\-Xfuture\f[R]
+Enables strict class\-file format checks that enforce close conformance
+to the class\-file format specification.
+Developers should use this flag when developing new code.
+Stricter checks may become the default in future releases.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xloggc:\f[R]\f[I]filename\f[R]
+Sets the file to which verbose GC events information should be
+redirected for logging.
+The \f[CB]\-Xloggc\f[R] option overrides \f[CB]\-verbose:gc\f[R] if both are
+given with the same java command.
+\f[CB]\-Xloggc:\f[R]\f[I]filename\f[R] is replaced by
+\f[CB]\-Xlog:gc:\f[R]\f[I]filename\f[R].
+See Enable Logging with the JVM Unified Logging Framework.
+.RS
+.PP
+Example:
+.PP
+\f[CB]\-Xlog:gc:garbage\-collection.log\f[R]
+.RE
+.TP
+.B \f[CB]\-XX:+FailOverToOldVerifier\f[R]
+Enables automatic failover to the old verifier when the new type checker
+fails.
+By default, this option is disabled and it\[aq]s ignored (that is,
+treated as disabled) for classes with a recent bytecode version.
+You can enable it only for classes with older versions of the bytecode.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:+TraceClassLoading\f[R]
+Enables tracing of classes as they are loaded.
+By default, this option is disabled and classes aren\[aq]t traced.
+.RS
+.PP
+The replacement Unified Logging syntax is
+\f[CB]\-Xlog:class+load=\f[R]\f[I]level\f[R].
+See \f[B]Enable Logging with the JVM Unified Logging Framework\f[R]
+.PP
+Use \f[I]level\f[R]=\f[CB]info\f[R] for regular information, or
+\f[I]level\f[R]=\f[CB]debug\f[R] for additional information.
+In Unified Logging syntax, \f[CB]\-verbose:class\f[R] equals
+\f[CB]\-Xlog:class+load=info,class+unload=info\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:+TraceClassLoadingPreorder\f[R]
+Enables tracing of all loaded classes in the order in which they\[aq]re
+referenced.
+By default, this option is disabled and classes aren\[aq]t traced.
+.RS
+.PP
+The replacement Unified Logging syntax is
+\f[CB]\-Xlog:class+preorder=debug\f[R].
+See \f[B]Enable Logging with the JVM Unified Logging Framework\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:+TraceClassResolution\f[R]
+Enables tracing of constant pool resolutions.
+By default, this option is disabled and constant pool resolutions
+aren\[aq]t traced.
+.RS
+.PP
+The replacement Unified Logging syntax is
+\f[CB]\-Xlog:class+resolve=debug\f[R].
+See \f[B]Enable Logging with the JVM Unified Logging Framework\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:+TraceLoaderConstraints\f[R]
+Enables tracing of the loader constraints recording.
+By default, this option is disabled and loader constraints recording
+isn\[aq]t traced.
+.RS
+.PP
+The replacement Unified Logging syntax is
+\f[CB]\-Xlog:class+loader+constraints=info\f[R].
+See \f[B]Enable Logging with the JVM Unified Logging Framework\f[R].
+.RE
+.TP
+.B \f[CB]\-XX:+UseConcMarkSweepGC\f[R]
+Enables the use of the CMS garbage collector for the old generation.
+CMS is an alternative to the default garbage collector (G1), which also
+focuses on meeting application latency requirements.
+By default, this option is disabled and the collector is selected
+automatically based on the configuration of the machine and type of the
+JVM.
+The CMS garbage collector is deprecated.
+.RS
+.RE
+.SH OBSOLETE JAVA OPTIONS
+.PP
+These \f[CB]java\f[R] options are still accepted but ignored, and a
+warning is issued when they\[aq]re used.
+.TP
+.B \f[CB]\-XX:+UseMembar\f[R]
+Enabled issuing membars on thread\-state transitions.
+This option was disabled by default on all platforms except ARM servers,
+where it was enabled.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:MaxPermSize=\f[R]\f[I]size\f[R]
+Sets the maximum permanent generation space size (in bytes).
+This option was deprecated in JDK 8 and superseded by the
+\f[CB]\-XX:MaxMetaspaceSize\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]\-XX:PermSize=\f[R]\f[I]size\f[R]
+Sets the space (in bytes) allocated to the permanent generation that
+triggers a garbage collection if it\[aq]s exceeded.
+This option was deprecated in JDK 8 and superseded by the
+\f[CB]\-XX:MetaspaceSize\f[R] option.
+.RS
+.RE
+.SH REMOVED JAVA OPTIONS
+.PP
+These \f[CB]java\f[R] options have been removed in JDK 13 and using them
+results in an error of:
+.RS
+.PP
+\f[CB]Unrecognized\ VM\ option\f[R] \f[I]option\-name\f[R]
+.RE
+.TP
+.B \f[CB]\-XX:+AggressiveOpts\f[R]
+Enabled the use of aggressive performance optimization features.
+By default, this option was disabled and experimental performance
+features were not used.
+.RS
+.RE
+.PP
+For the lists and descriptions of options removed in previous releases
+see the \f[I]Removed Java Options\f[R] section in:
+.IP \[bu] 2
+\f[B]Java Platform, Standard Edition Tools Reference, Release 12\f[R]
+[https://docs.oracle.com/en/java/javase/12/tools/java.html#GUID\-3B1CE181\-CD30\-4178\-9602\-230B800D4FAE]
+.IP \[bu] 2
+\f[B]Java Platform, Standard Edition Tools Reference, Release 11\f[R]
+[https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID\-741FC470\-AA3E\-494A\-8D2B\-1B1FE4A990D1]
+.IP \[bu] 2
+\f[B]Java Platform, Standard Edition Tools Reference, Release 10\f[R]
+[https://docs.oracle.com/javase/10/tools/java.htm#JSWOR624]
+.IP \[bu] 2
+\f[B]Java Platform, Standard Edition Tools Reference, Release 9\f[R]
+[https://docs.oracle.com/javase/9/tools/java.htm#JSWOR624]
+.IP \[bu] 2
+\f[B]Java Platform, Standard Edition Tools Reference, Release 8 for
+Oracle JDK on Windows\f[R]
+[https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html#BGBCIEFC]
+.IP \[bu] 2
+\f[B]Java Platform, Standard Edition Tools Reference, Release 8 for
+Oracle JDK on Solaris, Linux, and macOS\f[R]
+[https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BGBCIEFC]
+.SH JAVA COMMAND\-LINE ARGUMENT FILES
+.PP
+You can shorten or simplify the \f[CB]java\f[R] command by using
+\f[CB]\@\f[R] argument files to specify one or more text files that
+contain arguments, such as options and class names, which are passed to
+the \f[CB]java\f[R] command.
+This let\[aq]s you to create \f[CB]java\f[R] commands of any length on any
+operating system.
+.PP
+In the command line, use the at sign (\f[CB]\@\f[R]) prefix to identify an
+argument file that contains \f[CB]java\f[R] options and class names.
+When the \f[CB]java\f[R] command encounters a file beginning with the at
+sign (\f[CB]\@\f[R]), it expands the contents of that file into an
+argument list just as they would be specified on the command line.
+.PP
+The \f[CB]java\f[R] launcher expands the argument file contents until it
+encounters the \f[CB]\-Xdisable\-\@files\f[R] option.
+You can use the \f[CB]\-Xdisable\-\@files\f[R] option anywhere on the
+command line, including in an argument file, to stop \f[CB]\@\f[R]
+argument files expansion.
+.PP
+The following items describe the syntax of \f[CB]java\f[R] argument files:
+.IP \[bu] 2
+The argument file must contain only ASCII characters or characters in
+system default encoding that\[aq]s ASCII friendly, such as UTF\-8.
+.IP \[bu] 2
+The argument file size must not exceed MAXINT (2,147,483,647) bytes.
+.IP \[bu] 2
+The launcher doesn\[aq]t expand wildcards that are present within an
+argument file.
+.IP \[bu] 2
+Use white space or new line characters to separate arguments included in
+the file.
+.IP \[bu] 2
+White space includes a white space character, \f[CB]\\t\f[R],
+\f[CB]\\n\f[R], \f[CB]\\r\f[R], and \f[CB]\\f\f[R].
+.RS 2
+.PP
+For example, it is possible to have a path with a space, such as
+\f[CB]c:\\Program\ Files\f[R] that can be specified as either
+\f[CB]"c:\\\\Program\ Files"\f[R] or, to avoid an escape,
+\f[CB]c:\\Program"\ "Files\f[R].
+.RE
+.IP \[bu] 2
+Any option that contains spaces, such as a path component, must be
+within quotation marks using quotation (\[aq]"\[aq]) characters in its
+entirety.
+.IP \[bu] 2
+A string within quotation marks may contain the characters \f[CB]\\n\f[R],
+\f[CB]\\r\f[R], \f[CB]\\t\f[R], and \f[CB]\\f\f[R].
+They are converted to their respective ASCII codes.
+\
+.IP \[bu] 2
+If a file name contains embedded spaces, then put the whole file name in
+double quotation marks.
+.IP \[bu] 2
+File names in an argument file are relative to the current directory,
+not to the location of the argument file.
+.IP \[bu] 2
+Use the number sign \f[CB]#\f[R] in the argument file to identify
+comments.
+All characters following the \f[CB]#\f[R] are ignored until the end of
+line.
+.IP \[bu] 2
+Additional at sign \f[CB]\@\f[R] prefixes to \f[CB]\@\f[R] prefixed options
+act as an escape, (the first \f[CB]\@\f[R] is removed and the rest of the
+arguments are presented to the launcher literally).
+.IP \[bu] 2
+Lines may be continued using the continuation character (\f[CB]\\\f[R]) at
+the end\-of\-line.
+The two lines are concatenated with the leading white spaces trimmed.
+To prevent trimming the \ leading white spaces, a continuation character
+(\f[CB]\\\f[R]) may be placed at the first column.
+.IP \[bu] 2
+Because backslash (\\) is an escape character, a backslash
+character\ must be escaped with another backslash character.
+.IP \[bu] 2
+Partial quote is allowed and is closed by an end\-of\-file.
+.IP \[bu] 2
+An open quote stops at end\-of\-line unless \f[CB]\\\f[R] is the last
+character, which then joins the next line by removing all leading white
+space characters.
+.IP \[bu] 2
+Wildcards (*) aren\[aq]t allowed in these lists (such as specifying
+\f[CB]*.java\f[R]).
+.IP \[bu] 2
+Use of the at sign (\f[CB]\@\f[R]) to recursively interpret files
+isn\[aq]t supported.
+.SS Example of Open or Partial Quotes in an Argument File
+.PP
+In the argument file,
+.IP
.nf
-\fBjava \-d64 \-server \-XX:+UseLargePages \-Xmn10g \-Xms26g \-Xmx26g\fR
-
+\f[CB]
+\-cp\ "lib/
+cool/
+app/
+jars
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\fBExample 2 \fRTuning for Lower Response Time
-.RS 4
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+this is interpreted as:
+.RS
+.PP
+\f[CB]\-cp\ lib/cool/app/jars\f[R]
+.RE
+.SS Example of a Backslash Character\ Escaped with Another Backslash
+Character in an Argument File
+.PP
+To output the following:
+.RS
+.PP
+\f[CB]\-cp\ c:\\Program\ Files\ (x86)\\Java\\jre\\lib\\ext;c:\\Program\ Files\\Java\\jre9\\lib\\ext\f[R]
+.RE
+.PP
+The backslash character must be specified in the argument file as:
+.RS
+.PP
+\f[CB]\-cp\ \ "c:\\\\Program\ Files\ (x86)\\\\Java\\\\jre\\\\lib\\\\ext;c:\\\\Program\ Files\\\\Java\\\\jre9\\\\lib\\\\ext"\f[R]
+.RE
+.SS Example of an EOL Escape Used to Force Concatenation of Lines in an
+Argument File
+.PP
+In the argument file,
+.IP
.nf
-\fBjava \-d64 \-XX:+UseG1GC \-Xms26g Xmx26g \-XX:MaxGCPauseMillis=500 \-XX:+PrintGCTimeStamp\fR
-
+\f[CB]
+\-cp\ "/lib/cool\ app/jars:\\
+\ \ \ \ /lib/another\ app/jars"
+\f[R]
+.fi
+.PP
+This is interpreted as:
+.RS
+.PP
+\f[CB]\-cp\ /lib/cool\ app/jars:/lib/another\ app/jars\f[R]
+.RE
+.SS Example of Line Continuation with Leading Spaces in an Argument File
+.PP
+In the argument file,
+.IP
+.nf
+\f[CB]
+\-cp\ "/lib/cool\\
+\\app/jars”
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.SH "LARGE PAGES"
-.PP
-Also known as huge pages, large pages are memory pages that are significantly larger than the standard memory page size (which varies depending on the processor and operating system)\&. Large pages optimize processor Translation\-Lookaside Buffers\&.
-.PP
-A Translation\-Lookaside Buffer (TLB) is a page translation cache that holds the most\-recently used virtual\-to\-physical address translations\&. TLB is a scarce system resource\&. A TLB miss can be costly as the processor must then read from the hierarchical page table, which may require multiple memory accesses\&. By using a larger memory page size, a single TLB entry can represent a larger memory range\&. There will be less pressure on TLB, and memory\-intensive applications may have better performance\&.
-.PP
-However, large pages page memory can negatively affect system performance\&. For example, when a large mount of memory is pinned by an application, it may create a shortage of regular memory and cause excessive paging in other applications and slow down the entire system\&. Also, a system that has been up for a long time could produce excessive fragmentation, which could make it impossible to reserve enough large page memory\&. When this happens, either the OS or JVM reverts to using regular pages\&.
-.SS "Large Pages Support"
-.PP
-Solaris and Linux support large pages\&.
-.sp
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBSolaris\fR
-.RS 4
-.PP
-Solaris 9 and later include Multiple Page Size Support (MPSS); no additional configuration is necessary\&. See http://www\&.oracle\&.com/technetwork/server\-storage/solaris10/overview/solaris9\-features\-scalability\-135663\&.html\&.
-.RE
-.sp
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBLinux\fR
-.RS 4
-.PP
-The 2\&.6 kernel supports large pages\&. Some vendors have backported the code to their 2\&.4\-based releases\&. To check if your system can support large page memory, try the following:
-.sp
-.if n \{\
-.RS 4
-.\}
+.PP
+This is interpreted as:
+.PP
+\f[CB]\-cp\ /lib/cool\ app/jars\f[R]
+.SS Examples of Using Single Argument File
+.PP
+You can use a single argument file, such as \f[CB]myargumentfile\f[R] in
+the following example, to hold all required \f[CB]java\f[R] arguments:
+.RS
+.PP
+\f[CB]java\ \@myargumentfile\f[R]
+.RE
+.SS Examples of Using Argument Files with Paths
+.PP
+You can include relative paths in argument files; however, they\[aq]re
+relative to the current working directory and not to the paths of the
+argument files themselves.
+In the following example, \f[CB]path1/options\f[R] and
+\f[CB]path2/options\f[R] represent argument files with different paths.
+Any relative paths that they contain are relative to the current working
+directory and not to the argument files:
+.RS
+.PP
+\f[CB]java\ \@path1/options\ \@path2/classes\f[R]
+.RE
+.SH CODE HEAP STATE ANALYTICS
+.SS Overview
+.PP
+There are occasions when having insight into the current state of the
+JVM code heap would be helpful to answer questions such as:
+.IP \[bu] 2
+Why was the JIT turned off and then on again and again?
+.IP \[bu] 2
+Where has all the code heap space gone?
+.IP \[bu] 2
+Why is the method sweeper not working effectively?
+.PP
+To provide this insight, a code heap state analytics feature has been
+implemented that enables on\-the\-fly analysis of the code heap.
+The analytics process is divided into two parts.
+The first part examines the entire code heap and aggregates all
+information that is believed to be useful or important.
+The second part consists of several independent steps that print the
+collected information with an emphasis on different aspects of the data.
+Data collection and printing are done on an "on request" basis.
+.SS Syntax
+.PP
+Requests for real\-time, on\-the\-fly analysis can be issued with the
+following command:
+.RS
+.PP
+\f[CB]jcmd\f[R] \f[I]pid\f[R] \f[CB]Compiler.CodeHeap_Analytics\f[R]
+[\f[I]function\f[R]] [\f[I]granularity\f[R]]
+.RE
+.PP
+If you are only interested in how the code heap looks like after running
+a sample workload, you can use the command line option:
+.RS
+.PP
+\f[CB]\-Xlog:codecache=Trace\f[R]
+.RE
+.PP
+To see the code heap state when a "CodeCache full" condition exists,
+start the VM with the command line option:
+.RS
+.PP
+\f[CB]\-Xlog:codecache=Debug\f[R]
+.RE
+.PP
+See \f[B]CodeHeap State Analytics (OpenJDK)\f[R]
+[https://bugs.openjdk.java.net/secure/attachment/75649/JVM_CodeHeap_StateAnalytics_V2.pdf]
+for a detailed description of the code heap state analytics feature, the
+supported functions, and the granularity options.
+.SH ENABLE LOGGING WITH THE JVM UNIFIED LOGGING FRAMEWORK
+.PP
+You use the \f[CB]\-Xlog\f[R] option to configure or enable logging with
+the Java Virtual Machine (JVM) unified logging framework.
+.SS Synopsis
+.RS
+.PP
+\f[CB]\-Xlog\f[R][\f[CB]:\f[R][\f[I]what\f[R]][\f[CB]:\f[R][\f[I]output\f[R]][\f[CB]:\f[R][\f[I]decorators\f[R]][\f[CB]:\f[R]\f[I]output\-options\f[R][\f[CB],\f[R]...]]]]]
+.RE
+.TP
+.B \f[I]what\f[R]
+Specifies a combination of tags and levels of the form
+\f[I]tag1\f[R][\f[CB]+\f[R]\f[I]tag2\f[R]...][\f[CB]*\f[R]][\f[CB]=\f[R]\f[I]level\f[R]][\f[CB],\f[R]...].
+Unless the wildcard (\f[CB]*\f[R]) is specified, only log messages tagged
+with exactly the tags specified are matched.
+See \f[B]\-Xlog Tags and Levels\f[R].
+.RS
+.RE
+.TP
+.B \f[I]output\f[R]
+Sets the type of output.
+Omitting the \f[I]output\f[R] type defaults to \f[CB]stdout\f[R].
+See \f[B]\-Xlog Output\f[R].
+.RS
+.RE
+.TP
+.B \f[I]decorators\f[R]
+Configures the output to use a custom set of decorators.
+Omitting \f[I]decorators\f[R] defaults to \f[CB]uptime\f[R],
+\f[CB]level\f[R], and \f[CB]tags\f[R].
+See \f[B]Decorations\f[R].
+.RS
+.RE
+.TP
+.B \f[I]output\-options\f[R]
+Sets the \f[CB]\-Xlog\f[R] logging output options.
+.RS
+.RE
+.SS Description
+.PP
+The Java Virtual Machine (JVM) unified logging framework provides a
+common logging system for all components of the JVM.
+GC logging for the JVM has been changed to use the new logging
+framework.
+The mapping of old GC flags to the corresponding new Xlog configuration
+is described in \f[B]Convert GC Logging Flags to Xlog\f[R].
+In addition, runtime logging has also been changed to use the JVM
+unified logging framework.
+The mapping of legacy runtime logging flags to the corresponding new
+Xlog configuration is described in \f[B]Convert Runtime Logging Flags to
+Xlog\f[R].
+.PP
+The following provides quick reference to the \f[CB]\-Xlog\f[R] command
+and syntax for options:
+.TP
+.B \f[CB]\-Xlog\f[R]
+Enables JVM logging on an \f[CB]info\f[R] level.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:help\f[R]
+Prints \f[CB]\-Xlog\f[R] usage syntax and available tags, levels, and
+decorators along with example command lines with explanations.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:disable\f[R]
+Turns off all logging and clears all configuration of the logging
+framework including the default configuration for warnings and errors.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog\f[R][\f[CB]:\f[R]\f[I]option\f[R]]
+Applies multiple arguments in the order that they appear on the command
+line.
+Multiple \f[CB]\-Xlog\f[R] arguments for the same output override each
+other in their given order.
+.RS
+.PP
+The \f[I]option\f[R] is set as:
+.RS
+.PP
+[\f[I]tag\-selection\f[R]][\f[CB]:\f[R][\f[I]output\f[R]][\f[CB]:\f[R][\f[I]decorators\f[R]][\f[CB]:\f[R]\f[I]output\-options\f[R]]]]
+.RE
+.PP
+Omitting the \f[I]tag\-selection\f[R] defaults to a tag\-set of
+\f[CB]all\f[R] and a level of \f[CB]info\f[R].
+.RS
+.PP
+\f[I]tag\f[R][\f[CB]+\f[R]...] \f[CB]all\f[R]
+.RE
+.PP
+The \f[CB]all\f[R] tag is a meta tag consisting of all tag\-sets
+available.
+The asterisk \f[CB]*\f[R] in a tag set definition denotes a wildcard tag
+match.
+Matching with a wildcard selects all tag sets that contain \f[I]at
+least\f[R] the specified tags.
+Without the wildcard, only exact matches of the specified tag sets are
+selected.
+.PP
+\f[I]output\-options\f[R] is
+.RS
+.PP
+\f[CB]filecount=\f[R]\f[I]file\-count\f[R] \f[CB]filesize=\f[R]\f[I]file size
+with optional K, M or G suffix\f[R]
+.RE
+.RE
+.SS Default Configuration
+.PP
+When the \f[CB]\-Xlog\f[R] option and nothing else is specified on the
+command line, the default configuration is used.
+The default configuration logs all messages with a level that matches
+either warning or error regardless of what tags the message is
+associated with.
+The default configuration is equivalent to entering the following on the
+command line:
+.RS
+.PP
+\f[CB]\-Xlog:all=warning:stdout:uptime,level,tags\f[R]
+.RE
+.SS Controlling Logging at Runtime
+.PP
+Logging can also be controlled at run time through Diagnostic Commands
+(with the \f[B]jcmd\f[R] utility).
+Everything that can be specified on the command line can also be
+specified dynamically with the \f[CB]VM.log\f[R] command.
+As the diagnostic commands are automatically exposed as MBeans, you can
+use JMX to change logging configuration at run time.
+.SS \-Xlog Tags and Levels
+.PP
+Each log message has a level and a tag set associated with it.
+The level of the message corresponds to its details, and the tag set
+corresponds to what the message contains or which JVM component it
+involves (such as, \f[CB]gc\f[R], \f[CB]jit\f[R], or \f[CB]os\f[R]).
+Mapping GC flags to the Xlog configuration is described in \f[B]Convert
+GC Logging Flags to Xlog\f[R].
+Mapping legacy runtime logging flags to the corresponding Xlog
+configuration is described in \f[B]Convert Runtime Logging Flags to
+Xlog\f[R].
+.PP
+\f[B]Available log levels:\f[R]
+.IP \[bu] 2
+\f[CB]off\f[R]
+.IP \[bu] 2
+\f[CB]trace\f[R]
+.IP \[bu] 2
+\f[CB]debug\f[R]
+.IP \[bu] 2
+\f[CB]info\f[R]
+.IP \[bu] 2
+\f[CB]warning\f[R]
+.IP \[bu] 2
+\f[CB]error\f[R]
+.PP
+\f[B]Available log tags:\f[R]
+.PP
+There are literally dozens of log tags, which in the right combinations,
+will enable a range of logging output.
+The full set of available log tags can be seen using
+\f[CB]\-Xlog:help\f[R].
+Specifying \f[CB]all\f[R] instead of a tag combination matches all tag
+combinations.
+.SS \-Xlog Output
+.PP
+The \f[CB]\-Xlog\f[R] option supports the following types of outputs:
+.IP \[bu] 2
+\f[CB]stdout\f[R] \-\-\- Sends output to stdout
+.IP \[bu] 2
+\f[CB]stderr\f[R] \-\-\- Sends output to stderr
+.IP \[bu] 2
+\f[CB]file=\f[R]\f[I]filename\f[R] \-\-\- Sends output to text file(s).
+.PP
+When using \f[CB]file=\f[R]\f[I]filename\f[R], specifying \f[CB]%p\f[R]
+and/or \f[CB]%t\f[R] in the file name expands to the JVM\[aq]s PID and
+startup timestamp, respectively.
+You can also configure text files to handle file rotation based on file
+size and a number of files to rotate.
+For example, to rotate the log file every 10 MB and keep 5 files in
+rotation, specify the options \f[CB]filesize=10M,\ filecount=5\f[R].
+The target size of the files isn\[aq]t guaranteed to be exact, it\[aq]s
+just an approximate value.
+Files are rotated by default with up to 5 rotated files of target size
+20 MB, unless configured otherwise.
+Specifying \f[CB]filecount=0\f[R] means that the log file shouldn\[aq]t be
+rotated.
+There\[aq]s a possibility of the pre\-existing log file getting
+overwritten.
+.SS Decorations
+.PP
+Logging messages are decorated with information about the message.
+You can configure each output to use a custom set of decorators.
+The order of the output is always the same as listed in the table.
+You can configure the decorations to be used at run time.
+Decorations are prepended to the log message.
+For example:
+.IP
.nf
-\fB# cat /proc/meminfo | grep Huge\fR
-\fBHugePages_Total: 0\fR
-\fBHugePages_Free: 0\fR
-\fBHugepagesize: 2048 kB\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-If the output shows the three "Huge" variables, then your system can support large page memory but it needs to be configured\&. If the command prints nothing, then your system does not support large pages\&. To configure the system to use large page memory, login as
-\fBroot\fR, and then follow these steps:
-.sp
-.RS 4
-.ie n \{\
-\h'-04' 1.\h'+01'\c
-.\}
-.el \{\
-.sp -1
-.IP " 1." 4.2
-.\}
-If you are using the option
-\fB\-XX:+UseSHM\fR
-(instead of
-\fB\-XX:+UseHugeTLBFS\fR), then increase the
-\fBSHMMAX\fR
-value\&. It must be larger than the Java heap size\&. On a system with 4 GB of physical RAM (or less), the following will make all the memory sharable:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB# echo 4294967295 > /proc/sys/kernel/shmmax\fR
-
+\f[CB]
+[6.567s][info][gc,old]\ Old\ collection\ complete
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04' 2.\h'+01'\c
-.\}
-.el \{\
-.sp -1
-.IP " 2." 4.2
-.\}
-If you are using the option
-\fB\-XX:+UseSHM\fR
-or
-\fB\-XX:+UseHugeTLBFS\fR, then specify the number of large pages\&. In the following example, 3 GB of a 4 GB system are reserved for large pages (assuming a large page size of 2048kB, then 3 GB = 3 * 1024 MB = 3072 MB = 3072 * 1024 kB = 3145728 kB and 3145728 kB / 2048 kB = 1536):
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB# echo 1536 > /proc/sys/vm/nr_hugepages\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBNote\fR
-.ps -1
-.br
+.PP
+Omitting \f[CB]decorators\f[R] defaults to \f[CB]uptime\f[R],
+\f[CB]level\f[R], and \f[CB]tags\f[R].
+The \f[CB]none\f[R] decorator is special and is used to turn off all
+decorations.
+.PP
+\f[CB]time\f[R] (\f[CB]t\f[R]), \f[CB]utctime\f[R] (\f[CB]utc\f[R]),
+\f[CB]uptime\f[R] (\f[CB]u\f[R]), \f[CB]timemillis\f[R] (\f[CB]tm\f[R]),
+\f[CB]uptimemillis\f[R] (\f[CB]um\f[R]), \f[CB]timenanos\f[R] (\f[CB]tn\f[R]),
+\f[CB]uptimenanos\f[R] (\f[CB]un\f[R]), \f[CB]hostname\f[R] (\f[CB]hn\f[R]),
+\f[CB]pid\f[R] (\f[CB]p\f[R]), \f[CB]tid\f[R] (\f[CB]ti\f[R]), \f[CB]level\f[R]
+(\f[CB]l\f[R]), \f[CB]tags\f[R] (\f[CB]tg\f[R]) decorators can also be
+specified as \f[CB]none\f[R] for no decoration.
+.PP
.TS
-allbox tab(:);
-l.
+tab(@);
+lw(14.9n) lw(55.1n).
+T{
+Decorations
+T}@T{
+Description
+T}
+_
+T{
+\f[CB]time\f[R] or \f[CB]t\f[R]
+T}@T{
+Current time and date in ISO\-8601 format.
+T}
+T{
+\f[CB]utctime\f[R] or \f[CB]utc\f[R]
+T}@T{
+Universal Time Coordinated or Coordinated Universal Time.
+T}
+T{
+\f[CB]uptime\f[R] or \f[CB]u\f[R]
+T}@T{
+Time since the start of the JVM in seconds and milliseconds.
+For example, 6.567s.
+T}
T{
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Note that the values contained in
-\fB/proc\fR
-will reset after you reboot your system, so may want to set them in an initialization script (for example,
-\fBrc\&.local\fR
-or
-\fBsysctl\&.conf\fR)\&.
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-If you configure (or resize) the OS kernel parameters
-\fB/proc/sys/kernel/shmmax\fR
-or
-\fB/proc/sys/vm/nr_hugepages\fR, Java processes may allocate large pages for areas in addition to the Java heap\&. These steps can allocate large pages for the following areas:
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Java heap
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Code cache
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-The marking bitmap data structure for the parallel GC
-.RE
-.sp
-Consequently, if you configure the
-\fBnr_hugepages\fR
-parameter to the size of the Java heap, then the JVM can fail in allocating the code cache areas on large pages because these areas are quite large in size\&.
-.RE
+\f[CB]timemillis\f[R] or \f[CB]tm\f[R]
+T}@T{
+The same value as generated by \f[CB]System.currentTimeMillis()\f[R]
+T}
+T{
+\f[CB]uptimemillis\f[R] or \f[CB]um\f[R]
+T}@T{
+Milliseconds since the JVM started.
+T}
+T{
+\f[CB]timenanos\f[R] or \f[CB]tn\f[R]
+T}@T{
+The same value generated by \f[CB]System.nanoTime()\f[R].
+T}
+T{
+\f[CB]uptimenanos\f[R] or \f[CB]un\f[R]
+T}@T{
+Nanoseconds since the JVM started.
+T}
+T{
+\f[CB]hostname\f[R] or \f[CB]hn\f[R]
+T}@T{
+The host name.
+T}
+T{
+\f[CB]pid\f[R] or \f[CB]p\f[R]
+T}@T{
+The process identifier.
+T}
+T{
+\f[CB]tid\f[R] or \f[CB]ti\f[R]
+T}@T{
+The thread identifier.
+T}
+T{
+\f[CB]level\f[R] or \f[CB]l\f[R]
+T}@T{
+The level associated with the log message.
+T}
+T{
+\f[CB]tags\f[R] or \f[CB]tg\f[R]
+T}@T{
+The tag\-set associated with the log message.
T}
.TE
-.sp 1
-.sp .5v
-.RE
-.RE
-.SH "EXIT STATUS"
-.PP
-The following exit values are typically returned by the launcher when the launcher is called with the wrong arguments, serious errors, or exceptions thrown by the JVM\&. However, a Java application may choose to return any value by using the API call
-\fBSystem\&.exit(exitValue)\fR\&. The values are:
-.sp
+.SS Convert GC Logging Flags to Xlog
+.PP
+.TS
+tab(@);
+lw(22.4n) lw(16.5n) lw(31.2n).
+T{
+Legacy Garbage Collection (GC) Flag
+T}@T{
+Xlog Configuration
+T}@T{
+Comment
+T}
+_
+T{
+\f[CB]G1PrintHeapRegions\f[R]
+T}@T{
+\f[CB]\-Xlog:gc+region=trace\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]GCLogFileSize\f[R]
+T}@T{
+No configuration available
+T}@T{
+Log rotation is handled by the framework.
+T}
+T{
+\f[CB]NumberOfGCLogFiles\f[R]
+T}@T{
+Not Applicable
+T}@T{
+Log rotation is handled by the framework.
+T}
+T{
+\f[CB]PrintAdaptiveSizePolicy\f[R]
+T}@T{
+\f[CB]\-Xlog:gc+ergo*=\f[R]\f[I]level\f[R]
+T}@T{
+Use a \f[I]level\f[R] of \f[CB]debug\f[R] for most of the information, or a
+\f[I]level\f[R] of \f[CB]trace\f[R] for all of what was logged for
+\f[CB]PrintAdaptiveSizePolicy\f[R].
+T}
+T{
+\f[CB]PrintGC\f[R]
+T}@T{
+\f[CB]\-Xlog:gc\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]PrintGCApplicationConcurrentTime\f[R]
+T}@T{
+\f[CB]\-Xlog:safepoint\f[R]
+T}@T{
+Note that \f[CB]PrintGCApplicationConcurrentTime\f[R] and
+\f[CB]PrintGCApplicationStoppedTime\f[R] are logged on the same tag and
+aren\[aq]t separated in the new logging.
+T}
+T{
+\f[CB]PrintGCApplicationStoppedTime\f[R]
+T}@T{
+\f[CB]\-Xlog:safepoint\f[R]
+T}@T{
+Note that \f[CB]PrintGCApplicationConcurrentTime\f[R] and
+\f[CB]PrintGCApplicationStoppedTime\f[R] are logged on the same tag and
+not separated in the new logging.
+T}
+T{
+\f[CB]PrintGCCause\f[R]
+T}@T{
+Not Applicable
+T}@T{
+GC cause is now always logged.
+T}
+T{
+\f[CB]PrintGCDateStamps\f[R]
+T}@T{
+Not Applicable
+T}@T{
+Date stamps are logged by the framework.
+T}
+T{
+\f[CB]PrintGCDetails\f[R]
+T}@T{
+\f[CB]\-Xlog:gc*\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]PrintGCID\f[R]
+T}@T{
+Not Applicable
+T}@T{
+GC ID is now always logged.
+T}
+T{
+\f[CB]PrintGCTaskTimeStamps\f[R]
+T}@T{
+\f[CB]\-Xlog:gc+task*=debug\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]PrintGCTimeStamps\f[R]
+T}@T{
+Not Applicable
+T}@T{
+Time stamps are logged by the framework.
+T}
+T{
+\f[CB]PrintHeapAtGC\f[R]
+T}@T{
+\f[CB]\-Xlog:gc+heap=trace\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]PrintReferenceGC\f[R]
+T}@T{
+\f[CB]\-Xlog:gc+ref*=debug\f[R]
+T}@T{
+Note that in the old logging, \f[CB]PrintReferenceGC\f[R] had an effect
+only if \f[CB]PrintGCDetails\f[R] was also enabled.
+T}
+T{
+\f[CB]PrintStringDeduplicationStatistics\f[R]
+T}@T{
+`\-Xlog:gc+stringdedup*=debug
+T}@T{
+` Not Applicable
+T}
+T{
+\f[CB]PrintTenuringDistribution\f[R]
+T}@T{
+\f[CB]\-Xlog:gc+age*=\f[R]\f[I]level\f[R]
+T}@T{
+Use a \f[I]level\f[R] of \f[CB]debug\f[R] for the most relevant
+information, or a \f[I]level\f[R] of \f[CB]trace\f[R] for all of what was
+logged for \f[CB]PrintTenuringDistribution\f[R].
+T}
+T{
+\f[CB]UseGCLogFileRotation\f[R]
+T}@T{
+Not Applicable
+T}@T{
+What was logged for \f[CB]PrintTenuringDistribution\f[R].
+T}
+.TE
+.SS Convert Runtime Logging Flags to Xlog
+.PP
+.TS
+tab(@);
+lw(15.0n) lw(20.2n) lw(34.7n).
+T{
+Legacy Runtime Flag
+T}@T{
+Xlog Configuration
+T}@T{
+Comment
+T}
+_
+T{
+\f[CB]TraceExceptions\f[R]
+T}@T{
+\f[CB]\-Xlog:exceptions=info\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceClassLoading\f[R]
+T}@T{
+\f[CB]\-Xlog:class+load=\f[R]\f[I]level\f[R]
+T}@T{
+Use \f[I]level\f[R]=\f[CB]info\f[R] for regular information, or
+\f[I]level\f[R]=\f[CB]debug\f[R] for additional information.
+In Unified Logging syntax, \f[CB]\-verbose:class\f[R] equals
+\f[CB]\-Xlog:class+load=info,class+unload=info\f[R].
+T}
+T{
+\f[CB]TraceClassLoadingPreorder\f[R]
+T}@T{
+\f[CB]\-Xlog:class+preorder=debug\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceClassUnloading\f[R]
+T}@T{
+\f[CB]\-Xlog:class+unload=\f[R]\f[I]level\f[R]
+T}@T{
+Use \f[I]level\f[R]=\f[CB]info\f[R] for regular information, or
+\f[I]level\f[R]=\f[CB]trace\f[R] for additional information.
+In Unified Logging syntax, \f[CB]\-verbose:class\f[R] equals
+\f[CB]\-Xlog:class+load=info,class+unload=info\f[R].
+T}
+T{
+\f[CB]VerboseVerification\f[R]
+T}@T{
+\f[CB]\-Xlog:verification=info\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceClassPaths\f[R]
+T}@T{
+\f[CB]\-Xlog:class+path=info\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceClassResolution\f[R]
+T}@T{
+\f[CB]\-Xlog:class+resolve=debug\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceClassInitialization\f[R]
+T}@T{
+\f[CB]\-Xlog:class+init=info\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceLoaderConstraints\f[R]
+T}@T{
+\f[CB]\-Xlog:class+loader+constraints=info\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceClassLoaderData\f[R]
+T}@T{
+\f[CB]\-Xlog:class+loader+data=\f[R]\f[I]level\f[R]
+T}@T{
+Use \f[I]level\f[R]=\f[CB]debug\f[R] for regular information or
+\f[I]level\f[R]=\f[CB]trace\f[R] for additional information.
+T}
+T{
+\f[CB]TraceSafepointCleanupTime\f[R]
+T}@T{
+\f[CB]\-Xlog:safepoint+cleanup=info\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceSafepoint\f[R]
+T}@T{
+\f[CB]\-Xlog:safepoint=debug\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceMonitorInflation\f[R]
+T}@T{
+\f[CB]\-Xlog:monitorinflation=debug\f[R]
+T}@T{
+Not Applicable
+T}
+T{
+\f[CB]TraceBiasedLocking\f[R]
+T}@T{
+\f[CB]\-Xlog:biasedlocking=\f[R]\f[I]level\f[R]
+T}@T{
+Use \f[I]level\f[R]=\f[CB]info\f[R] for regular information, or
+\f[I]level\f[R]=\f[CB]trace\f[R] for additional information.
+T}
+T{
+\f[CB]TraceRedefineClasses\f[R]
+T}@T{
+\f[CB]\-Xlog:redefine+class*=\f[R]\f[I]level\f[R]
+T}@T{
+\f[I]level\f[R]=\f[CB]info\f[R], \f[CB]debug\f[R], and \f[CB]trace\f[R] provide
+increasing amounts of information.
+T}
+.TE
+.SS \-Xlog Usage Examples
+.PP
+The following are \f[CB]\-Xlog\f[R] examples.
+.TP
+.B \f[CB]\-Xlog\f[R]
+Logs all messages by using the \f[CB]info\f[R] level to \f[CB]stdout\f[R]
+with \f[CB]uptime\f[R], \f[CB]levels\f[R], and \f[CB]tags\f[R] decorations.
+This is equivalent to using:
+.RS
+.RS
+.PP
+\f[CB]\-Xlog:all=info:stdout:uptime,levels,tags\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-Xlog:gc\f[R]
+Logs messages tagged with the \f[CB]gc\f[R] tag using \f[CB]info\f[R] level
+to \f[CB]stdout\f[R].
+The default configuration for all other messages at level
+\f[CB]warning\f[R] is in effect.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:gc,safepoint\f[R]
+Logs messages tagged either with the \f[CB]gc\f[R] or \f[CB]safepoint\f[R]
+tags, both using the \f[CB]info\f[R] level, to \f[CB]stdout\f[R], with
+default decorations.
+Messages tagged with both \f[CB]gc\f[R] and \f[CB]safepoint\f[R] won\[aq]t
+be logged.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:gc+ref=debug\f[R]
+Logs messages tagged with both \f[CB]gc\f[R] and \f[CB]ref\f[R] tags, using
+the \f[CB]debug\f[R] level to \f[CB]stdout\f[R], with default decorations.
+Messages tagged only with one of the two tags won\[aq]t be logged.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:gc=debug:file=gc.txt:none\f[R]
+Logs messages tagged with the \f[CB]gc\f[R] tag using the \f[CB]debug\f[R]
+level to a file called \f[CB]gc.txt\f[R] with no decorations.
+The default configuration for all other messages at level
+\f[CB]warning\f[R] is still in effect.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:gc=trace:file=gctrace.txt:uptimemillis,pids:filecount=5,filesize=1024\f[R]
+Logs messages tagged with the \f[CB]gc\f[R] tag using the \f[CB]trace\f[R]
+level to a rotating file set with 5 files with size 1 MB with the base
+name \f[CB]gctrace.txt\f[R] and uses decorations \f[CB]uptimemillis\f[R] and
+\f[CB]pid\f[R].
+.RS
+.PP
+The default configuration for all other messages at level
+\f[CB]warning\f[R] is still in effect.
+.RE
+.TP
+.B \f[CB]\-Xlog:gc::uptime,tid\f[R]
+Logs messages tagged with the \f[CB]gc\f[R] tag using the default
+\[aq]info\[aq] level to default the output \f[CB]stdout\f[R] and uses
+decorations \f[CB]uptime\f[R] and \f[CB]tid\f[R].
+The default configuration for all other messages at level
+\f[CB]warning\f[R] is still in effect.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:gc*=info,safepoint*=off\f[R]
+Logs messages tagged with at least \f[CB]gc\f[R] using the \f[CB]info\f[R]
+level, but turns off logging of messages tagged with \f[CB]safepoint\f[R].
+Messages tagged with both \f[CB]gc\f[R] and \f[CB]safepoint\f[R] won\[aq]t
+be logged.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:disable\ \-Xlog:safepoint=trace:safepointtrace.txt\f[R]
+Turns off all logging, including warnings and errors, and then enables
+messages tagged with \f[CB]safepoint\f[R]using \f[CB]trace\f[R]level to the
+file \f[CB]safepointtrace.txt\f[R].
+The default configuration doesn\[aq]t apply, because the command line
+started with \f[CB]\-Xlog:disable\f[R].
+.RS
+.RE
+.SS Complex \-Xlog Usage Examples
+.PP
+The following describes a few complex examples of using the
+\f[CB]\-Xlog\f[R] option.
+.TP
+.B \f[CB]\-Xlog:gc+class*=debug\f[R]
+Logs messages tagged with at least \f[CB]gc\f[R] and \f[CB]class\f[R] tags
+using the \f[CB]debug\f[R] level to \f[CB]stdout\f[R].
+The default configuration for all other messages at the level
+\f[CB]warning\f[R] is still in effect
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:gc+meta*=trace,class*=off:file=gcmetatrace.txt\f[R]
+Logs messages tagged with at least the \f[CB]gc\f[R] and \f[CB]meta\f[R]
+tags using the \f[CB]trace\f[R] level to the file \f[CB]metatrace.txt\f[R]
+but turns off all messages tagged with \f[CB]class\f[R].
+Messages tagged with \f[CB]gc\f[R], \f[CB]meta\f[R], and \f[CB]class\f[R]
+aren\[aq]t be logged as \f[CB]class*\f[R] is set to off.
+The default configuration for all other messages at level
+\f[CB]warning\f[R] is in effect except for those that include
+\f[CB]class\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:gc+meta=trace\f[R]
+Logs messages tagged with exactly the \f[CB]gc\f[R] and \f[CB]meta\f[R] tags
+using the \f[CB]trace\f[R] level to \f[CB]stdout\f[R].
+The default configuration for all other messages at level
+\f[CB]warning\f[R] is still be in effect.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xlog:gc+class+heap*=debug,meta*=warning,threads*=off\f[R]
+Logs messages tagged with at least \f[CB]gc\f[R], \f[CB]class\f[R], and
+\f[CB]heap\f[R] tags using the \f[CB]trace\f[R] level to \f[CB]stdout\f[R] but
+only log messages tagged with \f[CB]meta\f[R] with level.
+The default configuration for all other messages at the level
+\f[CB]warning\f[R] is in effect except for those that include
+\f[CB]threads\f[R].
+.RS
+.RE
+.SH VALIDATE JAVA VIRTUAL MACHINE FLAG ARGUMENTS
+.PP
+You use values provided to all Java Virtual Machine (JVM) command\-line
+flags for validation and, if the input value is invalid or
+out\-of\-range, then an appropriate error message is displayed.
+.PP
+Whether they\[aq]re set ergonomically, in a command line, by an input
+tool, or through the APIs (for example, classes contained in the package
+\f[CB]java.lang.management\f[R]) the values provided to all Java Virtual
+Machine (JVM) command\-line flags are validated.
+Ergonomics are described in Java Platform, Standard Edition HotSpot
+Virtual Machine Garbage Collection Tuning Guide.
+.PP
+Range and constraints are validated either when all flags have their
+values set during JVM initialization or a flag\[aq]s value is changed
+during runtime (for example using the \f[CB]jcmd\f[R] tool).
+The JVM is terminated if a value violates either the range or constraint
+check and an appropriate error message is printed on the error stream.
+.PP
+For example, if a flag violates a range or a constraint check, then the
+JVM exits with an error:
+.IP
+.nf
+\f[CB]
+java\ \-XX:AllocatePrefetchStyle=5\ \-version\ \ \
+intx\ AllocatePrefetchStyle=5\ is\ outside\ the\ allowed\ range\ [\ 0\ ...\ 3\ ]\ \ \
+Improperly\ specified\ VM\ option\ \[aq]AllocatePrefetchStyle=5\[aq]\ \ \
+Error:\ Could\ not\ create\ the\ Java\ Virtual\ Machine.\ \
+Error:\ A\ fatal\ exception\ has\ occurred.\ Program\ will\ exit.
+\f[R]
+.fi
+.PP
+The flag \f[CB]\-XX:+PrintFlagsRanges\f[R] prints the range of all the
+flags.
+This flag allows automatic testing of the flags by the values provided
+by the ranges.
+For the flags that have the ranges specified, the type, name, and the
+actual range is printed in the output.
+.PP
+For example,
+.IP
+.nf
+\f[CB]
+intx\ \ \ ThreadStackSize\ [\ 0\ ...\ 9007199254740987\ ]\ {pd\ product}
+\f[R]
+.fi
+.PP
+For the flags that don\[aq]t have the range specified, the values
+aren\[aq]t displayed in the print out.
+For example:
+.IP
+.nf
+\f[CB]
+size_t\ NewSize\ \ \ \ \ \ \ \ \ [\ \ \ ...\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ]\ {product}
+\f[R]
+.fi
+.PP
+This helps to identify the flags that need to be implemented.
+The automatic testing framework can skip those flags that don\[aq]t have
+values and aren\[aq]t implemented.
+.SH LARGE PAGES
+.PP
+You use large pages, also known as huge pages, as memory pages that are
+significantly larger than the standard memory page size (which varies
+depending on the processor and operating system).
+Large pages optimize processor Translation\-Lookaside Buffers.
+.PP
+A Translation\-Lookaside Buffer (TLB) is a page translation cache that
+holds the most\-recently used virtual\-to\-physical address
+translations.
+A TLB is a scarce system resource.
+A TLB miss can be costly because the processor must then read from the
+hierarchical page table, which may require multiple memory accesses.
+By using a larger memory page size, a single TLB entry can represent a
+larger memory range.
+This results in less pressure on a TLB, and memory\-intensive
+applications may have better performance.
+.PP
+However, large pages page memory can negatively affect system
+performance.
+For example, when a large mount of memory is pinned by an application,
+it may create a shortage of regular memory and cause excessive paging in
+other applications and slow down the entire system.
+Also, a system that has been up for a long time could produce excessive
+fragmentation, which could make it impossible to reserve enough large
+page memory.
+When this happens, either the OS or JVM reverts to using regular pages.
+.PP
+Oracle Solaris, Linux, and Windows support large pages.
+.SS Large Pages Support for Oracle Solaris
+.PP
+Oracle Solaris includes Multiple Page Size Support (MPSS).
+No additional configuration is necessary.
+.SS Large Pages Support for Linux
+.PP
+The 2.6 kernel supports large pages.
+Some vendors have backported the code to their 2.4\-based releases.
+To check if your system can support large page memory, try the
+following:
+.IP
+.nf
+\f[CB]
+#\ cat\ /proc/meminfo\ |\ grep\ Huge
+HugePages_Total:\ 0
+HugePages_Free:\ 0
+Hugepagesize:\ 2048\ kB
+\f[R]
+.fi
+.PP
+If the output shows the three "Huge" variables, then your system can
+support large page memory but it needs to be configured.
+If the command prints nothing, then your system doesn\[aq]t support
+large pages.
+To configure the system to use large page memory, login as
+\f[CB]root\f[R], and then follow these steps:
+.IP "1." 3
+If you\[aq]re using the option \f[CB]\-XX:+UseSHM\f[R] (instead of
+\f[CB]\-XX:+UseHugeTLBFS\f[R]), then increase the \f[CB]SHMMAX\f[R] value.
+It must be larger than the Java heap size.
+On a system with 4 GB of physical RAM (or less), the following makes all
+the memory sharable:
.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-\fB0\fR: Successful completion
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-\fB>0\fR: An error occurred
-.RE
-.SH "SEE ALSO"
-.sp
+.RS
+.PP
+\f[CB]#\ echo\ 4294967295\ >\ /proc/sys/kernel/shmmax\f[R]
+.RE
+.RE
+.IP "2." 3
+If you\[aq]re using the option \f[CB]\-XX:+UseSHM\f[R] or
+\f[CB]\-XX:+UseHugeTLBFS\f[R], then specify the number of large pages.
+In the following example, 3 GB of a 4 GB system are reserved for large
+pages (assuming a large page size of 2048kB, then 3 GB = 3 * 1024 MB =
+3072 MB = 3072 * 1024 kB = 3145728 kB and 3145728 kB / 2048 kB = 1536):
.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-javac(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jdb(1)
-.RE
-.sp
+.RS
+.PP
+\f[CB]#\ echo\ 1536\ >\ /proc/sys/vm/nr_hugepages\f[R]
+.RE
+.RS
+.PP
+\f[B]Note:\f[R] The values contained in \f[CB]/proc\f[R] resets after you
+reboot your system, so may want to set them in an initialization script
+(for example, \f[CB]rc.local\f[R] or \f[CB]sysctl.conf\f[R]).
+.RE
+.RE
+.IP \[bu] 2
+If you configure (or resize) the OS kernel parameters
+\f[CB]/proc/sys/kernel/shmmax\f[R] or \f[CB]/proc/sys/vm/nr_hugepages\f[R],
+Java processes may allocate large pages for areas in addition to the
+Java heap.
+These steps can allocate large pages for the following areas:
+.RS 2
+.IP \[bu] 2
+Java heap
+.IP \[bu] 2
+Code cache
+.IP \[bu] 2
+The marking bitmap data structure for the parallel GC
+.PP
+Consequently, if you configure the \f[CB]nr_hugepages\f[R] parameter to
+the size of the Java heap, then the JVM can fail in allocating the code
+cache areas on large pages because these areas are quite large in size.
+.RE
+.SS Large Pages Support for Windows
+.PP
+To use large pages support on Windows, the administrator must first
+assign additional privileges to the user who is running the application:
+.IP "1." 3
+Select \f[B]Control Panel\f[R], \f[B]Administrative Tools\f[R], and then
+\f[B]Local Security Policy\f[R].
+.IP "2." 3
+Select \f[B]Local Policies\f[R] and then \f[B]User Rights Assignment\f[R].
+.IP "3." 3
+Double\-click \f[B]Lock pages in memory\f[R], then add users and/or
+groups.
+.IP "4." 3
+Reboot your system.
+.PP
+Note that these steps are required even if it\[aq]s the administrator
+who\[aq]s running the application, because administrators by default
+don\[aq]t have the privilege to lock pages in memory.
+.SH APPLICATION CLASS DATA SHARING
+.PP
+Application Class Data Sharing (AppCDS) extends class data sharing (CDS)
+to enable application classes to be placed in a shared archive.
+.PP
+In addition to the core library classes, AppCDS supports \f[B]Class Data
+Sharing\f[R]
+[https://docs.oracle.com/en/java/javase/12/vm/class\-data\-sharing.html#GUID\-7EAA3411\-8CF0\-4D19\-BD05\-DF5E1780AA91]
+from the following locations:
+.IP \[bu] 2
+Platform classes from the runtime image
+.IP \[bu] 2
+Application classes from the runtime image
+.IP \[bu] 2
+Application classes from the class path
+.IP \[bu] 2
+Application classes from the module path
+.PP
+Archiving application classes provides better start up time at runtime.
+When running multiple JVM processes, AppCDS also reduces the runtime
+footprint with memory sharing for read\-only metadata.
+.PP
+CDS/AppCDS supports archiving classes from JAR files only.
+.PP
+Prior to JDK 11, a non\-empty directory was reported as a fatal error in
+the following conditions:
+.IP \[bu] 2
+For base CDS, a non\-empty directory cannot exist in the
+\f[CB]\-Xbootclasspath/a\f[R] path
+.IP \[bu] 2
+With \f[CB]\-XX:+UseAppCDS\f[R], a non\-empty directory could not exist in
+the \f[CB]\-Xbootclasspath/a\f[R] path, class path, and module path.
+.PP
+In JDK 11 and later, \f[CB]\-XX:+UseAppCDS\f[R] is obsolete and the
+behavior for a non\-empty directory is based on the class types in the
+classlist.
+A non\-empty directory is reported as a fatal error in the following
+conditions:
+.IP \[bu] 2
+If application classes or platform classes are not loaded, dump time
+only reports an error if a non\-empty directory exists in
+\f[CB]\-Xbootclasspath/a\f[R] path
+.IP \[bu] 2
+If application classes or platform classes are loaded, dump time reports
+an error for a non\-empty directory that exists in
+\f[CB]\-Xbootclasspath/a\f[R] path, class path, or module path
+.PP
+In JDK 11 and later, using
+\f[CB]\-XX:DumpLoadedClassList=\f[R]\f[I]class_list_file\f[R] results a
+generated classlist with all classes (both system library classes and
+application classes) included.
+You no longer have to specify \f[CB]\-XX:+UseAppCDS\f[R] with
+\f[CB]\-XX:DumpLoadedClassList\f[R] to produce a complete class list.
+.PP
+In JDK 11 and later, because \f[CB]UseAppCDS\f[R] is obsolete,
+\f[CB]SharedArchiveFile\f[R] becomes a product flag by default.
+Specifying \f[CB]+UnlockDiagnosticVMOptions\f[R] for
+\f[CB]SharedArchiveFile\f[R] is no longer needed in any configuration.
+.PP
+Class Data Sharing (CDS)/AppCDS does not support archiving array classes
+in a class list.
+When an array in the class list is encountered, CDS dump time gives the
+explicit error message:
+.RS
+.PP
+\f[CB]Preload\ Warning:\ Cannot\ find\f[R] \f[I]array_name\f[R]
+.RE
+.PP
+Although an array in the class list is not allowed, some array classes
+can still be created at CDS/AppCDS dump time.
+Those arrays are created during the execution of the Java code used by
+the Java class loaders (\f[CB]PlatformClassLoader\f[R] and the system
+class loader) to load classes at dump time.
+The created arrays are archived with the rest of the loaded classes.
+.SS Extending Class Data Sharing to Support the Module Path
+.PP
+In JDK 11, Class Data Sharing (CDS) has been improved to support
+archiving classes from the module path.
+.IP \[bu] 2
+To create a CDS archive using the \f[CB]\-\-module\-path\f[R] VM option,
+use the following command line syntax:
+.RS 2
+.RS
+.PP
+\f[CB]java\ \-Xshare:dump\ \-XX:SharedClassListFile=\f[R]\f[I]class_list_file\f[R]
+\f[CB]\-XX:SharedArchiveFile=\f[R]\f[I]shared_archive_file\f[R]
+\f[CB]\-\-module\-path=\f[R]\f[I]path_to_modular_jar\f[R] \f[CB]\-m\f[R]
+\f[I]module_name\f[R]
+.RE
+.RE
+.IP \[bu] 2
+To run with a CDS archive using the \f[CB]\-\-module\-path\f[R] VM option,
+use the following the command line syntax:
+.RS 2
+.RS
+.PP
+\f[CB]java\ \-XX:SharedArchiveFile=\f[R]\f[I]shared_archive_file\f[R]
+\f[CB]\-\-module\-path=\f[R]\f[I]path_to_modular_jar\f[R] \f[CB]\-m\f[R]
+\f[I]module_name\f[R]
+.RE
+.RE
+.PP
+The following table describes how the VM options related to module paths
+can be used along with the \f[CB]\-Xshare\f[R] option.
+.PP
+.TS
+tab(@);
+l l l.
+T{
+Option
+T}@T{
+\-Xshare:dump
+T}@T{
+\-Xshare:{on,auto}
+T}
+_
+T{
+\f[CB]\-\-module\-path\f[R][1] \f[I]mp\f[R]
+T}@T{
+Allowed
+T}@T{
+Allowed[2]
+T}
+T{
+\f[CB]\-\-module\f[R]
+T}@T{
+Allowed
+T}@T{
+Allowed
+T}
+T{
+\f[CB]\-\-add\-module\f[R]
+T}@T{
+Allowed
+T}@T{
+Allowed
+T}
+T{
+\f[CB]\-\-upgrade\-module\-path\f[R][3]
+T}@T{
+Disallowed (exits if specified)
+T}@T{
+Allowed (disables CDS)
+T}
+T{
+\f[CB]\-\-patch\-module\f[R][4]
+T}@T{
+Disallowed (exits if specified)
+T}@T{
+Allowed (disables CDS)
+T}
+T{
+\f[CB]\-\-limit\-modules\f[R][5]
+T}@T{
+Disallowed (exits if specified)
+T}@T{
+Allowed (disables CDS)
+T}
+.TE
+.PP
+[1] Although there are two ways of specifying a module in a
+\f[CB]\-\-module\-path\f[R], that is, modular JAR or exploded module, only
+modular JARs are supported.
+.PP
+[2] Different \f[I]mp\f[R] can be specified during dump time versus run
+time.
+If an archived class K was loaded from \f[CB]mp1.jar\f[R] at dump time,
+but changes in \f[I]mp\f[R] cause it to be available from a different
+\f[CB]mp2.jar\f[R] at run time, then the archived version of K will be
+disregarded at run time; K will be loaded dynamically.
+.PP
+[3] Currently, only two system modules are upgradeable
+(\f[CB]java.compiler\f[R] and \f[CB]jdk.internal.vm.compiler\f[R]).
+However, these modules are seldom upgraded in production software.
+.PP
+[4] As documented in JEP 261, using \f[CB]\-\-patch\-module\f[R] is
+strongly discouraged for production use.
+.PP
+[5] \f[CB]\-\-limit\-modules\f[R] is intended for testing purposes.
+It is seldom used in production software.
+.PP
+If \f[CB]\-\-upgrade\-module\-path\f[R], \f[CB]\-\-patch\-module\f[R], or
+\f[CB]\-\-limit\-modules\f[R] is specified at dump time, an error will be
+printed and the JVM will exit.
+For example, if the \f[CB]\-\-limit\-modules\f[R] option is specified at
+dump time, the user will see the following error:
+.IP
+.nf
+\f[CB]
+Error\ occurred\ during\ initialization\ of\ VM
+Cannot\ use\ the\ following\ option\ when\ dumping\ the\ shared\ archive:\ \-\-limit\-modules
+\f[R]
+.fi
+.PP
+If \f[CB]\-\-upgrade\-module\-path\f[R], \f[CB]\-\-patch\-module\f[R], or
+\f[CB]\-\-limit\-modules\f[R] is specified at run time, a warning message
+will be printed indicating that CDS is disabled.
+For example, if the \f[CB]\-\-limit\-modules\f[R] options is specified at
+run time, the user will see the following warning:
+.IP
+.nf
+\f[CB]
+Java\ HotSpot(TM)\ 64\-Bit\ Server\ VM\ warning:\ CDS\ is\ disabled\ when\ the\ \-\-limit\-modules\ option\ is\ specified.
+\f[R]
+.fi
+.PP
+Several other noteworthy things include:
+.IP \[bu] 2
+Any valid combinations of \f[CB]\-cp\f[R] and \f[CB]\-\-module\-path\f[R]
+are supported.
+.IP \[bu] 2
+A non\-empty directory in the module path causes a fatal error.
+The user will see the following error messages:
+.RS 2
+.IP
+.nf
+\f[CB]
+Error:\ non\-empty\ directory\ <directory>\ Hint:\ enable\ \-Xlog:class+path=info\ to\ diagnose\ the\ failure\ Error\ occurred\ during\ initialization\ of\ VM\ Cannot\ have\ non\-empty\ directory\ in\ paths
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+Unlike the class path, there\[aq]s no restriction that the module path
+at dump time must be equal to or be a prefix of the module path at run
+time.
+.IP \[bu] 2
+The archive is invalidated if an existing JAR in the module path is
+updated after archive generation.
+.IP \[bu] 2
+Removing a JAR from the module path does not invalidate the shared
+archive.
+Archived classes from the removed JAR are not used at runtime.
+.SS Dynamic CDS archive
+.PP
+Dynamic CDS archive extends AppCDS to allow archiving of classes when a
+Java application exits.
+It improves the usability of AppCDS by eliminating the trial run step
+for creating a class list for each application.
+The archived classes include all loaded application classes and library
+classes that are not present in the default CDS archive which is
+included in the JDK.
+.PP
+A base archive is required when creating a dynamic archive.
+If the base archive is not specified, the default CDS archive is used as
+the base archive.
+.PP
+To create a dynamic CDS archive with the default CDS archive as the base
+archive, just add the
+\f[CB]\-XX:ArchiveClassesAtExit=<dynamic\ archive>\f[R] option to the
+command line for running the Java application.
+.PP
+If the default CDS archive does not exist, the VM will exit with the
+following error:
+.IP
+.nf
+\f[CB]
+ArchiveClassesAtExit\ not\ supported\ when\ base\ CDS\ archive\ is\ not\ loaded
+\f[R]
+.fi
+.PP
+To run the Java application using a dynamic CDS archive, just add the
+\f[CB]\-XX:SharedArchiveFile=<dynamic\ archive>\f[R] option to the command
+line for running the Java application.
+.PP
+The base archive is not required to be specified in the command line.
+The base archive information, including its name and full path, will be
+retrieved from the dynamic archive header.
+Note that the user could also use the \f[CB]\-XX:SharedArchiveFile\f[R]
+option for specifying a regular AppCDS archive.
+Therefore, the specified archive in the \f[CB]\-XX:SharedArchiveFile\f[R]
+option could be either a regular or dynamic archive.
+During VM start up the specified archive header will be read.
+If \f[CB]\-XX:SharedArchiveFile\f[R] refers to a regular archive, then the
+behavior will be unchanged.
+If \f[CB]\-XX:SharedArchiveFile\f[R] refers to a dynamic archive, the VM
+will retrieve the base archive location from the dynamic archive.
+If the dynamic archive was created with the default CDS archive, then
+the current default CDS archive will be used, and will be found relative
+to the current run time environment.
+.PP
+Please refer to \f[B]JDK\-8221706\f[R]
+[https://bugs.openjdk.java.net/browse/JDK\-8221706] for details on error
+checking during dynamic CDS archive dump time and run time.
+.SS Creating a Shared Archive File and Using It to Run an Application
+.SS AppCDS archive
+.PP
+The following steps create a shared archive file that contains all the
+classes used by the \f[CB]test.Hello\f[R] application.
+The last step runs the application with the shared archive file.
+.IP "1." 3
+Create a list of all classes used by the \f[CB]test.Hello\f[R]
+application.
+The following command creates a file named \f[CB]hello.classlist\f[R] that
+contains a list of all classes used by this application:
.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jar(1)
-.RE
-.sp
+.RS
+.PP
+\f[CB]java\ \-Xshare:off\ \-XX:DumpLoadedClassList=hello.classlist\ \-cp\ hello.jar\ test.Hello\f[R]
+.RE
+.PP
+Note that the classpath specified by the \f[CB]\-cp\f[R] parameter must
+contain only JAR files.
+.RE
+.IP "2." 3
+Create a shared archive, named \f[CB]hello.jsa\f[R], that contains all the
+classes in \f[CB]hello.classlist\f[R]:
+.RS 4
+.RS
+.PP
+\f[CB]java\ \-Xshare:dump\ \-XX:SharedArchiveFile=hello.jsa\ \-XX:SharedClassListFile=hello.classlist\ \-cp\ hello.jar\f[R]
+.RE
+.PP
+Note that the classpath used at archive creation time must be the same
+as (or a prefix of) the classpath used at run time.
+.RE
+.IP "3." 3
+Run the application \f[CB]test.Hello\f[R] with the shared archive
+\f[CB]hello.jsa\f[R]:
+.RS 4
+.RS
+.PP
+\f[CB]java\ \-XX:SharedArchiveFile=hello.jsa\ \-cp\ hello.jar\ test.Hello\f[R]
+.RE
+.RE
+.IP "4." 3
+\f[B]Optional\f[R] Verify that the \f[CB]test.Hello\f[R] application is
+using the class contained in the \f[CB]hello.jsa\f[R] shared archive:
+.RS 4
+.RS
+.PP
+\f[CB]java\ \-XX:SharedArchiveFile=hello.jsa\ \-cp\ hello.jar\ \-verbose:class\ test.Hello\f[R]
+.RE
+.PP
+The output of this command should contain the following text:
+.IP
+.nf
+\f[CB]
+Loaded\ test.Hello\ from\ shared\ objects\ file\ by\ sun/misc/Launcher$AppClassLoader
+\f[R]
+.fi
+.RE
+.SS Dynamic CDS archive
+.PP
+The following steps create a dynamic CDS archive file that contains the
+classes used by the \f[CB]test.Hello\f[R] application and are not included
+in the default CDS archive.
+The second step runs the application with the dynamic CDS archive.
+.IP "1." 3
+Create a dynamic CDS archive, named \f[CB]hello.jsa\f[R], that contains
+all the classes in \f[CB]hello.jar\f[R] loaded by the application
+\f[CB]test.Hello\f[R]:
+.RS 4
+.RS
+.PP
+\f[CB]java\ \-XX:ArchiveClassesAtExit=hello.jsa\ \-cp\ hello.jar\ Hello\f[R]
+.RE
+.PP
+Note that the classpath used at archive creation time must be the same
+as (or a prefix of) the classpath used at run time.
+.RE
+.IP "2." 3
+Run the application \f[CB]test.Hello\f[R] with the shared archive
+\f[CB]hello.jsa\f[R]:
+.RS 4
+.RS
+.PP
+\f[CB]java\ \-XX:SharedArchiveFile=hello.jsa\ \-cp\ hello.jar\ test.Hello\f[R]
+.RE
+.RE
+.IP "3." 3
+\f[B]Optional\f[R] Repeat step 4 of the previous section to verify that
+the \f[CB]test.Hello\f[R] application is using the class contained in the
+\f[CB]hello.jsa\f[R] shared archive.
+.PP
+To automate the above steps 1 and 2, one can write a script such as the
+following:
+.IP
+.nf
+\f[CB]
+\ \ \ \ ARCHIVE=hello.jsa
+\ \ \ \ if\ test\ \-f\ $ARCHIVE;\ then
+\ \ \ \ \ \ \ \ FLAG="\-XX:SharedArchiveFile=$ARCHIVE"
+\ \ \ \ else
+\ \ \ \ \ \ \ \ FLAG="\-XX:ArchiveClassesAtExit=$ARCHIVE"
+\ \ \ \ fi
+\ \ \ \ $JAVA_HOME/bin/java\ \-cp\ hello.jar\ $FLAG\ test.Hello
+\f[R]
+.fi
+.PP
+Like an AppCDS archive, the archive needs to be re\-generated if the
+Java version has changed.
+The above script could be adjusted to account for the Java version as
+follows:
+.IP
+.nf
+\f[CB]
+\ \ \ \ ARCHIVE=hello.jsa
+\ \ \ \ VERSION=foo.version
+\ \ \ \ if\ test\ \-f\ $ARCHIVE\ \-a\ \-f\ $VERSION\ &&\ cmp\ \-s\ $VERSION\ $JAVA_HOME/release;\ then
+\ \ \ \ \ \ \ \ FLAG="\-XX:SharedArchiveFile=$ARCHIVE"
+\ \ \ \ else
+\ \ \ \ \ \ \ \ FLAG="\-XX:ArchiveClassesAtExit=$ARCHIVE"
+\ \ \ \ \ \ \ \ cp\ \-f\ $JAVA_HOME/release\ $VERSION
+\ \ \ \ fi
+\ \ \ \ $JAVA_HOME/bin/java\ \-cp\ hello.jar\ $FLAG\ test.Hello
+\f[R]
+.fi
+.PP
+Currently, we don\[aq]t support concurrent dumping operations to the
+same CDS archive.
+Care should be taken to avoid multiple writers to the same CDS archive.
+.PP
+The user could also create a dynamic CDS archive with a specific base
+archive, e.g.
+named as \f[CB]base.jsa\f[R] as follows:
+.RS
+.PP
+\f[CB]java\ \-XX:SharedArchiveFile=base.jsa\ \-XX:ArchiveClassesAtExit=hello.jsa\ \-cp\ hello.jar\ Hello\f[R]
+.RE
+.PP
+To run the application using the dynamic CDS archive \f[CB]hello.jsa\f[R]
+and a specific base CDS archive \f[CB]base.jsa\f[R]:
+.RS
+.PP
+\f[CB]java\ \-XX:SharedArchiveFile=base.jsa:hello.jsa\ \-cp\ hello.jar\ Hello\f[R]
+.RE
+.PP
+Note that on Windows, the above path delimiter \f[CB]:\f[R] should be
+replaced with \f[CB];\f[R].
+.PP
+The above command for specifying a base archive is useful if the base
+archive used for creating the dynamic archive has been moved.
+Normally, just specifying the dynamic archive should be sufficient since
+the base archive info can be retrieved from the dynamic archive header.
+.SS Sharing a Shared Archive Across Multiple Application Processes
+.PP
+You can share the same archive file across multiple applications
+processes.
+This reduces memory usage because the archive is memory\-mapped into the
+address space of the processes.
+The operating system automatically shares the read\-only pages across
+these processes.
+.PP
+The following steps demonstrate how to create a common archive that can
+be shared by different applications.
+Classes from \f[CB]common.jar\f[R], \f[CB]hello.jar\f[R] and \f[CB]hi.jar\f[R]
+are archived in the \f[CB]common.jsa\f[R] because they are all in the
+classpath during the archiving step (step 3).
+.PP
+To include classes from \f[CB]hello.jar\f[R] and \f[CB]hi.jar\f[R], the
+\f[CB]\&.jar\f[R] files must be added to the classpath specified by the
+\f[CB]\-cp\f[R] parameter.
+.IP "1." 3
+Create a list of all classes used by the \f[CB]Hello\f[R] application and
+another list for the \f[CB]Hi\f[R] application:
.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jstat(1)
-.RE
-.br
-'pl 8.5i
-'bp
+.RS
+.PP
+\f[CB]java\ \-XX:DumpLoadedClassList=hello.classlist\ \-cp\ common.jar:hello.jar\ Hello\f[R]
+.RE
+.RS
+.PP
+\f[CB]java\ \-XX:DumpLoadedClassList=hi.classlist\ \-cp\ common.jar:hi.jar\ Hi\f[R]
+.RE
+.RE
+.IP "2." 3
+Create a single list of classes used by all the applications that will
+share the shared archive file.
+.RS 4
+.PP
+\f[B]Oracle Solaris, Linux, and macOS\f[R] The following commands combine
+the files \f[CB]hello.classlist\f[R] and \f[CB]hi.classlist\f[R] into one
+file, \f[CB]common.classlist\f[R]:
+.RS
+.PP
+\f[CB]cat\ hello.classlist\ hi.classlist\ >\ common.classlist\f[R]
+.RE
+.PP
+\f[B]Windows\f[R] The following commands combine the files
+\f[CB]hello.classlist\f[R] and \f[CB]hi.classlist\f[R] into one file,
+\f[CB]common.classlist\f[R]:
+.RS
+.PP
+\f[CB]type\ hello.classlist\ hi.classlist\ >\ common.classlist\f[R]
+.RE
+.RE
+.IP "3." 3
+Create a shared archive named \f[CB]common.jsa\f[R] that contains all the
+classes in \f[CB]common.classlist\f[R]:
+.RS 4
+.RS
+.PP
+\f[CB]java\ \-Xshare:dump\ \-XX:SharedArchiveFile=common.jsa\ \-XX:SharedClassListFile=common.classlist\ \-cp\ common.jar:hello.jar:hi.jar\f[R]
+.RE
+.PP
+The classpath parameter used is the common class path prefix shared by
+the \f[CB]Hello\f[R] and \f[CB]Hi\f[R] applications.
+.RE
+.IP "4." 3
+Run the \f[CB]Hello\f[R] and \f[CB]Hi\f[R] applications with the same shared
+archive:
+.RS 4
+.RS
+.PP
+\f[CB]java\ \-XX:SharedArchiveFile=common.jsa\ \-cp\ common.jar:hello.jar:hi.jar\ Hello\f[R]
+.RE
+.RS
+.PP
+\f[CB]java\ \-XX:SharedArchiveFile=common.jsa\ \-cp\ common.jar:hello.jar:hi.jar\ Hi\f[R]
+.RE
+.RE
+.SS Specifying Additional Shared Data Added to an Archive File
+.PP
+The \f[CB]SharedArchiveConfigFile\f[R] option is used to specify
+additional shared data to add to the archive file.
+.RS
+.PP
+\f[CB]\-XX:SharedArchiveConfigFile=\f[R]\f[I]shared_config_file\f[R]
+.RE
+.PP
+JDK 9 and later supports adding both symbols and\ string objects to an
+archive for memory sharing\ when you have multiple JVM processes running
+on the same host.
+An example of this is having multiple JVM processes that use the same
+set of Java EE classes.
+When these common classes are loaded and used, new symbols and strings
+may be created and added to the JVM\[aq]s internal "symbol" and "string"
+tables.\ At runtime, the symbols or string objects mapped from the
+archive file can be shared across multiple JVM processes, resulting in a
+reduction of overall memory usage.\ In addition, archiving strings also
+provides added performance benefits in both startup time and runtime
+execution.
+.PP
+In JDK 10 and later, CONSTANT_String entries in archived classes are
+resolved to interned String objects at dump time, and all interned
+String objects are archived.
+However, even though all CONSTANT_String literals in all archived
+classes are resolved, it might still beneficial to add additional
+strings that are not string literals in class files, but are likely to
+be used by your application at run time.
+.PP
+Symbol data should be generated by the \f[CB]jcmd\f[R] tool attaching to a
+running JVM process.
+See \f[B]jcmd\f[R].
+.PP
+The following is an example of the symbol dumping command in
+\f[CB]jcmd\f[R]:\
+.RS
+.PP
+\f[CB]jcmd\f[R] \f[I]pid\f[R] \f[CB]VM.symboltable\ \-verbose\f[R]
+.RE
+.RS
+.PP
+\f[B]Note:\f[R] The first line (process ID) and the second line
+(\f[CB]\@VERSION\ ...\f[R]) of this \f[CB]jcmd\f[R] output should be
+excluded from the configuration file.
+.RE
+.SS Example of a Configuration File
+.PP
+The following is an example of a configuration file:
+.IP
+.nf
+\f[CB]
+VERSION:\ 1.0
+\@SECTION:\ Symbol
+10\ \-1:\ linkMethod
+\f[R]
+.fi
+.PP
+In the configuration file example, the \f[CB]\@SECTION:\ Symbol\f[R] entry
+uses the following format:
+.RS
+.PP
+\f[I]length\f[R] \f[I]refcount\f[R]\f[CB]:\f[R] \f[I]symbol\f[R]
+.RE
+.PP
+The \f[I]refcount\f[R] for a shared symbol is always \f[CB]\-1\f[R].
+.PP
+\f[CB]\@SECTION\f[R] specifies the type of the section that follows it.
+All data within the section must be the same type that\[aq]s specified
+by \f[CB]\@SECTION\f[R].
+Different types of data can\[aq]t be mixed.
+Multiple separated data sections for the same type specified by
+different \f[CB]\@SECTION\f[R] are allowed within one
+\f[CB]shared_config_file\f[R] .
+.SH PERFORMANCE TUNING EXAMPLES
+.PP
+You can use the Java advanced runtime options to optimize the
+performance of your applications.
+.SS Tuning for Higher Throughput
+.PP
+Use the following commands and advanced options to achieve higher
+throughput performance for your application:
+.RS
+.PP
+\f[CB]java\ \-server\ \-XX:+UseParallelGC\ \-XX:+UseLargePages\ \-Xmn10g\ \ \-Xms26g\ \-Xmx26g\f[R]
+.RE
+.SS Tuning for Lower Response Time
+.PP
+Use the following commands and advanced options to achieve lower
+response times for your application:
+.RS
+.PP
+\f[CB]java\ \-XX:+UseG1GC\ \-Xms26g\ Xmx26g\ \-XX:MaxGCPauseMillis=500\f[R]
+.RE
+.SS Keeping the Java Heap Small and Reducing the Dynamic Footprint of
+Embedded Applications
+.PP
+Use the following advanced runtime options to keep the Java heap small
+and reduce the dynamic footprint of embedded applications:
+.RS
+.PP
+\f[CB]\-XX:MaxHeapFreeRatio=10\ \-XX:MinHeapFreeRatio=5\f[R]
+.RE
+.RS
+.PP
+\f[B]Note:\f[R] The defaults for these two options are 70% and 40%
+respectively.
+Because performance sacrifices can occur when using these small
+settings, you should optimize for a small footprint by reducing these
+settings as much as possible without introducing unacceptable
+performance degradation.
+.RE
+.SH EXIT STATUS
+.PP
+The following exit values are typically returned by the launcher when
+the launcher is called with the wrong arguments, serious errors, or
+exceptions thrown by the JVM.
+However, a Java application may choose to return any value by using the
+API call \f[CB]System.exit(exitValue)\f[R].
+The values are:
+.IP \[bu] 2
+\f[CB]0\f[R]: Successful completion
+.IP \[bu] 2
+\f[CB]>0\f[R]: An error occurred
--- a/src/java.base/share/man/keytool.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/java.base/share/man/keytool.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,5 @@
-'\" t
-.\" Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+.\"t
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,1600 +20,2807 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 03 March 2015
-.\" SectDesc: Security Tools
-.\" Title: keytool.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH keytool 1 "03 March 2015" "JDK 8" "Security Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-keytool \- Manages a keystore (database) of cryptographic keys, X\&.509 certificate chains, and trusted certificates\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBkeytool\fR [\fIcommands\fR]
-.fi
-.sp
-.TP
-\fIcommands\fR
-See Commands\&. These commands are categorized by task as follows:
-.RS
-.TP 0.2i
-\(bu
-Create or Add Data to the Keystore
-.RS
-.TP 0.2i
-\(bu
--gencert
-.TP 0.2i
-\(bu
--genkeypair
-.TP 0.2i
-\(bu
--genseckey
-.TP 0.2i
-\(bu
--importcert
-.TP 0.2i
-\(bu
--importpassword
-.RE
+.TH "KEYTOOL" "1" "2019" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+keytool \- a key and certificate management utility
+.SH SYNOPSIS
+.PP
+\f[CB]keytool\f[R] [\f[I]commands\f[R]]
+.TP
+.B \f[I]commands\f[R]
+Commands for \f[CB]keytool\f[R] include the following:
+.RS
+.IP \[bu] 2
+\f[CB]\-certreq\f[R]: Generates a certificate request
+.IP \[bu] 2
+\f[CB]\-changealias\f[R]: Changes an entry\[aq]s alias
+.IP \[bu] 2
+\f[CB]\-delete\f[R]: Deletes an entry
+.IP \[bu] 2
+\f[CB]\-exportcert\f[R]: Exports certificate
+.IP \[bu] 2
+\f[CB]\-genkeypair\f[R]: Generates a key pair
+.IP \[bu] 2
+\f[CB]\-genseckey\f[R]: Generates a secret key
+.IP \[bu] 2
+\f[CB]\-gencert\f[R]: Generates a certificate from a certificate request
+.IP \[bu] 2
+\f[CB]\-importcert\f[R]: Imports a certificate or a certificate chain
+.IP \[bu] 2
+\f[CB]\-importpass\f[R]: Imports a password
+.IP \[bu] 2
+\f[CB]\-importkeystore\f[R]: Imports one or all entries from another
+keystore
+.IP \[bu] 2
+\f[CB]\-keypasswd\f[R]: Changes the key password of an entry
+.IP \[bu] 2
+\f[CB]\-list\f[R]: Lists entries in a keystore
+.IP \[bu] 2
+\f[CB]\-printcert\f[R]: Prints the content of a certificate
+.IP \[bu] 2
+\f[CB]\-printcertreq\f[R]: Prints the content of a certificate request
+.IP \[bu] 2
+\f[CB]\-printcrl\f[R]: Prints the content of a Certificate Revocation List
+(CRL) file
+.IP \[bu] 2
+\f[CB]\-storepasswd\f[R]: Changes the store password of a keystore
+.IP \[bu] 2
+\f[CB]\-showinfo\f[R]: Displays security\-related information
+.PP
+See \f[B]Commands and Options\f[R] for a description of these commands
+with their options.
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]keytool\f[R] command is a key and certificate management
+utility.
+It enables users to administer their own public/private key pairs and
+associated certificates for use in self\-authentication (where a user
+authenticates themselves to other users and services) or data integrity
+and authentication services, by using digital signatures.
+The \f[CB]keytool\f[R] command also enables users to cache the public keys
+(in the form of certificates) of their communicating peers.
+.PP
+A certificate is a digitally signed statement from one entity (person,
+company, and so on), which says that the public key (and some other
+information) of some other entity has a particular value.
+When data is digitally signed, the signature can be verified to check
+the data integrity and authenticity.
+Integrity means that the data hasn\[aq]t been modified or tampered with,
+and authenticity means that the data comes from the individual who
+claims to have created and signed it.
+.PP
+The \f[CB]keytool\f[R] command also enables users to administer secret
+keys and passphrases used in symmetric encryption and decryption (Data
+Encryption Standard).
+It can also display other security\-related information.
+.PP
+The \f[CB]keytool\f[R] command stores the keys and certificates in a
+keystore.
+.SH COMMAND AND OPTION NOTES
+.PP
+The following notes apply to the descriptions in \f[B]Commands and
+Options\f[R]:
+.IP \[bu] 2
+All command and option names are preceded by a hyphen sign
+(\f[CB]\-\f[R]).
+.IP \[bu] 2
+Only one command can be provided.
+.IP \[bu] 2
+Options for each command can be provided in any order.
+.IP \[bu] 2
+There are two kinds of options, one is single\-valued which should be
+only provided once.
+If a single\-valued option is provided multiple times, the value of the
+last one is used.
+The other type is multi\-valued, which can be provided multiple times
+and all values are used.
+The only multi\-valued option currently supported is the \f[CB]\-ext\f[R]
+option used to generate X.509v3 certificate extensions.
+.IP \[bu] 2
+All items not italicized or in braces ({ }) or brackets ([ ]) are
+required to appear as is.
+.IP \[bu] 2
+Braces surrounding an option signify that a default value is used when
+the option isn\[aq]t specified on the command line.
+Braces are also used around the \f[CB]\-v\f[R], \f[CB]\-rfc\f[R], and
+\f[CB]\-J\f[R] options, which have meaning only when they appear on the
+command line.
+They don\[aq]t have any default values.
+.IP \[bu] 2
+Brackets surrounding an option signify that the user is prompted for the
+values when the option isn\[aq]t specified on the command line.
+For the \f[CB]\-keypass\f[R] option, if you don\[aq]t specify the option
+on the command line, then the \f[CB]keytool\f[R] command first attempts to
+use the keystore password to recover the private/secret key.
+If this attempt fails, then the \f[CB]keytool\f[R] command prompts you for
+the private/secret key password.
+.IP \[bu] 2
+Items in italics (option values) represent the actual values that must
+be supplied.
+For example, here is the format of the \f[CB]\-printcert\f[R] command:
+.RS 2
+.RS
+.PP
+\f[CB]keytool\ \-printcert\f[R] {\f[CB]\-file\f[R] \f[I]cert_file\f[R]}
+{\f[CB]\-v\f[R]}
+.RE
+.PP
+When you specify a \f[CB]\-printcert\f[R] command, replace
+\f[I]cert_file\f[R] with the actual file name, as follows:
+\f[CB]keytool\ \-printcert\ \-file\ VScert.cer\f[R]
+.RE
+.IP \[bu] 2
+Option values must be enclosed in quotation marks when they contain a
+blank (space).
+.SH COMMANDS AND OPTIONS
+.PP
+The keytool commands and their options can be grouped by the tasks that
+they perform.
+.PP
+\f[B]Commands for Creating or Adding Data to the Keystore\f[R]:
+.IP \[bu] 2
+\f[CB]\-gencert\f[R]
+.IP \[bu] 2
+\f[CB]\-genkeypair\f[R]
+.IP \[bu] 2
+\f[CB]\-genseckey\f[R]
+.IP \[bu] 2
+\f[CB]\-importcert\f[R]
+.IP \[bu] 2
+\f[CB]\-importpass\f[R]
+.PP
+\f[B]Commands for Importing Contents from Another Keystore\f[R]:
+.IP \[bu] 2
+\f[CB]\-importkeystore\f[R]
+.PP
+\f[B]Commands for Generating a Certificate Request\f[R]:
+.IP \[bu] 2
+\f[CB]\-certreq\f[R]
+.PP
+\f[B]Commands for Exporting Data\f[R]:
+.IP \[bu] 2
+\f[CB]\-exportcert\f[R]
+.PP
+\f[B]Commands for Displaying Data\f[R]:
+.IP \[bu] 2
+\f[CB]\-list\f[R]
+.IP \[bu] 2
+\f[CB]\-printcert\f[R]
+.IP \[bu] 2
+\f[CB]\-printcertreq\f[R]
+.IP \[bu] 2
+\f[CB]\-printcrl\f[R]
+.PP
+\f[B]Commands for Managing the Keystore\f[R]:
+.IP \[bu] 2
+\f[CB]\-storepasswd\f[R]
+.IP \[bu] 2
+\f[CB]\-keypasswd\f[R]
+.IP \[bu] 2
+\f[CB]\-delete\f[R]
+.IP \[bu] 2
+\f[CB]\-changealias\f[R]
+.PP
+\f[B]Commands for Displaying Security\-related Information\f[R]:
+.IP \[bu] 2
+\f[CB]\-showinfo\f[R]
+.SH COMMANDS FOR CREATING OR ADDING DATA TO THE KEYSTORE
+.TP
+.B \f[CB]\-gencert\f[R]
+The following are the available options for the \f[CB]\-gencert\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-rfc\f[R]}: Output in RFC (Request For Comment) style
+.IP \[bu] 2
+{\f[CB]\-infile\f[R] \f[I]infile\f[R]}: Input file name
+.IP \[bu] 2
+{\f[CB]\-outfile\f[R] \f[I]outfile\f[R]}: Output file name
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+{\f[CB]\-sigalg\f[R] \f[I]sigalg\f[R]}: Signature algorithm name
+.IP \[bu] 2
+{\f[CB]\-dname\f[R] \f[I]dname\f[R]}: Distinguished name
+.IP \[bu] 2
+{\f[CB]\-startdate\f[R] \f[I]startdate\f[R]}: Certificate validity start
+date and time
+.IP \[bu] 2
+{\f[CB]\-ext\f[R] \f[I]ext\f[R]}*: X.509 extension
+.IP \[bu] 2
+{\f[CB]\-validity\f[R] \f[I]days\f[R]}: Validity number of days
+.IP \[bu] 2
+[\f[CB]\-keypass\f[R] \f[I]arg\f[R]]: Key password
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Adds a security provider by name (such as SunPKCS11)
+with an optional configure argument.
+The value of the security provider is the name of a security provider
+that is defined in a module.
+.RS 2
+.PP
+For example,
+.RS
+.PP
+\f[CB]keytool\ \-addprovider\ SunPKCS11\ \-providerarg\ some.cfg\ ...\f[R]
+.RE
+.PP
+\f[B]Note:\f[R]
+.PP
+For compatibility reasons, the SunPKCS11 and OracleUcrypto providers can
+still be loaded with
+\f[CB]\-providerclass\ sun.security.pkcs11.SunPKCS11\f[R] and
+\f[CB]\-providerclass\ com.oracle.security.crypto.UcryptoProvider\f[R]
+even if they are now defined in modules.
+These are the only modules included in JDK that need a configuration,
+and therefore the most widely used with the \f[CB]\-providerclass\f[R]
+option.
+For legacy security providers located on classpath and loaded by
+reflection, \f[CB]\-providerclass\f[R] should still be used.
+.RE
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.RS 2
+.PP
+For example, if \f[CB]MyProvider\f[R] is a legacy provider loaded via
+reflection,
+.RS
+.PP
+\f[CB]keytool\ \-providerclass\ com.example.MyProvider\ ...\f[R]
+.RE
+.RE
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
+.PP
+Use the \f[CB]\-gencert\f[R] command to generate a certificate as a
+response to a certificate request file (which can be created by the
+\f[CB]keytool\ \-certreq\f[R] command).
+The command reads the request either from \f[I]infile\f[R] or, if
+omitted, from the standard input, signs it by using the alias\[aq]s
+private key, and outputs the X.509 certificate into either
+\f[I]outfile\f[R] or, if omitted, to the standard output.
+When \f[CB]\-rfc\f[R] is specified, the output format is Base64\-encoded
+PEM; otherwise, a binary DER is created.
+.PP
+The \f[CB]\-sigalg\f[R] value specifies the algorithm that should be used
+to sign the certificate.
+The \f[I]startdate\f[R] argument is the start time and date that the
+certificate is valid.
+The \f[I]days\f[R] argument tells the number of days for which the
+certificate should be considered valid.
+.PP
+When \f[I]dname\f[R] is provided, it is used as the subject of the
+generated certificate.
+Otherwise, the one from the certificate request is used.
+.PP
+The \f[CB]\-ext\f[R] value shows what X.509 extensions will be embedded in
+the certificate.
+Read \f[B]Common Command Options\f[R] for the grammar of \f[CB]\-ext\f[R].
+.PP
+The \f[CB]\-gencert\f[R] option enables you to create certificate chains.
+The following example creates a certificate, \f[CB]e1\f[R], that contains
+three certificates in its certificate chain.
+.PP
+The following commands creates four key pairs named \f[CB]ca\f[R],
+\f[CB]ca1\f[R], \f[CB]ca2\f[R], and \f[CB]e1\f[R]:
+.IP
+.nf
+\f[CB]
+keytool\ \-alias\ ca\ \-dname\ CN=CA\ \-genkeypair
+keytool\ \-alias\ ca1\ \-dname\ CN=CA\ \-genkeypair
+keytool\ \-alias\ ca2\ \-dname\ CN=CA\ \-genkeypair
+keytool\ \-alias\ e1\ \-dname\ CN=E1\ \-genkeypair
+\f[R]
+.fi
+.PP
+The following two commands create a chain of signed certificates;
+\f[CB]ca\f[R] signs \f[CB]ca1\f[R] and \f[CB]ca1\f[R] signs \f[CB]ca2\f[R], all
+of which are self\-issued:
+.IP
+.nf
+\f[CB]
+keytool\ \-alias\ ca1\ \-certreq\ |
+\ \ \ \ keytool\ \-alias\ ca\ \-gencert\ \-ext\ san=dns:ca1\ |
+\ \ \ \ keytool\ \-alias\ ca1\ \-importcert
-.TP 0.2i
-\(bu
-Import Contents From Another Keystore
-.RS
-.TP 0.2i
-\(bu
--importkeystore
-.RE
-
-.TP 0.2i
-\(bu
-Generate Certificate Request
-.RS
-.TP 0.2i
-\(bu
--certreq
-.RE
-
-.TP 0.2i
-\(bu
-Export Data
-.RS
-.TP 0.2i
-\(bu
--exportcert
-.RE
-
-.TP 0.2i
-\(bu
-Display Data
-.RS
-.TP 0.2i
-\(bu
--list
-.TP 0.2i
-\(bu
--printcert
-.TP 0.2i
-\(bu
--printcertreq
-.TP 0.2i
-\(bu
--printcrl
-.RE
-
-.TP 0.2i
-\(bu
-Manage the Keystore
-.RS
-.TP 0.2i
-\(bu
--storepasswd
-.TP 0.2i
-\(bu
--keypasswd
-.TP 0.2i
-\(bu
--delete
-.TP 0.2i
-\(bu
--changealias
-.RE
-
-.TP 0.2i
-\(bu
-Get Help
-.RS
-.TP 0.2i
-\(bu
--help
-.RE
-
-.RE
-
-.SH DESCRIPTION
-The \f3keytool\fR command is a key and certificate management utility\&. It enables users to administer their own public/private key pairs and associated certificates for use in self-authentication (where the user authenticates himself or herself to other users and services) or data integrity and authentication services, using digital signatures\&. The \f3keytool\fR command also enables users to cache the public keys (in the form of certificates) of their communicating peers\&.
+keytool\ \-alias\ ca2\ \-certreq\ |
+\ \ \ \ keytool\ \-alias\ ca1\ \-gencert\ \-ext\ san=dns:ca2\ |
+\ \ \ \ keytool\ \-alias\ ca2\ \-importcert
+\f[R]
+.fi
+.PP
+The following command creates the certificate \f[CB]e1\f[R] and stores it
+in the \f[CB]e1.cert\f[R] file, which is signed by \f[CB]ca2\f[R].
+As a result, \f[CB]e1\f[R] should contain \f[CB]ca\f[R], \f[CB]ca1\f[R], and
+\f[CB]ca2\f[R] in its certificate chain:
+.RS
+.PP
+\f[CB]keytool\ \-alias\ e1\ \-certreq\ |\ keytool\ \-alias\ ca2\ \-gencert\ >\ e1.cert\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-genkeypair\f[R]
+The following are the available options for the \f[CB]\-genkeypair\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+{\f[CB]\-keyalg\f[R] \f[I]alg\f[R]}: Key algorithm name
+.IP \[bu] 2
+{\f[CB]\-keysize\f[R] \f[I]size\f[R]}: Key bit size
+.IP \[bu] 2
+{\f[CB]\-groupname\f[R] \f[I]name\f[R]}: Group name.
+For example, an Elliptic Curve name.
+.IP \[bu] 2
+{\f[CB]\-sigalg\f[R] \f[I]alg\f[R]}: Signature algorithm name
+.IP \[bu] 2
+[\f[CB]\-dname\f[R] \f[I]name\f[R]]: Distinguished name
+.IP \[bu] 2
+{\f[CB]\-startdate\f[R] \f[I]date\f[R]}: Certificate validity start date
+and time
+.IP \[bu] 2
+[\f[CB]\-ext\f[R] \f[I]value\f[R]}*: X.509 extension
+.IP \[bu] 2
+{\f[CB]\-validity\f[R] \f[I]days\f[R]}: Validity number of days
+.IP \[bu] 2
+[\f[CB]\-keypass\f[R] \f[I]arg\f[R]]: Key password
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]] }: Add security provider by fully qualified class name
+with an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
+.PP
+Use the \f[CB]\-genkeypair\f[R] command to generate a key pair (a public
+key and associated private key).
+Wraps the public key in an X.509 v3 self\-signed certificate, which is
+stored as a single\-element certificate chain.
+This certificate chain and the private key are stored in a new keystore
+entry that is identified by its alias.
+.PP
+The \f[CB]\-keyalg\f[R] value specifies the algorithm to be used to
+generate the key pair, and the \f[CB]\-keysize\f[R] value specifies the
+size of each key to be generated.
+The \f[CB]\-sigalg\f[R] value specifies the algorithm that should be used
+to sign the self\-signed certificate.
+This algorithm must be compatible with the \f[CB]\-keyalg\f[R] value.
+.PP
+The \f[CB]\-groupname\f[R] value specifies the named group (for example,
+the standard or predefined name of an Elliptic Curve) of the key to be
+generated.
+Only one of \f[CB]\-groupname\f[R] and \f[CB]\-keysize\f[R] can be
+specified.
+.PP
+The \f[CB]\-dname\f[R] value specifies the X.500 Distinguished Name to be
+associated with the value of \f[CB]\-alias\f[R], and is used as the issuer
+and subject fields in the self\-signed certificate.
+If a distinguished name is not provided at the command line, then the
+user is prompted for one.
+.PP
+The value of \f[CB]\-keypass\f[R] is a password used to protect the
+private key of the generated key pair.
+If a password is not provided, then the user is prompted for it.
+If you press the \f[B]Return\f[R] key at the prompt, then the key
+password is set to the same password as the keystore password.
+The \f[CB]\-keypass\f[R] value must have at least six characters.
+.PP
+The value of \f[CB]\-startdate\f[R] specifies the issue time of the
+certificate, also known as the "Not Before" value of the X.509
+certificate\[aq]s Validity field.
+.PP
+The option value can be set in one of these two forms:
+.PP
+([\f[CB]+\-\f[R]]\f[I]nnn\f[R][\f[CB]ymdHMS\f[R]])+
+.PP
+[\f[I]yyyy\f[R]\f[CB]/\f[R]\f[I]mm\f[R]\f[CB]/\f[R]\f[I]dd\f[R]]
+[\f[I]HH\f[R]\f[CB]:\f[R]\f[I]MM\f[R]\f[CB]:\f[R]\f[I]SS\f[R]]
+.PP
+With the first form, the issue time is shifted by the specified value
+from the current time.
+The value is a concatenation of a sequence of subvalues.
+Inside each subvalue, the plus sign (+) means shift forward, and the
+minus sign (\-) means shift backward.
+The time to be shifted is \f[I]nnn\f[R] units of years, months, days,
+hours, minutes, or seconds (denoted by a single character of \f[CB]y\f[R],
+\f[CB]m\f[R], \f[CB]d\f[R], \f[CB]H\f[R], \f[CB]M\f[R], or \f[CB]S\f[R]
+respectively).
+The exact value of the issue time is calculated by using the
+\f[CB]java.util.GregorianCalendar.add(int\ field,\ int\ amount)\f[R]
+method on each subvalue, from left to right.
+For example, the issue time can be specified by:
+.IP
+.nf
+\f[CB]
+Calendar\ c\ =\ new\ GregorianCalendar();
+c.add(Calendar.YEAR,\ \-1);
+c.add(Calendar.MONTH,\ 1);
+c.add(Calendar.DATE,\ \-1);
+return\ c.getTime()
+\f[R]
+.fi
.PP
-A certificate is a digitally signed statement from one entity (person, company, and so on\&.), that says that the public key (and some other information) of some other entity has a particular value\&. (See Certificate\&.) When data is digitally signed, the signature can be verified to check the data integrity and authenticity\&. Integrity means that the data has not been modified or tampered with, and authenticity means the data comes from whoever claims to have created and signed it\&.
+With the second form, the user sets the exact issue time in two parts,
+year/month/day and hour:minute:second (using the local time zone).
+The user can provide only one part, which means the other part is the
+same as the current date (or time).
+The user must provide the exact number of digits shown in the format
+definition (padding with 0 when shorter).
+When both date and time are provided, there is one (and only one) space
+character between the two parts.
+The hour should always be provided in 24\-hour format.
+.PP
+When the option isn\[aq]t provided, the start date is the current time.
+The option can only be provided one time.
+.PP
+The value of \f[I]date\f[R] specifies the number of days (starting at the
+date specified by \f[CB]\-startdate\f[R], or the current date when
+\f[CB]\-startdate\f[R] isn\[aq]t specified) for which the certificate
+should be considered valid.
+.RE
+.TP
+.B \f[CB]\-genseckey\f[R]
+The following are the available options for the \f[CB]\-genseckey\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+[\f[CB]\-keypass\f[R] \f[I]arg\f[R]]: Key password
+.IP \[bu] 2
+{\f[CB]\-keyalg\f[R] \f[I]alg\f[R]}: Key algorithm name
+.IP \[bu] 2
+{\f[CB]\-keysize\f[R] \f[I]size\f[R]}: Key bit size
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
+.PP
+Use the \f[CB]\-genseckey\f[R] command to generate a secret key and store
+it in a new \f[CB]KeyStore.SecretKeyEntry\f[R] identified by
+\f[CB]alias\f[R].
+.PP
+The value of \f[CB]\-keyalg\f[R] specifies the algorithm to be used to
+generate the secret key, and the value of \f[CB]\-keysize\f[R] specifies
+the size of the key that is generated.
+The \f[CB]\-keypass\f[R] value is a password that protects the secret key.
+If a password is not provided, then the user is prompted for it.
+If you press the \f[B]Return\f[R] key at the prompt, then the key
+password is set to the same password that is used for the
+\f[CB]\-keystore\f[R].
+The \f[CB]\-keypass\f[R] value must contain at least six characters.
+.RE
+.TP
+.B \f[CB]\-importcert\f[R]
+The following are the available options for the \f[CB]\-importcert\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-noprompt\f[R]}: Do not prompt
+.IP \[bu] 2
+{\f[CB]\-trustcacerts\f[R]}: Trust certificates from cacerts
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password is provided through protected mechanism
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+{\f[CB]\-file\f[R] \f[I]file\f[R]}: Input file name
+.IP \[bu] 2
+[\f[CB]\-keypass\f[R] \f[I]arg\f[R]]: Key password
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+{\f[CB]\-cacerts\f[R]}: Access the cacerts keystore
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.PP
+Use the \f[CB]\-importcert\f[R] command to read the certificate or
+certificate chain (where the latter is supplied in a PKCS#7 formatted
+reply or in a sequence of X.509 certificates) from \f[CB]\-file\f[R]
+\f[I]file\f[R], and store it in the \f[CB]keystore\f[R] entry identified by
+\f[CB]\-alias\f[R].
+If \f[CB]\-file\f[R] \f[I]file\f[R] is not specified, then the certificate
+or certificate chain is read from \f[CB]stdin\f[R].
+.PP
+The \f[CB]keytool\f[R] command can import X.509 v1, v2, and v3
+certificates, and PKCS#7 formatted certificate chains consisting of
+certificates of that type.
+The data to be imported must be provided either in binary encoding
+format or in printable encoding format (also known as Base64 encoding)
+as defined by the Internet RFC 1421 standard.
+In the latter case, the encoding must be bounded at the beginning by a
+string that starts with \f[CB]\-\-\-\-\-BEGIN\f[R], and bounded at the end
+by a string that starts with \f[CB]\-\-\-\-\-END\f[R].
+.PP
+You import a certificate for two reasons: To add it to the list of
+trusted certificates, and to import a certificate reply received from a
+certificate authority (CA) as the result of submitting a Certificate
+Signing Request (CSR) to that CA.
+See the \f[CB]\-certreq\f[R] command in \f[B]Commands for Generating a
+Certificate Request\f[R].
.PP
-The \f3keytool\fR command also enables users to administer secret keys and passphrases used in symmetric encryption and decryption (DES)\&.
+The type of import is indicated by the value of the \f[CB]\-alias\f[R]
+option.
+If the alias doesn\[aq]t point to a key entry, then the \f[CB]keytool\f[R]
+command assumes you are adding a trusted certificate entry.
+In this case, the alias shouldn\[aq]t already exist in the keystore.
+If the alias does exist, then the \f[CB]keytool\f[R] command outputs an
+error because a trusted certificate already exists for that alias, and
+doesn\[aq]t import the certificate.
+If \f[CB]\-alias\f[R] points to a key entry, then the \f[CB]keytool\f[R]
+command assumes that you\[aq]re importing a certificate reply.
+.RE
+.TP
+.B \f[CB]\-importpass\f[R]
+The following are the available options for the \f[CB]\-importpass\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+[\f[CB]\-keypass\f[R] \f[I]arg\f[R]]: Key password
+.IP \[bu] 2
+{\f[CB]\-keyalg\f[R] \f[I]alg\f[R]}: Key algorithm name
+.IP \[bu] 2
+{\f[CB]\-keysize\f[R] \f[I]size\f[R]}: Key bit size
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
+.PP
+Use the \f[CB]\-importpass\f[R] command to imports a passphrase and store
+it in a new \f[CB]KeyStore.SecretKeyEntry\f[R] identified by
+\f[CB]\-alias\f[R].
+The passphrase may be supplied via the standard input stream; otherwise
+the user is prompted for it.
+The \f[CB]\-keypass\f[R] option provides a password to protect the
+imported passphrase.
+If a password is not provided, then the user is prompted for it.
+If you press the \f[B]Return\f[R] key at the prompt, then the key
+password is set to the same password as that used for the
+\f[CB]keystore\f[R].
+The \f[CB]\-keypass\f[R] value must contain at least six characters.
+.RE
+.SH COMMANDS FOR IMPORTING CONTENTS FROM ANOTHER KEYSTORE
+.TP
+.B \f[CB]\-importkeystore\f[R]
+The following are the available options for the
+\f[CB]\-importkeystore\f[R] command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-srckeystore\f[R] \f[I]keystore\f[R]}: Source keystore name
+.IP \[bu] 2
+{\f[CB]\-destkeystore\f[R] \f[I]keystore\f[R]}: Destination keystore name
+.IP \[bu] 2
+{\f[CB]\-srcstoretype\f[R] \f[I]type\f[R]}: Source keystore type
+.IP \[bu] 2
+{\f[CB]\-deststoretype\f[R] \f[I]type\f[R]}: Destination keystore type
+.IP \[bu] 2
+[\f[CB]\-srcstorepass\f[R] \f[I]arg\f[R]]: Source keystore password
+.IP \[bu] 2
+[\f[CB]\-deststorepass\f[R] \f[I]arg\f[R]]: Destination keystore password
+.IP \[bu] 2
+{\f[CB]\-srcprotected\f[R]}: Source keystore password protected
+.IP \[bu] 2
+{\f[CB]\-destprotected\f[R]}: Destination keystore password protected
+.IP \[bu] 2
+{\f[CB]\-srcprovidername\f[R] \f[I]name\f[R]}: Source keystore provider
+name
+.IP \[bu] 2
+{\f[CB]\-destprovidername\f[R] \f[I]name\f[R]}: Destination keystore
+provider name
+.IP \[bu] 2
+{\f[CB]\-srcalias\f[R] \f[I]alias\f[R]}: Source alias
+.IP \[bu] 2
+{\f[CB]\-destalias\f[R] \f[I]alias\f[R]}: Destination alias
+.IP \[bu] 2
+[\f[CB]\-srckeypass\f[R] \f[I]arg\f[R]]: Source key password
+.IP \[bu] 2
+[\f[CB]\-destkeypass\f[R] \f[I]arg\f[R]]: Destination key password
+.IP \[bu] 2
+{\f[CB]\-noprompt\f[R]}: Do not prompt
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]: Add security provider by name (such as SunPKCS11) with an
+optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.PP
+\f[B]Note:\f[R]
+.PP
+This is the first line of all options:
+.RS
+.PP
+\f[CB]\-srckeystore\f[R] \f[I]keystore\f[R] \f[CB]\-destkeystore\f[R]
+\f[I]keystore\f[R]
+.RE
+.PP
+Use the \f[CB]\-importkeystore\f[R] command to import a single entry or
+all entries from a source keystore to a destination keystore.
+.PP
+\f[B]Note:\f[R]
+.PP
+If you do not specify \f[CB]\-destkeystore\f[R] when using the
+\f[CB]keytool\ \-importkeystore\f[R] command, then the default keystore
+used is \f[CB]$HOME/.keystore\f[R].
+.PP
+When the \f[CB]\-srcalias\f[R] option is provided, the command imports the
+single entry identified by the alias to the destination keystore.
+If a destination alias isn\[aq]t provided with \f[CB]\-destalias\f[R],
+then \f[CB]\-srcalias\f[R] is used as the destination alias.
+If the source entry is protected by a password, then
+\f[CB]\-srckeypass\f[R] is used to recover the entry.
+If \f[CB]\-srckeypass\f[R] isn\[aq]t provided, then the \f[CB]keytool\f[R]
+command attempts to use \f[CB]\-srcstorepass\f[R] to recover the entry.
+If \f[CB]\-srcstorepass\f[R] is not provided or is incorrect, then the
+user is prompted for a password.
+The destination entry is protected with \f[CB]\-destkeypass\f[R].
+If \f[CB]\-destkeypass\f[R] isn\[aq]t provided, then the destination entry
+is protected with the source entry password.
+For example, most third\-party tools require \f[CB]storepass\f[R] and
+\f[CB]keypass\f[R] in a PKCS #12 keystore to be the same.
+To create a PKCS#12 keystore for these tools, always specify a
+\f[CB]\-destkeypass\f[R] that is the same as \f[CB]\-deststorepass\f[R].
+.PP
+If the \f[CB]\-srcalias\f[R] option isn\[aq]t provided, then all entries
+in the source keystore are imported into the destination keystore.
+Each destination entry is stored under the alias from the source entry.
+If the source entry is protected by a password, then
+\f[CB]\-srcstorepass\f[R] is used to recover the entry.
+If \f[CB]\-srcstorepass\f[R] is not provided or is incorrect, then the
+user is prompted for a password.
+If a source keystore entry type isn\[aq]t supported in the destination
+keystore, or if an error occurs while storing an entry into the
+destination keystore, then the user is prompted either to skip the entry
+and continue or to quit.
+The destination entry is protected with the source entry password.
+.PP
+If the destination alias already exists in the destination keystore,
+then the user is prompted either to overwrite the entry or to create a
+new entry under a different alias name.
+.PP
+If the \f[CB]\-noprompt\f[R] option is provided, then the user isn\[aq]t
+prompted for a new destination alias.
+Existing entries are overwritten with the destination alias name.
+Entries that can\[aq]t be imported are skipped and a warning is
+displayed.
+.RE
+.SH COMMANDS FOR GENERATING A CERTIFICATE REQUEST
+.TP
+.B \f[CB]\-certreq\f[R]
+The following are the available options for the \f[CB]\-certreq\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+{\f[CB]\-sigalg\f[R] \f[I]alg\f[R]}: Signature algorithm name
+.IP \[bu] 2
+{\f[CB]\-file\f[R] \f[I]file\f[R]}: Output file name
+.IP \[bu] 2
+[ \f[CB]\-keypass\f[R] \f[I]arg\f[R]]: Key password
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+{\f[CB]\-dname\f[R] \f[I]name\f[R]}: Distinguished name
+.IP \[bu] 2
+{\f[CB]\-ext\f[R] \f[I]value\f[R]}: X.509 extension
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
+.PP
+Use the \f[CB]\-certreq\f[R] command to generate a Certificate Signing
+Request (CSR) using the PKCS #10 format.
+.PP
+A CSR is intended to be sent to a CA.
+The CA authenticates the certificate requestor (usually offline) and
+returns a certificate or certificate chain to replace the existing
+certificate chain (initially a self\-signed certificate) in the
+keystore.
+.PP
+The private key associated with \f[I]alias\f[R] is used to create the
+PKCS #10 certificate request.
+To access the private key, the correct password must be provided.
+If \f[CB]\-keypass\f[R] isn\[aq]t provided at the command line and is
+different from the password used to protect the integrity of the
+keystore, then the user is prompted for it.
+If \f[CB]\-dname\f[R] is provided, then it is used as the subject in the
+CSR.
+Otherwise, the X.500 Distinguished Name associated with alias is used.
+.PP
+The \f[CB]\-sigalg\f[R] value specifies the algorithm that should be used
+to sign the CSR.
+.PP
+The CSR is stored in the \f[CB]\-file\f[R] \f[I]file\f[R].
+If a file is not specified, then the CSR is output to \f[CB]\-stdout\f[R].
+.PP
+Use the \f[CB]\-importcert\f[R] command to import the response from the
+CA.
+.RE
+.SH COMMANDS FOR EXPORTING DATA
+.TP
+.B \f[CB]\-exportcert\f[R]
+The following are the available options for the \f[CB]\-exportcert\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-rfc\f[R]}: Output in RFC style
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+{\f[CB]\-file\f[R] \f[I]file\f[R]}: Output file name
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+{\f[CB]\-cacerts\f[R]}: Access the cacerts keystore
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]] }: Add security provider by fully qualified class name
+with an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
+.PP
+Use the \f[CB]\-exportcert\f[R] command to read a certificate from the
+keystore that is associated with \f[CB]\-alias\f[R] \f[I]alias\f[R] and
+store it in the \f[CB]\-file\f[R] \f[I]file\f[R].
+When a file is not specified, the certificate is output to
+\f[CB]stdout\f[R].
+.PP
+By default, the certificate is output in binary encoding.
+If the \f[CB]\-rfc\f[R] option is specified, then the output in the
+printable encoding format defined by the Internet RFC 1421 Certificate
+Encoding Standard.
.PP
-The \f3keytool\fR command stores the keys and certificates in a keystore\&. See KeyStore aliases\&.
-.SH COMMAND\ AND\ OPTION\ NOTES
-See Commands for a listing and description of the various commands\&.
-.TP 0.2i
-\(bu
-All command and option names are preceded by a minus sign (-)\&.
-.TP 0.2i
-\(bu
-The options for each command can be provided in any order\&.
-.TP 0.2i
-\(bu
-All items not italicized or in braces or brackets are required to appear as is\&.
-.TP 0.2i
-\(bu
-Braces surrounding an option signify that a default value will be used when the option is not specified on the command line\&. See Option Defaults\&. Braces are also used around the \f3-v\fR, \f3-rfc\fR, and \f3-J\fR options, which only have meaning when they appear on the command line\&. They do not have any default values other than not existing\&.
-.TP 0.2i
-\(bu
-Brackets surrounding an option signify that the user is prompted for the values when the option is not specified on the command line\&. For the \f3-keypass\fR option, if you do not specify the option on the command line, then the \f3keytool\fR command first attempts to use the keystore password to recover the private/secret key\&. If this attempt fails, then the \f3keytool\fR command prompts you for the private/secret key password\&.
-.TP 0.2i
-\(bu
-Items in italics (option values) represent the actual values that must be supplied\&. For example, here is the format of the \f3-printcert\fR command:
-.sp
-.nf
-\f3keytool \-printcert {\-file \fIcert_file\fR} {\-v}\fP
-.fi
-.sp
-
-
-
-
-When you specify a \f3-printcert\fR command, replace \fIcert_file\fR with the actual file name, as follows: \f3keytool -printcert -file VScert\&.cer\fR
-.TP 0.2i
-\(bu
-Option values must be put in quotation marks when they contain a blank (space)\&.
-.TP 0.2i
-\(bu
-The \f3-help\fR option is the default\&. The \f3keytool\fR command is the same as \f3keytool -help\fR\&.
-.SH OPTION\ DEFAULTS
-The following examples show the defaults for various option values\&.
-.sp
-.nf
-\f3\-alias "mykey"\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\-keyalg\fP
-.fi
-.nf
-\f3 "DSA" (when using \-genkeypair)\fP
-.fi
-.nf
-\f3 "DES" (when using \-genseckey)\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\-keysize\fP
-.fi
-.nf
-\f3 2048 (when using \-genkeypair and \-keyalg is "RSA")\fP
-.fi
-.nf
-\f3 1024 (when using \-genkeypair and \-keyalg is "DSA")\fP
-.fi
-.nf
-\f3 256 (when using \-genkeypair and \-keyalg is "EC")\fP
-.fi
-.nf
-\f3 56 (when using \-genseckey and \-keyalg is "DES")\fP
-.fi
-.nf
-\f3 168 (when using \-genseckey and \-keyalg is "DESede")\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\-validity 90\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\-keystore <the file named \&.keystore in the user\&'s home directory>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\-storetype <the value of the "keystore\&.type" property in the\fP
-.fi
-.nf
-\f3 security properties file, which is returned by the static\fP
-.fi
-.nf
-\f3 getDefaultType method in java\&.security\&.KeyStore>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\-file\fP
-.fi
-.nf
-\f3 stdin (if reading)\fP
-.fi
-.nf
-\f3 stdout (if writing)\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\-protected false\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-In generating a public/private key pair, the signature algorithm (\f3-sigalg\fR option) is derived from the algorithm of the underlying private key:
-.TP 0.2i
-\(bu
-If the underlying private key is of type DSA, then the \f3-sigalg\fR option defaults to SHA1withDSA\&.
-.TP 0.2i
-\(bu
-If the underlying private key is of type RSA, then the \f3-sigalg\fR option defaults to SHA256withRSA\&.
-.TP 0.2i
-\(bu
-If the underlying private key is of type EC, then the \f3-sigalg\fR option defaults to SHA256withECDSA\&.
+If \f[CB]\-alias\f[R] refers to a trusted certificate, then that
+certificate is output.
+Otherwise, \f[CB]\-alias\f[R] refers to a key entry with an associated
+certificate chain.
+In that case, the first certificate in the chain is returned.
+This certificate authenticates the public key of the entity addressed by
+\f[CB]\-alias\f[R].
+.RE
+.SH COMMANDS FOR DISPLAYING DATA
+.TP
+.B \f[CB]\-list\f[R]
+The following are the available options for the \f[CB]\-list\f[R] command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-rfc\f[R]}: Output in RFC style
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+{\f[CB]\-cacerts\f[R]}: Access the cacerts keystore
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]] }: Add security provider by fully qualified class name
+with an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
+.PP
+Use the \f[CB]\-list\f[R] command to print the contents of the keystore
+entry identified by \f[CB]\-alias\f[R] to \f[CB]stdout\f[R].
+If \f[CB]\-alias\f[R] \f[I]alias\f[R] is not specified, then the contents
+of the entire keystore are printed.
+.PP
+By default, this command prints the SHA\-256 fingerprint of a
+certificate.
+If the \f[CB]\-v\f[R] option is specified, then the certificate is printed
+in human\-readable format, with additional information such as the
+owner, issuer, serial number, and any extensions.
+If the \f[CB]\-rfc\f[R] option is specified, then the certificate contents
+are printed by using the printable encoding format, as defined by the
+Internet RFC 1421 Certificate Encoding Standard.
+.PP
+\f[B]Note:\f[R]
+.PP
+You can\[aq]t specify both \f[CB]\-v\f[R] and \f[CB]\-rfc\f[R] in the same
+command.
+Otherwise, an error is reported.
+.RE
+.TP
+.B \f[CB]\-printcert\f[R]
+The following are the available options for the \f[CB]\-printcert\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-rfc\f[R]}: Output in RFC style
+.IP \[bu] 2
+{\f[CB]\-file\f[R] \f[I]cert_file\f[R]}: Input file name
+.IP \[bu] 2
+{\f[CB]\-sslserver\f[R] \f[I]server\f[R][\f[CB]:\f[R]\f[I]port\f[R]]}:: Secure
+Sockets Layer (SSL) server host and port
+.IP \[bu] 2
+{\f[CB]\-jarfile\f[R] \f[I]JAR_file\f[R]}: Signed \f[CB]\&.jar\f[R] file
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.PP
+Use the \f[CB]\-printcert\f[R] command to read and print the certificate
+from \f[CB]\-file\f[R] \f[I]cert_file\f[R], the SSL server located at
+\f[CB]\-sslserver\f[R] \f[I]server\f[R][\f[CB]:\f[R]\f[I]port\f[R]], or the
+signed JAR file specified by \f[CB]\-jarfile\f[R] \f[I]JAR_file\f[R].
+It prints its contents in a human\-readable format.
+When a port is not specified, the standard HTTPS port 443 is assumed.
+.PP
+\f[B]Note:\f[R]
+.PP
+The \f[CB]\-sslserver\f[R] and \f[CB]\-file\f[R] options can\[aq]t be
+provided in the same command.
+Otherwise, an error is reported.
+If you don\[aq]t specify either option, then the certificate is read
+from \f[CB]stdin\f[R].
+.PP
+When\f[CB]\-rfc\f[R] is specified, the \f[CB]keytool\f[R] command prints the
+certificate in PEM mode as defined by the Internet RFC 1421 Certificate
+Encoding standard.
+.PP
+If the certificate is read from a file or \f[CB]stdin\f[R], then it might
+be either binary encoded or in printable encoding format, as defined by
+the RFC 1421 Certificate Encoding standard.
+.PP
+If the SSL server is behind a firewall, then the
+\f[CB]\-J\-Dhttps.proxyHost=proxyhost\f[R] and
+\f[CB]\-J\-Dhttps.proxyPort=proxyport\f[R] options can be specified on the
+command line for proxy tunneling.
+.PP
+\f[B]Note:\f[R]
+.PP
+This option can be used independently of a keystore.
+.RE
+.TP
+.B \f[CB]\-printcertreq\f[R]
+The following are the available options for the \f[CB]\-printcertreq\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-file\f[R] \f[I]file\f[R]}: Input file name
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.PP
+Use the \f[CB]\-printcertreq\f[R] command to print the contents of a PKCS
+#10 format certificate request, which can be generated by the
+\f[CB]keytool\ \-certreq\f[R] command.
+The command reads the request from file.
+If there is no file, then the request is read from the standard input.
+.RE
+.TP
+.B \f[CB]\-printcrl\f[R]
+The following are the available options for the \f[CB]\-printcrl\f[R]
+command:
+.RS
+.IP \[bu] 2
+\f[CB]\-file\ crl\f[R]: Input file name
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.PP
+Use the \f[CB]\-printcrl\f[R] command to read the Certificate Revocation
+List (CRL) from \f[CB]\-file\ crl\f[R] .
+A CRL is a list of the digital certificates that were revoked by the CA
+that issued them.
+The CA generates the \f[CB]crl\f[R] file.
+.PP
+\f[B]Note:\f[R]
+.PP
+This option can be used independently of a keystore.
+.RE
+.SH COMMANDS FOR MANAGING THE KEYSTORE
+.TP
+.B \f[CB]\-storepasswd\f[R]
+The following are the available options for the \f[CB]\-storepasswd\f[R]
+command:
+.RS
+.IP \[bu] 2
+[\f[CB]\-new\f[R] \f[I]arg\f[R]]: New password
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+{\f[CB]\-cacerts\f[R]}: Access the cacerts keystore
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
.PP
-For a full list of \f3-keyalg\fR and \f3-sigalg\fR arguments, see Java Cryptography Architecture (JCA) Reference Guide at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppA
-.SH COMMON\ OPTIONS
-The \f3-v\fR option can appear for all commands except \f3-help\fR\&. When the \f3-v\fR option appears, it signifies verbose mode, which means that more information is provided in the output\&.
+Use the \f[CB]\-storepasswd\f[R] command to change the password used to
+protect the integrity of the keystore contents.
+The new password is set by \f[CB]\-new\f[R] \f[I]arg\f[R] and must contain
+at least six characters.
+.RE
+.TP
+.B \f[CB]\-keypasswd\f[R]
+The following are the available options for the \f[CB]\-keypasswd\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+[\f[CB]\-keypass\f[R] \f[I]old_keypass\f[R]]: Key password
+.IP \[bu] 2
+[\f[CB]\-new\f[R] \f[I]new_keypass\f[R]]: New password
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+{\f[CB]\-storepass\f[R] \f[I]arg\f[R]}: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.PP
+Use the \f[CB]\-keypasswd\f[R] command to change the password (under which
+private/secret keys identified by \f[CB]\-alias\f[R] are protected) from
+\f[CB]\-keypass\f[R] \f[I]old_keypass\f[R] to \f[CB]\-new\f[R]
+\f[I]new_keypass\f[R].
+The password value must contain at least six characters.
+.PP
+If the \f[CB]\-keypass\f[R] option isn\[aq]t provided at the command line
+and the \f[CB]\-keypass\f[R] password is different from the keystore
+password (\f[CB]\-storepass\f[R] \f[I]arg\f[R]), then the user is prompted
+for it.
+.PP
+If the \f[CB]\-new\f[R] option isn\[aq]t provided at the command line,
+then the user is prompted for it.
+.RE
+.TP
+.B \f[CB]\-delete\f[R]
+The following are the available options for the \f[CB]\-delete\f[R]
+command:
+.RS
+.IP \[bu] 2
+[\f[CB]\-alias\f[R] \f[I]alias\f[R]]: Alias name of the entry to process
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+{\f[CB]\-cacerts\f[R]}: Access the cacerts keystore
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
.PP
-There is also a \f3-Jjavaoption\fR argument that can appear for any command\&. When the \f3-Jjavaoption\fR appears, the specified \f3javaoption\fR string is passed directly to the Java interpreter\&. This option does not contain any spaces\&. It is useful for adjusting the execution environment or memory usage\&. For a list of possible interpreter options, type \f3java -h\fR or \f3java -X\fR at the command line\&.
+Use the \f[CB]\-delete\f[R] command to delete the \f[CB]\-alias\f[R]
+\f[I]alias\f[R] entry from the keystore.
+When not provided at the command line, the user is prompted for the
+\f[CB]alias\f[R].
+.RE
+.TP
+.B \f[CB]\-changealias\f[R]
+The following are the available options for the \f[CB]\-changealias\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-alias\f[R] \f[I]alias\f[R]}: Alias name of the entry to process
+.IP \[bu] 2
+[\f[CB]\-destalias\f[R] \f[I]alias\f[R]]: Destination alias
+.IP \[bu] 2
+[\f[CB]\-keypass\f[R] \f[I]arg\f[R]]: Key password
+.IP \[bu] 2
+{\f[CB]\-keystore\f[R] \f[I]keystore\f[R]}: Keystore name
+.IP \[bu] 2
+{\f[CB]\-cacerts\f[R]}: Access the cacerts keystore
+.IP \[bu] 2
+[\f[CB]\-storepass\f[R] \f[I]arg\f[R]]: Keystore password
+.IP \[bu] 2
+{\f[CB]\-storetype\f[R] \f[I]type\f[R]}: Keystore type
+.IP \[bu] 2
+{\f[CB]\-providername\f[R] \f[I]name\f[R]}: Provider name
+.IP \[bu] 2
+{\f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by name (such as SunPKCS11) with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerclass\f[R] \f[I]class\f[R] [\f[CB]\-providerarg\f[R]
+\f[I]arg\f[R]]}: Add security provider by fully qualified class name with
+an optional configure argument.
+.IP \[bu] 2
+{\f[CB]\-providerpath\f[R] \f[I]list\f[R]}: Provider classpath
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.IP \[bu] 2
+{\f[CB]\-protected\f[R]}: Password provided through a protected mechanism
+.PP
+Use the \f[CB]\-changealias\f[R] command to move an existing keystore
+entry from \f[CB]\-alias\f[R] \f[I]alias\f[R] to a new \f[CB]\-destalias\f[R]
+\f[I]alias\f[R].
+If a destination alias is not provided, then the command prompts you for
+one.
+If the original entry is protected with an entry password, then the
+password can be supplied with the \f[CB]\-keypass\f[R] option.
+If a key password is not provided, then the \f[CB]\-storepass\f[R] (if
+provided) is attempted first.
+If the attempt fails, then the user is prompted for a password.
+.RE
+.SH COMMANDS FOR DISPLAYING SECURITY\-RELATED INFORMATION
+.TP
+.B \f[CB]\-showinfo\f[R]
+The following are the available options for the \f[CB]\-showinfo\f[R]
+command:
+.RS
+.IP \[bu] 2
+{\f[CB]\-tls\f[R]}: Displays TLS configuration information
+.IP \[bu] 2
+{\f[CB]\-v\f[R]}: Verbose output
+.PP
+Use the \f[CB]\-showinfo\f[R] command to display various security\-related
+information.
+The \f[CB]\-tls\f[R] option displays TLS configurations, such as the list
+of enabled protocols and cipher suites.
+.RE
+.SH COMMANDS FOR DISPLAYING HELP INFORMATION
+.PP
+You can use \f[CB]\-\-help\f[R] to display a list of \f[CB]keytool\f[R]
+commands or to display help information about a specific
+\f[CB]keytool\f[R] command.
+.IP \[bu] 2
+To display a list of \f[CB]keytool\f[R] commands, enter:
+.RS 2
+.RS
+.PP
+\f[CB]keytool\ \-\-help\f[R]
+.RE
+.RE
+.IP \[bu] 2
+To display help information about a specific \f[CB]keytool\f[R] command,
+enter:
+.RS 2
+.RS
+.PP
+\f[CB]keytool\ \-<command>\ \-\-help\f[R]
+.RE
+.RE
+.SH COMMON COMMAND OPTIONS
+.PP
+The \f[CB]\-v\f[R] option can appear for all commands except
+\f[CB]\-\-help\f[R].
+When the \f[CB]\-v\f[R] option appears, it signifies verbose mode, which
+means that more information is provided in the output.
+.PP
+The \f[CB]\-J\f[R]\f[I]option\f[R] argument can appear for any command.
+When the \f[CB]\-J\f[R]\f[I]option\f[R] is used, the specified
+\f[I]option\f[R] string is passed directly to the Java interpreter.
+This option doesn\[aq]t contain any spaces.
+It\[aq]s useful for adjusting the execution environment or memory usage.
+For a list of possible interpreter options, enter \f[CB]java\ \-h\f[R] or
+\f[CB]java\ \-X\f[R] at the command line.
.PP
These options can appear for all commands operating on a keystore:
.TP
--storetype \fIstoretype\fR
-.br
-This qualifier specifies the type of keystore to be instantiated\&.
-.TP
--keystore \fIkeystore\fR
-.br
-The keystore location\&.
-
-If the JKS \f3storetype\fR is used and a keystore file does not yet exist, then certain \f3keytool\fR commands can result in a new keystore file being created\&. For example, if \f3keytool -genkeypair\fR is called and the \f3-keystore\fR option is not specified, the default keystore file named \f3\&.keystore\fR in the user\&'s home directory is created when it does not already exist\&. Similarly, if the \f3-keystore ks_file\fR option is specified but ks_file does not exist, then it is created\&. For more information on the JKS \f3storetype\fR, see the \fIKeyStore Implementation\fR section in KeyStore aliases\&.
-
-Note that the input stream from the \f3-keystore\fR option is passed to the \f3KeyStore\&.load\fR method\&. If \f3NONE\fR is specified as the URL, then a null stream is passed to the \f3KeyStore\&.load\fR method\&. \f3NONE\fR should be specified if the keystore is not file-based\&. For example, when it resides on a hardware token device\&.
+.B \f[CB]\-storetype\f[R] \f[I]storetype\f[R]
+This qualifier specifies the type of keystore to be instantiated.
+.RS
+.RE
.TP
--storepass[:\fIenv\fR| :\fIfile\fR] argument
-.br
-The password that is used to protect the integrity of the keystore\&.
-
-If the modifier \f3env\fR or \f3file\fR is not specified, then the password has the \f3value\fR argument, which must be at least 6 characters long\&. Otherwise, the password is retrieved as follows:
-.RS
-.TP 0.2i
-\(bu
-\f3env\fR: Retrieve the password from the environment variable named \f3argument\fR\&.
-.TP 0.2i
-\(bu
-\f3file\fR: Retrieve the password from the file named argument\&.
-.RE
-
-
-\fINote:\fR All other options that require passwords, such as \f3-keypass\fR, \f3-srckeypass\fR, -\f3destkeypass\fR, \f3-srcstorepass\fR, and \f3-deststorepass\fR, accept the \fIenv\fR and \fIfile\fR modifiers\&. Remember to separate the password option and the modifier with a colon (:)\&.
-
-The password must be provided to all commands that access the keystore contents\&. For such commands, when the \f3-storepass\fR option is not provided at the command line, the user is prompted for it\&.
-
-When retrieving information from the keystore, the password is optional\&. If no password is specified, then the integrity of the retrieved information cannot be verified and a warning is displayed\&.
-.TP
--providerName \fIprovider_name\fR
-.br
-Used to identify a cryptographic service provider\&'s name when listed in the security properties file\&.
-.TP
--providerClass \fIprovider_class_name\fR
-.br
-Used to specify the name of a cryptographic service provider\&'s master class file when the service provider is not listed in the security properties file\&.
+.B \f[CB]\-keystore\f[R] \f[I]keystore\f[R]
+The keystore location.
+.RS
+.PP
+If the JKS \f[CB]storetype\f[R] is used and a keystore file doesn\[aq]t
+yet exist, then certain \f[CB]keytool\f[R] commands can result in a new
+keystore file being created.
+For example, if \f[CB]keytool\ \-genkeypair\f[R] is called and the
+\f[CB]\-keystore\f[R] option isn\[aq]t specified, the default keystore
+file named \f[CB]\&.keystore\f[R] is created in the user\[aq]s home
+directory if it doesn\[aq]t already exist.
+Similarly, if the \f[CB]\-keystore\ ks_file\f[R] option is specified but
+\f[CB]ks_file\f[R] doesn\[aq]t exist, then it is created.
+For more information on the JKS \f[CB]storetype\f[R], see the
+\f[B]KeyStore Implementation\f[R] section in \f[B]KeyStore aliases\f[R].
+.PP
+Note that the input stream from the \f[CB]\-keystore\f[R] option is passed
+to the \f[CB]KeyStore.load\f[R] method.
+If \f[CB]NONE\f[R] is specified as the URL, then a null stream is passed
+to the \f[CB]KeyStore.load\f[R] method.
+\f[CB]NONE\f[R] should be specified if the keystore isn\[aq]t file\-based.
+For example, when the keystore resides on a hardware token device.
+.RE
.TP
--providerArg \fIprovider_arg\fR
-.br
-Used with the \f3-providerClass\fR option to represent an optional string input argument for the constructor of \f3provider_class_name\fR\&.
-.TP
--protected
-.br
-Either \f3true\fR or \f3false\fR\&. This value should be specified as \f3true\fR when a password must be specified by way of a protected authentication path such as a dedicated PIN reader\&.Because there are two keystores involved in the \f3-importkeystore\fR command, the following two options \f3-srcprotected\fR and -\f3destprotected\fR are provided for the source keystore and the destination keystore respectively\&.
+.B \f[CB]\-cacerts\f[R] \f[I]cacerts\f[R]
+Operates on the \f[I]cacerts\f[R] keystore .
+This option is equivalent to \f[CB]\-keystore\f[R]
+\f[I]path_to_cacerts\f[R] \f[CB]\-storetype\f[R] \f[I]type_of_cacerts\f[R].
+An error is reported if the \f[CB]\-keystore\f[R] or \f[CB]\-storetype\f[R]
+option is used with the \f[CB]\-cacerts\f[R] option.
+.RS
+.RE
.TP
--ext \fI{name{:critical} {=value}}\fR
-.br
-Denotes an X\&.509 certificate extension\&. The option can be used in \f3-genkeypair\fR and \f3-gencert\fR to embed extensions into the certificate generated, or in \f3-certreq\fR to show what extensions are requested in the certificate request\&. The option can appear multiple times\&. The \f3name\fR argument can be a supported extension name (see Named Extensions) or an arbitrary OID number\&. The \f3value\fR argument, when provided, denotes the argument for the extension\&. When \fIvalue\fR is omitted, that means that the default value of the extension or the extension requires no argument\&. The \f3:critical\fR modifier, when provided, means the extension\&'s \f3isCritical\fR attribute is \f3true\fR; otherwise, it is \f3false\fR\&. You can use \f3:c\fR in place of \f3:critical\fR\&.
-.SH NAMED\ EXTENSIONS
-The \f3keytool\fR command supports these named extensions\&. The names are not case-sensitive)\&.
-.TP
-BC or BasicContraints
-\fIValues\fR: The full form is: \f3ca:{true|false}[,pathlen:<len>]\fR or \f3<len>\fR, which is short for \f3ca:true,pathlen:<len>\fR\&. When <\f3len\fR> is omitted, you have \f3ca:true\fR\&.
-.TP
-KU or KeyUsage
-\fIValues\fR: \f3usage\fR(,\f3usage\fR)*, where \fIusage\fR can be one of \f3digitalSignature\fR, \f3nonRepudiation\fR (contentCommitment), \f3keyEncipherment\fR, \f3dataEncipherment\fR, \f3keyAgreement\fR, \f3keyCertSign\fR, \f3cRLSign\fR, \f3encipherOnly\fR, \f3decipherOnly\fR\&. The \fIusage\fR argument can be abbreviated with the first few letters (\f3dig\fR for \f3digitalSignature\fR) or in camel-case style (\f3dS\fR for \f3digitalSignature\fR or \f3cRLS\fR for \f3cRLSign\fR), as long as no ambiguity is found\&. The \f3usage\fR values are case-sensitive\&.
-.TP
-EKU or ExtendedKeyUsage
-\fIValues\fR: \f3usage\fR(,\f3usage\fR)*, where \fIusage\fR can be one of \f3anyExtendedKeyUsage\fR, \f3serverAuth\fR, \f3clientAuth\fR, \f3codeSigning\fR, \f3emailProtection\fR, \f3timeStamping\fR, \f3OCSPSigning\fR, or any \fIOID string\fR\&. The \fIusage\fR argument can be abbreviated with the first few letters or in camel-case style, as long as no ambiguity is found\&. The \f3usage\fR values are case-sensitive\&.
-.TP
-SAN or SubjectAlternativeName
-\fIValues\fR: \f3type\fR:\f3value\fR(,t\f3ype:value\fR)*, where \f3type\fR can be \f3EMAIL\fR, \f3URI\fR, \f3DNS\fR, \f3IP\fR, or \f3OID\fR\&. The \f3value\fR argument is the string format value for the \f3type\fR\&.
-.TP
-IAN or IssuerAlternativeName
-\fIValues\fR: Same as \f3SubjectAlternativeName\fR\&.
-.TP
-SIA or SubjectInfoAccess
-\fIValues\fR: \f3method\fR:\f3location-type\fR:\f3location-value\fR (,\f3method:location-type\fR:\f3location-value\fR)*, where \f3method\fR can be \f3timeStamping\fR, \f3caRepository\fR or any OID\&. The \f3location-type\fR and \f3location-value\fR arguments can be any \f3type\fR:\f3value\fR supported by the \f3SubjectAlternativeName\fR extension\&.
-.TP
-AIA or AuthorityInfoAccess
-\fIValues\fR: Same as \f3SubjectInfoAccess\fR\&. The \f3method\fR argument can be \f3ocsp\fR,\f3caIssuers\fR, or any OID\&.
+.B \f[CB]\-storepass\f[R] [\f[CB]:env\f[R] | \f[CB]:file\f[R] ] \f[I]argument\f[R]
+The password that is used to protect the integrity of the keystore.
+.RS
.PP
-When \f3name\fR is OID, the value is the hexadecimal dumped DER encoding of the \f3extnValue\fR for the extension excluding the OCTET STRING type and length bytes\&. Any extra character other than standard hexadecimal numbers (0-9, a-f, A-F) are ignored in the HEX string\&. Therefore, both 01:02:03:04 and 01020304 are accepted as identical values\&. When there is no value, the extension has an empty value field\&.
-.PP
-A special name \f3honored\fR, used in \f3-gencert\fR only, denotes how the extensions included in the certificate request should be honored\&. The value for this name is a comma separated list of \f3all\fR (all requested extensions are honored), \f3name{:[critical|non-critical]}\fR (the named extension is honored, but using a different \f3isCritical\fR attribute) and \f3-name\fR (used with \f3all\fR, denotes an exception)\&. Requested extensions are not honored by default\&.
+If the modifier \f[CB]env\f[R] or \f[CB]file\f[R] isn\[aq]t specified, then
+the password has the value \f[I]argument\f[R], which must contain at
+least six characters.
+Otherwise, the password is retrieved as follows:
+.IP \[bu] 2
+\f[CB]env\f[R]: Retrieve the password from the environment variable named
+\f[I]argument\f[R].
+.IP \[bu] 2
+\f[CB]file\f[R]: Retrieve the password from the file named
+\f[I]argument\f[R].
.PP
-If, besides the\f3-ext honored\fR option, another named or OID \f3-ext\fR option is provided, this extension is added to those already honored\&. However, if this name (or OID) also appears in the honored value, then its value and criticality overrides the one in the request\&.
+\f[B]Note:\f[R] All other options that require passwords, such as
+\f[CB]\-keypass\f[R], \f[CB]\-srckeypass\f[R], \f[CB]\-destkeypass\f[R],
+\f[CB]\-srcstorepass\f[R], and \f[CB]\-deststorepass\f[R], accept the
+\f[CB]env\f[R] and \f[CB]file\f[R] modifiers.
+Remember to separate the password option and the modifier with a colon
+(:).
.PP
-The \f3subjectKeyIdentifier\fR extension is always created\&. For non-self-signed certificates, the \f3authorityKeyIdentifier\fR is created\&.
+The password must be provided to all commands that access the keystore
+contents.
+For such commands, when the \f[CB]\-storepass\f[R] option isn\[aq]t
+provided at the command line, the user is prompted for it.
.PP
-\fINote:\fR Users should be aware that some combinations of extensions (and other certificate fields) may not conform to the Internet standard\&. See Certificate Conformance Warning\&.
-.SH COMMANDS
-.TP
--gencert
-.sp
-.nf
-\f3{\-rfc} {\-infile \fIinfile\fR} {\-outfile \fIoutfile\fR} {\-alias \fIalias\fR} {\-sigalg \fIsigalg\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-dname \fIdname\fR} {\-startdate \fIstartdate\fR {\-ext \fIext\fR}* {\-validity \fIvalDays\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-keypass \fIkeypass\fR] {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-storetype \fIstoretype\fR} {\-providername \fIprovider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-v} {\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Generates a certificate as a response to a certificate request file (which can be created by the \f3keytool\fR\f3-certreq\fR command)\&. The command reads the request from \fIinfile\fR (if omitted, from the standard input), signs it using alias\&'s private key, and outputs the X\&.509 certificate into \fIoutfile\fR (if omitted, to the standard output)\&. When\f3-rfc\fR is specified, the output format is Base64-encoded PEM; otherwise, a binary DER is created\&.
-
-The \f3sigalg\fR value specifies the algorithm that should be used to sign the certificate\&. The \f3startdate\fR argument is the start time and date that the certificate is valid\&. The \f3valDays\fR argument tells the number of days for which the certificate should be considered valid\&.
-
-When \f3dname\fR is provided, it is used as the subject of the generated certificate\&. Otherwise, the one from the certificate request is used\&.
-
-The \f3ext\fR value shows what X\&.509 extensions will be embedded in the certificate\&. Read Common Options for the grammar of \f3-ext\fR\&.
-
-The \f3-gencert\fR option enables you to create certificate chains\&. The following example creates a certificate, \f3e1\fR, that contains three certificates in its certificate chain\&.
-
-The following commands creates four key pairs named \f3ca\fR, \f3ca1\fR, \f3ca2\fR, and \f3e1\fR:
-.sp
-.nf
-\f3keytool \-alias ca \-dname CN=CA \-genkeypair\fP
-.fi
-.nf
-\f3keytool \-alias ca1 \-dname CN=CA \-genkeypair\fP
-.fi
-.nf
-\f3keytool \-alias ca2 \-dname CN=CA \-genkeypair\fP
-.fi
-.nf
-\f3keytool \-alias e1 \-dname CN=E1 \-genkeypair\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The following two commands create a chain of signed certificates; \f3ca\fR signs \f3ca1\fR and \f3ca1\fR signs \f3ca2\fR, all of which are self-issued:
-.sp
-.nf
-\f3keytool \-alias ca1 \-certreq |\fP
-.fi
-.nf
-\f3 keytool \-alias ca \-gencert \-ext san=dns:ca1 |\fP
-.fi
-.nf
-\f3 keytool \-alias ca1 \-importcert\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3keytool \-alias ca2 \-certreq |\fP
-.fi
-.nf
-\f3 $KT \-alias ca1 \-gencert \-ext san=dns:ca2 |\fP
-.fi
-.nf
-\f3 $KT \-alias ca2 \-importcert\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The following command creates the certificate \f3e1\fR and stores it in the file \f3e1\&.cert\fR, which is signed by \f3ca2\fR\&. As a result, \f3e1\fR should contain \f3ca\fR, \f3ca1\fR, and \f3ca2\fR in its certificate chain:
-.sp
-.nf
-\f3keytool \-alias e1 \-certreq | keytool \-alias ca2 \-gencert > e1\&.cert\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
--genkeypair
-.sp
-.nf
-\f3{\-alias \fIalias\fR} {\-keyalg \fIkeyalg\fR} {\-keysize \fIkeysize\fR} {\-sigalg \fIsigalg\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-dname \fIdname\fR] [\-keypass \fIkeypass\fR] {\-startdate \fIvalue\fR} {\-ext \fIext\fR}*\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-validity \fIvalDays\fR} {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-storepass \fIstorepass\fR]\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-v} {\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Generates a key pair (a public key and associated private key)\&. Wraps the public key into an X\&.509 v3 self-signed certificate, which is stored as a single-element certificate chain\&. This certificate chain and the private key are stored in a new keystore entry identified by alias\&.
-
-The \f3keyalg\fR value specifies the algorithm to be used to generate the key pair, and the \f3keysize\fR value specifies the size of each key to be generated\&. The \f3sigalg\fR value specifies the algorithm that should be used to sign the self-signed certificate\&. This algorithm must be compatible with the \f3keyalg\fR value\&.
-
-The \f3dname\fR value specifies the X\&.500 Distinguished Name to be associated with the value of \f3alias\fR, and is used as the issuer and subject fields in the self-signed certificate\&. If no distinguished name is provided at the command line, then the user is prompted for one\&.
-
-The value of \f3keypass\fR is a password used to protect the private key of the generated key pair\&. If no password is provided, then the user is prompted for it\&. If you press \fIthe Return key\fR at the prompt, then the key password is set to the same password as the keystore password\&. The \f3keypass\fR value must be at least 6 characters\&.
-
-The value of \f3startdate\fR specifies the issue time of the certificate, also known as the "Not Before" value of the X\&.509 certificate\&'s Validity field\&.
-
-The option value can be set in one of these two forms:
-
-\f3([+-]nnn[ymdHMS])+\fR
-
-\f3[yyyy/mm/dd] [HH:MM:SS]\fR
-
-With the first form, the issue time is shifted by the specified value from the current time\&. The value is a concatenation of a sequence of subvalues\&. Inside each subvalue, the plus sign (+) means shift forward, and the minus sign (-) means shift backward\&. The time to be shifted is \f3nnn\fR units of years, months, days, hours, minutes, or seconds (denoted by a single character of \f3y\fR, \f3m\fR, \f3d\fR, \f3H\fR, \f3M\fR, or \f3S\fR respectively)\&. The exact value of the issue time is calculated using the \f3java\&.util\&.GregorianCalendar\&.add(int field, int amount)\fR method on each subvalue, from left to right\&. For example, by specifying, the issue time will be:
-.sp
-.nf
-\f3Calendar c = new GregorianCalendar();\fP
-.fi
-.nf
-\f3c\&.add(Calendar\&.YEAR, \-1);\fP
-.fi
-.nf
-\f3c\&.add(Calendar\&.MONTH, 1);\fP
-.fi
-.nf
-\f3c\&.add(Calendar\&.DATE, \-1);\fP
-.fi
-.nf
-\f3return c\&.getTime()\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-With the second form, the user sets the exact issue time in two parts, year/month/day and hour:minute:second (using the local time zone)\&. The user can provide only one part, which means the other part is the same as the current date (or time)\&. The user must provide the exact number of digits as shown in the format definition (padding with 0 when shorter)\&. When both the date and time are provided, there is one (and only one) space character between the two parts\&. The hour should always be provided in 24 hour format\&.
-
-When the option is not provided, the start date is the current time\&. The option can be provided at most once\&.
-
-The value of \f3valDays\fR specifies the number of days (starting at the date specified by \f3-startdate\fR, or the current date when \f3-startdate\fR is not specified) for which the certificate should be considered valid\&.
-
-This command was named \f3-genkey\fR in earlier releases\&. The old name is still supported in this release\&. The new name, \f3-genkeypair\fR, is preferred going forward\&.
-.TP
--genseckey
-.sp
-.nf
-\f3{\-alias \fIalias\fR} {\-keyalg \fIkeyalg\fR} {\-keysize \fIkeysize\fR} [\-keypass \fIkeypass\fR]\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}} {\-v}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Generates a secret key and stores it in a new \f3KeyStore\&.SecretKeyEntry\fR identified by \f3alias\fR\&.
-
-The value of \f3keyalg\fR specifies the algorithm to be used to generate the secret key, and the value of \f3keysize\fR specifies the size of the key to be generated\&. The \f3keypass\fR value is a password that protects the secret key\&. If no password is provided, then the user is prompted for it\&. If you press the Return key at the prompt, then the key password is set to the same password that is used for the \f3keystore\fR\&. The \f3keypass\fR value must be at least 6 characters\&.
-.TP
--importcert
-.sp
-.nf
-\f3{\-alias \fIalias\fR} {\-file \fIcert_file\fR} [\-keypass \fIkeypass\fR] {\-noprompt} {\-trustcacerts}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerName \fIprovider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-v} {\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Reads the certificate or certificate chain (where the latter is supplied in a PKCS#7 formatted reply or a sequence of X\&.509 certificates) from the file \f3cert_file\fR, and stores it in the \f3keystore\fR entry identified by \f3alias\fR\&. If no file is specified, then the certificate or certificate chain is read from \f3stdin\fR\&.
+When retrieving information from the keystore, the password is optional.
+If a password is not specified, then the integrity of the retrieved
+information can\[aq]t be verified and a warning is displayed.
+.RE
+.TP
+.B \f[CB]\-providername\f[R] \f[I]name\f[R]
+Used to identify a cryptographic service provider\[aq]s name when listed
+in the security properties file.
+.RS
+.RE
+.TP
+.B \f[CB]\-addprovider\f[R] \f[I]name\f[R]
+Used to add a security provider by name (such as SunPKCS11) .
+.RS
+.RE
+.TP
+.B \f[CB]\-providerclass\f[R] \f[I]class\f[R]
+Used to specify the name of a cryptographic service provider\[aq]s
+master class file when the service provider isn\[aq]t listed in the
+security properties file.
+.RS
+.RE
+.TP
+.B \f[CB]\-providerpath\f[R] \f[I]list\f[R]
+Used to specify the provider classpath.
+.RS
+.RE
+.TP
+.B \f[CB]\-providerarg\f[R] \f[I]arg\f[R]
+Used with the \f[CB]\-addprovider\f[R] or \f[CB]\-providerclass\f[R] option
+to represent an optional string input argument for the constructor of
+\f[I]class\f[R] name.
+.RS
+.RE
+.TP
+.B \f[CB]\-protected=true\f[R]|\f[CB]false\f[R]
+Specify this value as \f[CB]true\f[R] when a password must be specified by
+way of a protected authentication path, such as a dedicated PIN reader.
+Because there are two keystores involved in the
+\f[CB]\-importkeystore\f[R] command, the following two options,
+\f[CB]\-srcprotected\f[R] and \f[CB]\-destprotected\f[R], are provided for
+the source keystore and the destination keystore respectively.
+.RS
+.RE
+.TP
+.B \f[CB]\-ext\f[R] {\f[I]name\f[R]{\f[CB]:critical\f[R]} {\f[CB]=\f[R]\f[I]value\f[R]}}
+Denotes an X.509 certificate extension.
+The option can be used in \f[CB]\-genkeypair\f[R] and \f[CB]\-gencert\f[R]
+to embed extensions into the generated certificate, or in
+\f[CB]\-certreq\f[R] to show what extensions are requested in the
+certificate request.
+The option can appear multiple times.
+The \f[I]name\f[R] argument can be a supported extension name (see
+\f[B]Supported Named Extensions\f[R]) or an arbitrary OID number.
+The \f[I]value\f[R] argument, when provided, denotes the argument for the
+extension.
+When \f[I]value\f[R] is omitted, the default value of the extension or
+the extension itself requires no argument.
+The \f[CB]:critical\f[R] modifier, when provided, means the
+extension\[aq]s \f[CB]isCritical\f[R] attribute is \f[CB]true\f[R];
+otherwise, it is \f[CB]false\f[R].
+You can use \f[CB]:c\f[R] in place of \f[CB]:critical\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-conf\f[R] \f[I]file\f[R]
+Specifies a pre\-configured options file.
+.RS
+.RE
+.SH PRE\-CONFIGURED OPTIONS FILE
+.PP
+A pre\-configured options file is a Java properties file that can be
+specified with the \f[CB]\-conf\f[R] option.
+Each property represents the default option(s) for a keytool command
+using "keytool.\f[I]command_name\f[R]" as the property name.
+A special property named "keytool.all" represents the default option(s)
+applied to all commands.
+A property value can include \f[CB]${prop}\f[R] which will be expanded to
+the system property associated with it.
+If an option value includes white spaces inside, it should be surrounded
+by quotation marks (" or \[aq]).
+All property names must be in lower case.
+.PP
+When \f[CB]keytool\f[R] is launched with a pre\-configured options file,
+the value for "keytool.all" (if it exists) is prepended to the
+\f[CB]keytool\f[R] command line first, with the value for the command name
+(if it exists) comes next, and the existing options on the command line
+at last.
+For a single\-valued option, this allows the property for a specific
+command to override the "keytool.all" value, and the value specified on
+the command line to override both.
+For multiple\-valued options, all of them will be used by
+\f[CB]keytool\f[R].
+.PP
+For example, given the following file named \f[CB]preconfig\f[R]:
+.IP
+.nf
+\f[CB]
+\ \ \ \ #\ A\ tiny\ pre\-configured\ options\ file
+\ \ \ \ keytool.all\ =\ \-keystore\ ${user.home}/ks
+\ \ \ \ keytool.list\ =\ \-v
+\ \ \ \ keytool.genkeypair\ =\ \-keyalg\ rsa
+\f[R]
+.fi
+.PP
+\f[CB]keytool\ \-conf\ preconfig\ \-list\f[R] is identical to
+.RS
+.PP
+\f[CB]keytool\ \-keystore\ ~/ks\ \-v\ \-list\f[R]
+.RE
+.PP
+\f[CB]keytool\ \-conf\ preconfig\ \-genkeypair\ \-alias\ me\f[R] is
+identical to
+.RS
+.PP
+\f[CB]keytool\ \-keystore\ ~/ks\ \-keyalg\ rsa\ \-genkeypair\ \-alias\ me\f[R]
+.RE
+.PP
+\f[CB]keytool\ \-conf\ preconfig\ \-genkeypair\ \-alias\ you\ \-keyalg\ ec\f[R]
+is identical to
+.RS
+.PP
+\f[CB]keytool\ \-keystore\ ~/ks\ \-keyalg\ rsa\ \-genkeypair\ \-alias\ you\ \-keyalg\ ec\f[R]
+.RE
+.PP
+which is equivalent to
+.RS
+.PP
+\f[CB]keytool\ \-keystore\ ~/ks\ \-genkeypair\ \-alias\ you\ \-keyalg\ ec\f[R]
+.RE
+.PP
+because \f[CB]\-keyalg\f[R] is a single\-valued option and the \f[CB]ec\f[R]
+value specified on the command line overrides the preconfigured options
+file.
+.SH EXAMPLES OF OPTION VALUES
+.PP
+The following examples show the defaults for various option values:
+.IP
+.nf
+\f[CB]
+\-alias\ "mykey"
-The \f3keytool\fR command can import X\&.509 v1, v2, and v3 certificates, and PKCS#7 formatted certificate chains consisting of certificates of that type\&. The data to be imported must be provided either in binary encoding format or in printable encoding format (also known as Base64 encoding) as defined by the Internet RFC 1421 standard\&. In the latter case, the encoding must be bounded at the beginning by a string that starts with \f3-\fR\f3----BEGIN\fR, and bounded at the end by a string that starts with \f3-----END\fR\&.
-
-You import a certificate for two reasons: To add it to the list of trusted certificates, and to import a certificate reply received from a certificate authority (CA) as the result of submitting a Certificate Signing Request to that CA (see the \f3-certreq\fR option in Commands)\&.
-
-Which type of import is intended is indicated by the value of the \f3-alias\fR option\&. If the alias does not point to a key entry, then the \f3keytool\fR command assumes you are adding a trusted certificate entry\&. In this case, the alias should not already exist in the keystore\&. If the alias does already exist, then the \f3keytool\fR command outputs an error because there is already a trusted certificate for that alias, and does not import the certificate\&. If the alias points to a key entry, then the \f3keytool\fR command assumes you are importing a certificate reply\&.
-.TP
--importpassword
-.sp
-.nf
-\f3{\-alias \fIalias\fR} [\-keypass \fIkeypass\fR] {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-storepass \fIstorepass\fR]\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-v} {\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Imports a passphrase and stores it in a new \f3KeyStore\&.SecretKeyEntry\fR identified by \f3alias\fR\&. The passphrase may be supplied via the standard input stream; otherwise the user is prompted for it\&. \f3keypass\fR is a password used to protect the imported passphrase\&. If no password is provided, the user is prompted for it\&. If you press the Return key at the prompt, the key password is set to the same password as that used for the \f3keystore\fR\&. \f3keypass\fR must be at least 6 characters long\&.
-.TP
--importkeystore
-.sp
-.nf
-\f3{\-srcstoretype \fIsrcstoretype\fR} {\-deststoretype \fIdeststoretype\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-srcstorepass \fIsrcstorepass\fR] [\-deststorepass \fIdeststorepass\fR] {\-srcprotected}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-destprotected} \fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-srcalias \fIsrcalias\fR {\-destalias \fIdestalias\fR} [\-srckeypass \fIsrckeypass\fR]} \fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-destkeypass \fIdestkeypass\fR] {\-noprompt}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-srcProviderName \fIsrc_provider_name\fR} {\-destProviderName \fIdest_provider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}} {\-v}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Imports a single entry or all entries from a source keystore to a destination keystore\&.
-
-When the \f3-srcalias\fR option is provided, the command imports the single entry identified by the alias to the destination keystore\&. If a destination alias is not provided with \f3destalias\fR, then \f3srcalias\fR is used as the destination alias\&. If the source entry is protected by a password, then \f3srckeypass\fR is used to recover the entry\&. If \fIsrckeypass\fR is not provided, then the \f3keytool\fR command attempts to use \f3srcstorepass\fR to recover the entry\&. If \f3srcstorepass\fR is either not provided or is incorrect, then the user is prompted for a password\&. The destination entry is protected with \f3destkeypass\fR\&. If \f3destkeypass\fR is not provided, then the destination entry is protected with the source entry password\&. For example, most third-party tools require \f3storepass\fR and \f3keypass\fR in a PKCS #12 keystore to be the same\&. In order to create a PKCS #12 keystore for these tools, always specify a \f3-destkeypass\fR to be the same as \f3-deststorepass\fR\&.
-
-If the \f3-srcalias\fR option is not provided, then all entries in the source keystore are imported into the destination keystore\&. Each destination entry is stored under the alias from the source entry\&. If the source entry is protected by a password, then \f3srcstorepass\fR is used to recover the entry\&. If \f3srcstorepass\fR is either not provided or is incorrect, then the user is prompted for a password\&. If a source keystore entry type is not supported in the destination keystore, or if an error occurs while storing an entry into the destination keystore, then the user is prompted whether to skip the entry and continue or to quit\&. The destination entry is protected with the source entry password\&.
+\-keyalg
+\ \ \ \ "DSA"\ (when\ using\ \-genkeypair)
+\ \ \ \ "DES"\ (when\ using\ \-genseckey)
-If the destination alias already exists in the destination keystore, then the user is prompted to either overwrite the entry or to create a new entry under a different alias name\&.
-
-If the \f3-noprompt\fR option is provided, then the user is not prompted for a new destination alias\&. Existing entries are overwritten with the destination alias name\&. Entries that cannot be imported are skipped and a warning is displayed\&.
-.TP
--printcertreq
-.sp
-.nf
-\f3{\-file \fIfile\fR}\fP
-.fi
-.sp
-
-
-Prints the content of a PKCS #10 format certificate request, which can be generated by the \f3keytool\fR\f3-certreq\fR command\&. The command reads the request from file\&. If there is no file, then the request is read from the standard input\&.
-.TP
--certreq
-.sp
-.nf
-\f3{\-alias \fIalias\fR} {\-dname \fIdname\fR} {\-sigalg \fIsigalg\fR} {\-file \fIcertreq_file\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-keypass \fIkeypass\fR] {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-v} {\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Generates a Certificate Signing Request (CSR) using the PKCS #10 format\&.
-
-A CSR is intended to be sent to a certificate authority (CA)\&. The CA authenticates the certificate requestor (usually off-line) and will return a certificate or certificate chain, used to replace the existing certificate chain (which initially consists of a self-signed certificate) in the keystore\&.
-
-The private key associated with alias is used to create the PKCS #10 certificate request\&. To access the private key, the correct password must be provided\&. If \f3keypass\fR is not provided at the command line and is different from the password used to protect the integrity of the keystore, then the user is prompted for it\&. If \f3dname\fR is provided, then it is used as the subject in the CSR\&. Otherwise, the X\&.500 Distinguished Name associated with alias is used\&.
-
-The \f3sigalg\fR value specifies the algorithm that should be used to sign the CSR\&.
-
-The CSR is stored in the file certreq_file\&. If no file is specified, then the CSR is output to \f3stdout\fR\&.
-
-Use the \f3importcert\fR command to import the response from the CA\&.
-.TP
--exportcert
-.sp
-.nf
-\f3{\-alias \fIalias\fR} {\-file \fIcert_file\fR} {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-rfc} {\-v} {\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Reads from the keystore the certificate associated with \fIalias\fR and stores it in the cert_file file\&. When no file is specified, the certificate is output to \f3stdout\fR\&.
-
-The certificate is by default output in binary encoding\&. If the \f3-rfc\fR option is specified, then the output in the printable encoding format defined by the Internet RFC 1421 Certificate Encoding Standard\&.
-
-If \f3alias\fR refers to a trusted certificate, then that certificate is output\&. Otherwise, \f3alias\fR refers to a key entry with an associated certificate chain\&. In that case, the first certificate in the chain is returned\&. This certificate authenticates the public key of the entity addressed by \f3alias\fR\&.
+\-keysize
+\ \ \ \ 2048\ (when\ using\ \-genkeypair\ and\ \-keyalg\ is\ "RSA")
+\ \ \ \ 2048\ (when\ using\ \-genkeypair\ and\ \-keyalg\ is\ "DSA")
+\ \ \ \ 256\ (when\ using\ \-genkeypair\ and\ \-keyalg\ is\ "EC")
+\ \ \ \ 56\ (when\ using\ \-genseckey\ and\ \-keyalg\ is\ "DES")
+\ \ \ \ 168\ (when\ using\ \-genseckey\ and\ \-keyalg\ is\ "DESede")
-This command was named \f3-export\fR in earlier releases\&. The old name is still supported in this release\&. The new name, \f3-exportcert\fR, is preferred going forward\&.
-.TP
--list
-.sp
-.nf
-\f3{\-alias \fIalias\fR} {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerName \fIprovider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-v | \-rfc} {\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Prints to \f3stdout\fR the contents of the keystore entry identified by \f3alias\fR\&. If no \f3alias\fR is specified, then the contents of the entire keystore are printed\&.
-
-This command by default prints the SHA1 fingerprint of a certificate\&. If the \f3-v\fR option is specified, then the certificate is printed in human-readable format, with additional information such as the owner, issuer, serial number, and any extensions\&. If the \f3-rfc\fR option is specified, then the certificate contents are printed using the printable encoding format, as defined by the Internet RFC 1421 Certificate Encoding Standard\&.
+\-validity\ 90
-You cannot specify both \f3-v\fR and \f3-rfc\fR\&.
-.TP
--printcert
-.sp
-.nf
-\f3{\-file \fIcert_file\fR | \-sslserver \fIhost\fR[:\fIport\fR]} {\-jarfile \fIJAR_file\fR {\-rfc} {\-v}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Reads the certificate from the file cert_file, the SSL server located at host:port, or the signed JAR file \f3JAR_file\fR (with the \f3-jarfile\fR option and prints its contents in a human-readable format\&. When no port is specified, the standard HTTPS port 443 is assumed\&. Note that \f3-sslserver\fR and -file options cannot be provided at the same time\&. Otherwise, an error is reported\&. If neither option is specified, then the certificate is read from \f3stdin\fR\&.
+\-keystore\ <the\ file\ named\ .keystore\ in\ the\ user\[aq]s\ home\ directory>
-When\f3-rfc\fR is specified, the \f3keytool\fR command prints the certificate in PEM mode as defined by the Internet RFC 1421 Certificate Encoding standard\&. See Internet RFC 1421 Certificate Encoding Standard\&.
-
-If the certificate is read from a file or \f3stdin\fR, then it might be either binary encoded or in printable encoding format, as defined by the RFC 1421 Certificate Encoding standard\&.
-
-If the SSL server is behind a firewall, then the \f3-J-Dhttps\&.proxyHost=proxyhost\fR and \f3-J-Dhttps\&.proxyPort=proxyport\fR options can be specified on the command line for proxy tunneling\&. See Java Secure Socket Extension (JSSE) Reference Guide at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide\&.html
-
-\fINote:\fR This option can be used independently of a keystore\&.
-.TP
--printcrl
-.sp
-.nf
-\f3\-file \fIcrl_\fR {\-v}\fP
-.fi
-.sp
-
-
-Reads the Certificate Revocation List (CRL) from the file \f3crl_\fR\&. A CRL is a list of digital certificates that were revoked by the CA that issued them\&. The CA generates the \f3crl_\fR file\&.
+\-destkeystore\ <the\ file\ named\ .keystore\ in\ the\ user\[aq]s\ home\ directory>
-\fINote:\fR This option can be used independently of a keystore\&.
-.TP
--storepasswd
-.sp
-.nf
-\f3[\-new \fInew_storepass\fR] {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3[\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-v} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Changes the password used to protect the integrity of the keystore contents\&. The new password is \f3new_storepass\fR, which must be at least 6 characters\&.
-.TP
--keypasswd
-.sp
-.nf
-\f3{\-alias \fIalias\fR} [\-keypass \fIold_keypass\fR] [\-new \fInew_keypass\fR] {\-storetype \fIstoretype\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}} {\-v}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-Jjavaoption}\fP
-.fi
-.sp
-
+\-storetype\ <the\ value\ of\ the\ "keystore.type"\ property\ in\ the
+\ \ \ \ security\ properties\ file,\ which\ is\ returned\ by\ the\ static
+\ \ \ \ getDefaultType\ method\ in\ java.security.KeyStore>
-Changes the password under which the private/secret key identified by \f3alias\fR is protected, from \f3old_keypass\fR to \f3new_keypass\fR, which must be at least 6 characters\&.
-
-If the \f3-keypass\fR option is not provided at the command line, and the key password is different from the keystore password, then the user is prompted for it\&.
-
-If the \f3-new\fR option is not provided at the command line, then the user is prompted for it
-.TP
--delete
-.sp
-.nf
-\f3[\-alias \fIalias\fR] {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerName \fIprovider_name\fR} \fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-v} {\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
-
-
-Deletes from the keystore the entry identified by \f3alias\fR\&. The user is prompted for the alias, when no alias is provided at the command line\&.
-.TP
--changealias
-.sp
-.nf
-\f3{\-alias \fIalias\fR} [\-destalias \fIdestalias\fR] [\-keypass \fIkeypass\fR] {\-storetype \fIstoretype\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}} {\-v}\fP
-.fi
-.sp
-.sp
-.nf
-\f3{\-protected} {\-Jjavaoption}\fP
-.fi
-.sp
+\-file
+\ \ \ \ stdin\ (if\ reading)
+\ \ \ \ stdout\ (if\ writing)
-
-Move an existing keystore entry from the specified \f3alias\fR to a new alias, \f3destalias\fR\&. If no destination alias is provided, then the command prompts for one\&. If the original entry is protected with an entry password, then the password can be supplied with the \f3-keypass\fR option\&. If no key password is provided, then the \f3storepass\fR (if provided) is attempted first\&. If the attempt fails, then the user is prompted for a password\&.
+\-protected\ false
+\f[R]
+.fi
+.PP
+When generating a certificate or a certificate request, the default
+signature algorithm (\f[CB]\-sigalg\f[R] option) is derived from the
+algorithm of the underlying private key to provide an appropriate level
+of security strength as follows:
+.PP
+.TS
+tab(@);
+l l l.
+T{
+keyalg
+T}@T{
+keysize
+T}@T{
+default sigalg
+T}
+_
+T{
+DSA
+T}@T{
+any size
+T}@T{
+SHA256withDSA
+T}
+T{
+RSA \ \ \
+T}@T{
+<= 3072
+T}@T{
+SHA256withRSA
+T}
+T{
+T}@T{
+<= 7680
+T}@T{
+SHA384withRSA
+T}
+T{
+T}@T{
+> 7680
+T}@T{
+SHA512withRSA
+T}
+T{
+EC
+T}@T{
+< 384
+T}@T{
+SHA256withECDSA
+T}
+T{
+T}@T{
+< 512
+T}@T{
+SHA384withECDSA
+T}
+T{
+T}@T{
+= 512
+T}@T{
+SHA512withECDSA
+T}
+.TE
+.PP
+\f[B]Note:\f[R]
+.PP
+To improve out of the box security, default key size and signature
+algorithm names are periodically updated to stronger values with each
+release of the JDK.
+If interoperability with older releases of the JDK is important, make
+sure that the defaults are supported by those releases.
+Alternatively, you can use the \f[CB]\-keysize\f[R] or \f[CB]\-sigalg\f[R]
+options to override the default values at your own risk.
+.SH SUPPORTED NAMED EXTENSIONS
+.PP
+The \f[CB]keytool\f[R] command supports these named extensions.
+The names aren\[aq]t case\-sensitive.
.TP
--help
-.br
-Lists the basic commands and their options\&.
-
-For more information about a specific command, enter the following, where \f3command_name\fR is the name of the command: \f3keytool -command_name -help\fR\&.
-.SH EXAMPLES
-This example walks through the sequence of steps to create a keystore for managing public/private key pair and certificates from trusted entities\&.
-.SS GENERATE\ THE\ KEY\ PAIR
-First, create a keystore and generate the key pair\&. You can use a command such as the following typed as a single line:
-.sp
-.nf
-\f3keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US"\fP
-.fi
-.nf
-\f3 \-alias business \-keypass <new password for private key>\fP
-.fi
-.nf
-\f3 \-keystore /working/mykeystore\fP
-.fi
-.nf
-\f3 \-storepass <new password for keystore> \-validity 180\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The command creates the keystore named \f3mykeystore\fR in the working directory (assuming it does not already exist), and assigns it the password specified by \f3<new password for keystore>\fR\&. It generates a public/private key pair for the entity whose distinguished name has a common name of Mark Jones, organizational unit of Java, organization of Oracle and two-letter country code of US\&. It uses the default DSA key generation algorithm to create the keys; both are 1024 bits\&.
+.B \f[CB]BC\f[R] or \f[CB]BasicContraints\f[R]
+Values:
+.RS
+.PP
+The full form is
+\f[CB]ca:\f[R]{\f[CB]true\f[R]|\f[CB]false\f[R]}[\f[CB],pathlen:\f[R]\f[I]len\f[R]]
+or \f[I]len\f[R], which is short for
+\f[CB]ca:true,pathlen:\f[R]\f[I]len\f[R].
+.PP
+When \f[I]len\f[R] is omitted, the resulting value is \f[CB]ca:true\f[R].
+.RE
+.TP
+.B \f[CB]KU\f[R] or \f[CB]KeyUsage\f[R]
+Values:
+.RS
+.PP
+\f[I]usage\f[R](\f[CB],\f[R] \f[I]usage\f[R])*
.PP
-The command uses the default SHA1withDSA signature algorithm to create a self-signed certificate that includes the public key and the distinguished name information\&. The certificate is valid for 180 days, and is associated with the private key in a keystore entry referred to by the alias \f3business\fR\&. The private key is assigned the password specified by \f3<new password for private key>\fR\&.
+\f[I]usage\f[R] can be one of the following:
+.IP \[bu] 2
+\f[CB]digitalSignature\f[R]
+.IP \[bu] 2
+\f[CB]nonRepudiation\f[R] (\f[CB]contentCommitment\f[R])
+.IP \[bu] 2
+\f[CB]keyEncipherment\f[R]
+.IP \[bu] 2
+\f[CB]dataEncipherment\f[R]
+.IP \[bu] 2
+\f[CB]keyAgreement\f[R]
+.IP \[bu] 2
+\f[CB]keyCertSign\f[R]
+.IP \[bu] 2
+\f[CB]cRLSign\f[R]
+.IP \[bu] 2
+\f[CB]encipherOnly\f[R]
+.IP \[bu] 2
+\f[CB]decipherOnly\f[R]
.PP
-The command is significantly shorter when the option defaults are accepted\&. In this case, no options are required, and the defaults are used for unspecified options that have default values\&. You are prompted for any required values\&. You could have the following:
-.sp
-.nf
-\f3keytool \-genkeypair\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-In this case, a keystore entry with the alias \f3mykey\fR is created, with a newly generated key pair and a certificate that is valid for 90 days\&. This entry is placed in the keystore named \f3\&.keystore\fR in your home directory\&. The keystore is created when it does not already exist\&. You are prompted for the distinguished name information, the keystore password, and the private key password\&.
+Provided there is no ambiguity, the \f[I]usage\f[R] argument can be
+abbreviated with the first few letters (such as \f[CB]dig\f[R] for
+\f[CB]digitalSignature\f[R]) or in camel\-case style (such as \f[CB]dS\f[R]
+for \f[CB]digitalSignature\f[R] or \f[CB]cRLS\f[R] for \f[CB]cRLSign\f[R]).
+The \f[I]usage\f[R] values are case\-sensitive.
+.RE
+.TP
+.B \f[CB]EKU\f[R] or \f[CB]ExtendedKeyUsage\f[R]
+Values:
+.RS
+.PP
+\f[I]usage\f[R](\f[CB],\f[R] \f[I]usage\f[R])*
.PP
-The rest of the examples assume you executed the \f3-genkeypair\fR command without options specified, and that you responded to the prompts with values equal to those specified in the first \f3-genkeypair\fR command\&. For example, a distinguished name of \f3cn=Mark Jones\fR, \f3ou=Java\fR, \f3o=Oracle\fR, \f3c=US\fR)\&.
-.SS REQUEST\ A\ SIGNED\ CERTIFICATE\ FROM\ A\ CA
-Generating the key pair created a self-signed certificate\&. A certificate is more likely to be trusted by others when it is signed by a Certification Authority (CA)\&. To get a CA signature, first generate a Certificate Signing Request (CSR), as follows:
-.sp
-.nf
-\f3keytool \-certreq \-file MarkJ\&.csr\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-This creates a CSR for the entity identified by the default alias \f3mykey\fR and puts the request in the file named MarkJ\&.csr\&. Submit this file to a CA, such as VeriSign\&. The CA authenticates you, the requestor (usually off-line), and returns a certificate, signed by them, authenticating your public key\&. In some cases, the CA returns a chain of certificates, each one authenticating the public key of the signer of the previous certificate in the chain\&.
-.SS IMPORT\ A\ CERTIFICATE\ FOR\ THE\ CA
-You now need to replace the self-signed certificate with a certificate chain, where each certificate in the chain authenticates the public key of the signer of the previous certificate in the chain, up to a root CA\&.
+\f[I]usage\f[R] can be one of the following:
+.IP \[bu] 2
+\f[CB]anyExtendedKeyUsage\f[R]
+.IP \[bu] 2
+\f[CB]serverAuth\f[R]
+.IP \[bu] 2
+\f[CB]clientAuth\f[R]
+.IP \[bu] 2
+\f[CB]codeSigning\f[R]
+.IP \[bu] 2
+\f[CB]emailProtection\f[R]
+.IP \[bu] 2
+\f[CB]timeStamping\f[R]
+.IP \[bu] 2
+\f[CB]OCSPSigning\f[R]
+.IP \[bu] 2
+Any OID string
+.PP
+Provided there is no ambiguity, the \f[I]usage\f[R] argument can be
+abbreviated with the first few letters or in camel\-case style.
+The \f[I]usage\f[R] values are case\-sensitive.
+.RE
+.TP
+.B \f[CB]SAN\f[R] or \f[CB]SubjectAlternativeName\f[R]
+Values:
+.RS
+.PP
+\f[I]type\f[R]\f[CB]:\f[R]\f[I]value\f[R](\f[CB],\f[R]
+\f[I]type\f[R]\f[CB]:\f[R]\f[I]value\f[R])*
.PP
-Before you import the certificate reply from a CA, you need one or more trusted certificates in your keystore or in the \f3cacerts\fR keystore file\&. See \f3-importcert\fR in Commands\&.
-.TP 0.2i
-\(bu
-If the certificate reply is a certificate chain, then you need the top certificate of the chain\&. The root CA certificate that authenticates the public key of the CA\&.
-.TP 0.2i
-\(bu
-If the certificate reply is a single certificate, then you need a certificate for the issuing CA (the one that signed it)\&. If that certificate is not self-signed, then you need a certificate for its signer, and so on, up to a self-signed root CA certificate\&.
+\f[I]type\f[R] can be one of the following:
+.IP \[bu] 2
+\f[CB]EMAIL\f[R]
+.IP \[bu] 2
+\f[CB]URI\f[R]
+.IP \[bu] 2
+\f[CB]DNS\f[R]
+.IP \[bu] 2
+\f[CB]IP\f[R]
+.IP \[bu] 2
+\f[CB]OID\f[R]
.PP
-The \f3cacerts\fR keystore file ships with several VeriSign root CA certificates, so you probably will not need to import a VeriSign certificate as a trusted certificate in your keystore\&. But if you request a signed certificate from a different CA, and a certificate authenticating that CA\&'s public key was not added to \f3cacerts\fR, then you must import a certificate from the CA as a trusted certificate\&.
+The \f[I]value\f[R] argument is the string format value for the
+\f[I]type\f[R].
+.RE
+.TP
+.B \f[CB]IAN\f[R] or \f[CB]IssuerAlternativeName\f[R]
+Values:
+.RS
.PP
-A certificate from a CA is usually either self-signed or signed by another CA, in which case you need a certificate that authenticates that CA\&'s public key\&. Suppose company ABC, Inc\&., is a CA, and you obtain a file named A\f3BCCA\&.cer\fR that is supposed to be a self-signed certificate from ABC, that authenticates that CA\&'s public key\&. Be careful to ensure the certificate is valid before you import it as a trusted certificate\&. View it first with the \f3keytool -printcert\fR command or the \f3keytool -importcert\fR command without the \f3-noprompt\fR option, and make sure that the displayed certificate fingerprints match the expected ones\&. You can call the person who sent the certificate, and compare the fingerprints that you see with the ones that they show or that a secure public key repository shows\&. Only when the fingerprints are equal is it guaranteed that the certificate was not replaced in transit with somebody else\&'s (for example, an attacker\&'s) certificate\&. If such an attack takes place, and you did not check the certificate before you imported it, then you would be trusting anything the attacker has signed\&.
+Same as \f[CB]SAN\f[R] or \f[CB]SubjectAlternativeName\f[R].
+.RE
+.TP
+.B \f[CB]SIA\f[R] or \f[CB]SubjectInfoAccess\f[R]
+Values:
+.RS
+.PP
+\f[I]method\f[R]\f[CB]:\f[R]\f[I]location\-type\f[R]\f[CB]:\f[R]\f[I]location\-value\f[R](\f[CB],\f[R]
+\f[I]method\f[R]\f[CB]:\f[R]\f[I]location\-type\f[R]\f[CB]:\f[R]\f[I]location\-value\f[R])*
+.PP
+\f[I]method\f[R] can be one of the following:
+.IP \[bu] 2
+\f[CB]timeStamping\f[R]
+.IP \[bu] 2
+\f[CB]caRepository\f[R]
+.IP \[bu] 2
+Any OID
.PP
-If you trust that the certificate is valid, then you can add it to your keystore with the following command:
-.sp
-.nf
-\f3keytool \-importcert \-alias abc \-file ABCCA\&.cer\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-This command creates a trusted certificate entry in the keystore, with the data from the file ABCCA\&.cer, and assigns the alias \f3abc\fR to the entry\&.
-.SS IMPORT\ THE\ CERTIFICATE\ REPLY\ FROM\ THE\ CA
-After you import a certificate that authenticates the public key of the CA you submitted your certificate signing request to (or there is already such a certificate in the cacerts file), you can import the certificate reply and replace your self-signed certificate with a certificate chain\&. This chain is the one returned by the CA in response to your request (when the CA reply is a chain), or one constructed (when the CA reply is a single certificate) using the certificate reply and trusted certificates that are already available in the keystore where you import the reply or in the \f3cacerts\fR keystore file\&.
+The \f[I]location\-type\f[R] and \f[I]location\-value\f[R] arguments can
+be any \f[I]type\f[R]\f[CB]:\f[R]\f[I]value\f[R] supported by the
+\f[CB]SubjectAlternativeName\f[R] extension.
+.RE
+.TP
+.B \f[CB]AIA\f[R] or \f[CB]AuthorityInfoAccess\f[R]
+Values:
+.RS
+.PP
+Same as \f[CB]SIA\f[R] or \f[CB]SubjectInfoAccess\f[R].
+.PP
+The \f[I]method\f[R] argument can be one of the following:
+.IP \[bu] 2
+\f[CB]ocsp\f[R]
+.IP \[bu] 2
+\f[CB]caIssuers\f[R]
+.IP \[bu] 2
+Any OID
+.RE
+.PP
+When \f[I]name\f[R] is OID, the value is the hexadecimal dumped Definite
+Encoding Rules (DER) encoding of the \f[CB]extnValue\f[R] for the
+extension excluding the OCTET STRING type and length bytes.
+Other than standard hexadecimal numbers (0\-9, a\-f, A\-F), any extra
+characters are ignored in the HEX string.
+Therefore, both 01:02:03:04 and 01020304 are accepted as identical
+values.
+When there is no value, the extension has an empty value field.
+.PP
+A special name \f[CB]honored\f[R], used only in \f[CB]\-gencert\f[R],
+denotes how the extensions included in the certificate request should be
+honored.
+The value for this name is a comma\-separated list of \f[CB]all\f[R] (all
+requested extensions are honored),
+\f[I]name\f[R]{\f[CB]:\f[R][\f[CB]critical\f[R]|\f[CB]non\-critical\f[R]]} (the
+named extension is honored, but it uses a different \f[CB]isCritical\f[R]
+attribute), and \f[CB]\-name\f[R] (used with \f[CB]all\f[R], denotes an
+exception).
+Requested extensions aren\[aq]t honored by default.
.PP
-For example, if you sent your certificate signing request to VeriSign, then you can import the reply with the following, which assumes the returned certificate is named VSMarkJ\&.cer:
-.sp
-.nf
-\f3keytool \-importcert \-trustcacerts \-file VSMarkJ\&.cer\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS EXPORT\ A\ CERTIFICATE\ THAT\ AUTHENTICATES\ THE\ PUBLIC\ KEY
-If you used the \f3jarsigner\fR command to sign a Java Archive (JAR) file, then clients that want to use the file will want to authenticate your signature\&. One way the clients can authenticate you is by first importing your public key certificate into their keystore as a trusted entry\&.
+If, besides the\f[CB]\-ext\ honored\f[R] option, another named or OID
+\f[CB]\-ext\f[R] option is provided, this extension is added to those
+already honored.
+However, if this name (or OID) also appears in the honored value, then
+its value and criticality override that in the request.
+If an extension of the same type is provided multiple times through
+either a name or an OID, only the last extension is used.
+.PP
+The \f[CB]subjectKeyIdentifier\f[R] extension is always created.
+For non\-self\-signed certificates, the \f[CB]authorityKeyIdentifier\f[R]
+is created.
+.PP
+\f[B]CAUTION:\f[R]
+.PP
+Users should be aware that some combinations of extensions (and other
+certificate fields) may not conform to the Internet standard.
+See \f[B]Certificate Conformance Warning\f[R].
+.SH EXAMPLES OF TASKS IN CREATING A KEYSTORE
.PP
-You can export the certificate and supply it to your clients\&. As an example, you can copy your certificate to a file named MJ\&.cer with the following command that assumes the entry has an alias of \f3mykey\fR:
-.sp
-.nf
-\f3keytool \-exportcert \-alias mykey \-file MJ\&.cer\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-With the certificate and the signed JAR file, a client can use the \f3jarsigner\fR command to authenticate your signature\&.
-.SS IMPORT\ KEYSTORE
-The command \f3importkeystore\fR is used to import an entire keystore into another keystore, which means all entries from the source keystore, including keys and certificates, are all imported to the destination keystore within a single command\&. You can use this command to import entries from a different type of keystore\&. During the import, all new entries in the destination keystore will have the same alias names and protection passwords (for secret keys and private keys)\&. If the \f3keytool\fR command cannot recover the private keys or secret keys from the source keystore, then it prompts you for a password\&. If it detects alias duplication, then it asks you for a new alias, and you can specify a new alias or simply allow the \f3keytool\fR command to overwrite the existing one\&.
+The following examples describe the sequence actions in creating a
+keystore for managing public/private key pairs and certificates from
+trusted entities.
+.IP \[bu] 2
+\f[B]Generating the Key Pair\f[R]
+.IP \[bu] 2
+\f[B]Requesting a Signed Certificate from a CA\f[R]
+.IP \[bu] 2
+\f[B]Importing a Certificate for the CA\f[R]
+.IP \[bu] 2
+\f[B]Importing the Certificate Reply from the CA\f[R]
+.IP \[bu] 2
+\f[B]Exporting a Certificate That Authenticates the Public Key\f[R]
+.IP \[bu] 2
+\f[B]Importing the Keystore\f[R]
+.IP \[bu] 2
+\f[B]Generating Certificates for an SSL Server\f[R]
+.SH GENERATING THE KEY PAIR
+.PP
+Create a keystore and then generate the key pair.
.PP
-For example, to import entries from a typical JKS type keystore key\&.jks into a PKCS #11 type hardware-based keystore, use the command:
-.sp
-.nf
-\f3keytool \-importkeystore\fP
-.fi
-.nf
-\f3 \-srckeystore key\&.jks \-destkeystore NONE\fP
-.fi
-.nf
-\f3 \-srcstoretype JKS \-deststoretype PKCS11\fP
-.fi
-.nf
-\f3 \-srcstorepass <src keystore password>\fP
-.fi
-.nf
-\f3 \-deststorepass <destination keystore pwd>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The \f3importkeystore\fR command can also be used to import a single entry from a source keystore to a destination keystore\&. In this case, besides the options you see in the previous example, you need to specify the alias you want to import\&. With the \f3-srcalias\fR option specified, you can also specify the destination alias name in the command line, as well as protection password for a secret/private key and the destination protection password you want\&. The following command demonstrates this:
-.sp
-.nf
-\f3keytool \-importkeystore\fP
-.fi
-.nf
-\f3 \-srckeystore key\&.jks \-destkeystore NONE\fP
-.fi
-.nf
-\f3 \-srcstoretype JKS \-deststoretype PKCS11\fP
-.fi
-.nf
-\f3 \-srcstorepass <src keystore password>\fP
-.fi
-.nf
-\f3 \-deststorepass <destination keystore pwd>\fP
-.fi
-.nf
-\f3 \-srcalias myprivatekey \-destalias myoldprivatekey\fP
-.fi
-.nf
-\f3 \-srckeypass <source entry password>\fP
-.fi
-.nf
-\f3 \-destkeypass <destination entry password>\fP
-.fi
-.nf
-\f3 \-noprompt\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS GENERATE\ CERTIFICATES\ FOR\ AN\ SSL\ SERVER
-The following are \f3keytool\fR commands to generate key pairs and certificates for three entities: Root CA (\f3root\fR), Intermediate CA (\f3ca\fR), and SSL server (\f3server\fR)\&. Ensure that you store all the certificates in the same keystore\&. In these examples, RSA is the recommended the key algorithm\&.
-.sp
-.nf
-\f3keytool \-genkeypair \-keystore root\&.jks \-alias root \-ext bc:c\fP
-.fi
-.nf
-\f3keytool \-genkeypair \-keystore ca\&.jks \-alias ca \-ext bc:c\fP
-.fi
-.nf
-\f3keytool \-genkeypair \-keystore server\&.jks \-alias server\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3keytool \-keystore root\&.jks \-alias root \-exportcert \-rfc > root\&.pem\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3keytool \-storepass <storepass> \-keystore ca\&.jks \-certreq \-alias ca |\fP
-.fi
-.nf
-\f3 keytool \-storepass <storepass> \-keystore root\&.jks\fP
-.fi
-.nf
-\f3 \-gencert \-alias root \-ext BC=0 \-rfc > ca\&.pem\fP
-.fi
-.nf
-\f3keytool \-keystore ca\&.jks \-importcert \-alias ca \-file ca\&.pem\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3keytool \-storepass <storepass> \-keystore server\&.jks \-certreq \-alias server |\fP
-.fi
-.nf
-\f3 keytool \-storepass <storepass> \-keystore ca\&.jks \-gencert \-alias ca\fP
-.fi
-.nf
-\f3 \-ext ku:c=dig,kE \-rfc > server\&.pem\fP
-.fi
-.nf
-\f3cat root\&.pem ca\&.pem server\&.pem |\fP
-.fi
-.nf
-\f3 keytool \-keystore server\&.jks \-importcert \-alias server\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH TERMS
-.TP
-Keystore
-A keystore is a storage facility for cryptographic keys and certificates\&.
-.TP
-Keystore entries
-Keystores can have different types of entries\&. The two most applicable entry types for the \f3keytool\fR command include the following:
+You can enter the command as a single line such as the following:
+.RS
+.PP
+\f[CB]keytool\ \-genkeypair\ \-dname\ "cn=myname,\ ou=mygroup,\ o=mycompany,\ c=mycountry"\ \-alias\ business\ \-keypass\f[R]
+\f[I]password\f[R]
+\f[CB]\-keystore\ /working/mykeystore\ \-storepass\ password\ \-validity\ 180\f[R]
+.RE
+.PP
+The command creates the keystore named \f[CB]mykeystore\f[R] in the
+working directory (provided it doesn\[aq]t already exist), and assigns
+it the password specified by \f[CB]\-keypass\f[R].
+It generates a public/private key pair for the entity whose
+distinguished name is \f[CB]myname\f[R], \f[CB]mygroup\f[R],
+\f[CB]mycompany\f[R], and a two\-letter country code of
+\f[CB]mycountry\f[R].
+It uses the default DSA key generation algorithm to create the keys;
+both are 2048 bits
+.PP
+The command uses the default SHA256withDSA signature algorithm to create
+a self\-signed certificate that includes the public key and the
+distinguished name information.
+The certificate is valid for 180 days, and is associated with the
+private key in a keystore entry referred to by
+\f[CB]\-alias\ business\f[R].
+The private key is assigned the password specified by
+\f[CB]\-keypass\f[R].
+.PP
+The command is significantly shorter when the option defaults are
+accepted.
+In this case, no options are required, and the defaults are used for
+unspecified options that have default values.
+You are prompted for any required values.
+You could have the following:
+.RS
+.PP
+\f[CB]keytool\ \-genkeypair\f[R]
+.RE
+.PP
+In this case, a keystore entry with the alias \f[CB]mykey\f[R] is created,
+with a newly generated key pair and a certificate that is valid for 90
+days.
+This entry is placed in your home directory in a keystore named
+\f[CB]\&.keystore\f[R] .
+\f[CB]\&.keystore\f[R] is created if it doesn\[aq]t already exist.
+You are prompted for the distinguished name information, the keystore
+password, and the private key password.
+.PP
+\f[B]Note:\f[R]
+.PP
+The rest of the examples assume that you executed the
+\f[CB]\-genkeypair\f[R] command without specifying options, and that you
+responded to the prompts with values equal to those specified in the
+first \f[CB]\-genkeypair\f[R] command.
+For example, a distinguished name of
+\f[CB]cn=\f[R]\f[I]myname\f[R]\f[CB],\ ou=\f[R]\f[I]mygroup\f[R]\f[CB],\ o=\f[R]\f[I]mycompany\f[R]\f[CB],\ c=\f[R]\f[I]mycountry\f[R]).
+.SH REQUESTING A SIGNED CERTIFICATE FROM A CA
+.PP
+\f[B]Note:\f[R]
+.PP
+Generating the key pair created a self\-signed certificate; however, a
+certificate is more likely to be trusted by others when it is signed by
+a CA.
+.PP
+To get a CA signature, complete the following process:
+.IP "1." 3
+Generate a CSR:
+.RS 4
+.RS
+.PP
+\f[CB]keytool\ \-certreq\ \-file\ myname.csr\f[R]
+.RE
+.PP
+This creates a CSR for the entity identified by the default alias
+\f[CB]mykey\f[R] and puts the request in the file named
+\f[CB]myname.csr\f[R].
+.RE
+.IP "2." 3
+Submit \f[CB]myname.csr\f[R] to a CA, such as DigiCert.
+.PP
+The CA authenticates you, the requestor (usually offline), and returns a
+certificate, signed by them, authenticating your public key.
+In some cases, the CA returns a chain of certificates, each one
+authenticating the public key of the signer of the previous certificate
+in the chain.
+.SH IMPORTING A CERTIFICATE FOR THE CA
+.PP
+To import a certificate for the CA, complete the following process:
+.IP "1." 3
+Before you import the certificate reply from a CA, you need one or more
+trusted certificates either in your keystore or in the \f[CB]cacerts\f[R]
+keystore file.
+See \f[CB]\-importcert\f[R] in \f[B]Commands\f[R].
+.RS 4
+.IP \[bu] 2
+If the certificate reply is a certificate chain, then you need the top
+certificate of the chain.
+The root CA certificate that authenticates the public key of the CA.
+.IP \[bu] 2
+If the certificate reply is a single certificate, then you need a
+certificate for the issuing CA (the one that signed it).
+If that certificate isn\[aq]t self\-signed, then you need a certificate
+for its signer, and so on, up to a self\-signed root CA certificate.
+.PP
+The \f[CB]cacerts\f[R] keystore ships with a set of root certificates
+issued by the CAs of \f[B]the Oracle Java Root Certificate program\f[R]
+[http://www.oracle.com/technetwork/java/javase/javasecarootcertsprogram\-1876540.html].
+If you request a signed certificate from a CA, and a certificate
+authenticating that CA\[aq]s public key hasn\[aq]t been added to
+\f[CB]cacerts\f[R], then you must import a certificate from that CA as a
+trusted certificate.
+.PP
+A certificate from a CA is usually self\-signed or signed by another CA.
+If it is signed by another CA, you need a certificate that authenticates
+that CA\[aq]s public key.
+.PP
+For example, you have obtained a \f[I]X\f[R]\f[CB]\&.cer\f[R] file from a
+company that is a CA and the file is supposed to be a self\-signed
+certificate that authenticates that CA\[aq]s public key.
+Before you import it as a trusted certificate, you should ensure that
+the certificate is valid by:
+.IP "1." 3
+Viewing it with the \f[CB]keytool\ \-printcert\f[R] command or the
+\f[CB]keytool\ \-importcert\f[R] command without using the
+\f[CB]\-noprompt\f[R] option.
+Make sure that the displayed certificate fingerprints match the expected
+fingerprints.
+.IP "2." 3
+Calling the person who sent the certificate, and comparing the
+fingerprints that you see with the ones that they show or that a secure
+public key repository shows.
+.PP
+Only when the fingerprints are equal is it assured that the certificate
+wasn\[aq]t replaced in transit with somebody else\[aq]s certificate
+(such as an attacker\[aq]s certificate).
+If such an attack takes place, and you didn\[aq]t check the certificate
+before you imported it, then you would be trusting anything that the
+attacker signed.
+.RE
+.IP "2." 3
+Replace the self\-signed certificate with a certificate chain, where
+each certificate in the chain authenticates the public key of the signer
+of the previous certificate in the chain, up to a root CA.
+.RS 4
+.PP
+If you trust that the certificate is valid, then you can add it to your
+keystore by entering the following command:
+.RS
+.PP
+\f[CB]keytool\ \-importcert\ \-alias\f[R] \f[I]alias\f[R]
+\f[CB]\-file\ *X*\f[R].cer`
+.RE
+.PP
+This command creates a trusted certificate entry in the keystore from
+the data in the CA certificate file and assigns the values of the
+\f[I]alias\f[R] to the entry.
+.RE
+.SH IMPORTING THE CERTIFICATE REPLY FROM THE CA
+.PP
+After you import a certificate that authenticates the public key of the
+CA that you submitted your certificate signing request to (or there is
+already such a certificate in the \f[CB]cacerts\f[R] file), you can import
+the certificate reply and replace your self\-signed certificate with a
+certificate chain.
+.PP
+The certificate chain is one of the following:
+.IP \[bu] 2
+Returned by the CA when the CA reply is a chain.
+.IP \[bu] 2
+Constructed when the CA reply is a single certificate.
+This certificate chain is constructed by using the certificate reply and
+trusted certificates available either in the keystore where you import
+the reply or in the \f[CB]cacerts\f[R] keystore file.
+.PP
+For example, if you sent your certificate signing request to DigiCert,
+then you can import their reply by entering the following command:
+.PP
+\f[B]Note:\f[R]
+.PP
+In this example, the returned certificate is named
+\f[CB]DCmyname.cer\f[R].
+.RS
+.PP
+\f[CB]keytool\ \-importcert\ \-trustcacerts\ \-file\ DCmyname.cer\f[R]
+.RE
+.SH EXPORTING A CERTIFICATE THAT AUTHENTICATES THE PUBLIC KEY
+.PP
+\f[B]Note:\f[R]
+.PP
+If you used the \f[CB]jarsigner\f[R] command to sign a Java Archive (JAR)
+file, then clients that use the file will want to authenticate your
+signature.
+.PP
+One way that clients can authenticate you is by importing your public
+key certificate into their keystore as a trusted entry.
+You can then export the certificate and supply it to your clients.
+.PP
+For example:
+.IP "1." 3
+Copy your certificate to a file named \f[CB]myname.cer\f[R] by entering
+the following command:
+.RS 4
+.PP
+\f[B]Note:\f[R]
+.PP
+In this example, the entry has an alias of \f[CB]mykey\f[R].
+.RS
+.PP
+\f[CB]keytool\ \-exportcert\ \-alias\ mykey\ \-file\ myname.cer\f[R]
+.RE
+.RE
+.IP "2." 3
+With the certificate and the signed JAR file, a client can use the
+\f[CB]jarsigner\f[R] command to authenticate your signature.
+.SH IMPORTING THE KEYSTORE
+.PP
+Use the \f[CB]importkeystore\f[R] command to import an entire keystore
+into another keystore.
+This imports all entries from the source keystore, including keys and
+certificates, to the destination keystore with a single command.
+You can use this command to import entries from a different type of
+keystore.
+During the import, all new entries in the destination keystore will have
+the same alias names and protection passwords (for secret keys and
+private keys).
+If the \f[CB]keytool\f[R] command can\[aq]t recover the private keys or
+secret keys from the source keystore, then it prompts you for a
+password.
+If it detects alias duplication, then it asks you for a new alias, and
+you can specify a new alias or simply allow the \f[CB]keytool\f[R] command
+to overwrite the existing one.
+.PP
+For example, import entries from a typical JKS type keystore
+\f[CB]key.jks\f[R] into a PKCS #11 type hardware\-based keystore, by
+entering the following command:
+.RS
+.PP
+\f[CB]keytool\ \-importkeystore\ \-srckeystore\ key.jks\ \-destkeystore\ NONE\ \-srcstoretype\ JKS\ \-deststoretype\ PKCS11\ \-srcstorepass\f[R]
+\f[I]password\f[R] \f[CB]\-deststorepass\f[R] \f[I]password\f[R]
+.RE
+.PP
+The \f[CB]importkeystore\f[R] command can also be used to import a single
+entry from a source keystore to a destination keystore.
+In this case, besides the options you used in the previous example, you
+need to specify the alias you want to import.
+With the \f[CB]\-srcalias\f[R] option specified, you can also specify the
+destination alias name, protection password for a secret or private key,
+and the destination protection password you want as follows:
+.RS
+.PP
+\f[CB]keytool\ \-importkeystore\ \-srckeystore\ key.jks\ \-destkeystore\ NONE\ \-srcstoretype\ JKS\ \-deststoretype\ PKCS11\ \-srcstorepass\f[R]
+\f[I]password\f[R] \f[CB]\-deststorepass\f[R] \f[I]password\f[R]
+\f[CB]\-srcalias\ myprivatekey\ \-destalias\ myoldprivatekey\ \-srckeypass\f[R]
+\f[I]password\f[R] \f[CB]\-destkeypass\f[R] \f[I]password\f[R]
+\f[CB]\-noprompt\f[R]
+.RE
+.SH GENERATING CERTIFICATES FOR AN SSL SERVER
+.PP
+The following are \f[CB]keytool\f[R] commands used to generate key pairs
+and certificates for three entities:
+.IP \[bu] 2
+Root CA (\f[CB]root\f[R])
+.IP \[bu] 2
+Intermediate CA (\f[CB]ca\f[R])
+.IP \[bu] 2
+SSL server (\f[CB]server\f[R])
+.PP
+Ensure that you store all the certificates in the same keystore.
+In the following examples, RSA is the recommended the key algorithm.
+.IP
+.nf
+\f[CB]
+keytool\ \-genkeypair\ \-keystore\ root.jks\ \-alias\ root\ \-ext\ bc:c
+keytool\ \-genkeypair\ \-keystore\ ca.jks\ \-alias\ ca\ \-ext\ bc:c
+keytool\ \-genkeypair\ \-keystore\ server.jks\ \-alias\ server
-\fIKey entries\fR: Each entry holds very sensitive cryptographic key information, which is stored in a protected format to prevent unauthorized access\&. Typically, a key stored in this type of entry is a secret key, or a private key accompanied by the certificate chain for the corresponding public key\&. See Certificate Chains\&. The \f3keytool\fR command can handle both types of entries, while the \f3jarsigner\fR tool only handles the latter type of entry, that is private keys and their associated certificate chains\&.
-
-\fITrusted certificate entries\fR: Each entry contains a single public key certificate that belongs to another party\&. The entry is called a trusted certificate because the keystore owner trusts that the public key in the certificate belongs to the identity identified by the subject (owner) of the certificate\&. The issuer of the certificate vouches for this, by signing the certificate\&.
-.TP
-KeyStore aliases
-All keystore entries (key and trusted certificate entries) are accessed by way of unique aliases\&.
-
-An alias is specified when you add an entity to the keystore with the \f3-genseckey\fR command to generate a secret key, the \f3-genkeypair\fR command to generate a key pair (public and private key), or the \f3-importcert\fR command to add a certificate or certificate chain to the list of trusted certificates\&. Subsequent \f3keytool\fR commands must use this same alias to refer to the entity\&.
-
-For example, you can use the alias \f3duke\fR to generate a new public/private key pair and wrap the public key into a self-signed certificate with the following command\&. See Certificate Chains\&.
-.sp
-.nf
-\f3keytool \-genkeypair \-alias duke \-keypass dukekeypasswd\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-This example specifies an initial password of \f3dukekeypasswd\fR required by subsequent commands to access the private key associated with the alias \f3duke\fR\&. If you later want to change Duke\&'s private key password, use a command such as the following:
-.sp
-.nf
-\f3keytool \-keypasswd \-alias duke \-keypass dukekeypasswd \-new newpass\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-This changes the password from \f3dukekeypasswd\fR to \f3newpass\fR\&. A password should not be specified on a command line or in a script unless it is for testing purposes, or you are on a secure system\&. If you do not specify a required password option on a command line, then you are prompted for it\&.
-.TP
-KeyStore implementation
-The \f3KeyStore\fR class provided in the \f3java\&.security\fR package supplies well-defined interfaces to access and modify the information in a keystore\&. It is possible for there to be multiple different concrete implementations, where each implementation is that for a particular type of keystore\&.
-
-Currently, two command-line tools (\f3keytool\fR and \f3jarsigner\fR) and a GUI-based tool named Policy Tool make use of keystore implementations\&. Because the \f3KeyStore\fR class is \f3public\fR, users can write additional security applications that use it\&.
-
-There is a built-in default implementation, provided by Oracle\&. It implements the keystore as a file with a proprietary keystore type (format) named JKS\&. It protects each private key with its individual password, and also protects the integrity of the entire keystore with a (possibly different) password\&.
-
-Keystore implementations are provider-based\&. More specifically, the application interfaces supplied by \f3KeyStore\fR are implemented in terms of a Service Provider Interface (SPI)\&. That is, there is a corresponding abstract \f3KeystoreSpi\fR class, also in the \f3java\&.security package\fR, which defines the Service Provider Interface methods that providers must implement\&. The term \fIprovider\fR refers to a package or a set of packages that supply a concrete implementation of a subset of services that can be accessed by the Java Security API\&. To provide a keystore implementation, clients must implement a provider and supply a \f3KeystoreSpi\fR subclass implementation, as described in How to Implement a Provider in the Java Cryptography Architecture at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.html
-
-Applications can choose different types of keystore implementations from different providers, using the \f3getInstance\fR factory method supplied in the \f3KeyStore\fR class\&. A keystore type defines the storage and data format of the keystore information, and the algorithms used to protect private/secret keys in the keystore and the integrity of the keystore\&. Keystore implementations of different types are not compatible\&.
-
-The \f3keytool\fR command works on any file-based keystore implementation\&. It treats the keystore location that is passed to it at the command line as a file name and converts it to a \f3FileInputStream\fR, from which it loads the keystore information\&.)The \f3jarsigner\fR command can read a keystore from any location that can be specified with a URL\&.
-
-For \f3keytool\fR and \f3jarsigner\fR, you can specify a keystore type at the command line, with the \f3-storetype\fR option\&. For Policy Tool, you can specify a keystore type with the \fIKeystore\fR menu\&.
-
-If you do not explicitly specify a keystore type, then the tools choose a keystore implementation based on the value of the \f3keystore\&.type\fR property specified in the security properties file\&. The security properties file is called \f3java\&.security\fR, and resides in the security properties directory, \f3java\&.home\elib\esecurity\fR on Windows and \f3java\&.home/lib/security\fR on Oracle Solaris, where \f3java\&.home\fR is the runtime environment directory\&. The \f3jre\fR directory in the SDK or the top-level directory of the Java Runtime Environment (JRE)\&.
+keytool\ \-keystore\ root.jks\ \-alias\ root\ \-exportcert\ \-rfc\ >\ root.pem
-Each tool gets the \f3keystore\&.type\fR value and then examines all the currently installed providers until it finds one that implements a keystores of that type\&. It then uses the keystore implementation from that provider\&.The \f3KeyStore\fR class defines a static method named \f3getDefaultType\fR that lets applications and applets retrieve the value of the \f3keystore\&.type\fR property\&. The following line of code creates an instance of the default keystore type as specified in the \f3keystore\&.type\fR property:
-.sp
-.nf
-\f3KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType());\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The default keystore type is \f3jks\fR, which is the proprietary type of the keystore implementation provided by Oracle\&. This is specified by the following line in the security properties file:
-.sp
-.nf
-\f3keystore\&.type=jks\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-To have the tools utilize a keystore implementation other than the default, you can change that line to specify a different keystore type\&. For example, if you have a provider package that supplies a keystore implementation for a keystore type called \f3pkcs12\fR, then change the line to the following:
-.sp
-.nf
-\f3keystore\&.type=pkcs12\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-\fINote:\fR Case does not matter in keystore type designations\&. For example, JKS would be considered the same as jks\&.
-.TP
-Certificate
-A certificate (or public-key certificate) is a digitally signed statement from one entity (the issuer), saying that the public key and some other information of another entity (the subject) has some specific value\&. The following terms are related to certificates:
-
-\fIPublic Keys\fR: These are numbers associated with a particular entity, and are intended to be known to everyone who needs to have trusted interactions with that entity\&. Public keys are used to verify signatures\&.
-
-\fIDigitally Signed\fR: If some data is digitally signed, then it is stored with the identity of an entity and a signature that proves that entity knows about the data\&. The data is rendered unforgeable by signing with the entity\&'s private key\&.
-
-\fIIdentity\fR: A known way of addressing an entity\&. In some systems, the identity is the public key, and in others it can be anything from an Oracle Solaris UID to an email address to an X\&.509 distinguished name\&.
-
-\fISignature\fR: A signature is computed over some data using the private key of an entity\&. The signer, which in the case of a certificate is also known as the issuer\&.
-
-\fIPrivate Keys\fR: These are numbers, each of which is supposed to be known only to the particular entity whose private key it is (that is, it is supposed to be kept secret)\&. Private and public keys exist in pairs in all public key cryptography systems (also referred to as public key crypto systems)\&. In a typical public key crypto system, such as DSA, a private key corresponds to exactly one public key\&. Private keys are used to compute signatures\&.
-
-\fIEntity\fR: An entity is a person, organization, program, computer, business, bank, or something else you are trusting to some degree\&.
-
-Public key cryptography requires access to users\&' public keys\&. In a large-scale networked environment, it is impossible to guarantee that prior relationships between communicating entities were established or that a trusted repository exists with all used public keys\&. Certificates were invented as a solution to this public key distribution problem\&. Now a Certification Authority (CA) can act as a trusted third party\&. CAs are entities such as businesses that are trusted to sign (issue) certificates for other entities\&. It is assumed that CAs only create valid and reliable certificates because they are bound by legal agreements\&. There are many public Certification Authorities, such as VeriSign, Thawte, Entrust, and so on\&.
+keytool\ \-storepass\ password\ \-keystore\ ca.jks\ \-certreq\ \-alias\ ca\ |
+\ \ \ \ keytool\ \-storepass\ password\ \-keystore\ root.jks
+\ \ \ \ \-gencert\ \-alias\ root\ \-ext\ BC=0\ \-rfc\ >\ ca.pem
+keytool\ \-keystore\ ca.jks\ \-importcert\ \-alias\ ca\ \-file\ ca.pem
-You can also run your own Certification Authority using products such as Microsoft Certificate Server or the Entrust CA product for your organization\&. With the \f3keytool\fR command, it is possible to display, import, and export certificates\&. It is also possible to generate self-signed certificates\&.
-
-The \f3keytool\fR command currently handles X\&.509 certificates\&.
-.TP
-X\&.509 Certificates
-The X\&.509 standard defines what information can go into a certificate and describes how to write it down (the data format)\&. All the data in a certificate is encoded with two related standards called ASN\&.1/DER\&. Abstract Syntax Notation 1 describes data\&. The Definite Encoding Rules describe a single way to store and transfer that data\&.
-
-All X\&.509 certificates have the following data, in addition to the signature:
-
-\fIVersion\fR: This identifies which version of the X\&.509 standard applies to this certificate, which affects what information can be specified in it\&. Thus far, three versions are defined\&. The \f3keytool\fR command can import and export v1, v2, and v3 certificates\&. It generates v3 certificates\&.
-
-X\&.509 Version 1 has been available since 1988, is widely deployed, and is the most generic\&.
-
-X\&.509 Version 2 introduced the concept of subject and issuer unique identifiers to handle the possibility of reuse of subject or issuer names over time\&. Most certificate profile documents strongly recommend that names not be reused and that certificates should not make use of unique identifiers\&. Version 2 certificates are not widely used\&.
-
-X\&.509 Version 3 is the most recent (1996) and supports the notion of extensions where anyone can define an extension and include it in the certificate\&. Some common extensions are: KeyUsage (limits the use of the keys to particular purposes such as \f3signing-only\fR) and AlternativeNames (allows other identities to also be associated with this public key, for example\&. DNS names, email addresses, IP addresses)\&. Extensions can be marked critical to indicate that the extension should be checked and enforced or used\&. For example, if a certificate has the KeyUsage extension marked critical and set to \f3keyCertSign\fR, then when this certificate is presented during SSL communication, it should be rejected because the certificate extension indicates that the associated private key should only be used for signing certificates and not for SSL use\&.
-
-\fISerial number\fR: The entity that created the certificate is responsible for assigning it a serial number to distinguish it from other certificates it issues\&. This information is used in numerous ways\&. For example, when a certificate is revoked its serial number is placed in a Certificate Revocation List (CRL)\&.
-
-\fISignature algorithm identifier\fR: This identifies the algorithm used by the CA to sign the certificate\&.
-
-\fIIssuer name\fR: The X\&.500 Distinguished Name of the entity that signed the certificate\&. See X\&.500 Distinguished Names\&. This is typically a CA\&. Using this certificate implies trusting the entity that signed this certificate\&. In some cases, such as root or top-level CA certificates, the issuer signs its own certificate\&.
-
-\fIValidity period\fR: Each certificate is valid only for a limited amount of time\&. This period is described by a start date and time and an end date and time, and can be as short as a few seconds or almost as long as a century\&. The validity period chosen depends on a number of factors, such as the strength of the private key used to sign the certificate, or the amount one is willing to pay for a certificate\&. This is the expected period that entities can rely on the public value, when the associated private key has not been compromised\&.
-
-\fISubject name\fR: The name of the entity whose public key the certificate identifies\&. This name uses the X\&.500 standard, so it is intended to be unique across the Internet\&. This is the X\&.500 Distinguished Name (DN) of the entity\&. See X\&.500 Distinguished Names\&. For example,
-.sp
-.nf
-\f3CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-These refer to the subject\&'s common name (CN), organizational unit (OU), organization (O), and country (C)\&.
-
-\fISubject public key information\fR: This is the public key of the entity being named with an algorithm identifier that specifies which public key crypto system this key belongs to and any associated key parameters\&.
-.TP
-Certificate Chains
-The \f3keytool\fR command can create and manage keystore key entries that each contain a private key and an associated certificate chain\&. The first certificate in the chain contains the public key that corresponds to the private key\&.
-
-When keys are first generated, the chain starts off containing a single element, a self-signed certificate\&. See \f3-genkeypair\fR in Commands\&. A self-signed certificate is one for which the issuer (signer) is the same as the subject\&. The subject is the entity whose public key is being authenticated by the certificate\&. Whenever the \f3-genkeypair\fR command is called to generate a new public/private key pair, it also wraps the public key into a self-signed certificate\&.
-
-Later, after a Certificate Signing Request (CSR) was generated with the \f3-certreq\fR command and sent to a Certification Authority (CA), the response from the CA is imported with \f3-importcert\fR, and the self-signed certificate is replaced by a chain of certificates\&. See the \f3-certreq\fR and \f3-importcert\fR options in Commands\&. At the bottom of the chain is the certificate (reply) issued by the CA authenticating the subject\&'s public key\&. The next certificate in the chain is one that authenticates the CA\&'s public key\&.
-
-In many cases, this is a self-signed certificate, which is a certificate from the CA authenticating its own public key, and the last certificate in the chain\&. In other cases, the CA might return a chain of certificates\&. In this case, the bottom certificate in the chain is the same (a certificate signed by the CA, authenticating the public key of the key entry), but the second certificate in the chain is a certificate signed by a different CA that authenticates the public key of the CA you sent the CSR to\&. The next certificate in the chain is a certificate that authenticates the second CA\&'s key, and so on, until a self-signed root certificate is reached\&. Each certificate in the chain (after the first) authenticates the public key of the signer of the previous certificate in the chain\&.
-
-Many CAs only return the issued certificate, with no supporting chain, especially when there is a flat hierarchy (no intermediates CAs)\&. In this case, the certificate chain must be established from trusted certificate information already stored in the keystore\&.
-
-A different reply format (defined by the PKCS #7 standard) includes the supporting certificate chain in addition to the issued certificate\&. Both reply formats can be handled by the \f3keytool\fR command\&.
-
-The top-level (root) CA certificate is self-signed\&. However, the trust into the root\&'s public key does not come from the root certificate itself, but from other sources such as a newspaper\&. This is because anybody could generate a self-signed certificate with the distinguished name of, for example, the VeriSign root CA\&. The root CA public key is widely known\&. The only reason it is stored in a certificate is because this is the format understood by most tools, so the certificate in this case is only used as a vehicle to transport the root CA\&'s public key\&. Before you add the root CA certificate to your keystore, you should view it with the \f3-printcert\fR option and compare the displayed fingerprint with the well-known fingerprint obtained from a newspaper, the root CA\&'s Web page, and so on\&.
-.TP
-The cacerts Certificates File
-A certificates file named \f3cacerts\fR resides in the security properties directory, \f3java\&.home\elib\esecurity\fR on Windows and \f3java\&.home/lib/security\fR on Oracle Solaris, where \f3java\&.home\fR is the runtime environment\&'s directory, which would be the \f3jre\fR directory in the SDK or the top-level directory of the JRE\&.
-
-The \f3cacerts\fR file represents a system-wide keystore with CA certificates\&. System administrators can configure and manage that file with the \f3keytool\fR command by specifying \f3jks\fR as the keystore type\&. The \f3cacerts\fR keystore file ships with a default set of root CA certificates\&. You can list the default certificates with the following command:
-.sp
-.nf
-\f3keytool \-list \-keystore java\&.home/lib/security/cacerts\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The initial password of the \f3cacerts\fR keystore file is \f3changeit\fR\&. System administrators should change that password and the default access permission of that file upon installing the SDK\&.
-
-\fINote:\fR It is important to verify your \f3cacerts\fR file\&. Because you trust the CAs in the \f3cacerts\fR file as entities for signing and issuing certificates to other entities, you must manage the \f3cacerts\fR file carefully\&. The \f3cacerts\fR file should contain only certificates of the CAs you trust\&. It is your responsibility to verify the trusted root CA certificates bundled in the \f3cacerts\fR file and make your own trust decisions\&.
-
-To remove an untrusted CA certificate from the \f3cacerts\fR file, use the \f3delete\fR option of the \f3keytool\fR command\&. You can find the \f3cacerts\fR file in the JRE installation directory\&. Contact your system administrator if you do not have permission to edit this file
-.TP
-Internet RFC 1421 Certificate Encoding Standard
-Certificates are often stored using the printable encoding format defined by the Internet RFC 1421 standard, instead of their binary encoding\&. This certificate format, also known as Base64 encoding, makes it easy to export certificates to other applications by email or through some other mechanism\&.
+keytool\ \-storepass\ password\ \-keystore\ server.jks\ \-certreq\ \-alias\ server\ |
+\ \ \ \ keytool\ \-storepass\ password\ \-keystore\ ca.jks\ \-gencert\ \-alias\ ca
+\ \ \ \ \-ext\ ku:c=dig,kE\ \-rfc\ >\ server.pem
+cat\ root.pem\ ca.pem\ server.pem\ |
+\ \ \ \ keytool\ \-keystore\ server.jks\ \-importcert\ \-alias\ server
+\f[R]
+.fi
+.SH TERMS
+.TP
+.B Keystore
+A keystore is a storage facility for cryptographic keys and
+certificates.
+.RS
+.RE
+.TP
+.B Keystore entries
+Keystores can have different types of entries.
+The two most applicable entry types for the \f[CB]keytool\f[R] command
+include the following:
+.RS
+.PP
+Key entries: Each entry holds very sensitive cryptographic key
+information, which is stored in a protected format to prevent
+unauthorized access.
+Typically, a key stored in this type of entry is a secret key, or a
+private key accompanied by the certificate chain for the corresponding
+public key.
+See \f[B]Certificate Chains\f[R].
+The \f[CB]keytool\f[R] command can handle both types of entries, while the
+\f[CB]jarsigner\f[R] tool only handles the latter type of entry, that is
+private keys and their associated certificate chains.
+.PP
+Trusted certificate entries: Each entry contains a single public key
+certificate that belongs to another party.
+The entry is called a trusted certificate because the keystore owner
+trusts that the public key in the certificate belongs to the identity
+identified by the subject (owner) of the certificate.
+The issuer of the certificate vouches for this, by signing the
+certificate.
+.RE
+.TP
+.B Keystore aliases
+All keystore entries (key and trusted certificate entries) are accessed
+by way of unique aliases.
+.RS
+.PP
+An alias is specified when you add an entity to the keystore with the
+\f[CB]\-genseckey\f[R] command to generate a secret key, the
+\f[CB]\-genkeypair\f[R] command to generate a key pair (public and private
+key), or the \f[CB]\-importcert\f[R] command to add a certificate or
+certificate chain to the list of trusted certificates.
+Subsequent \f[CB]keytool\f[R] commands must use this same alias to refer
+to the entity.
+.PP
+For example, you can use the alias \f[CB]duke\f[R] to generate a new
+public/private key pair and wrap the public key into a self\-signed
+certificate with the following command.
+See \f[B]Certificate Chains\f[R].
+.RS
+.PP
+\f[CB]keytool\ \-genkeypair\ \-alias\ duke\ \-keypass\f[R] \f[I]passwd\f[R]
+.RE
+.PP
+This example specifies an initial \f[I]passwd\f[R] required by subsequent
+commands to access the private key associated with the alias
+\f[CB]duke\f[R].
+If you later want to change Duke\[aq]s private key password, use a
+command such as the following:
+.RS
+.PP
+\f[CB]keytool\ \-keypasswd\ \-alias\ duke\ \-keypass\f[R] \f[I]passwd\f[R]
+\f[CB]\-new\f[R] \f[I]newpasswd\f[R]
+.RE
+.PP
+This changes the initial \f[I]passwd\f[R] to \f[I]newpasswd\f[R].
+A password shouldn\[aq]t be specified on a command line or in a script
+unless it is for testing purposes, or you are on a secure system.
+If you don\[aq]t specify a required password option on a command line,
+then you are prompted for it.
+.RE
+.TP
+.B Keystore implementation
+The \f[CB]KeyStore\f[R] class provided in the \f[CB]java.security\f[R]
+package supplies well\-defined interfaces to access and modify the
+information in a keystore.
+It is possible for there to be multiple different concrete
+implementations, where each implementation is that for a particular type
+of keystore.
+.RS
+.PP
+Currently, two command\-line tools (\f[CB]keytool\f[R] and
+\f[CB]jarsigner\f[R]) make use of keystore implementations.
+Because the \f[CB]KeyStore\f[R] class is \f[CB]public\f[R], users can write
+additional security applications that use it.
+.PP
+In JDK 9 and later, the default keystore implementation is
+\f[CB]PKCS12\f[R].
+This is a cross platform keystore based on the RSA PKCS12 Personal
+Information Exchange Syntax Standard.
+This standard is primarily meant for storing or transporting a
+user\[aq]s private keys, certificates, and miscellaneous secrets.
+There is another built\-in implementation, provided by Oracle.
+It implements the keystore as a file with a proprietary keystore type
+(format) named \f[CB]JKS\f[R].
+It protects each private key with its individual password, and also
+protects the integrity of the entire keystore with a (possibly
+different) password.
+.PP
+Keystore implementations are provider\-based.
+More specifically, the application interfaces supplied by
+\f[CB]KeyStore\f[R] are implemented in terms of a Service Provider
+Interface (SPI).
+That is, there is a corresponding abstract \f[CB]KeystoreSpi\f[R] class,
+also in the \f[CB]java.security\ package\f[R], which defines the Service
+Provider Interface methods that providers must implement.
+The term \f[I]provider\f[R] refers to a package or a set of packages that
+supply a concrete implementation of a subset of services that can be
+accessed by the Java Security API.
+To provide a keystore implementation, clients must implement a provider
+and supply a \f[CB]KeystoreSpi\f[R] subclass implementation, as described
+in Steps to Implement and Integrate a Provider.
+.PP
+Applications can choose different types of keystore implementations from
+different providers, using the \f[CB]getInstance\f[R] factory method
+supplied in the \f[CB]KeyStore\f[R] class.
+A keystore type defines the storage and data format of the keystore
+information, and the algorithms used to protect private/secret keys in
+the keystore and the integrity of the keystore.
+Keystore implementations of different types aren\[aq]t compatible.
+.PP
+The \f[CB]keytool\f[R] command works on any file\-based keystore
+implementation.
+It treats the keystore location that is passed to it at the command line
+as a file name and converts it to a \f[CB]FileInputStream\f[R], from which
+it loads the keystore information.)The \f[CB]jarsigner\f[R] commands can
+read a keystore from any location that can be specified with a URL.
+.PP
+For \f[CB]keytool\f[R] and \f[CB]jarsigner\f[R], you can specify a keystore
+type at the command line, with the \f[CB]\-storetype\f[R] option.
+.PP
+If you don\[aq]t explicitly specify a keystore type, then the tools
+choose a keystore implementation based on the value of the
+\f[CB]keystore.type\f[R] property specified in the security properties
+file.
+The security properties file is called \f[CB]java.security\f[R], and
+resides in the security properties directory:
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+\f[CB]java.home/lib/security\f[R]
+.IP \[bu] 2
+\f[B]Windows:\f[R] \f[CB]java.home\\lib\\security\f[R]
+.PP
+Each tool gets the \f[CB]keystore.type\f[R] value and then examines all
+the currently installed providers until it finds one that implements a
+keystores of that type.
+It then uses the keystore implementation from that provider.The
+\f[CB]KeyStore\f[R] class defines a static method named
+\f[CB]getDefaultType\f[R] that lets applications retrieve the value of the
+\f[CB]keystore.type\f[R] property.
+The following line of code creates an instance of the default keystore
+type as specified in the \f[CB]keystore.type\f[R] property:
+.RS
+.PP
+\f[CB]KeyStore\ keyStore\ =\ KeyStore.getInstance(KeyStore.getDefaultType());\f[R]
+.RE
+.PP
+The default keystore type is \f[CB]pkcs12\f[R], which is a cross\-platform
+keystore based on the RSA PKCS12 Personal Information Exchange Syntax
+Standard.
+This is specified by the following line in the security properties file:
+.RS
+.PP
+\f[CB]keystore.type=pkcs12\f[R]
+.RE
+.PP
+To have the tools utilize a keystore implementation other than the
+default, you can change that line to specify a different keystore type.
+For example, if you want to use the Oracle\[aq]s \f[CB]jks\f[R] keystore
+implementation, then change the line to the following:
+.RS
+.PP
+\f[CB]keystore.type=jks\f[R]
+.RE
+.PP
+\f[B]Note:\f[R]
+.PP
+Case doesn\[aq]t matter in keystore type designations.
+For example, \f[CB]JKS\f[R] would be considered the same as \f[CB]jks\f[R].
+.RE
+.TP
+.B Certificate
+A certificate (or public\-key certificate) is a digitally signed
+statement from one entity (the issuer), saying that the public key and
+some other information of another entity (the subject) has some specific
+value.
+The following terms are related to certificates:
+.RS
+.IP \[bu] 2
+Public Keys: These are numbers associated with a particular entity, and
+are intended to be known to everyone who needs to have trusted
+interactions with that entity.
+Public keys are used to verify signatures.
+.IP \[bu] 2
+Digitally Signed: If some data is digitally signed, then it is stored
+with the identity of an entity and a signature that proves that entity
+knows about the data.
+The data is rendered unforgeable by signing with the entity\[aq]s
+private key.
+.IP \[bu] 2
+Identity: A known way of addressing an entity.
+In some systems, the identity is the public key, and in others it can be
+anything from an Oracle Solaris UID to an email address to an X.509
+distinguished name.
+.IP \[bu] 2
+Signature: A signature is computed over some data using the private key
+of an entity.
+The signer, which in the case of a certificate is also known as the
+issuer.
+.IP \[bu] 2
+Private Keys: These are numbers, each of which is supposed to be known
+only to the particular entity whose private key it is (that is, it is
+supposed to be kept secret).
+Private and public keys exist in pairs in all public key cryptography
+systems (also referred to as public key crypto systems).
+In a typical public key crypto system, such as DSA, a private key
+corresponds to exactly one public key.
+Private keys are used to compute signatures.
+.IP \[bu] 2
+Entity: An entity is a person, organization, program, computer,
+business, bank, or something else you are trusting to some degree.
+.PP
+Public key cryptography requires access to users\[aq] public keys.
+In a large\-scale networked environment, it is impossible to guarantee
+that prior relationships between communicating entities were established
+or that a trusted repository exists with all used public keys.
+Certificates were invented as a solution to this public key distribution
+problem.
+Now a Certification Authority (CA) can act as a trusted third party.
+CAs are entities such as businesses that are trusted to sign (issue)
+certificates for other entities.
+It is assumed that CAs only create valid and reliable certificates
+because they are bound by legal agreements.
+There are many public Certification Authorities, such as DigiCert,
+Comodo, Entrust, and so on.
+.PP
+You can also run your own Certification Authority using products such as
+Microsoft Certificate Server or the Entrust CA product for your
+organization.
+With the \f[CB]keytool\f[R] command, it is possible to display, import,
+and export certificates.
+It is also possible to generate self\-signed certificates.
+.PP
+The \f[CB]keytool\f[R] command currently handles X.509 certificates.
+.RE
+.TP
+.B X.509 Certificates
+The X.509 standard defines what information can go into a certificate
+and describes how to write it down (the data format).
+All the data in a certificate is encoded with two related standards
+called ASN.1/DER.
+Abstract Syntax Notation 1 describes data.
+The Definite Encoding Rules describe a single way to store and transfer
+that data.
+.RS
+.PP
+All X.509 certificates have the following data, in addition to the
+signature:
+.IP \[bu] 2
+Version: This identifies which version of the X.509 standard applies to
+this certificate, which affects what information can be specified in it.
+Thus far, three versions are defined.
+The \f[CB]keytool\f[R] command can import and export v1, v2, and v3
+certificates.
+It generates v3 certificates.
+.RS 2
+.IP \[bu] 2
+X.509 Version 1 has been available since 1988, is widely deployed, and
+is the most generic.
+.IP \[bu] 2
+X.509 Version 2 introduced the concept of subject and issuer unique
+identifiers to handle the possibility of reuse of subject or issuer
+names over time.
+Most certificate profile documents strongly recommend that names not be
+reused and that certificates shouldn\[aq]t make use of unique
+identifiers.
+Version 2 certificates aren\[aq]t widely used.
+.IP \[bu] 2
+X.509 Version 3 is the most recent (1996) and supports the notion of
+extensions where anyone can define an extension and include it in the
+certificate.
+Some common extensions are: KeyUsage (limits the use of the keys to
+particular purposes such as \f[CB]signing\-only\f[R]) and AlternativeNames
+(allows other identities to also be associated with this public key, for
+example.
+DNS names, email addresses, IP addresses).
+Extensions can be marked critical to indicate that the extension should
+be checked and enforced or used.
+For example, if a certificate has the KeyUsage extension marked critical
+and set to \f[CB]keyCertSign\f[R], then when this certificate is presented
+during SSL communication, it should be rejected because the certificate
+extension indicates that the associated private key should only be used
+for signing certificates and not for SSL use.
+.RE
+.IP \[bu] 2
+Serial number: The entity that created the certificate is responsible
+for assigning it a serial number to distinguish it from other
+certificates it issues.
+This information is used in numerous ways.
+For example, when a certificate is revoked its serial number is placed
+in a Certificate Revocation List (CRL).
+.IP \[bu] 2
+Signature algorithm identifier: This identifies the algorithm used by
+the CA to sign the certificate.
+.IP \[bu] 2
+Issuer name: The X.500 Distinguished Name of the entity that signed the
+certificate.
+This is typically a CA.
+Using this certificate implies trusting the entity that signed this
+certificate.
+In some cases, such as root or top\-level CA certificates, the issuer
+signs its own certificate.
+.IP \[bu] 2
+Validity period: Each certificate is valid only for a limited amount of
+time.
+This period is described by a start date and time and an end date and
+time, and can be as short as a few seconds or almost as long as a
+century.
+The validity period chosen depends on a number of factors, such as the
+strength of the private key used to sign the certificate, or the amount
+one is willing to pay for a certificate.
+This is the expected period that entities can rely on the public value,
+when the associated private key has not been compromised.
+.IP \[bu] 2
+Subject name: The name of the entity whose public key the certificate
+identifies.
+This name uses the X.500 standard, so it is intended to be unique across
+the Internet.
+This is the X.500 Distinguished Name (DN) of the entity.
+For example,
+.RS 2
+.RS
+.PP
+\f[CB]CN=Java\ Duke,\ OU=Java\ Software\ Division,\ O=Oracle\ Corporation,\ C=US\f[R]
+.RE
+.PP
+These refer to the subject\[aq]s common name (CN), organizational unit
+(OU), organization (O), and country (C).
+.RE
+.IP \[bu] 2
+Subject public key information: This is the public key of the entity
+being named with an algorithm identifier that specifies which public key
+crypto system this key belongs to and any associated key parameters.
+.RE
+.TP
+.B Certificate Chains
+The \f[CB]keytool\f[R] command can create and manage keystore key entries
+that each contain a private key and an associated certificate chain.
+The first certificate in the chain contains the public key that
+corresponds to the private key.
+.RS
+.PP
+When keys are first generated, the chain starts off containing a single
+element, a self\-signed certificate.
+See \-genkeypair in \f[B]Commands\f[R].
+A self\-signed certificate is one for which the issuer (signer) is the
+same as the subject.
+The subject is the entity whose public key is being authenticated by the
+certificate.
+Whenever the \f[CB]\-genkeypair\f[R] command is called to generate a new
+public/private key pair, it also wraps the public key into a
+self\-signed certificate.
+.PP
+Later, after a Certificate Signing Request (CSR) was generated with the
+\f[CB]\-certreq\f[R] command and sent to a Certification Authority (CA),
+the response from the CA is imported with \f[CB]\-importcert\f[R], and the
+self\-signed certificate is replaced by a chain of certificates.
+At the bottom of the chain is the certificate (reply) issued by the CA
+authenticating the subject\[aq]s public key.
+The next certificate in the chain is one that authenticates the CA\[aq]s
+public key.
+.PP
+In many cases, this is a self\-signed certificate, which is a
+certificate from the CA authenticating its own public key, and the last
+certificate in the chain.
+In other cases, the CA might return a chain of certificates.
+In this case, the bottom certificate in the chain is the same (a
+certificate signed by the CA, authenticating the public key of the key
+entry), but the second certificate in the chain is a certificate signed
+by a different CA that authenticates the public key of the CA you sent
+the CSR to.
+The next certificate in the chain is a certificate that authenticates
+the second CA\[aq]s key, and so on, until a self\-signed root
+certificate is reached.
+Each certificate in the chain (after the first) authenticates the public
+key of the signer of the previous certificate in the chain.
+.PP
+Many CAs only return the issued certificate, with no supporting chain,
+especially when there is a flat hierarchy (no intermediates CAs).
+In this case, the certificate chain must be established from trusted
+certificate information already stored in the keystore.
+.PP
+A different reply format (defined by the PKCS #7 standard) includes the
+supporting certificate chain in addition to the issued certificate.
+Both reply formats can be handled by the \f[CB]keytool\f[R] command.
+.PP
+The top\-level (root) CA certificate is self\-signed.
+However, the trust into the root\[aq]s public key doesn\[aq]t come from
+the root certificate itself, but from other sources such as a newspaper.
+This is because anybody could generate a self\-signed certificate with
+the distinguished name of, for example, the DigiCert root CA.
+The root CA public key is widely known.
+The only reason it is stored in a certificate is because this is the
+format understood by most tools, so the certificate in this case is only
+used as a vehicle to transport the root CA\[aq]s public key.
+Before you add the root CA certificate to your keystore, you should view
+it with the \f[CB]\-printcert\f[R] option and compare the displayed
+fingerprint with the well\-known fingerprint obtained from a newspaper,
+the root CA\[aq]s Web page, and so on.
+.RE
+.TP
+.B cacerts Certificates File
+A certificates file named \f[CB]cacerts\f[R] resides in the security
+properties directory:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+\f[I]JAVA_HOME\f[R]\f[CB]/lib/security\f[R]
+.IP \[bu] 2
+\f[B]Windows:\f[R] \f[I]JAVA_HOME\f[R]\f[CB]\\lib\\security\f[R]
+.PP
+\f[I]JAVA_HOME\f[R] is the runtime environment directory, which is the
+\f[CB]jre\f[R] directory in the JDK or the top\-level directory of the
+Java Runtime Environment (JRE).
+.PP
+The \f[CB]cacerts\f[R] file represents a system\-wide keystore with CA
+certificates.
+System administrators can configure and manage that file with the
+\f[CB]keytool\f[R] command by specifying \f[CB]jks\f[R] as the keystore
+type.
+The \f[CB]cacerts\f[R] keystore file ships with a default set of root CA
+certificates.
+For Oracle Solaris, Linux, OS X, and Windows, you can list the default
+certificates with the following command:
+.RS
+.PP
+\f[CB]keytool\ \-list\ \-cacerts\f[R]
+.RE
+.PP
+The initial password of the \f[CB]cacerts\f[R] keystore file is
+\f[CB]changeit\f[R].
+System administrators should change that password and the default access
+permission of that file upon installing the SDK.
+.PP
+\f[B]Note:\f[R]
+.PP
+It is important to verify your \f[CB]cacerts\f[R] file.
+Because you trust the CAs in the \f[CB]cacerts\f[R] file as entities for
+signing and issuing certificates to other entities, you must manage the
+\f[CB]cacerts\f[R] file carefully.
+The \f[CB]cacerts\f[R] file should contain only certificates of the CAs
+you trust.
+It is your responsibility to verify the trusted root CA certificates
+bundled in the \f[CB]cacerts\f[R] file and make your own trust decisions.
+.PP
+To remove an untrusted CA certificate from the \f[CB]cacerts\f[R] file,
+use the \f[CB]\-delete\f[R] option of the \f[CB]keytool\f[R] command.
+You can find the \f[CB]cacerts\f[R] file in the JRE installation
+directory.
+Contact your system administrator if you don\[aq]t have permission to
+edit this file
+.RE
+.TP
+.B Internet RFC 1421 Certificate Encoding Standard
+Certificates are often stored using the printable encoding format
+defined by the Internet RFC 1421 standard, instead of their binary
+encoding.
+This certificate format, also known as Base64 encoding, makes it easy to
+export certificates to other applications by email or through some other
+mechanism.
+.RS
+.PP
+Certificates read by the \f[CB]\-importcert\f[R] and \f[CB]\-printcert\f[R]
+commands can be in either this format or binary encoded.
+The \f[CB]\-exportcert\f[R] command by default outputs a certificate in
+binary encoding, but will instead output a certificate in the printable
+encoding format, when the \f[CB]\-rfc\f[R] option is specified.
+.PP
+The \f[CB]\-list\f[R] command by default prints the SHA\-256 fingerprint
+of a certificate.
+If the \f[CB]\-v\f[R] option is specified, then the certificate is printed
+in human\-readable format.
+If the \f[CB]\-rfc\f[R] option is specified, then the certificate is
+output in the printable encoding format.
+.PP
+In its printable encoding format, the encoded certificate is bounded at
+the beginning and end by the following text:
+.IP
+.nf
+\f[CB]
+\-\-\-\-\-BEGIN\ CERTIFICATE\-\-\-\-\-
-Certificates read by the \f3-importcert\fR and \f3-printcert\fR commands can be in either this format or binary encoded\&. The \f3-exportcert\fR command by default outputs a certificate in binary encoding, but will instead output a certificate in the printable encoding format, when the \f3-rfc\fR option is specified\&.
-
-The \f3-list\fR command by default prints the SHA1 fingerprint of a certificate\&. If the \f3-v\fR option is specified, then the certificate is printed in human-readable format\&. If the \f3-rfc\fR option is specified, then the certificate is output in the printable encoding format\&.
-
-In its printable encoding format, the encoded certificate is bounded at the beginning and end by the following text:
-.sp
-.nf
-\f3\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3encoded certificate goes here\&. \fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\-\-\-\-\-END CERTIFICATE\-\-\-\-\-\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-X\&.500 Distinguished Names
-X\&.500 Distinguished Names are used to identify entities, such as those that are named by the \f3subject\fR and \f3issuer\fR (signer) fields of X\&.509 certificates\&. The \f3keytool\fR command supports the following subparts:
-
-\fIcommonName\fR: The common name of a person such as Susan Jones\&.
-
-\fIorganizationUnit\fR: The small organization (such as department or division) name\&. For example, Purchasing\&.
-
-\fIlocalityName\fR: The locality (city) name, for example, Palo Alto\&.
-
-\fIstateName\fR: State or province name, for example, California\&.
+encoded\ certificate\ goes\ here.
-\fIcountry\fR: Two-letter country code, for example, CH\&.
-
-When you supply a distinguished name string as the value of a \f3-dname\fR option, such as for the \f3-genkeypair\fR command, the string must be in the following format:
-.sp
-.nf
-\f3CN=cName, OU=orgUnit, O=org, L=city, S=state, C=countryCode\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-All the italicized items represent actual values and the previous keywords are abbreviations for the following:
-.sp
-.nf
-\f3CN=commonName\fP
-.fi
-.nf
-\f3OU=organizationUnit\fP
-.fi
-.nf
-\f3O=organizationName\fP
-.fi
-.nf
-\f3L=localityName\fP
-.fi
-.nf
-\f3S=stateName\fP
-.fi
-.nf
-\f3C=country\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
+\-\-\-\-\-END\ CERTIFICATE\-\-\-\-\-
+\f[R]
+.fi
+.RE
+.TP
+.B X.500 Distinguished Names
+X.500 Distinguished Names are used to identify entities, such as those
+that are named by the \f[CB]subject\f[R] and \f[CB]issuer\f[R] (signer)
+fields of X.509 certificates.
+The \f[CB]keytool\f[R] command supports the following subparts:
+.RS
+.IP \[bu] 2
+commonName: The common name of a person such as Susan Jones.
+.IP \[bu] 2
+organizationUnit: The small organization (such as department or
+division) name.
+For example, Purchasing.
+.IP \[bu] 2
+localityName: The locality (city) name, for example, Palo Alto.
+.IP \[bu] 2
+stateName: State or province name, for example, California.
+.IP \[bu] 2
+country: Two\-letter country code, for example, CH.
+.PP
+When you supply a distinguished name string as the value of a
+\f[CB]\-dname\f[R] option, such as for the \f[CB]\-genkeypair\f[R] command,
+the string must be in the following format:
+.RS
+.PP
+\f[CB]CN=cName,\ OU=orgUnit,\ O=org,\ L=city,\ S=state,\ C=countryCode\f[R]
+.RE
+.PP
+All the following items represent actual values and the previous
+keywords are abbreviations for the following:
+.IP
+.nf
+\f[CB]
+CN=commonName
+OU=organizationUnit
+O=organizationName
+L=localityName
+S=stateName
+C=country
+\f[R]
+.fi
+.PP
A sample distinguished name string is:
-.sp
-.nf
-\f3CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, S=California, C=US\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
+.RS
+.PP
+\f[CB]CN=Mark\ Smith,\ OU=Java,\ O=Oracle,\ L=Cupertino,\ S=California,\ C=US\f[R]
+.RE
+.PP
A sample command using such a string is:
-.sp
-.nf
-\f3keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino,\fP
-.fi
-.nf
-\f3S=California, C=US" \-alias mark\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-Case does not matter for the keyword abbreviations\&. For example, CN, cn, and Cn are all treated the same\&.
+.RS
+.PP
+\f[CB]keytool\ \-genkeypair\ \-dname\ "CN=Mark\ Smith,\ OU=Java,\ O=Oracle,\ L=Cupertino,\ S=California,\ C=US"\ \-alias\ mark\f[R]
+.RE
+.PP
+Case doesn\[aq]t matter for the keyword abbreviations.
+For example, CN, cn, and Cn are all treated the same.
+.PP
+Order matters; each subcomponent must appear in the designated order.
+However, it isn\[aq]t necessary to have all the subcomponents.
+You can use a subset, for example:
+.RS
+.PP
+\f[CB]CN=Smith,\ OU=Java,\ O=Oracle,\ C=US\f[R]
+.RE
+.PP
+If a distinguished name string value contains a comma, then the comma
+must be escaped by a backslash (\\) character when you specify the
+string on a command line, as in:
+.RS
+.PP
+\f[CB]cn=Jack,\ ou=Java\\,\ Product\ Development,\ o=Oracle,\ c=US\f[R]
+.RE
+.PP
+It is never necessary to specify a distinguished name string on a
+command line.
+When the distinguished name is needed for a command, but not supplied on
+the command line, the user is prompted for each of the subcomponents.
+In this case, a comma doesn\[aq]t need to be escaped by a backslash
+(\\).
+.RE
+.SH WARNINGS
+.SH IMPORTING TRUSTED CERTIFICATES WARNING
+.PP
+\f[B]Important\f[R]: Be sure to check a certificate very carefully before
+importing it as a trusted certificate.
+.PP
+\f[B]Windows Example:\f[R]
+.PP
+View the certificate first with the \f[CB]\-printcert\f[R] command or the
+\f[CB]\-importcert\f[R] command without the \f[CB]\-noprompt\f[R] option.
+Ensure that the displayed certificate fingerprints match the expected
+ones.
+For example, suppose someone sends or emails you a certificate that you
+put it in a file named \f[CB]\\tmp\\cert\f[R].
+Before you consider adding the certificate to your list of trusted
+certificates, you can execute a \f[CB]\-printcert\f[R] command to view its
+fingerprints, as follows:
+.IP
+.nf
+\f[CB]
+\ \ keytool\ \-printcert\ \-file\ \\tmp\\cert
+\ \ \ \ Owner:\ CN=ll,\ OU=ll,\ O=ll,\ L=ll,\ S=ll,\ C=ll
+\ \ \ \ Issuer:\ CN=ll,\ OU=ll,\ O=ll,\ L=ll,\ S=ll,\ C=ll
+\ \ \ \ Serial\ Number:\ 59092b34
+\ \ \ \ Valid\ from:\ Thu\ Jun\ 24\ 18:01:13\ PDT\ 2016\ until:\ Wed\ Jun\ 23\ 17:01:13\ PST\ 2016
+\ \ \ \ Certificate\ Fingerprints:
-Order matters; each subcomponent must appear in the designated order\&. However, it is not necessary to have all the subcomponents\&. You can use a subset, for example:
-.sp
-.nf
-\f3CN=Steve Meier, OU=Java, O=Oracle, C=US\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-If a distinguished name string value contains a comma, then the comma must be escaped by a backslash (\e) character when you specify the string on a command line, as in:
-.sp
-.nf
-\f3cn=Peter Schuster, ou=Java\e, Product Development, o=Oracle, c=US\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-It is never necessary to specify a distinguished name string on a command line\&. When the distinguished name is needed for a command, but not supplied on the command line, the user is prompted for each of the subcomponents\&. In this case, a comma does not need to be escaped by a backslash (\e)\&.
-.SH WARNINGS
-.SS IMPORTING\ TRUSTED\ CERTIFICATES\ WARNING
-\fIImportant\fR: Be sure to check a certificate very carefully before importing it as a trusted certificate\&.
+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SHA\-1:\ 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE
+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SHA\-256:\ 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90:
+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4
+\f[R]
+.fi
+.PP
+\f[B]Oracle Solaris Example:\f[R]
.PP
-Windows Example:
+View the certificate first with the \f[CB]\-printcert\f[R] command or the
+\f[CB]\-importcert\f[R] command without the \f[CB]\-noprompt\f[R] option.
+Ensure that the displayed certificate fingerprints match the expected
+ones.
+For example, suppose someone sends or emails you a certificate that you
+put it in a file named \f[CB]/tmp/cert\f[R].
+Before you consider adding the certificate to your list of trusted
+certificates, you can execute a \f[CB]\-printcert\f[R] command to view its
+fingerprints, as follows:
+.IP
+.nf
+\f[CB]
+\ \ keytool\ \-printcert\ \-file\ /tmp/cert
+\ \ \ \ Owner:\ CN=ll,\ OU=ll,\ O=ll,\ L=ll,\ S=ll,\ C=ll
+\ \ \ \ Issuer:\ CN=ll,\ OU=ll,\ O=ll,\ L=ll,\ S=ll,\ C=ll
+\ \ \ \ Serial\ Number:\ 59092b34
+\ \ \ \ Valid\ from:\ Thu\ Jun\ 24\ 18:01:13\ PDT\ 2016\ until:\ Wed\ Jun\ 23\ 17:01:13\ PST\ 2016
+\ \ \ \ Certificate\ Fingerprints:
-View the certificate first with the \f3-printcert\fR command or the \f3-importcert\fR command without the \f3-noprompt\fR option\&. Ensure that the displayed certificate fingerprints match the expected ones\&. For example, suppose sends or emails you a certificate that you put it in a file named \f3\etmp\ecert\fR\&. Before you consider adding the certificate to your list of trusted certificates, you can execute a \f3-printcert\fR command to view its fingerprints, as follows:
-.sp
-.nf
-\f3 keytool \-printcert \-file \etmp\ecert\fP
-.fi
-.nf
-\f3 Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll\fP
-.fi
-.nf
-\f3 Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll\fP
-.fi
-.nf
-\f3 Serial Number: 59092b34\fP
-.fi
-.nf
-\f3 Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997\fP
-.fi
-.nf
-\f3 Certificate Fingerprints:\fP
-.fi
-.nf
-\f3 MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F\fP
-.fi
-.nf
-\f3 SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE\fP
-.fi
-.nf
-\f3 SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90:\fP
-.fi
-.nf
-\f3 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4\fP
-.fi
-.sp
-
+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SHA\-1:\ 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE
+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ SHA\-256:\ 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90:
+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4
+\f[R]
+.fi
+.PP
+Then call or otherwise contact the person who sent the certificate and
+compare the fingerprints that you see with the ones that they show.
+Only when the fingerprints are equal is it guaranteed that the
+certificate wasn\[aq]t replaced in transit with somebody else\[aq]s
+certificate such as an attacker\[aq]s certificate.
+If such an attack took place, and you didn\[aq]t check the certificate
+before you imported it, then you would be trusting anything the attacker
+signed, for example, a JAR file with malicious class files inside.
+.PP
+\f[B]Note:\f[R]
+.PP
+It isn\[aq]t required that you execute a \f[CB]\-printcert\f[R] command
+before importing a certificate.
+This is because before you add a certificate to the list of trusted
+certificates in the keystore, the \f[CB]\-importcert\f[R] command prints
+out the certificate information and prompts you to verify it.
+You can then stop the import operation.
+However, you can do this only when you call the \f[CB]\-importcert\f[R]
+command without the \f[CB]\-noprompt\f[R] option.
+If the \f[CB]\-noprompt\f[R] option is specified, then there is no
+interaction with the user.
+.SH PASSWORDS WARNING
+.PP
+Most commands that operate on a keystore require the store password.
+Some commands require a private/secret key password.
+Passwords can be specified on the command line in the
+\f[CB]\-storepass\f[R] and \f[CB]\-keypass\f[R] options.
+However, a password shouldn\[aq]t be specified on a command line or in a
+script unless it is for testing, or you are on a secure system.
+When you don\[aq]t specify a required password option on a command line,
+you are prompted for it.
+.SH CERTIFICATE CONFORMANCE WARNING
+.PP
+\f[B]Internet X.509 Public Key Infrastructure Certificate and
+Certificate Revocation List (CRL) Profile\f[R]
+[https://tools.ietf.org/rfc/rfc5280.txt] defined a profile on conforming
+X.509 certificates, which includes what values and value combinations
+are valid for certificate fields and extensions.
+.PP
+The \f[CB]keytool\f[R] command doesn\[aq]t enforce all of these rules so
+it can generate certificates that don\[aq]t conform to the standard,
+such as self\-signed certificates that would be used for internal
+testing purposes.
+Certificates that don\[aq]t conform to the standard might be rejected by
+JRE or other applications.
+Users should ensure that they provide the correct options for
+\f[CB]\-dname\f[R], \f[CB]\-ext\f[R], and so on.
+.SH IMPORT A NEW TRUSTED CERTIFICATE
+.PP
+Before you add the certificate to the keystore, the \f[CB]keytool\f[R]
+command verifies it by attempting to construct a chain of trust from
+that certificate to a self\-signed certificate (belonging to a root CA),
+using trusted certificates that are already available in the keystore.
.PP
-Oracle Solaris Example:
-
-View the certificate first with the \f3-printcert\fR command or the \f3-importcert\fR command without the \f3-noprompt\fR option\&. Ensure that the displayed certificate fingerprints match the expected ones\&. For example, suppose someone sends or emails you a certificate that you put it in a file named \f3/tmp/cert\fR\&. Before you consider adding the certificate to your list of trusted certificates, you can execute a \f3-printcert\fR command to view its fingerprints, as follows:
-.sp
-.nf
-\f3 keytool \-printcert \-file /tmp/cert\fP
-.fi
-.nf
-\f3 Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll\fP
-.fi
-.nf
-\f3 Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll\fP
-.fi
-.nf
-\f3 Serial Number: 59092b34\fP
-.fi
-.nf
-\f3 Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997\fP
-.fi
-.nf
-\f3 Certificate Fingerprints:\fP
-.fi
-.nf
-\f3 MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F\fP
-.fi
-.nf
-\f3 SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE\fP
-.fi
-.nf
-\f3 SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90:\fP
-.fi
-.nf
-\f3 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Then call or otherwise contact the person who sent the certificate and compare the fingerprints that you see with the ones that they show\&. Only when the fingerprints are equal is it guaranteed that the certificate was not replaced in transit with somebody else\&'s certificate such as an attacker\&'s certificate\&. If such an attack took place, and you did not check the certificate before you imported it, then you would be trusting anything the attacker signed, for example, a JAR file with malicious class files inside\&.
+If the \f[CB]\-trustcacerts\f[R] option was specified, then additional
+certificates are considered for the chain of trust, namely the
+certificates in a file named \f[CB]cacerts\f[R].
+.PP
+If the \f[CB]keytool\f[R] command fails to establish a trust path from the
+certificate to be imported up to a self\-signed certificate (either from
+the keystore or the \f[CB]cacerts\f[R] file), then the certificate
+information is printed, and the user is prompted to verify it by
+comparing the displayed certificate fingerprints with the fingerprints
+obtained from some other (trusted) source of information, which might be
+the certificate owner.
+Be very careful to ensure the certificate is valid before importing it
+as a trusted certificate.
+The user then has the option of stopping the import operation.
+If the \f[CB]\-noprompt\f[R] option is specified, then there is no
+interaction with the user.
+.SH IMPORT A CERTIFICATE REPLY
+.PP
+When you import a certificate reply, the certificate reply is validated
+with trusted certificates from the keystore, and optionally, the
+certificates configured in the \f[CB]cacerts\f[R] keystore file when the
+\f[CB]\-trustcacerts\f[R] option is specified.
.PP
-\fINote:\fR It is not required that you execute a \f3-printcert\fR command before importing a certificate\&. This is because before you add a certificate to the list of trusted certificates in the keystore, the \f3-importcert\fR command prints out the certificate information and prompts you to verify it\&. You can then stop the import operation\&. However, you can do this only when you call the \f3-importcert\fR command without the \f3-noprompt\fR option\&. If the \f3-noprompt\fR option is specified, then there is no interaction with the user\&.
-.SS PASSWORDS\ WARNING
-Most commands that operate on a keystore require the store password\&. Some commands require a private/secret key password\&. Passwords can be specified on the command line in the \f3-storepass\fR and \f3-keypass\fR options\&. However, a password should not be specified on a command line or in a script unless it is for testing, or you are on a secure system\&. When you do not specify a required password option on a command line, you are prompted for it\&.
-.SS CERTIFICATE\ CONFORMANCE\ WARNING
-The Internet standard RFC 5280 has defined a profile on conforming X\&.509 certificates, which includes what values and value combinations are valid for certificate fields and extensions\&. See the standard at http://tools\&.ietf\&.org/rfc/rfc5280\&.txt
-.PP
-The \f3keytool\fR command does not enforce all of these rules so it can generate certificates that do not conform to the standard\&. Certificates that do not conform to the standard might be rejected by JRE or other applications\&. Users should ensure that they provide the correct options for \f3-dname\fR, \f3-ext\fR, and so on\&.
-.SH NOTES
-.SS IMPORT\ A\ NEW\ TRUSTED\ CERTIFICATE
-Before you add the certificate to the keystore, the \f3keytool\fR command verifies it by attempting to construct a chain of trust from that certificate to a self-signed certificate (belonging to a root CA), using trusted certificates that are already available in the keystore\&.
-.PP
-If the \f3-trustcacerts\fR option was specified, then additional certificates are considered for the chain of trust, namely the certificates in a file named \f3cacerts\fR\&.
-.PP
-If the \f3keytool\fR command fails to establish a trust path from the certificate to be imported up to a self-signed certificate (either from the keystore or the \f3cacerts\fR file), then the certificate information is printed, and the user is prompted to verify it by comparing the displayed certificate fingerprints with the fingerprints obtained from some other (trusted) source of information, which might be the certificate owner\&. Be very careful to ensure the certificate is valid before importing it as a trusted certificate\&. See Importing Trusted Certificates Warning\&. The user then has the option of stopping the import operation\&. If the \f3-noprompt\fR option is specified, then there is no interaction with the user\&.
-.SS IMPORT\ A\ CERTIFICATE\ REPLY
-When you import a certificate reply, the certificate reply is validated with trusted certificates from the keystore, and optionally, the certificates configured in the \f3cacerts\fR keystore file when the \f3-trustcacert\fR\f3s\fR option is specified\&. See The cacerts Certificates File\&.
+The methods of determining whether the certificate reply is trusted are
+as follows:
+.IP \[bu] 2
+If the reply is a single X.509 certificate, then the \f[CB]keytool\f[R]
+command attempts to establish a trust chain, starting at the certificate
+reply and ending at a self\-signed certificate (belonging to a root CA).
+The certificate reply and the hierarchy of certificates is used to
+authenticate the certificate reply from the new certificate chain of
+aliases.
+If a trust chain can\[aq]t be established, then the certificate reply
+isn\[aq]t imported.
+In this case, the \f[CB]keytool\f[R] command doesn\[aq]t print the
+certificate and prompt the user to verify it, because it is very
+difficult for a user to determine the authenticity of the certificate
+reply.
+.IP \[bu] 2
+If the reply is a PKCS #7 formatted certificate chain or a sequence of
+X.509 certificates, then the chain is ordered with the user certificate
+first followed by zero or more CA certificates.
+If the chain ends with a self\-signed root CA certificate and
+the\f[CB]\-trustcacerts\f[R] option was specified, the \f[CB]keytool\f[R]
+command attempts to match it with any of the trusted certificates in the
+keystore or the \f[CB]cacerts\f[R] keystore file.
+If the chain doesn\[aq]t end with a self\-signed root CA certificate and
+the \f[CB]\-trustcacerts\f[R] option was specified, the \f[CB]keytool\f[R]
+command tries to find one from the trusted certificates in the keystore
+or the \f[CB]cacerts\f[R] keystore file and add it to the end of the
+chain.
+If the certificate isn\[aq]t found and the \f[CB]\-noprompt\f[R] option
+isn\[aq]t specified, the information of the last certificate in the
+chain is printed, and the user is prompted to verify it.
.PP
-The methods of determining whether the certificate reply is trusted are as follows:
-.TP 0.2i
-\(bu
-If the reply is a single X\&.509 certificate, then the \f3keytool\fR command attempts to establish a trust chain, starting at the certificate reply and ending at a self-signed certificate (belonging to a root CA)\&. The certificate reply and the hierarchy of certificates is used to authenticate the certificate reply from the new certificate chain of aliases\&. If a trust chain cannot be established, then the certificate reply is not imported\&. In this case, the \f3keytool\fR command does not print the certificate and prompt the user to verify it, because it is very difficult for a user to determine the authenticity of the certificate reply\&.
-.TP 0.2i
-\(bu
-If the reply is a PKCS #7 formatted certificate chain or a sequence of X\&.509 certificates, then the chain is ordered with the user certificate first followed by zero or more CA certificates\&. If the chain ends with a self-signed root CA certificate and the\f3-trustcacerts\fR option was specified, the \f3keytool\fR command attempts to match it with any of the trusted certificates in the keystore or the \f3cacerts\fR keystore file\&. If the chain does not end with a self-signed root CA certificate and the \f3-trustcacerts\fR option was specified, the \f3keytool\fR command tries to find one from the trusted certificates in the keystore or the \f3cacerts\fR keystore file and add it to the end of the chain\&. If the certificate is not found and the \f3-noprompt\fR option is not specified, the information of the last certificate in the chain is printed, and the user is prompted to verify it\&.
-.PP
-If the public key in the certificate reply matches the user\&'s public key already stored with \f3alias\fR, then the old certificate chain is replaced with the new certificate chain in the reply\&. The old chain can only be replaced with a valid \f3keypass\fR, and so the password used to protect the private key of the entry is supplied\&. If no password is provided, and the private key password is different from the keystore password, the user is prompted for it\&.
+If the public key in the certificate reply matches the user\[aq]s public
+key already stored with \f[CB]alias\f[R], then the old certificate chain
+is replaced with the new certificate chain in the reply.
+The old chain can only be replaced with a valid \f[CB]keypass\f[R], and so
+the password used to protect the private key of the entry is supplied.
+If no password is provided, and the private key password is different
+from the keystore password, the user is prompted for it.
.PP
-This command was named \f3-import\fR in earlier releases\&. This old name is still supported in this release\&. The new name, \f3-importcert\fR, is preferred going forward\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-jar(1)
-.TP 0.2i
-\(bu
-jarsigner(1)
-.TP 0.2i
-\(bu
-Trail: Security Features in Java SE at http://docs\&.oracle\&.com/javase/tutorial/security/index\&.html
-.RE
-.br
-'pl 8.5i
-'bp
+This command was named \f[CB]\-import\f[R] in earlier releases.
+This old name is still supported in this release.
+The new name, \f[CB]\-importcert\f[R], is preferred.
--- a/src/java.rmi/share/man/rmid.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/java.rmi/share/man/rmid.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,295 +19,392 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Remote Method Invocation (RMI) Tools
-.\" Title: rmid.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH rmid 1 "21 November 2013" "JDK 8" "Remote Method Invocation (RMI) Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-rmid \- Starts the activation system daemon that enables objects to be registered and activated in a Java Virtual Machine (JVM)\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBrmid\fR [\fIoptions\fR]
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.SH DESCRIPTION
-The \f3rmid\fR command starts the activation system daemon\&. The activation system daemon must be started before activatable objects can be either registered with the activation system or activated in a JVM\&. For details on how to write programs that use activatable objects, the \fIUsing Activation\fR tutorial at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/rmi/activation/overview\&.html
+.TH "RMID" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+rmid \- start the activation system daemon that enables objects to be
+registered and activated in a Java Virtual Machine (JVM)
+.SH SYNOPSIS
+.PP
+\f[CB]rmid\f[R] [\f[I]options\f[R]]
+.TP
+.B \f[I]options\f[R]
+This represent the command\-line options for the \f[CB]rmid\f[R] command.
+See \f[B]Options for rmid\f[R].
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]rmid\f[R] command starts the activation system daemon.
+The activation system daemon must be started before objects that can be
+activated are either registered with the activation system or activated
+in a JVM.
+.PP
+Start the daemon by executing the \f[CB]rmid\f[R] command and specifying a
+security policy file, as follows:
+.RS
+.PP
+\f[CB]rmid\ \-J\-Djava.security.policy=rmid.policy\f[R]
+.RE
+.PP
+When you run Oracle\[aq]s implementation of the \f[CB]rmid\f[R] command,
+by default you must specify a security policy file so that the
+\f[CB]rmid\f[R] command can verify whether or not the information in each
+\f[CB]ActivationGroupDesc\f[R] is allowed to be used to start a JVM for an
+activation group.
+Specifically, the command and options specified by the
+\f[CB]CommandEnvironment\f[R] and any properties passed to an
+\f[CB]ActivationGroupDesc\f[R] constructor must now be explicitly allowed
+in the security policy file for the \f[CB]rmid\f[R] command.
+The value of the \f[CB]sun.rmi.activation.execPolicy\f[R] property
+dictates the policy that the \f[CB]rmid\f[R] command uses to determine
+whether or not the information in an \f[CB]ActivationGroupDesc\f[R] can be
+used to start a JVM for an activation group.
+For more information see the description of the
+\f[CB]\-J\-Dsun.rmi.activation.execPolicy=policy\f[R] option.
+.PP
+Executing the \f[CB]rmid\f[R] command starts the \f[CB]Activator\f[R] and an
+internal registry on the default port 1098 and binds an
+\f[CB]ActivationSystem\f[R] to the name
+\f[CB]java.rmi.activation.ActivationSystem\f[R] in this internal registry.
+.PP
+To specify an alternate port for the registry, you must specify the
+\f[CB]\-port\f[R] option when you execute the \f[CB]rmid\f[R] command.
+For example, the following command starts the activation system daemon
+and a registry on the registry\[aq]s default port, 1099.
+.RS
.PP
-Start the daemon by executing the \f3rmid\fR command and specifying a security policy file, as follows:
-.sp
-.nf
-\f3rmid \-J\-Djava\&.security\&.policy=rmid\&.policy\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-When you run Oracle\(cqs implementation of the \f3rmid\fR command, by default you must specify a security policy file so that the \f3rmid\fR command can verify whether or not the information in each \f3ActivationGroupDesc\fR is allowed to be used to start a JVM for an activation group\&. Specifically, the command and options specified by the \f3CommandEnvironment\fR and any properties passed to an \f3ActivationGroupDesc\fR constructor must now be explicitly allowed in the security policy file for the \f3rmid\fR command\&. The value of the \f3sun\&.rmi\&.activation\&.execPolicy\fR property dictates the policy that the \f3rmid\fR command uses to determine whether or not the information in an \f3ActivationGroupDesc\fR can be used to start a JVM for an activation group\&. For more information see the description of the -J-Dsun\&.rmi\&.activation\&.execPolicy=policy option\&.
+\f[CB]rmid\ \-J\-Djava.security.policy=rmid.policy\ \-port\ 1099\f[R]
+.RE
+.SH START RMID ON DEMAND (ORACLE SOLARIS AND LINUX ONLY)
+.PP
+An alternative to starting \f[CB]rmid\f[R] from the command line is to
+configure \f[CB]inetd\f[R] (Oracle Solaris) or \f[CB]xinetd\f[R] (Linux) to
+start \f[CB]rmid\f[R] on demand.
.PP
-Executing the \f3rmid\fR command starts the Activator and an internal registry on the default port1098 and binds an \f3ActivationSystem\fR to the name \f3java\&.rmi\&.activation\&.ActivationSystem\fR in this internal registry\&.
+When RMID starts, it attempts to obtain an inherited channel (inherited
+from \f[CB]inetd\f[R]/\f[CB]xinetd\f[R]) by calling the
+\f[CB]System.inheritedChannel\f[R] method.
+If the inherited channel is null or not an instance of
+\f[CB]java.nio.channels.ServerSocketChannel\f[R], then RMID assumes that
+it wasn\[aq]t started by \f[CB]inetd\f[R]/\f[CB]xinetd\f[R], and it starts
+as previously described.
.PP
-To specify an alternate port for the registry, you must specify the \f3-port\fR option when you execute the \f3rmid\fR command\&. For example, the following command starts the activation system daemon and a registry on the registry\&'s default port, 1099\&.
-.sp
-.nf
-\f3rmid \-J\-Djava\&.security\&.policy=rmid\&.policy \-port 1099\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH START\ RMID\ ON\ DEMAND
-An alternative to starting \f3rmid\fR from the command line is to configure \f3inetd\fR (Oracle Solaris) or \f3xinetd\fR (Linux) to start \f3rmid\fR on demand\&.
+If the inherited channel is a \f[CB]ServerSocketChannel\f[R] instance,
+then RMID uses the \f[CB]java.net.ServerSocket\f[R] obtained from the
+\f[CB]ServerSocketChannel\f[R] as the server socket that accepts requests
+for the remote objects it exports: The registry in which the
+\f[CB]java.rmi.activation.ActivationSystem\f[R] is bound and the
+\f[CB]java.rmi.activation.Activator\f[R] remote object.
+In this mode, RMID behaves the same as when it is started from the
+command line, except in the following cases:
+.IP \[bu] 2
+Output printed to \f[CB]System.err\f[R] is redirected to a file.
+This file is located in the directory specified by the
+\f[CB]java.io.tmpdir\f[R] system property (typically \f[CB]/var/tmp\f[R] or
+\f[CB]/tmp\f[R]) with the prefix \f[CB]rmid\-err\f[R] and the suffix
+\f[CB]tmp\f[R].
+.IP \[bu] 2
+The \f[CB]\-port\f[R] option isn\[aq]t allowed.
+If this option is specified, then RMID exits with an error message.
+.IP \[bu] 2
+The \f[CB]\-log\f[R] option is required.
+If this option isn\[aq]t specified, then RMID exits with an error
+message
+.SH OPTIONS FOR RMID
+.TP
+.B \f[CB]\-C\f[R]\f[I]option\f[R]
+Specifies an option that\[aq]s passed as a command\-line argument to
+each child process (activation group) of the \f[CB]rmid\f[R] command when
+that process is created.
+For example, you could pass a property to each virtual machine spawned
+by the activation system daemon:
+.RS
+.RS
.PP
-When RMID starts, it attempts to obtain an inherited channel (inherited from \f3inetd\fR/\f3xinetd\fR) by calling the \f3System\&.inheritedChannel\fR method\&. If the inherited channel is null or not an instance of \f3java\&.nio\&.channels\&.ServerSocketChannel\fR, then RMID assumes that it was not started by \f3inetd\fR/\f3xinetd\fR, and it starts as previously described\&.
+\f[CB]rmid\ \-C\-Dsome.property=value\f[R]
+.RE
+.PP
+This ability to pass command\-line arguments to child processes can be
+useful for debugging.
+For example, the following command enables server\-call logging in all
+child JVMs.
+.RS
.PP
-If the inherited channel is a \f3ServerSocketChannel\fR instance, then RMID uses the \f3java\&.net\&.ServerSocket\fR obtained from the \f3ServerSocketChannel\fR as the server socket that accepts requests for the remote objects it exports: The registry in which the \f3java\&.rmi\&.activation\&.ActivationSystem\fR is bound and the \f3java\&.rmi\&.activation\&.Activator\fR remote object\&. In this mode, RMID behaves the same as when it is started from the command line, except in the following cases:
-.TP 0.2i
-\(bu
-Output printed to \f3System\&.err\fR is redirected to a file\&. This file is located in the directory specified by the \f3java\&.io\&.tmpdir\fR system property (typically \f3/var/tmp\fR or \f3/tmp\fR) with the prefix \f3rmid-err\fR and the suffix \f3tmp\fR\&.
-.TP 0.2i
-\(bu
-The \f3-port\fR option is not allowed\&. If this option is specified, then RMID exits with an error message\&.
-.TP 0.2i
-\(bu
-The \f3-log\fR option is required\&. If this option is not specified, then RMID exits with an error message
+\f[CB]rmid\ \-C\-Djava.rmi.server.logCalls=true\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+Specifies an option that\[aq]s passed to the Java interpreter running
+RMID command.
+For example, to specify that the \f[CB]rmid\f[R] command use a policy file
+named \f[CB]rmid.policy\f[R], the \f[CB]\-J\f[R] option can be used to
+define the \f[CB]java.security.policy\f[R] property on the \f[CB]rmid\f[R]
+command line, for example:
+.RS
+.RS
.PP
-See the man pages for \f3inetd\fR (Oracle Solaris) or \f3xinetd\fR (Linux) for details on how to configure services to be started on demand\&.
-.SH OPTIONS
+\f[CB]rmid\ \-J\-Djava.security.policy\-rmid.policy\f[R]
+.RE
+.RE
.TP
--C\fIoption\fR
-.br
-Specifies an option that is passed as a command-line argument to each child process (activation group) of the \f3rmid\fR command when that process is created\&. For example, you could pass a property to each virtual machine spawned by the activation system daemon:
-.sp
-.nf
-\f3rmid \-C\-Dsome\&.property=value\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-This ability to pass command-line arguments to child processes can be useful for debugging\&. For example, the following command enables server-call logging in all child JVMs\&.
-.sp
-.nf
-\f3rmid \-C\-Djava\&.rmi\&.server\&.logCalls=true\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
--J\fIoption\fR
-.br
-Specifies an option that is passed to the Java interpreter running RMID\&. For example, to specify that the \f3rmid\fR command use a policy file named \f3rmid\&.policy\fR, the \f3-J\fR option can be used to define the \f3java\&.security\&.policy\fR property on the \f3rmid\fR command line, for example:
-.sp
-.nf
-\f3rmid \-J\-Djava\&.security\&.policy\-rmid\&.policy\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
--J-Dsun\&.rmi\&.activation\&.execPolicy=\fIpolicy\fR
-.br
-Specifies the policy that RMID employs to check commands and command-line options used to start the JVM in which an activation group runs\&. Please note that this option exists only in Oracle\&'s implementation of the Java RMI activation daemon\&. If this property is not specified on the command line, then the result is the same as though \f3-J-Dsun\&.rmi\&.activation\&.execPolicy=default\fR were specified\&. The possible values of \f3policy\fR can be \f3default\fR, \f3policyClassName\fR, or \f3none\fR\&.
-.RS
-.TP 0.2i
-\(bu
-default
-
-The \f3default\fR or unspecified value \f3execPolicy\fR allows the \f3rmid\fR command to execute commands with specific command-line options only when the \f3rmid\fR command was granted permission to execute those commands and options in the security policy file that the \f3rmid\fR command uses\&. Only the default activation group implementation can be used with the default execution policy\&.
-
-The \f3rmid\fR command starts a JVM for an activation group with the information in the group\&'s registered activation group descriptor, an \f3ActivationGroupDesc\fR\&. The group descriptor specifies an optional \f3ActivationGroupDesc\&.CommandEnvironment\fR that includes the command to execute to start the activation group and any command-line options to be added to the command line\&. By default, the \f3rmid\fR command uses the \f3java\fR command found in \f3java\&.home\fR\&. The group descriptor also contains properties overrides that are added to the command line as options defined as: \f3-D<property>=<value>\fR\&.The \f3com\&.sun\&.rmi\&.rmid\&.ExecPermission\fR permission grants the \f3rmid\fR command permission to execute a command that is specified in the group descriptor\&'s \f3CommandEnvironment\fR to start an activation group\&. The \f3com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fR permission enables the \f3rmid\fR command to use command-line options, specified as properties overrides in the group descriptor or as options in the \f3CommandEnvironment\fR when starting the activation group\&.When granting the \f3rmid\fR command permission to execute various commands and options, the permissions \f3ExecPermission\fR and \f3ExecOptionPermission\fR must be granted to all code sources\&.
-
-\fIExecPermission\fR
-
-The \f3ExecPermission\fR class represents permission for the \f3rmid\fR command to execute a specific command to start an activation group\&.
-
-\fISyntax\fR: The name of an \f3ExecPermission\fR is the path name of a command to grant the \f3rmid\fR command permission to execute\&. A path name that ends in a slash (/) and an asterisk (*) indicates that all of the files contained in that directory where slash is the file-separator character, \f3File\&.separatorChar\fR\&. A path name that ends in a slash (/) and a minus sign (-) indicates all files and subdirectories contained in that directory (recursively)\&. A path name that consists of the special token \f3<<ALL FILES>>\fR matches any file\&.
-
-A path name that consists of an asterisk (*) indicates all the files in the current directory\&. A path name that consists of a minus sign (-) indicates all the files in the current directory and (recursively) all files and subdirectories contained in the current directory\&.
-
-\fIExecOptionPermission\fR
-
-The \f3ExecOptionPermission\fR class represents permission for the \f3rmid\fR command to use a specific command-line option when starting an activation group\&. The name of an \f3ExecOptionPermission\fR is the value of a command-line option\&.
+.B \f[CB]\-J\-Dsun.rmi.activation.execPolicy=\f[R]\f[I]policy\f[R]
+Specifies the policy that the RMID command employs to check commands and
+command\-line options used to start the JVM in which an activation group
+runs.
+This option exists only in Oracle\[aq]s implementation of the Java RMI
+activation daemon.
+If this property isn\[aq]t specified on the command line, then the
+result is the same as though
+\f[CB]\-J\-Dsun.rmi.activation.execPolicy=default\f[R] were specified.
+.RS
+.PP
+The possible values of \f[I]policy\f[R] can be \f[CB]default\f[R],
+\f[I]policyClassName\f[R], or \f[CB]none\f[R].
+.IP \[bu] 2
+\f[CB]default\f[R]
+.RS 2
+.PP
+The \f[CB]default\f[R] or unspecified value \f[CB]execPolicy\f[R] allows the
+\f[CB]rmid\f[R] command to execute commands with specific command\-line
+options only when the \f[CB]rmid\f[R] command was granted permission to
+execute those commands and options in the security policy file that the
+\f[CB]rmid\f[R] command uses.
+Only the default activation group implementation can be used with the
+default execution policy.
+.PP
+The \f[CB]rmid\f[R] command starts a JVM for an activation group with the
+information in the group\[aq]s registered activation group descriptor,
+\f[CB]ActivationGroupDesc\f[R].
+The group descriptor specifies an optional
+\f[CB]ActivationGroupDesc.CommandEnvironment\f[R] that includes the
+command to execute to start the activation group and any command\-line
+options to be added to the command line.
+By default, the \f[CB]rmid\f[R] command uses the \f[CB]java\f[R] command
+found in \f[CB]java.home\f[R].
+The group descriptor also contains properties overrides that are added
+to the command line as options defined as:
+\f[CB]\-D\f[R]\f[I]property\f[R]\f[CB]=\f[R]\f[I]value\f[R].
+The \f[CB]com.sun.rmi.rmid.ExecPermission\f[R] permission grants the
+\f[CB]rmid\f[R] command permission to execute a command that\[aq]s
+specified in the group descriptor\[aq]s \f[CB]CommandEnvironment\f[R] to
+start an activation group.
+The \f[CB]com.sun.rmi.rmid.ExecOptionPermission\f[R] permission enables
+the \f[CB]rmid\f[R] command to use command\-line options, specified as
+properties overrides in the group descriptor or as options in the
+\f[CB]CommandEnvironment\f[R] when starting the activation group.
+When granting the \f[CB]rmid\f[R] command permission to execute various
+commands and options, the permissions \f[CB]ExecPermission\f[R] and
+\f[CB]ExecOptionPermission\f[R] must be granted to all code sources.
+.PP
+\f[CB]ExecPermission\f[R] class: Represents permission for the
+\f[CB]rmid\f[R] command to execute a specific command to start an
+activation group.
+.PP
+\f[CB]ExecPermission\f[R] syntax: The name of \f[CB]ExecPermission\f[R] is
+the path name of a command to grant the \f[CB]rmid\f[R] command permission
+to execute.
+.PP
+A path name that ends in a slash (\f[CB]/\f[R]) and an asterisk
+(\f[CB]*\f[R]) indicates that all of the files are contained in that
+directory where the slash is the file\-separator character,
+\f[CB]File.separatorChar\f[R].
+.PP
+A path name that ends in a slash (\f[CB]/\f[R]) and a minus sign
+(\f[CB]\-\f[R]) indicates that all files and subdirectories are contained
+in that directory (recursively).
+.PP
+A path name that consists of the special token \f[CB]<<ALL\ FILES>>\f[R]
+matches any file.
+.PP
+A path name that consists of an asterisk (\f[CB]*\f[R]) indicates that all
+the files are in the current directory.
+.PP
+A path name that consists of a minus sign (\f[CB]\-\f[R]) indicates that
+all the files are in the current directory and (recursively) all files
+and subdirectories are contained in the current directory.
+.PP
+\f[CB]ExecOptionPermission\f[R] class: Represents permission for the
+\f[CB]rmid\f[R] command to use a specific command\-line option when
+starting an activation group.
+The name of \f[CB]ExecOptionPermission\f[R] is the value of a
+command\-line option.
+.PP
+\f[CB]ExecOptionPermission\f[R] syntax: Options support a limited wild
+card scheme.
+An asterisk signifies a wild card match, and it can appear as the option
+name itself (matches any option), or an asterisk (*) can appear at the
+end of the option name only when the asterisk (\f[CB]*\f[R]) follows a dot
+(\f[CB]\&.\f[R]) or an equals sign (\f[CB]=\f[R]).
+.PP
+For example: \f[CB]*\f[R] or \f[CB]\-Dmydir.*\f[R] or \f[CB]\-Da.b.c=*\f[R] is
+valid, but \f[CB]*mydir\f[R] or \f[CB]\-Da*b\f[R] or \f[CB]ab*\f[R] isn\[aq]t
+valid.
+.PP
+\f[B]Policy file for rmid\f[R]
+.PP
+When you grant the \f[CB]rmid\f[R] command permission to execute various
+commands and options, the permissions \f[CB]ExecPermission\f[R] and
+\f[CB]ExecOptionPermission\f[R] must be granted to all code sources
+(universally).
+It is safe to grant these permissions universally because only the
+\f[CB]rmid\f[R] command checks these permissions.
+.PP
+An example policy file that grants various execute permissions to the
+\f[CB]rmid\f[R] command is:
+.IP \[bu] 2
+\f[B]Oracle Solaris:\f[R]
+.RS 2
+.IP
+.nf
+\f[CB]
+grant\ {
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecPermission
+\ \ \ \ \ \ \ \ "/files/apps/java/jdk1.7.0/solaris/bin/java";
-\fISyntax\fR: Options support a limited wild card scheme\&. An asterisk signifies a wild card match, and it can appear as the option name itself (matches any option), or an asterisk (*) can appear at the end of the option name only when the asterisk (*) follows a dot (\&.) or an equals sign (=)\&.
-
-For example: \f3*\fR or \f3-Dmydir\&.*\fR or \f3-Da\&.b\&.c=*\fR is valid, but \f3*mydir\fR or \f3-Da*b\fR or \f3ab*\fR is not\&.
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecPermission
+\ \ \ \ \ \ \ \ "/files/apps/rmidcmds/*";
-\fIPolicy file for rmid\fR
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecOptionPermission
+\ \ \ \ \ \ \ \ "\-Djava.security.policy=/files/policies/group.policy";
-When you grant the \f3rmid\fR command permission to execute various commands and options, the permissions \f3ExecPermission\fR and \f3ExecOptionPermission\fR must be granted to all code sources (universally)\&. It is safe to grant these permissions universally because only the \f3rmid\fR command checks these permissions\&.
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecOptionPermission
+\ \ \ \ \ \ \ \ "\-Djava.security.debug=*";
-An example policy file that grants various execute permissions to the \f3rmid\fR command is:
-.sp
-.nf
-\f3grant {\fP
-.fi
-.nf
-\f3 permission com\&.sun\&.rmi\&.rmid\&.ExecPermission\fP
-.fi
-.nf
-\f3 "/files/apps/java/jdk1\&.7\&.0/solaris/bin/java";\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3 permission com\&.sun\&.rmi\&.rmid\&.ExecPermission\fP
-.fi
-.nf
-\f3 "/files/apps/rmidcmds/*";\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP
-.fi
-.nf
-\f3 "\-Djava\&.security\&.policy=/files/policies/group\&.policy";\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP
-.fi
-.nf
-\f3 "\-Djava\&.security\&.debug=*";\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3 permission com\&.sun\&.rmi\&.rmid\&.ExecOptionPermission\fP
-.fi
-.nf
-\f3 "\-Dsun\&.rmi\&.*";\fP
-.fi
-.nf
-\f3};\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecOptionPermission
+\ \ \ \ \ \ \ \ "\-Dsun.rmi.*";
+};
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R]
+.RS 2
+.IP
+.nf
+\f[CB]
+grant\ {
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecPermission
+\ \ \ \ \ \ \ \ "c:\\\\files\\\\apps\\\\java\\\\jdk1.7.0\\\\win\\\\bin\\\\java";
-
-The first permission granted allows the \f3rmid\fR tcommand o execute the 1\&.7\&.0 release of the \f3java\fR command, specified by its explicit path name\&. By default, the version of the \f3java\fR command found in \f3java\&.home\fR is used (the same one that the \f3rmid\fR command uses), and does not need to be specified in the policy file\&. The second permission allows the \f3rmid\fR command to execute any command in the directory \f3/files/apps/rmidcmds\fR\&.
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecPermission
+\ \ \ \ \ \ \ \ "c:\\\\files\\\\apps\\\\rmidcmds\\\\*";
-The third permission granted, an \f3ExecOptionPermission\fR, allows the \f3rmid\fR command to start an activation group that defines the security policy file to be \f3/files/policies/group\&.policy\fR\&. The next permission allows the \f3java\&.security\&.debug property\fR to be used by an activation group\&. The last permission allows any property in the \f3sun\&.rmi property\fR name hierarchy to be used by activation groups\&.
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecOptionPermission
+\ \ \ \ \ \ \ \ "\-Djava.security.policy=c:\\\\files\\\\policies\\\\group.policy";
-To start the \f3rmid\fR command with a policy file, the \f3java\&.security\&.policy\fR property needs to be specified on the \f3rmid\fR command line, for example:
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecOptionPermission
+\ \ \ \ \ \ \ \ "\-Djava.security.debug=*";
-\f3rmid -J-Djava\&.security\&.policy=rmid\&.policy\fR\&.
-.TP 0.2i
-\(bu
-<policyClassName>
-
-If the default behavior is not flexible enough, then an administrator can provide, when starting the \f3rmid\fR command, the name of a class whose \f3checkExecCommand\fR method is executed to check commands to be executed by the \f3rmid\fR command\&.
-
-The \f3policyClassName\fR specifies a public class with a public, no-argument constructor and an implementation of the following \f3checkExecCommand\fR method:
-.sp
-.nf
-\f3 public void checkExecCommand(ActivationGroupDesc desc, String[] command)\fP
-.fi
-.nf
-\f3 throws SecurityException;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-Before starting an activation group, the \f3rmid\fR command calls the policy\&'s \f3checkExecCommand\fR method and passes to it the activation group descriptor and an array that contains the complete command to start the activation group\&. If the \f3checkExecCommand\fR throws a \f3SecurityException\fR, then the \f3rmid\fR command does not start the activation group and an \f3ActivationException\fR is thrown to the caller attempting to activate the object\&.
-.TP 0.2i
-\(bu
-none
-
-If the \f3sun\&.rmi\&.activation\&.execPolicy\fR property value is \f3none\fR, then the \f3rmid\fR command does not perform any validation of commands to start activation groups\&.
-.RE
-
-.TP
--log \fIdir\fR
-.br
-Specifies the name of the directory the activation system daemon uses to write its database and associated information\&. The log directory defaults to creating a log, in the directory in which the \f3rmid\fR command was executed\&.
+\ \ \ \ permission\ com.sun.rmi.rmid.ExecOptionPermission
+\ \ \ \ \ \ \ \ "\-Dsun.rmi.*";
+};
+\f[R]
+.fi
+.RE
+.PP
+The first permission granted allows the \f[CB]rmid\f[R] command to execute
+the 1.7.0 release of the \f[CB]java\f[R] command, specified by its
+explicit path name.
+By default, the version of the \f[CB]java\f[R] command found in
+\f[CB]java.home\f[R] is used (the same one that the \f[CB]rmid\f[R] command
+uses), and doesn\[aq]t need to be specified in the policy file.
+The second permission allows the \f[CB]rmid\f[R] command to execute any
+command in either the directory \f[CB]/files/apps/rmidcmds\f[R] (Oracle
+Solaris, Linux, and macOS) or the directory
+\f[CB]c:\\files\\apps\\rmidcmds\\\f[R] (Windows).
+.PP
+The third permission granted, \f[CB]ExecOptionPermission\f[R], allows the
+\f[CB]rmid\f[R] command to start an activation group that defines the
+security policy file to be either \f[CB]/files/policies/group.policy\f[R]
+(Oracle Solaris) or \f[CB]c:\\files\\policies\\group.policy\f[R]
+(Windows).
+The next permission allows the \f[CB]java.security.debug\ property\f[R] to
+be used by an activation group.
+The last permission allows any property in the
+\f[CB]sun.rmi\ property\f[R] name hierarchy to be used by activation
+groups.
+.PP
+To start the \f[CB]rmid\f[R] command with a policy file, the
+\f[CB]java.security.policy\f[R] property needs to be specified on the
+\f[CB]rmid\f[R] command line, for example:
+.PP
+\f[CB]rmid\ \-J\-Djava.security.policy=rmid.policy\f[R].
+.RE
+.IP \[bu] 2
+\f[I]policyClassName\f[R]
+.RS 2
+.PP
+If the default behavior isn\[aq]t flexible enough, then an administrator
+can provide, when starting the \f[CB]rmid\f[R] command, the name of a
+class whose \f[CB]checkExecCommand\f[R] method is executed to check
+commands to be executed by the \f[CB]rmid\f[R] command.
+.PP
+The \f[CB]policyClassName\f[R] specifies a public class with a public,
+no\-argument constructor and an implementation of the following
+\f[CB]checkExecCommand\f[R] method:
+.IP
+.nf
+\f[CB]
+\ public\ void\ checkExecCommand(ActivationGroupDesc\ desc,\ String[]\ command)
+\ \ \ \ \ \ \ \ throws\ SecurityException;
+\f[R]
+.fi
+.PP
+Before starting an activation group, the \f[CB]rmid\f[R] command calls the
+policy\[aq]s \f[CB]checkExecCommand\f[R] method and passes to it the
+activation group descriptor and an array that contains the complete
+command to start the activation group.
+If the \f[CB]checkExecCommand\f[R] throws a \f[CB]SecurityException\f[R],
+then the \f[CB]rmid\f[R] command doesn\[aq]t start the activation group
+and an \f[CB]ActivationException\f[R] is thrown to the caller attempting
+to activate the object.
+.RE
+.IP \[bu] 2
+\f[CB]none\f[R]
+.RS 2
+.PP
+If the \f[CB]sun.rmi.activation.execPolicy\f[R] property value is
+\f[CB]none\f[R], then the \f[CB]rmid\f[R] command doesn\[aq]t perform any
+validation of commands to start activation groups.
+.RE
+.RE
.TP
--port \fIport\fR
-.br
-Specifies the port the registry uses\&. The activation system daemon binds the \f3ActivationSystem\fR, with the name \f3java\&.rmi\&.activation\&.ActivationSystem\fR, in this registry\&. The \f3ActivationSystem\fR on the local machine can be obtained using the following \f3Naming\&.lookup\fR method call:
-.sp
-.nf
-\f3import java\&.rmi\&.*; \fP
-.fi
-.nf
-\f3 import java\&.rmi\&.activation\&.*;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3 ActivationSystem system; system = (ActivationSystem)\fP
-.fi
-.nf
-\f3 Naming\&.lookup("//:port/java\&.rmi\&.activation\&.ActivationSystem");\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
+.B \f[CB]\-log\f[R] \f[I]dir\f[R]
+Specifies the name of the directory that the activation system daemon
+uses to write its database and associated information.
+The log directory defaults to creating a log, in the directory in which
+the \f[CB]rmid\f[R] command was executed.
+.RS
+.RE
+.TP
+.B \f[CB]\-port\f[R] \f[I]port\f[R]
+Specifies the port that the registry uses.
+The activation system daemon binds \f[CB]ActivationSystem\f[R], with the
+name \f[CB]java.rmi.activation.ActivationSystem\f[R], in this registry.
+The \f[CB]ActivationSystem\f[R] on the local machine can be obtained using
+the following \f[CB]Naming.lookup\f[R] method call:
+.RS
+.IP
+.nf
+\f[CB]
+import\ java.rmi.*;
+import\ java.rmi.activation.*;
+ActivationSystem\ system;\ system\ =\ (ActivationSystem)
+Naming.lookup("//:port/java.rmi.activation.ActivationSystem");
+\f[R]
+.fi
+.RE
.TP
--stop
-.br
-Stops the current invocation of the \f3rmid\fR command for a port specified by the \f3-port\fR option\&. If no port is specified, then this option stops the \f3rmid\fR invocation running on port 1098\&.
-.SH ENVIRONMENT\ VARIABLES
-.TP
-CLASSPATH
-Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-java(1)
-.TP 0.2i
-\(bu
-Setting the Class Path
+.B \f[CB]\-stop\f[R]
+Stops the current invocation of the \f[CB]rmid\f[R] command for a port
+specified by the \f[CB]\-port\f[R] option.
+If no port is specified, then this option stops the \f[CB]rmid\f[R]
+invocation running on port 1098.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
--- a/src/java.rmi/share/man/rmiregistry.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/java.rmi/share/man/rmiregistry.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,79 +19,74 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Remote Method Invocation (RMI) Tools
-.\" Title: rmiregistry.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH rmiregistry 1 "21 November 2013" "JDK 8" "Remote Method Invocation (RMI) Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-rmiregistry \- Starts a remote object registry on the specified port on the current host\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBrmiregistry\fR [ \fIport\fR ]
-.fi
-.sp
-.TP
-\fIport\fR
-The number of a \f3port\fR on the current host at which to start the remote object registry\&.
-.SH DESCRIPTION
-The \f3rmiregistry\fR command creates and starts a remote object registry on the specified port on the current host\&. If the port is omitted, then the registry is started on port 1099\&. The \f3rmiregistry\fR command produces no output and is typically run in the background, for example:
-.sp
-.nf
-\f3rmiregistry &\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-A remote object registry is a bootstrap naming service that is used by RMI servers on the same host to bind remote objects to names\&. Clients on local and remote hosts can then look up remote objects and make remote method invocations\&.
+.TH "RMIREGISTRY" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+rmiregistry \- create and start a remote object registry on the
+specified port on the current host
+.SH SYNOPSIS
+.PP
+\f[CB]rmiregistry\f[R] [\f[I]options\f[R]] [\f[I]port\f[R]]
+.TP
+.B \f[I]options\f[R]
+This represents the option for the \f[CB]rmiregistry\f[R] command.
+See \f[B]Options\f[R]
+.RS
+.RE
+.TP
+.B \f[I]port\f[R]
+The number of a port on the current host at which to start the remote
+object registry.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]rmiregistry\f[R] command creates and starts a remote object
+registry on the specified port on the current host.
+If the port is omitted, then the registry is started on port 1099.
+The \f[CB]rmiregistry\f[R] command produces no output and is typically run
+in the background, for example:
+.RS
+.PP
+\f[CB]rmiregistry\ &\f[R]
+.RE
.PP
-The registry is typically used to locate the first remote object on which an application needs to call methods\&. That object then provides application-specific support for finding other objects\&.
+A remote object registry is a bootstrap naming service that\[aq]s used
+by RMI servers on the same host to bind remote objects to names.
+Clients on local and remote hosts can then look up remote objects and
+make remote method invocations.
+.PP
+The registry is typically used to locate the first remote object on
+which an application needs to call methods.
+That object then provides application\-specific support for finding
+other objects.
+.PP
+The methods of the \f[CB]java.rmi.registry.LocateRegistry\f[R] class are
+used to get a registry operating on the local host or local host and
+port.
.PP
-The methods of the \f3java\&.rmi\&.registry\&.LocateRegistry\fR class are used to get a registry operating on the local host or local host and port\&.
-.PP
-The URL-based methods of the \f3java\&.rmi\&.Naming\fR class operate on a registry and can be used to look up a remote object on any host and on the local host\&. Bind a simple name (string) to a remote object, rebind a new name to a remote object (overriding the old binding), unbind a remote object, and list the URL bound in the registry\&.
-.SH OPTIONS
+The URL\-based methods of the \f[CB]java.rmi.Naming\f[R] class operate on
+a registry and can be used to:
+.IP \[bu] 2
+Bind the specified name to a remote object
+.IP \[bu] 2
+Return an array of the names bound in the registry
+.IP \[bu] 2
+Return a reference, a stub, for the remote object associated with the
+specified name
+.IP \[bu] 2
+Rebind the specified name to a new remote object
+.IP \[bu] 2
+Destroy the binding for the specified name that\[aq]s associated with a
+remote object
+.SH OPTIONS
.TP
--J
-.br
-Used with any Java option to pass the option following the \f3-J\fR (no spaces between the \f3-J\fR and the option) to the Java interpreter\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-java(1)
-.TP 0.2i
-\(bu
-\f3java\&.rmi\&.registry\&.LocateRegistry\fR class description at http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/registry/LocateRegistry\&.html
-.TP 0.2i
-\(bu
-\f3java\&.rmi\&.Naming class description\fR at http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/Naming\&.html
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+Used with any Java option to pass the \f[I]option\f[R] following the
+\f[CB]\-J\f[R] (no spaces between the \f[CB]\-J\f[R] and the option) to the
+Java interpreter.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
--- a/src/java.scripting/share/man/jrunscript.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/java.scripting/share/man/jrunscript.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,176 +19,157 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Scripting Tools
-.\" Title: jrunscript.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jrunscript 1 "21 November 2013" "JDK 8" "Scripting Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jrunscript \- Runs a command-line script shell that supports interactive and batch modes\&. This command is experimental and unsupported\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjrunscript\fR [\fIoptions\fR] [\fIarguments\fR]
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.TP
-\fIarguments\fR
-Arguments, when used, follow immediately after options or the command name\&. See Arguments\&.
-.SH DESCRIPTION
-The \f3jrunscript\fR command is a language-independent command-line script shell\&. The \f3jrunscript\fR command supports both an interactive (read-eval-print) mode and a batch (\f3-f\fR option) mode of script execution\&. By default, JavaScript is the language used, but the \f3-l\fR option can be used to specify a different language\&. By using Java to scripting language communication, the \f3jrunscript\fR command supports an exploratory programming style\&.
-.SH OPTIONS
+.TH "JRUNSCRIPT" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jrunscript \- run a command\-line script shell that supports interactive
+and batch modes
+.SH SYNOPSIS
+.PP
+\f[B]Note:\f[R]
+.PP
+This tool is \f[B]experimental\f[R]\ and unsupported.
+.PP
+\f[CB]jrunscript\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]]
+.TP
+.B \f[I]options\f[R]
+This represents the \f[CB]jrunscript\f[R] command\-line options that can
+be used.
+See \f[B]Options for the jrunscript Command\f[R].
+.RS
+.RE
.TP
--classpath \fIpath\fR
-.br
-Indicate where any class files are that the script needs to access\&.
-.TP
--cp \fIpath\fR
-.br
-Same as \f3-classpath\fR\f3path\fR\&.
-.TP
--D\fIname\fR=\fIvalue\fR
-.br
-Sets a Java system property\&.
-.TP
--J\fIflag\fR
-.br
-Passes \f3flag\fR directly to the Java Virtual Machine where the \f3jrunscript\fR command is running\&.
-.TP
--I \fIlanguage\fR
-.br
-Uses the specified scripting language\&. By default, JavaScript is used\&. To use other scripting languages, you must specify the corresponding script engine\&'s JAR file with the \f3-cp\fR or \f3-classpath\fR option\&.
+.B \f[I]arguments\f[R]
+Arguments, when used, follow immediately after options or the command
+name.
+See \f[B]Arguments\f[R].
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jrunscript\f[R] command is a language\-independent command\-line
+script shell.
+The \f[CB]jrunscript\f[R] command supports both an interactive
+(read\-eval\-print) mode and a batch (\f[CB]\-f\f[R] option) mode of
+script execution.
+By default, JavaScript is the language used, but the \f[CB]\-l\f[R] option
+can be used to specify a different language.
+By using Java to scripting language communication, the
+\f[CB]jrunscript\f[R] command supports an exploratory programming style.
+.PP
+If JavaScript is used, then before it evaluates a user defined script,
+the \f[CB]jrunscript\f[R] command initializes certain built\-in functions
+and objects, which are documented in the API Specification for
+\f[CB]jrunscript\f[R] JavaScript built\-in functions.
+.SH OPTIONS FOR THE JRUNSCRIPT COMMAND
.TP
--e \fIscript\fR
-.br
-Evaluates the specified script\&. This option can be used to run one-line scripts that are specified completely on the command line\&.
+.B \f[CB]\-cp\f[R] \f[I]path\f[R] or \f[CB]\-classpath\f[R] \f[I]path\f[R]
+Indicates where any class files are that the script needs to access.
+.RS
+.RE
.TP
--encoding \fIencoding\fR
-.br
-Specifies the character encoding used to read script files\&.
+.B \f[CB]\-D\f[R]\f[I]name\f[R]\f[CB]=\f[R]\f[I]value\f[R]
+Sets a Java system property.
+.RS
+.RE
.TP
--f \fIscript-file\fR
-.br
-Evaluates the specified script file (batch mode)\&.
+.B \f[CB]\-J\f[R]\f[I]flag\f[R]
+Passes \f[I]flag\f[R] directly to the Java Virtual Machine where the
+\f[CB]jrunscript\f[R] command is running.
+.RS
+.RE
.TP
--f -
-.br
-Reads and evaluates a script from standard input (interactive mode)\&.
-.TP
--help
-.br
-Displays a help message and exits\&.
+.B \f[CB]\-l\f[R] \f[I]language\f[R]
+Uses the specified scripting language.
+By default, JavaScript is used.
+To use other scripting languages, you must specify the corresponding
+script engine\[aq]s JAR file with the \f[CB]\-cp\f[R] or
+\f[CB]\-classpath\f[R] option.
+.RS
+.RE
.TP
--?
-.br
-Displays a help message and exits\&.
+.B \f[CB]\-e\f[R] \f[I]script\f[R]
+Evaluates the specified script.
+This option can be used to run one\-line scripts that are specified
+completely on the command line.
+.RS
+.RE
+.TP
+.B \f[CB]\-encoding\f[R] \f[I]encoding\f[R]
+Specifies the character encoding used to read script files.
+.RS
+.RE
+.TP
+.B \f[CB]\-f\f[R] \f[I]script\-file\f[R]
+Evaluates the specified script file (batch mode).
+.RS
+.RE
+.TP
+.B \f[CB]\-f\ \-\f[R]
+Enters interactive mode to read and evaluate a script from standard
+input.
+.RS
+.RE
+.TP
+.B \f[CB]\-help\f[R] or \f[CB]\-?\f[R]
+Displays a help message and exits.
+.RS
+.RE
.TP
--q
-.br
-Lists all script engines available and exits\&.
-.SH ARGUMENTS
-If arguments are present and if no \f3-e\fR or \f3-f\fR option is used, then the first argument is the script file and the rest of the arguments, if any, are passed to the script\&. If arguments and \f3-e\fR or the \f3-f\fR option are used, then all arguments are passed to the script\&. If arguments, \f3-e\fR and \f3-f\fR are missing, then interactive mode is used\&. Script arguments are available to a script in an engine variable named \f3arguments\fR of type \f3String\fR array\&.
-.SH EXAMPLES
-.SS EXECUTE\ INLINE\ SCRIPTS
-.sp
-.nf
-\f3jrunscript \-e "print(\&'hello world\&')"\fP
-.fi
-.nf
-\f3jrunscript \-e "cat(\&'http://www\&.example\&.com\&')"\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS USE\ SPECIFIED\ LANGUAGE\ AND\ EVALUATE\ THE\ SCRIPT\ FILE
-.sp
-.nf
-\f3jrunscript \-l js \-f test\&.js\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS INTERACTIVE\ MODE
-.sp
-.nf
-\f3jrunscript\fP
-.fi
-.nf
-\f3js> print(\&'Hello World\en\&');\fP
-.fi
-.nf
-\f3Hello World\fP
-.fi
-.nf
-\f3js> 34 + 55\fP
-.fi
-.nf
-\f389\&.0\fP
-.fi
-.nf
-\f3js> t = new java\&.lang\&.Thread(function() { print(\&'Hello World\en\&'); })\fP
-.fi
-.nf
-\f3Thread[Thread\-0,5,main]\fP
-.fi
-.nf
-\f3js> t\&.start()\fP
-.fi
-.nf
-\f3js> Hello World\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3js>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS RUN\ SCRIPT\ FILE\ WITH\ SCRIPT\ ARGUMENTS
-The test\&.js file is the script file\&. The \f3arg1\fR, \f3arg2\fR and \f3arg3\fR arguments are passed to the script\&. The script can access these arguments with an arguments array\&.
-.sp
-.nf
-\f3jrunscript test\&.js arg1 arg2 arg3\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH SEE\ ALSO
-If JavaScript is used, then before it evaluates a user defined script, the \f3jrunscript\fR command initializes certain built-in functions and objects\&. These JavaScript built-ins are documented in JsDoc-Toolkit at http://code\&.google\&.com/p/jsdoc-toolkit/
+.B \f[CB]\-q\f[R]
+Lists all script engines available and exits.
+.RS
+.RE
+.SH ARGUMENTS
+.PP
+If arguments are present and if no \f[CB]\-e\f[R] or \f[CB]\-f\f[R] option
+is used, then the first argument is the script file and the rest of the
+arguments, if any, are passed as script arguments.
+If arguments and the \f[CB]\-e\f[R] or the \f[CB]\-f\f[R] option are used,
+then all arguments are passed as script arguments.
+If arguments \f[CB]\-e\f[R] and \f[CB]\-f\f[R] are missing, then the
+interactive mode is used.
+.SH EXAMPLE OF EXECUTING INLINE SCRIPTS
+.RS
+.PP
+\f[CB]jrunscript\ \-e\ "print(\[aq]hello\ world\[aq])"\f[R]
+.RE
+.RS
+.PP
+\f[CB]jrunscript\ \-e\ "cat(\[aq]http://www.example.com\[aq])"\f[R]
+.RE
+.SH EXAMPLE OF USING SPECIFIED LANGUAGE AND EVALUATE THE SCRIPT FILE
+.RS
+.PP
+\f[CB]jrunscript\ \-l\ js\ \-f\ test.js\f[R]
.RE
-.br
-'pl 8.5i
-'bp
+.SH EXAMPLE OF INTERACTIVE MODE
+.IP
+.nf
+\f[CB]
+jrunscript
+js>\ print(\[aq]Hello\ World\\n\[aq]);
+Hello\ World
+js>\ 34\ +\ 55
+89.0
+js>\ t\ =\ new\ java.lang.Thread(function()\ {\ print(\[aq]Hello\ World\\n\[aq]);\ })
+Thread[Thread\-0,5,main]
+js>\ t.start()
+js>\ Hello\ World
+
+js>
+\f[R]
+.fi
+.SH RUN SCRIPT FILE WITH SCRIPT ARGUMENTS
+.PP
+In this example, the \f[CB]test.js\f[R] file is the script file.
+The \f[CB]arg1\f[R], \f[CB]arg2\f[R], and \f[CB]arg3\f[R] arguments are passed
+to the script.
+The script can access these arguments with an arguments array.
+.RS
+.PP
+\f[CB]jrunscript\ test.js\ arg1\ arg2\ arg3\f[R]
+.RE
--- a/src/jdk.compiler/share/man/javac.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.compiler/share/man/javac.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,1347 +19,1755 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 03 March 2015
-.\" SectDesc: Basic Tools
-.\" Title: javac.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH javac 1 "03 March 2015" "JDK 8" "Basic Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-javac \- Reads Java class and interface definitions and compiles them into bytecode and class files\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjavac\fR [ \fIoptions\fR ] [ \fIsourcefiles\fR ] [ \fIclasses\fR] [ \fI@argfiles\fR ]
-.fi
-.sp
-Arguments can be in any order:
-.TP
-\fIoptions\fR
-Command-line options\&. See Options\&.
-.TP
-\fIsourcefiles\fR
-One or more source files to be compiled (such as \f3MyClass\&.java\fR)\&.
-.TP
-\fIclasses\fR
-One or more classes to be processed for annotations (such as \f3MyPackage\&.MyClass\fR)\&.
-.TP
-\fI@argfiles\fR
-One or more files that list options and source files\&. The \f3-J\fR options are not allowed in these files\&. See Command-Line Argument Files\&.
-.SH DESCRIPTION
-The \f3javac\fR command reads class and interface definitions, written in the Java programming language, and compiles them into bytecode class files\&. The \f3javac\fR command can also process annotations in Java source files and classes\&.
+.TH "JAVAC" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+javac \- read Java class and interface definitions and compile them into
+bytecode and class files
+.SH SYNOPSIS
.PP
-There are two ways to pass source code file names to \f3javac\fR\&.
-.TP 0.2i
-\(bu
-For a small number of source files, list the file names on the command line\&.
-.TP 0.2i
-\(bu
-For a large number of source files, list the file names in a file that is separated by blanks or line breaks\&. Use the list file name preceded by an at sign (@) with the \f3javac\fR command\&.
-.PP
-Source code file names must have \&.java suffixes, class file names must have \&.class suffixes, and both source and class files must have root names that identify the class\&. For example, a class called \f3MyClass\fR would be written in a source file called \f3MyClass\&.java\fR and compiled into a bytecode class file called \f3MyClass\&.class\fR\&.
-.PP
-Inner class definitions produce additional class files\&. These class files have names that combine the inner and outer class names, such as \f3MyClass$MyInnerClass\&.class\fR\&.
-.PP
-Arrange source files in a directory tree that reflects their package tree\&. For example, if all of your source files are in \f3/workspace\fR, then put the source code for \f3com\&.mysoft\&.mypack\&.MyClass\fR in \f3/workspace/com/mysoft/mypack/MyClass\&.java\fR\&.
-.PP
-By default, the compiler puts each class file in the same directory as its source file\&. You can specify a separate destination directory with the \f3-d\fR option\&.
-.SH OPTIONS
-The compiler has a set of standard options that are supported on the current development environment\&. An additional set of nonstandard options are specific to the current virtual machine and compiler implementations and are subject to change in the future\&. Nonstandard options begin with the \f3-X\fR option\&.
-.TP 0.2i
-\(bu
-See also Cross-Compilation Options
-.TP 0.2i
-\(bu
-See also Nonstandard Options
-.SS STANDARD\ OPTIONS
+\f[CB]javac\f[R] [\f[I]options\f[R]] [\f[I]sourcefiles\f[R]]
.TP
--A\fIkey\fR[\fI=value\fR]
-.br
-Specifies options to pass to annotation processors\&. These options are not interpreted by \f3javac\fR directly, but are made available for use by individual processors\&. The \f3key\fR value should be one or more identifiers separated by a dot (\&.)\&.
+.B \f[I]options\f[R]
+Command\-line options.
+See \f[B]Overview of javac Options\f[R].
+.RS
+.RE
.TP
--cp \fIpath\fR or -classpath \fIpath\fR
-.br
-Specifies where to find user class files, and (optionally) annotation processors and source files\&. This class path overrides the user class path in the \f3CLASSPATH\fR environment variable\&. If neither \f3CLASSPATH\fR, \f3-cp\fR nor \f3-classpath\fR is specified, then the user \fIclass path\fR is the current directory\&. See Setting the Class Path\&.
-
-If the \f3-sourcepath\fR option is not specified, then the user class path is also searched for source files\&.
-
-If the \f3-processorpath\fR option is not specified, then the class path is also searched for annotation processors\&.
-.TP
--Djava\&.ext\&.dirs=\fIdirectories\fR
-.br
-Overrides the location of installed extensions\&.
-.TP
--Djava\&.endorsed\&.dirs=\fIdirectories\fR
-.br
-Overrides the location of the endorsed standards path\&.
-.TP
--d \fIdirectory\fR
-.br
-Sets the destination directory for class files\&. The directory must already exist because \f3javac\fR does not create it\&. If a class is part of a package, then \f3javac\fR puts the class file in a subdirectory that reflects the package name and creates directories as needed\&.
-
-If you specify \f3-d\fR\f3/home/myclasses\fR and the class is called \f3com\&.mypackage\&.MyClass\fR, then the class file is \f3/home/myclasses/com/mypackage/MyClass\&.class\fR\&.
-
-If the \fI-d\fR option is not specified, then \f3javac\fR puts each class file in the same directory as the source file from which it was generated\&.
-
-\fINote:\fR The directory specified by the \fI-d\fR option is not automatically added to your user class path\&.
-.TP
--deprecation
-.br
-Shows a description of each use or override of a deprecated member or class\&. Without the \f3-deprecation\fR option, \f3javac\fR shows a summary of the source files that use or override deprecated members or classes\&. The \f3-deprecation\fR option is shorthand for \f3-Xlint:deprecation\fR\&.
-.TP
--encoding \fIencoding\fR
-.br
-Sets the source file encoding name, such as EUC-JP and UTF-8\&. If the \f3-encoding\fR option is not specified, then the platform default converter is used\&.
-.TP
--endorseddirs \fIdirectories\fR
-.br
-Overrides the location of the endorsed standards path\&.
+.B \f[I]sourcefiles\f[R]
+One or more source files to be compiled (such as \f[CB]MyClass.java\f[R])
+or processed for annotations (such as \f[CB]MyPackage.MyClass\f[R]).
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]javac\f[R] command reads class and interface definitions,
+written in the Java programming language, and compiles them into
+bytecode class files.
+The \f[CB]javac\f[R] command can also process annotations in Java source
+files and classes.
+.PP
+A new launcher environment variable, \f[CB]JDK_JAVAC_OPTIONS\f[R], was
+introduced in JDK 9 that prepended its content to the command line to
+\f[CB]javac\f[R] .
+See \f[B]Using JDK_JAVAC_OPTIONS Environment Variable\f[R].
+.PP
+There are two ways to pass source code file names to \f[CB]javac\f[R].
+.IP \[bu] 2
+For a small number of source files, you can list the file names on the
+command line.
+.IP \[bu] 2
+For a large number of source files, you can use the
+\f[CB]\@\f[R]\f[I]filename\f[R] option on the \f[CB]javac\f[R] command line
+to include a file that lists the source file names.
+See \f[B]Standard Options\f[R] for a description of the option and
+\f[B]javac Command\-Line Argument Files\f[R] for a description of
+\f[CB]javac\f[R] argument files.
+.PP
+Source code file names must have \f[CB]\&.java\f[R] suffixes, class file
+names must have \f[CB]\&.class\f[R] suffixes, and both source and class
+files must have root names that identify the class.
+For example, a class called \f[CB]MyClass\f[R] would be written in a
+source file called \f[CB]MyClass.java\f[R] and compiled into a bytecode
+class file called \f[CB]MyClass.class\f[R].
+.PP
+Inner class definitions produce additional class files.
+These class files have names that combine the inner and outer class
+names, such as \f[CB]MyClass$MyInnerClass.class\f[R].
+.PP
+You should arrange the source files in a directory tree that reflects
+their package tree.
+For example:
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] If all of your source files
+are in \f[CB]/workspace\f[R], then put the source code for
+\f[CB]com.mysoft.mypack.MyClass\f[R] in
+\f[CB]/workspace/com/mysoft/mypack/MyClass.java\f[R].
+.IP \[bu] 2
+\f[B]Windows:\f[R] If all of your source files are in
+\f[CB]\\workspace\f[R], then put the source code for
+\f[CB]com.mysoft.mypack.MyClass\f[R] in
+\f[CB]\\workspace\\com\\mysoft\\mypack\\MyClass.java\f[R].
+.PP
+By default, the compiler puts each class file in the same directory as
+its source file.
+You can specify a separate destination directory with the \f[CB]\-d\f[R]
+option described in \f[B]Standard Options\f[R].
+.SH PROGRAMMATIC INTERFACE
+.PP
+The \f[CB]javac\f[R] command supports the new Java Compiler API defined by
+the classes and interfaces in the \f[CB]javax.tools\f[R] package.
+.SH IMPLICITLY LOADED SOURCE FILES
+.PP
+To compile a set of source files, the compiler might need to implicitly
+load additional source files.
+See \f[B]Searching for Types\f[R].
+Such files are currently not subject to annotation processing.
+By default, the compiler gives a warning when annotation processing
+occurs and any implicitly loaded source files are compiled.
+The \f[CB]\-implicit\f[R] option provides a way to suppress the warning.
+.SH USING JDK_JAVAC_OPTIONS ENVIRONMENT VARIABLE
+.PP
+The content of the \f[CB]JDK_JAVAC_OPTIONS\f[R] environment variable,
+separated by white\-spaces ( ) or white\-space characters (\f[CB]\\n\f[R],
+\f[CB]\\t\f[R], \f[CB]\\r\f[R], or \f[CB]\\f\f[R]) is prepended to the command
+line arguments passed to \f[CB]javac\f[R] as a list of arguments.
+.PP
+The encoding requirement for the environment variable is the same as the
+\f[CB]javac\f[R] command line on the system.
+\f[CB]JDK_JAVAC_OPTIONS\f[R] environment variable content is treated in
+the same manner as that specified in the command line.
+.PP
+Single quotes (\f[CB]\[aq]\f[R]) or double quotes (\f[CB]"\f[R]) can be used
+to enclose arguments that\ contain whitespace characters.
+All content between the open quote and the first matching close quote
+are preserved by simply removing the pair of quotes.
+In case a matching quote is not found, the launcher will abort with an
+error message.
+\f[CB]\@\f[R]\f[I]files\f[R] are supported as they are specified in the
+command line.
+However, as in \f[CB]\@\f[R]\f[I]files\f[R], use of a wildcard is not
+supported.
+.PP
+\f[B]Examples of quoting arguments containing white spaces:\f[R]
+.RS
+.PP
+\f[CB]export\ JDK_JAVAC_OPTIONS=\[aq]\@"C:\\white\ spaces\\argfile"\[aq]\f[R]
+.RE
+.RS
+.PP
+\f[CB]export\ JDK_JAVAC_OPTIONS=\[aq]"\@C:\\white\ spaces\\argfile"\[aq]\f[R]
+.RE
+.RS
+.PP
+\f[CB]export\ JDK_JAVAC_OPTIONS=\[aq]\@C:\\"white\ spaces"\\argfile\[aq]\f[R]
+.RE
+.SH OVERVIEW OF JAVAC OPTIONS
+.PP
+The compiler has sets of standard options, and cross\-compilation
+options that are supported on the current development environment.
+The compiler also has a set of nonstandard options that are specific to
+the current virtual machine and compiler implementations but are subject
+to change in the future.
+The nonstandard options begin with \f[CB]\-X\f[R] .
+The different sets of \f[CB]javac\f[R] options are described in the
+following sections:
+.IP \[bu] 2
+\f[B]Standard Options\f[R]
+.IP \[bu] 2
+\f[B]Cross\-Compilation Options for javac\f[R]
+.IP \[bu] 2
+\f[B]Extra Options\f[R]
+.SH STANDARD OPTIONS
.TP
--extdirs \fIdirectories\fR
-.br
-Overrides the location of the \f3ext\fR directory\&. The directories variable is a colon-separated list of directories\&. Each JAR file in the specified directories is searched for class files\&. All JAR files found become part of the class path\&.
-
-If you are cross-compiling (compiling classes against bootstrap and extension classes of a different Java platform implementation), then this option specifies the directories that contain the extension classes\&. See Cross-Compilation Options for more information\&.
+.B \f[CB]\@\f[R]\f[I]filename\f[R]
+Reads options and file names from a file.
+To shorten or simplify the \f[CB]javac\f[R] command, you can specify one
+or more files that contain arguments to the \f[CB]javac\f[R] command
+(except \f[CB]\-J\f[R] options).
+This lets you to create \f[CB]javac\f[R] commands of any length on any
+operating system.
+See \f[B]javac Command\-Line Argument Files\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-A\f[R]\f[I]key\f[R][\f[CB]=\f[R]\f[I]value\f[R]]
+Specifies options to pass to annotation processors.
+These options aren\[aq]t interpreted by \f[CB]javac\f[R] directly, but are
+made available for use by individual processors.
+The \f[I]key\f[R] value should be one or more identifiers separated by a
+dot (\f[CB]\&.\f[R]).
+.RS
+.RE
+.TP
+.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R]\f[CB],\f[R]\f[I]module\f[R]
+Specifies root modules to resolve in addition to the initial modules, or
+all modules on the module path if \f[I]module\f[R] is
+\f[CB]ALL\-MODULE\-PATH.\f[R]
+.RS
+.RE
.TP
--g
-.br
-Generates all debugging information, including local variables\&. By default, only line number and source file information is generated\&.
+.B \f[CB]\-\-boot\-class\-path\f[R] \f[I]path\f[R] or \f[CB]\-bootclasspath\f[R] \f[I]path\f[R]
+Overrides the location of the bootstrap class files.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
.TP
--g:none
-.br
-Does not generate any debugging information\&.
+.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R], \f[CB]\-classpath\f[R] \f[I]path\f[R], or \f[CB]\-cp\f[R] \f[I]path\f[R]
+Specifies where to find user class files and annotation processors.
+This class path overrides the user class path in the \f[CB]CLASSPATH\f[R]
+environment variable.
+.RS
+.IP \[bu] 2
+If \f[CB]\-\-class\-path\f[R], \f[CB]\-classpath\f[R], or \f[CB]\-cp\f[R]
+aren\[aq]t specified, then the user class path is the current directory.
+.IP \[bu] 2
+If the \f[CB]\-sourcepath\f[R] option isn\[aq]t specified, then the user
+class path is also searched for source files.
+.IP \[bu] 2
+If the \f[CB]\-processorpath\f[R] option isn\[aq]t specified, then the
+class path is also searched for annotation processors.
+.RE
.TP
--g:[\fIkeyword list\fR]
-.br
-Generates only some kinds of debugging information, specified by a comma separated list of keywords\&. Valid keywords are:
-.RS
-.TP
-source
-Source file debugging information\&.
-.TP
-lines
-Line number debugging information\&.
-.TP
-vars
-Local variable debugging information\&.
-.RE
-
+.B \f[CB]\-d\f[R] \f[I]directory\f[R]
+Sets the destination directory for class files.
+If a class is part of a package, then \f[CB]javac\f[R] puts the class file
+in a subdirectory that reflects the package name and creates directories
+as needed.
+For example:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] If you specify
+\f[CB]\-d\ /home/myclasses\f[R] and the class is called
+\f[CB]com.mypackage.MyClass\f[R], then the class file is
+\f[CB]/home/myclasses/com/mypackage/MyClass.class\f[R].
+.IP \[bu] 2
+\f[B]Windows:\f[R] If you specify \f[CB]\-d\ C:\\myclasses\f[R] and the
+class is called \f[CB]com.mypackage.MyClass\f[R], then the class file is
+\f[CB]C:\\myclasses\\com\\mypackage\\MyClass.class\f[R].
+.PP
+If the \f[CB]\-d\f[R] option isn\[aq]t specified, then \f[CB]javac\f[R] puts
+each class file in the same directory as the source file from which it
+was generated.
+.PP
+\f[B]Note:\f[R]
+.PP
+The directory specified by the \f[CB]\-d\f[R] option isn\[aq]t
+automatically added to your user class path.
+.RE
+.TP
+.B \f[CB]\-deprecation\f[R]
+Shows a description of each use or override of a deprecated member or
+class.
+Without the \f[CB]\-deprecation\f[R] option, \f[CB]javac\f[R] shows a
+summary of the source files that use or override deprecated members or
+classes.
+The \f[CB]\-deprecation\f[R] option is shorthand for
+\f[CB]\-Xlint:deprecation\f[R].
+.RS
+.RE
.TP
--help
-.br
-Prints a synopsis of standard options\&.
+.B \f[CB]\-\-enable\-preview\f[R]
+Enables preview language features.
+Used in conjunction with either \f[CB]\-source\f[R] or
+\f[CB]\-\-release\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-encoding\f[R] \f[I]encoding\f[R]
+Specifies character encoding used by source files, such as EUC\-JP and
+UTF\-8.
+If the \f[CB]\-encoding\f[R] option isn\[aq]t specified, then the platform
+default converter is used.
+.RS
+.RE
.TP
--implicit:[\fIclass, none\fR]
-.br
-Controls the generation of class files for implicitly loaded source files\&. To automatically generate class files, use \f3-implicit:class\fR\&. To suppress class file generation, use \f3-implicit:none\fR\&. If this option is not specified, then the default is to automatically generate class files\&. In this case, the compiler issues a warning if any such class files are generated when also doing annotation processing\&. The warning is not issued when the \f3-implicit\fR option is set explicitly\&. See Searching for Types\&.
+.B \f[CB]\-endorseddirs\f[R] \f[I]directories\f[R]
+Overrides the location of the endorsed standards path.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
.TP
--J\fIoption\fR
-.br
-Passes \f3option\fR to the Java Virtual Machine (JVM), where option is one of the options described on the reference page for the Java launcher\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&. See java(1)\&.
-
-\fINote:\fR The \fICLASSPATH\fR, \f3-classpath\fR, \f3-bootclasspath\fR, and \f3-extdirs\fR options do not specify the classes used to run \f3javac\fR\&. Trying to customize the compiler implementation with these options and variables is risky and often does not accomplish what you want\&. If you must customize the complier implementation, then use the \f3-J\fR option to pass options through to the underlying \f3\fRJava launcher\&.
+.B \f[CB]\-extdirs\f[R] \f[I]directories\f[R]
+Overrides the location of the installed extensions.
+The \f[CB]directories\f[R] variable is a colon\-separated list of
+directories.
+Each JAR file in the specified directories is searched for class files.
+All JAR files found become part of the class path.
+.RS
+.PP
+If you are cross\-compiling, then this option specifies the directories
+that contain the extension classes.
+See \f[B]Cross\-Compilation Options for javac\f[R].
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
.TP
--nowarn
-.br
-Disables warning messages\&. This option operates the same as the \f3-Xlint:none\fR option\&.
+.B \f[CB]\-g\f[R]
+Generates all debugging information, including local variables.
+By default, only line number and source file information is generated.
+.RS
+.RE
+.TP
+.B \f[CB]\-g:\f[R][\f[CB]lines\f[R], \f[CB]vars\f[R], \f[CB]source\f[R]]
+Generates only the kinds of debugging information specified by the
+comma\-separated list of keywords.
+Valid keywords are:
+.RS
.TP
--parameters
-.br
-Stores formal parameter names of constructors and methods in the generated class file so that the method \f3java\&.lang\&.reflect\&.Executable\&.getParameters\fR from the Reflection API can retrieve them\&.
+.B \f[CB]lines\f[R]
+Line number debugging information.
+.RS
+.RE
.TP
--proc: [\fInone\fR, \fIonly\fR]
-.br
-Controls whether annotation processing and compilation are done\&. \f3-proc:none\fR means that compilation takes place without annotation processing\&. \f3-proc:only\fR means that only annotation processing is done, without any subsequent compilation\&.
+.B \f[CB]vars\f[R]
+Local variable debugging information.
+.RS
+.RE
+.TP
+.B \f[CB]source\f[R]
+Source file debugging information.
+.RS
+.RE
+.RE
.TP
--processor \fIclass1\fR [,\fIclass2\fR,\fIclass3\fR\&.\&.\&.]
-.br
-Names of the annotation processors to run\&. This bypasses the default discovery process\&.
+.B \f[CB]\-g:none\f[R]
+Doesn\[aq]t generate debugging information.
+.RS
+.RE
.TP
--processorpath \fIpath\fR
-.br
-Specifies where to find annotation processors\&. If this option is not used, then the class path is searched for processors\&.
+.B \f[CB]\-h\f[R] \f[I]directory\f[R]
+Specfies where to place generated native header files.
+.RS
+.PP
+When you specify this option, a native header file is generated for each
+class that contains native methods or that has one or more constants
+annotated with the \f[B]\f[BC]java.lang.annotation.Native\f[B]\f[R]
+[https://docs.oracle.com/javase/10/docs/api/java/lang/annotation/Native.html]
+annotation.
+If the class is part of a package, then the compiler puts the native
+header file in a subdirectory that reflects the package name and creates
+directories as needed.
+.RE
.TP
--s \fIdir\fR
-.br
-Specifies the directory where to place the generated source files\&. The directory must already exist because \f3javac\fR does not create it\&. If a class is part of a package, then the compiler puts the source file in a subdirectory that reflects the package name and creates directories as needed\&.
-
-If you specify \f3-s /home/mysrc\fR and the class is called \f3com\&.mypackage\&.MyClass\fR, then the source file is put in \f3/home/mysrc/com/mypackage/MyClass\&.java\fR\&.
+.B \f[CB]\-\-help\f[R], \f[CB]\-help\f[R] or \f[CB]\-?\f[R]
+Prints a synopsis of the standard options.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\-extra\f[R] or \f[CB]\-X\f[R]
+Prints the help for extra options.
+.RS
+.RE
.TP
--source \fIrelease\fR
-.br
-Specifies the version of source code accepted\&. The following values for \f3release\fR are allowed:
-.RS
-.TP
-1\&.3
-The compiler does not support assertions, generics, or other language features introduced after Java SE 1\&.3\&.
-.TP
-1\&.4
-The compiler accepts code containing assertions, which were introduced in Java SE 1\&.4\&.
-.TP
-1\&.5
-The compiler accepts code containing generics and other language features introduced in Java SE 5\&.
-.TP
-5
-Synonym for 1\&.5\&.
-.TP
-1\&.6
-No language changes were introduced in Java SE 6\&. However, encoding errors in source files are now reported as errors instead of warnings as in earlier releases of Java Platform, Standard Edition\&.
-.TP
-6
-Synonym for 1\&.6\&.
-.TP
-1\&.7
-The compiler accepts code with features introduced in Java SE 7\&.
-.TP
-7
-Synonym for 1\&.7\&.
-.TP
-1\&.8
-This is the default value\&. The compiler accepts code with features introduced in Java SE 8\&.
-.TP
-8
-Synonym for 1\&.8\&.
-.RE
-
+.B \f[CB]\-implicit:\f[R][\f[CB]none\f[R], \f[CB]class\f[R]]
+Specifies whether or not to generate class files for implicitly
+referenced files:
+.RS
+.IP \[bu] 2
+\f[CB]\-implicit:class\f[R] \-\-\- Automatically generates class files.
+.IP \[bu] 2
+\f[CB]\-implicit:none\f[R] \-\-\- Suppresses class file generation.
+.PP
+If this option isn\[aq]t specified, then the default automatically
+generates class files.
+In this case, the compiler issues a warning if any class files are
+generated when also doing annotation processing.
+The warning isn\[aq]t issued when the \f[CB]\-implicit\f[R] option is
+explicitly set.
+See \f[B]Searching for Types\f[R].
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+Passes \f[I]option\f[R] to the runtime system, where \f[I]option\f[R] is
+one of the Java options described on \f[B]java\f[R] command.
+For example, \f[CB]\-J\-Xms48m\f[R] sets the startup memory to 48 MB.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+The \f[CB]CLASSPATH\f[R] environment variable, \f[CB]\-classpath\f[R]
+option, \f[CB]\-bootclasspath\f[R] option, and \f[CB]\-extdirs\f[R] option
+don\[aq]t specify the classes used to run \f[CB]javac\f[R].
+Trying to customize the compiler implementation with these options and
+variables is risky and often doesn\[aq]t accomplish what you want.
+If you must customize the complier implementation, then use the
+\f[CB]\-J\f[R] option to pass options through to the underlying Java
+launcher.
+.RE
.TP
--sourcepath \fIsourcepath\fR
-.br
-Specifies the source code path to search for class or interface definitions\&. As with the user class path, source path entries are separated by colons (:) on Oracle Solaris and semicolons on Windows and can be directories, JAR archives, or ZIP archives\&. If packages are used, then the local path name within the directory or archive must reflect the package name\&.
-
-\fINote:\fR Classes found through the class path might be recompiled when their source files are also found\&. See Searching for Types\&.
+.B \f[CB]\-\-limit\-modules\f[R] \f[I]module\f[R]\f[CB],\f[R]\f[I]module\f[R]*
+Limits the universe of observable modules.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\f[R] \f[I]module\-name\f[R] or \f[CB]\-m\f[R] \f[I]module\-name\f[R]
+Compiles only the specified module and checks time stamps.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]path\f[R] or \f[CB]\-p\f[R] \f[I]path\f[R]
+Specifies where to find application modules.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-source\-path\f[R] \f[I]module\-source\-path\f[R]
+Specifies where to find input source files for multiple modules.
+.RS
+.RE
.TP
--verbose
-.br
-Uses verbose output, which includes information about each class loaded and each source file compiled\&.
+.B \f[CB]\-\-module\-version\f[R] \f[I]version\f[R]
+Specifies the version of modules that are being compiled.
+.RS
+.RE
.TP
--version
-.br
-Prints release information\&.
+.B \f[CB]\-nowarn\f[R]
+Disables warning messages.
+This option operates the same as the \f[CB]\-Xlint:none\f[R] option.
+.RS
+.RE
.TP
--werror
-.br
-Terminates compilation when warnings occur\&.
+.B \f[CB]\-parameters\f[R]
+Generates metadata for reflection on method parameters.
+Stores formal parameter names of constructors and methods in the
+generated class file so that the method
+\f[CB]java.lang.reflect.Executable.getParameters\f[R] from the Reflection
+API can retrieve them.
+.RS
+.RE
.TP
--X
-.br
-Displays information about nonstandard options and exits\&.
-.SS CROSS-COMPILATION\ OPTIONS
-By default, classes are compiled against the bootstrap and extension classes of the platform that \f3javac\fR shipped with\&. But \f3javac\fR also supports cross-compiling, where classes are compiled against a bootstrap and extension classes of a different Java platform implementation\&. It is important to use the \f3-bootclasspath\fR and \f3-extdirs\fR options when cross-compiling\&.
+.B \f[CB]\-proc:\f[R][\f[CB]none\f[R], \f[CB]only\f[R]]
+Controls whether annotation processing and compilation are done.
+\f[CB]\-proc:none\f[R] means that compilation takes place without
+annotation processing.
+\f[CB]\-proc:only\f[R] means that only annotation processing is done,
+without any subsequent compilation.
+.RS
+.RE
+.TP
+.B \f[CB]\-processor\f[R] \f[I]class1\f[R][\f[CB],\f[R]\f[I]class2\f[R]\f[CB],\f[R]\f[I]class3\f[R]...]
+Names of the annotation processors to run.
+This bypasses the default discovery process.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-processor\-module\-path\f[R] \f[I]path\f[R]
+Specifies the module path used for finding annotation processors.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-processor\-path\f[R] \f[I]path\f[R] or \f[CB]\-processorpath\f[R] \f[I]path\f[R]
+Specifies where to find annotation processors.
+If this option isn\[aq]t used, then the class path is searched for
+processors.
+.RS
+.RE
.TP
--target \fIversion\fR
-.br
-Generates class files that target a specified release of the virtual machine\&. Class files will run on the specified target and on later releases, but not on earlier releases of the JVM\&. Valid targets are 1\&.1, 1\&.2, 1\&.3, 1\&.4, 1\&.5 (also 5), 1\&.6 (also 6), 1\&.7 (also 7), and 1\&.8 (also 8)\&.
-
-The default for the \f3-target\fR option depends on the value of the \f3-source\fR option:
-.RS
-.TP 0.2i
-\(bu
-If the \f3-source\fR option is not specified, then the value of the \f3-target\fR option is 1\&.8
-.TP 0.2i
-\(bu
-If the \f3-source\fR option is 1\&.2, then the value of the \f3-target\fR option is 1\&.4
-.TP 0.2i
-\(bu
-If the \f3-source\fR option is 1\&.3, then the value of the \f3-target\fR option is 1\&.4
-.TP 0.2i
-\(bu
-If the \f3-source\fR option is 1\&.5, then the value of the \f3-target\fR option is 1\&.8
-.TP 0.2i
-\(bu
-If the \f3-source\fR option is 1\&.6, then the value of the \f3-target\fR is option 1\&.8
-.TP 0.2i
-\(bu
-If the \f3-source\fR option is 1\&.7, then the value of the \f3-target\fR is option 1\&.8
-.TP 0.2i
-\(bu
-For all other values of the \f3-source\fR option, the value of the \f3-target\fR option is the value of the \f3-source\fR option\&.
-.RE
-
+.B \f[CB]\-profile\f[R] \f[I]profile\f[R]
+Checks that the API used is available in the specified profile.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
.TP
--bootclasspath \fIbootclasspath\fR
-.br
-Cross-compiles against the specified set of boot classes\&. As with the user class path, boot class path entries are separated by colons (:) and can be directories, JAR archives, or ZIP archives\&.
-.SS COMPACT\ PROFILE\ OPTION
-Beginning with JDK 8, the \f3javac\fR compiler supports compact profiles\&. With compact profiles, applications that do not require the entire Java platform can be deployed and run with a smaller footprint\&. The compact profiles feature could be used to shorten the download time for applications from app stores\&. This feature makes for more compact deployment of Java applications that bundle the JRE\&. This feature is also useful in small devices\&.
+.B \f[CB]\-\-release\f[R] \f[I]release\f[R]
+Compiles source code according to the rules of the Java programming
+language for the specified Java SE release, generating class files
+suitable for that release.
+Additionally, compiles source code against the API of the specified Java
+SE release and the API supported by the corresponding JDK release.
+The supported values of \f[I]release\f[R] are the current Java SE release
+and a limited number of previous releases.
+The exact set of supported values is given in the command\-line help.
+.RS
.PP
-The supported profile values are \f3compact1\fR, \f3compact2\fR, and \f3compact3\fR\&. These are additive layers\&. Each higher-numbered compact profile contains all of the APIs in profiles with smaller number names\&.
+The API of a Java SE release consists of the \f[CB]java.*\f[R],
+\f[CB]javax.*\f[R], and \f[CB]org.*\f[R] packages that are exported by Java
+SE modules in the release.
+.PP
+The API supported by a JDK release consists of the \f[CB]com.*\f[R] and
+\f[CB]jdk.*\f[R] packages that are exported by JDK modules in the release,
+plus the \f[CB]javax.*\f[R] packages that are exported by standard, but
+non\-Java SE, modules in the release.
+.PP
+\f[B]Note:\f[R]
+.PP
+The \f[CB]\-\-add\-exports\f[R] option cannot be used to enlarge the set
+of packages exported by the Java SE and JDK API.
+.RE
.TP
--profile
-.br
-When using compact profiles, this option specifies the profile name when compiling\&. For example:
-.sp
-.nf
-\f3javac \-profile compact1 Hello\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-javac does not compile source code that uses any Java SE APIs that is not in the specified profile\&. Here is an example of the error message that results from attempting to compile such source code:
-.sp
-.nf
-\f3cd jdk1\&.8\&.0/bin\fP
-.fi
-.nf
-\f3\&./javac \-profile compact1 Paint\&.java\fP
-.fi
-.nf
-\f3Paint\&.java:5: error: Applet is not available in profile \&'compact1\&'\fP
-.fi
-.nf
-\f3import java\&.applet\&.Applet;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-In this example, you can correct the error by modifying the source to not use the \f3Applet\fR class\&. You could also correct the error by compiling without the -profile option\&. Then the compilation would be run against the full set of Java SE APIs\&. (None of the compact profiles include the \f3Applet\fR class\&.)
-
-An alternative way to compile with compact profiles is to use the \f3-bootclasspath\fR option to specify a path to an \f3rt\&.jar\fR file that specifies a profile\&'s image\&. Using the \f3-profile\fR option instead does not require a profile image to be present on the system at compile time\&. This is useful when cross-compiling\&.
-.SS NONSTANDARD\ OPTIONS
+.B \f[CB]\-s\f[R] \f[I]directory\f[R]
+Specifies the directory used to place the generated source files.
+If a class is part of a package, then the compiler puts the source file
+in a subdirectory that reflects the package name and creates directories
+as needed.
+For example:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] If you specify
+\f[CB]\-s\ /home/mysrc\f[R] and the class is called
+\f[CB]com.mypackage.MyClass\f[R], then the source file is put in
+\f[CB]/home/mysrc/com/mypackage/MyClass.java\f[R].
+.IP \[bu] 2
+\f[B]Windows:\f[R] If you specify \f[CB]\-s\ C:\\mysrc\f[R] and the class
+is called \f[CB]com.mypackage.MyClass\f[R], then the source file is put in
+\f[CB]C:\\mysrc\\com\\mypackage\\MyClass.java\f[R].
+.RE
+.TP
+.B \f[CB]\-\-source\f[R] \f[I]release\f[R] or \f[CB]\-source\f[R] \f[I]release\f[R]
+Compiles source code according to the rules of the Java programming
+language for the specified Java SE release.
+The supported values of \f[I]release\f[R] are the current Java SE release
+and a limited number of previous releases.
+The exact set of supported values is given in the command\-line help.
+.RS
+.PP
+If the option is not specified, the default is to compile source code
+according to the rules of the Java programming language for the current
+Java SE release.
+.RE
.TP
--Xbootclasspath/p:\fIpath\fR
-.br
-Adds a suffix to the bootstrap class path\&.
+.B \f[CB]\-\-source\-path\f[R] \f[I]path\f[R] or \f[CB]\-sourcepath\f[R] \f[I]path\f[R]
+Specifies where to find input source files.
+This is the source code path used to search for class or interface
+definitions.
+As with the user class path, source path entries are separated by colons
+(\f[CB]:\f[R]) on Oracle Solaris and semicolons (\f[CB];\f[R]) on Windows.
+They can be directories, JAR archives, or ZIP archives.
+If packages are used, then the local path name within the directory or
+archive must reflect the package name.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+Classes found through the class path might be recompiled when their
+source files are also found.
+See \f[B]Searching for Types\f[R].
+.RE
+.TP
+.B \f[CB]\-\-system\f[R] \f[I]jdk\f[R] | \f[CB]none\f[R]
+Overrides the location of system modules.
+.RS
+.RE
.TP
--Xbootclasspath/a:\fIpath\fR
-.br
-Adds a prefix to the bootstrap class path\&.
+.B \f[CB]\-\-target\f[R] \f[I]release\f[R] or \f[CB]\-target\f[R] \f[I]release\f[R]
+Generates \f[CB]class\f[R] files suitable for the specified Java SE
+release.
+The supported values of \f[I]release\f[R] are the current Java SE release
+and a limited number of previous releases.
+The exact set of supported values is given in the command\-line help.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+It is an error to specify a value for \f[I]release\f[R] that is lower
+than the the release for which the source code is being compiled.
+(See \f[CB]\-\-source\f[R]).
+.RE
+.TP
+.B \f[CB]\-\-upgrade\-module\-path\f[R] \f[I]path\f[R]
+Overrides the location of upgradeable modules.
+.RS
+.RE
+.TP
+.B \f[CB]\-verbose\f[R]
+Outputs messages about what the compiler is doing.
+Messages include information about each class loaded and each source
+file compiled.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-version\f[R] or \f[CB]\-version\f[R]
+Prints version information.
+.RS
+.RE
.TP
--Xbootclasspath/:\fIpath\fR
-.br
-Overrides the location of the bootstrap class files\&.
+.B \f[CB]\-Werror\f[R]
+Terminates compilation when warnings occur.
+.RS
+.RE
+.SH CROSS\-COMPILATION OPTIONS FOR JAVAC
+.PP
+By default, for releases prior to JDK 9, classes were compiled against
+the bootstrap classes of the platform that shipped with
+the\f[CB]javac\f[R] command.
+But \f[CB]javac\f[R] also supports cross\-compiling, in which classes are
+compiled against bootstrap classes of a different Java platform
+implementation.
+It\[aq]s important to use the \f[CB]\-bootclasspath\f[R] and
+\f[CB]\-extdirs\f[R] options when cross\-compiling.
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.SH EXTRA OPTIONS
+.TP
+.B \f[CB]\-\-add\-exports\f[R] \f[I]module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]other\-module\f[R](\f[CB],\f[R]\f[I]other\-module\f[R])*
+Specifies a package to be considered as exported from its defining
+module to additional modules or to all unnamed modules when the value of
+\f[I]other\-module\f[R] is \f[CB]ALL\-UNNAMED\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-add\-reads\f[R] \f[I]module\f[R]\f[CB]=\f[R]\f[I]other\-module\f[R](\f[CB],\f[R]\f[I]other\-module\f[R])*
+Specifies additional modules to be considered as required by a given
+module.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-default\-module\-for\-created\-files\f[R] \f[I]module\-name\f[R]
+Specifies the fallback target module for files created by annotation
+processors, if none is specified or inferred.
+.RS
+.RE
.TP
--Xdoclint:[-]\fIgroup\fR [\fI/access\fR]
-.br
-Enables or disables specific groups of checks, where \fIgroup\fR is one of the following values: \f3accessibility\fR, \f3syntax\fR, \f3reference\fR, \f3html\fR or \f3missing\fR\&. For more information about these groups of checks see the \f3-Xdoclint\fR option of the \f3javadoc\fR command\&. The \f3-Xdoclint\fR option is disabled by default in the \f3javac\fR command\&.
-
-The variable \fIaccess\fR specifies the minimum visibility level of classes and members that the \f3-Xdoclint\fR option checks\&. It can have one of the following values (in order of most to least visible) : \f3public\fR, \f3protected\fR, \f3package\fR and \f3private\fR\&. For example, the following option checks classes and members (with all groups of checks) that have the access level protected and higher (which includes protected, package and public):
-.sp
-.nf
-\f3\-Xdoclint:all/protected\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The following option enables all groups of checks for all access levels, except it will not check for HTML errors for classes and members that have access level package and higher (which includes package and public):
-.sp
-.nf
-\f3\-Xdoclint:all,\-html/package\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+.B \f[CB]\-Djava.endorsed.dirs=\f[R]\f[I]dirs\f[R]
+Overrides the location of the endorsed standards path.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
+.TP
+.B \f[CB]\-Djava.ext.dirs=\f[R]\f[I]dirs\f[R]
+Overrides the location of installed extensions.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
.TP
--Xdoclint:none
-.br
-Disables all groups of checks\&.
+.B \f[CB]\-\-doclint\-format\f[R] [\f[CB]html4\f[R]|\f[CB]html5\f[R]]
+Specifies the format for documentation comments.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-patch\-module\f[R] \f[I]module\f[R]\f[CB]=\f[R]\f[I]file\f[R](\f[CB]:\f[R]\f[I]file\f[R])*
+Overrides or augments a module with classes and resources in JAR files
+or directories.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xbootclasspath:\f[R]\f[I]path\f[R]
+Overrides the location of the bootstrap class files.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
.TP
--Xdoclint:all[\fI/access\fR]
-.br
-Enables all groups of checks\&.
-.TP
--Xlint
-.br
-\fI\fREnables all recommended warnings\&. In this release, enabling all available warnings is recommended\&.
+.B \f[CB]\-Xbootclasspath/a:\f[R]\f[I]path\f[R]
+Adds a suffix to the bootstrap class path.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
.TP
--Xlint:all
-.br
-\fI\fREnables all recommended warnings\&. In this release, enabling all available warnings is recommended\&.
+.B \f[CB]\-Xbootclasspath/p:\f[R]\f[I]path\f[R]
+Adds a prefix to the bootstrap class path.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This can only be used when compiling for versions prior to JDK 9.
+As applicable, see the descriptions in\ \f[CB]\-\-release\f[R],
+\f[CB]\-source\f[R], or \f[CB]\-target\f[R]\ for details.
+.RE
.TP
--Xlint:none
-.br
-Disables all warnings\&.
+.B \f[CB]\-Xdiags:\f[R][\f[CB]compact\f[R], \f[CB]verbose\f[R]]
+Selects a diagnostic mode.
+.RS
+.RE
.TP
--Xlint:\fIname\fR
-.br
-Disables warning name\&. See Enable or Disable Warnings with the -Xlint Option for a list of warnings you can disable with this option\&.
+.B \f[CB]\-Xdoclint\f[R]
+Enables recommended checks for problems in \f[CB]javadoc\f[R] comments
+.RS
+.RE
.TP
--Xlint:\fI-name\fR
-.br
-Disables warning name\&. See Enable or Disable Warnings with the -Xlint Option with the \f3-Xlint\fR option to get a list of warnings that you can disable with this option\&.
-.TP
--Xmaxerrs \fInumber\fR
-.br
-Sets the maximum number of errors to print\&.
+.B \f[CB]\-Xdoclint:\f[R](\f[CB]all\f[R]|\f[CB]none\f[R]|[\f[CB]\-\f[R]]\f[I]group\f[R])[\f[CB]/\f[R]\f[I]access\f[R]]
+Enables or disables specific groups of checks,
+.RS
+.PP
+\f[I]group\f[R] can have one of the following values:
+.IP \[bu] 2
+\f[CB]accessibility\f[R]
+.IP \[bu] 2
+\f[CB]html\f[R]
+.IP \[bu] 2
+\f[CB]missing\f[R]
+.IP \[bu] 2
+\f[CB]reference\f[R]
+.IP \[bu] 2
+\f[CB]syntax\f[R]
+.PP
+The variable \f[I]access\f[R] specifies the minimum visibility level of
+classes and members that the \f[CB]\-Xdoclint\f[R] option checks.
+It can have one of the following values (in order of most to least
+visible):
+.IP \[bu] 2
+\f[CB]public\f[R]
+.IP \[bu] 2
+\f[CB]protected\f[R]
+.IP \[bu] 2
+\f[CB]package\f[R]
+.IP \[bu] 2
+\f[CB]private\f[R]
+.PP
+The default \f[I]access\f[R] level is \f[CB]private\f[R].
+.PP
+For more information about these groups of checks, see the
+\f[CB]\-Xdoclint\f[R] option of the \f[CB]javadoc\f[R] command.
+The \f[CB]\-Xdoclint\f[R] option is disabled by default in the
+\f[CB]javac\f[R] command.
+.PP
+For example, the following option checks classes and members (with all
+groups of checks) that have the access level of protected and higher
+(which includes protected and public):
+.RS
+.PP
+\f[CB]\-Xdoclint:all/protected\f[R]
+.RE
+.PP
+The following option enables all groups of checks for all access levels,
+except it won\[aq]t check for HTML errors for classes and members that
+have the access level of package and higher (which includes package,
+protected and public):
+.RS
+.PP
+\f[CB]\-Xdoclint:all,\-html/package\f[R]
+.RE
+.RE
.TP
--Xmaxwarns \fInumber\fR
-.br
-Sets the maximum number of warnings to print\&.
+.B \f[CB]\-Xdoclint/package:\f[R][\f[CB]\-\f[R]]\f[I]packages\f[R](\f[CB],\f[R][\f[CB]\-\f[R]]\f[I]package\f[R])*
+Enables or disables checks in specific packages.
+Each \f[I]package\f[R] is either the qualified name of a package or a
+package name prefix followed by \f[CB]\&.*\f[R], which expands to all
+sub\-packages of the given package.
+Each \f[I]package\f[R] can be prefixed with a hyphen (\f[CB]\-\f[R]) to
+disable checks for a specified package or packages.
+.RS
+.RE
.TP
--Xstdout \fIfilename\fR
-.br
-Sends compiler messages to the named file\&. By default, compiler messages go to \f3System\&.err\fR\&.
-.TP
--Xprefer:[\fInewer,source\fR]
-.br
-Specifies which file to read when both a source file and class file are found for a type\&. (See Searching for Types)\&. If the \f3-Xprefer:newer\fR option is used, then it reads the newer of the source or class file for a type (default)\&. If the \f3-Xprefer:source\fR option is used, then it reads the source file\&. Use -\f3Xprefer:source\fR when you want to be sure that any annotation processors can access annotations declared with a retention policy of \f3SOURCE\fR\&.
+.B \f[CB]\-Xlint\f[R]
+Enables all recommended warnings.
+In this release, enabling all available warnings is recommended.
+.RS
+.RE
.TP
--Xpkginfo:[\fIalways\fR,\fIlegacy\fR,\fInonempty\fR]
-.br
-Control whether javac generates \f3package-info\&.class\fR files from package-info\&.java files\&. Possible mode arguments for this option include the following\&.
-.RS
-.TP
-always
-Always generate a \f3package-info\&.class\fR file for every \f3package-info\&.java\fR file\&. This option may be useful if you use a build system such as Ant, which checks that each \f3\&.java\fR file has a corresponding \f3\&.class\fR file\&.
-.TP
-legacy
-Generate a \f3package-info\&.class\fR file only if package-info\&.java contains annotations\&. Don\&'t generate a \f3package-info\&.class\fR file if package-info\&.java only contains comments\&.
-
-\fINote:\fR A \f3package-info\&.class\fR file might be generated but be empty if all the annotations in the package-info\&.java file have \f3RetentionPolicy\&.SOURCE\fR\&.
-.TP
-nonempty
-Generate a \f3package-info\&.class\fR file only if package-info\&.java contains annotations with \f3RetentionPolicy\&.CLASS\fR or \f3RetentionPolicy\&.RUNTIME\fR\&.
-.RE
-
+.B \f[CB]\-Xlint:\f[R][\f[CB]\-\f[R]]\f[I]key\f[R](\f[CB],\f[R][\f[CB]\-\f[R]]\f[I]key\f[R])*
+Supplies warnings to enable or disable, separated by comma.
+Precede a key by a hyphen (\f[CB]\-\f[R]) to disable the specified
+warning.
+.RS
+.PP
+Supported values for \f[I]key\f[R] are:
+.IP \[bu] 2
+\f[CB]all\f[R]: Enables all warnings.
+.IP \[bu] 2
+\f[CB]auxiliaryclass\f[R]: Warns about an auxiliary class that\[aq]s
+hidden in a source file, and is used from other files.
+.IP \[bu] 2
+\f[CB]cast\f[R]: Warns about the use of unnecessary casts.
+.IP \[bu] 2
+\f[CB]classfile\f[R]: Warns about the issues related to classfile
+contents.
+.IP \[bu] 2
+\f[CB]deprecation\f[R]: Warns about the use of deprecated items.
+.IP \[bu] 2
+\f[CB]dep\-ann\f[R]: Warns about the items marked as deprecated in
+\f[CB]javadoc\f[R] but without the \f[CB]\@Deprecated\f[R] annotation.
+.IP \[bu] 2
+\f[CB]divzero\f[R]: Warns about the division by the constant integer 0.
+.IP \[bu] 2
+\f[CB]empty\f[R]: Warns about an empty statement after \f[CB]if\f[R].
+.IP \[bu] 2
+\f[CB]exports\f[R]: Warns about the issues regarding module exports.
+.IP \[bu] 2
+\f[CB]fallthrough\f[R]: Warns about the falling through from one case of a
+switch statement to the next.
+.IP \[bu] 2
+\f[CB]finally\f[R]: Warns about \f[CB]finally\f[R] clauses that don\[aq]t
+terminate normally.
+.IP \[bu] 2
+\f[CB]module\f[R]: Warns about the module system\-related issues.
+.IP \[bu] 2
+\f[CB]opens\f[R]: Warns about the issues related to module opens.
+.IP \[bu] 2
+\f[CB]options\f[R]: Warns about the issues relating to use of command line
+options.
+.IP \[bu] 2
+\f[CB]overloads\f[R]: Warns about the issues related to method overloads.
+.IP \[bu] 2
+\f[CB]overrides\f[R]: Warns about the issues related to method overrides.
+.IP \[bu] 2
+\f[CB]path\f[R]: Warns about the invalid path elements on the command l
+ine.
+.IP \[bu] 2
+\f[CB]processing\f[R]: Warns about the issues related to annotation
+processing.
+.IP \[bu] 2
+\f[CB]rawtypes\f[R]: Warns about the use of raw types.
+.IP \[bu] 2
+\f[CB]removal\f[R]: Warns about the use of an API that has been marked for
+removal.
+.IP \[bu] 2
+\f[CB]requires\-automatic\f[R]: Warns developers about the use of
+automatic modules in requires clauses.
+.IP \[bu] 2
+\f[CB]requires\-transitive\-automatic\f[R]: Warns about automatic modules
+in requires transitive.
+.IP \[bu] 2
+\f[CB]serial\f[R]: Warns about the serializable classes that don\[aq]t
+provide a serial version ID.
+Also warns about access to non\-public members from a serializable
+element.
+.IP \[bu] 2
+\f[CB]static\f[R]: Warns about the accessing a static member using an
+instance.
+.IP \[bu] 2
+\f[CB]try\f[R]: Warns about the issues relating to the use of try blocks (
+that is, try\-with\-resources).
+.IP \[bu] 2
+\f[CB]unchecked\f[R]: Warns about the unchecked operations.
+.IP \[bu] 2
+\f[CB]varargs\f[R]: Warns about the potentially unsafe \f[CB]vararg\f[R]
+methods.
+.IP \[bu] 2
+\f[CB]none\f[R]: Disables all warnings.
+.PP
+See \f[B]Examples of Using \-Xlint keys\f[R].
+.RE
+.TP
+.B \f[CB]\-Xmaxerrs\f[R] \f[I]number\f[R]
+Sets the maximum number of errors to print.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xmaxwarns\f[R] \f[I]number\f[R]
+Sets the maximum number of warnings to print.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xpkginfo:\f[R][\f[CB]always\f[R], \f[CB]legacy\f[R], \f[CB]nonempty\f[R]]
+Specifies when and how the \f[CB]javac\f[R] command generates
+\f[CB]package\-info.class\f[R] files from \f[CB]package\-info.java\f[R]
+files using one of the following options:
+.RS
+.TP
+.B \f[CB]always\f[R]
+Generates a \f[CB]package\-info.class\f[R] file for every
+\f[CB]package\-info.java\f[R] file.
+This option may be useful if you use a build system such as Ant, which
+checks that each \f[CB]\&.java\f[R] file has a corresponding
+\f[CB]\&.class\f[R] file.
+.RS
+.RE
+.TP
+.B \f[CB]legacy\f[R]
+Generates a \f[CB]package\-info.class\f[R] file only if
+\f[CB]package\-info.java\f[R] contains annotations.
+This option doesn\[aq]t generate a \f[CB]package\-info.class\f[R] file if
+\f[CB]package\-info.java\f[R] contains only comments.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+A \f[CB]package\-info.class\f[R] file might be generated but be empty if
+all the annotations in the \f[CB]package\-info.java\f[R] file have
+\f[CB]RetentionPolicy.SOURCE\f[R].
+.RE
+.TP
+.B \f[CB]nonempty\f[R]
+Generates a \f[CB]package\-info.class\f[R] file only if
+\f[CB]package\-info.java\f[R] contains annotations with
+\f[CB]RetentionPolicy.CLASS\f[R] or \f[CB]RetentionPolicy.RUNTIME\f[R].
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]\-Xplugin:\f[R]\f[I]name\f[R] \f[I]args\f[R]
+Specifies the name and optional arguments for a plug\-in to be run.
+.RS
+.RE
.TP
--Xprint
-.br
-Prints a textual representation of specified types for debugging purposes\&. Perform neither annotation processing nor compilation\&. The format of the output could change\&.
+.B \f[CB]\-Xprefer:\f[R][\f[CB]source\f[R], \f[CB]newer\f[R]]
+Specifies which file to read when both a source file and class file are
+found for an implicitly compiled class using one of the following
+options.
+See \f[B]Searching for Types\f[R].
+.RS
+.IP \[bu] 2
+\f[CB]\-Xprefer:newer\f[R]: Reads the newer of the source or class files
+for a type (default).
+.IP \[bu] 2
+\f[CB]\-Xprefer:source\f[R] : Reads the source file.
+Use \f[CB]\-Xprefer:source\f[R] when you want to be sure that any
+annotation processors can access annotations declared with a retention
+policy of \f[CB]SOURCE\f[R].
+.RE
+.TP
+.B \f[CB]\-Xprint\f[R]
+Prints a textual representation of specified types for debugging
+purposes.
+This doesn\[aq]t perform annotation processing or compilation.
+The format of the output could change.
+.RS
+.RE
+.TP
+.B \f[CB]\-XprintProcessorInfo\f[R]
+Prints information about which annotations a processor is asked to
+process.
+.RS
+.RE
.TP
--XprintProcessorInfo
-.br
-Prints information about which annotations a processor is asked to process\&.
+.B \f[CB]\-XprintRounds\f[R]
+Prints information about initial and subsequent annotation processing
+rounds.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xstdout\f[R] \f[I]filename\f[R]
+Sends compiler messages to the named file.
+By default, compiler messages go to \f[CB]System.err\f[R].
+.RS
+.RE
+.SH JAVAC COMMAND\-LINE ARGUMENT FILES
+.PP
+An argument file can include \f[CB]javac\f[R] options and source file
+names in any combination.
+The arguments within a file can be separated by spaces or new line
+characters.
+If a file name contains embedded spaces, then put the whole file name in
+double quotation marks.
+.PP
+File names within an argument file are relative to the current
+directory, not to the location of the argument file.
+Wildcards (*) aren\[aq]t allowed in these lists (such as for specifying
+\f[CB]*.java\f[R]).
+Use of the at sign (\f[CB]\@\f[R]) to recursively interpret files
+isn\[aq]t supported.
+The \f[CB]\-J\f[R] options aren\[aq]t supported because they\[aq]re passed
+to the launcher, which doesn\[aq]t support argument files.
+.PP
+When executing the \f[CB]javac\f[R] command, pass in the path and name of
+each argument file with the at sign (\f[CB]\@\f[R]) leading character.
+When the \f[CB]javac\f[R] command encounters an argument beginning with
+the at sign (\f[CB]\@\f[R]), it expands the contents of that file into the
+argument list.
+.SH EXAMPLES OF USING JAVAC \@FILENAME
.TP
--XprintRounds
-.br
-Prints information about initial and subsequent annotation processing rounds\&.
-.SH ENABLE\ OR\ DISABLE\ WARNINGS\ WITH\ THE\ -XLINT\ OPTION
-Enable warning \fIname\fR with the \f3-Xlint:name\fR option, where \f3name\fR is one of the following warning names\&. Note that you can disable a warning with the \f3-Xlint:-name:\fR option\&.
-.TP
-cast
+.B Single Argument File
+You could use a single argument file named \f[CB]argfile\f[R] to hold all
+\f[CB]javac\f[R] arguments:
+.RS
+.RS
+.PP
+\f[CB]javac\ \@argfile\f[R]
+.RE
+.PP
+This argument file could contain the contents of both files shown in the
+following \f[B]Two Argument Files\f[R] example.
+.RE
+.TP
+.B Two Argument Files
+You can create two argument files: one for the \f[CB]javac\f[R] options
+and the other for the source file names.
+Note that the following lists have no line\-continuation characters.
+.RS
+.PP
+Create a file named \f[CB]options\f[R] that contains the following:
+.PP
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.IP
+.nf
+\f[CB]
+\-d\ classes
+\-g
+\-sourcepath\ /java/pubs/ws/1.3/src/share/classes
+\f[R]
+.fi
+.PP
+\f[B]Windows:\f[R]
+.IP
+.nf
+\f[CB]
+\-d\ classes
+\-g
+\-sourcepath\ C:\\java\\pubs\\ws\\1.3\\src\\share\\classes
+\f[R]
+.fi
+.PP
+Create a file named \f[CB]classes\f[R] that contains the following:
+.IP
+.nf
+\f[CB]
+MyClass1.java
+MyClass2.java
+MyClass3.java
+\f[R]
+.fi
+.PP
+Then, run the \f[CB]javac\f[R] command as follows:
+.RS
+.PP
+\f[CB]javac\ \@options\ \@classes\f[R]
+.RE
+.RE
+.TP
+.B Argument Files with Paths
+The argument files can have paths, but any file names inside the files
+are relative to the current working directory (not \f[CB]path1\f[R] or
+\f[CB]path2\f[R]):
+.RS
+.RS
+.PP
+\f[CB]javac\ \@path1/options\ \@path2/classes\f[R]
+.RE
+.RE
+.SH EXAMPLES OF USING \-XLINT KEYS
+.TP
+.B \f[CB]cast\f[R]
Warns about unnecessary and redundant casts, for example:
-.sp
-.nf
-\f3String s = (String) "Hello!"\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-classfile
-Warns about issues related to class file contents\&.
-.TP
-deprecation
-Warns about the use of deprecated items, for example:
-.sp
-.nf
-\f3java\&.util\&.Date myDate = new java\&.util\&.Date();\fP
-.fi
-.nf
-\f3int currentDay = myDate\&.getDay();\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The method \f3java\&.util\&.Date\&.getDay\fR has been deprecated since JDK 1\&.1
-.TP
-dep-ann
-Warns about items that are documented with an \f3@deprecated\fR Javadoc comment, but do not have a \f3@Deprecated\fR annotation, for example:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * @deprecated As of Java SE 7, replaced by {@link #newMethod()}\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3public static void deprecatedMethood() { }\fP
-.fi
-.nf
-\f3public static void newMethod() { }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-divzero
+.RS
+.RS
+.PP
+\f[CB]String\ s\ =\ (String)\ "Hello!"\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]classfile\f[R]
+Warns about issues related to class file contents.
+.RS
+.RE
+.TP
+.B \f[CB]deprecation\f[R]
+Warns about the use of deprecated items.
+For example:
+.RS
+.IP
+.nf
+\f[CB]
+java.util.Date\ myDate\ =\ new\ java.util.Date();
+int\ currentDay\ =\ myDate.getDay();
+\f[R]
+.fi
+.PP
+The method \f[CB]java.util.Date.getDay\f[R] has been deprecated since JDK
+1.1.
+.RE
+.TP
+.B \f[CB]dep\-ann\f[R]
+Warns about items that are documented with the \f[CB]\@deprecated\f[R]
+Javadoc comment, but don\[aq]t have the \f[CB]\@Deprecated\f[R]
+annotation, for example:
+.RS
+.IP
+.nf
+\f[CB]
+/**
+\ \ *\ \@deprecated\ As\ of\ Java\ SE\ 7,\ replaced\ by\ {\@link\ #newMethod()}
+\ \ */
+public\ static\ void\ deprecatedMethod()\ {\ }
+public\ static\ void\ newMethod()\ {\ }
+\f[R]
+.fi
+.RE
+.TP
+.B \f[CB]divzero\f[R]
Warns about division by the constant integer 0, for example:
-.sp
-.nf
-\f3int divideByZero = 42 / 0;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-empty
-Warns about empty statements after \f3if\fRstatements, for example:
-.sp
-.nf
-\f3class E {\fP
-.fi
-.nf
-\f3 void m() {\fP
-.fi
-.nf
-\f3 if (true) ;\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-fallthrough
-Checks the switch blocks for fall-through cases and provides a warning message for any that are found\&. Fall-through cases are cases in a switch block, other than the last case in the block, whose code does not include a break statement, allowing code execution to fall through from that case to the next case\&. For example, the code following the case 1 label in this switch block does not end with a break statement:
-.sp
-.nf
-\f3switch (x) {\fP
-.fi
-.nf
-\f3case 1:\fP
-.fi
-.nf
-\f3 System\&.out\&.println("1");\fP
-.fi
-.nf
-\f3 // No break statement here\&.\fP
-.fi
-.nf
-\f3case 2:\fP
-.fi
-.nf
-\f3 System\&.out\&.println("2");\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-If the \f3-Xlint:fallthrough\fR option was used when compiling this code, then the compiler emits a warning about possible fall-through into case, with the line number of the case in question\&.
-.TP
-finally
-Warns about \f3finally\fR clauses that cannot complete normally, for example:
-.sp
-.nf
-\f3public static int m() {\fP
-.fi
-.nf
-\f3 try {\fP
-.fi
-.nf
-\f3 throw new NullPointerException();\fP
-.fi
-.nf
-\f3 } catch (NullPointerException(); {\fP
-.fi
-.nf
-\f3 System\&.err\&.println("Caught NullPointerException\&.");\fP
-.fi
-.nf
-\f3 return 1;\fP
-.fi
-.nf
-\f3 } finally {\fP
-.fi
-.nf
-\f3 return 0;\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The compiler generates a warning for the \f3finally\fR block in this example\&. When the \f3int\fR method is called, it returns a value of 0\&. A \f3finally\fR block executes when the \f3try\fR block exits\&. In this example, when control is transferred to the \f3catch\fR block, the \f3int\fR method exits\&. However, the \f3finally\fR block must execute, so it is executed, even though control was transferred outside the method\&.
-.TP
-options
-Warns about issues that related to the use of command-line options\&. See Cross-Compilation Options\&.
-.TP
-overrides
-Warns about issues regarding method overrides\&. For example, consider the following two classes:
-.sp
-.nf
-\f3public class ClassWithVarargsMethod {\fP
-.fi
-.nf
-\f3 void varargsMethod(String\&.\&.\&. s) { }\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3public class ClassWithOverridingMethod extends ClassWithVarargsMethod {\fP
-.fi
-.nf
-\f3 @Override\fP
-.fi
-.nf
-\f3 void varargsMethod(String[] s) { }\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The compiler generates a warning similar to the following:\&.
-.sp
-.nf
-\f3warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod \fP
-.fi
-.nf
-\f3overrides varargsMethod(String\&.\&.\&.) in ClassWithVarargsMethod; overriding\fP
-.fi
-.nf
-\f3method is missing \&'\&.\&.\&.\&'\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-When the compiler encounters a \f3varargs\fR method, it translates the \f3varargs\fR formal parameter into an array\&. In the method \f3ClassWithVarargsMethod\&.varargsMethod\fR, the compiler translates the \f3varargs\fR formal parameter \f3String\&.\&.\&. s\fR to the formal parameter \f3String[] s\fR, an array, which matches the formal parameter of the method \f3ClassWithOverridingMethod\&.varargsMethod\fR\&. Consequently, this example compiles\&.
-.TP
-path
-Warns about invalid path elements and nonexistent path directories on the command line (with regard to the class path, the source path, and other paths)\&. Such warnings cannot be suppressed with the \f3@SuppressWarnings\fR annotation, for example:
-.sp
-.nf
-\f3javac \-Xlint:path \-classpath /nonexistentpath Example\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
+.RS
+.RS
+.PP
+\f[CB]int\ divideByZero\ =\ 42\ /\ 0;\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]empty\f[R]
+Warns about empty statements after \f[CB]if\f[R]statements, for example:
+.RS
+.IP
+.nf
+\f[CB]
+class\ E\ {
+\ \ \ \ void\ m()\ {
+\ \ \ \ \ \ \ \ \ if\ (true)\ ;
+\ \ \ \ }
+}
+\f[R]
+.fi
+.RE
+.TP
+.B \f[CB]fallthrough\f[R]
+Checks the switch blocks for fall\-through cases and provides a warning
+message for any that are found.
+Fall\-through cases are cases in a switch block, other than the last
+case in the block, whose code doesn\[aq]t include a break statement,
+allowing code execution to fall through from that case to the next case.
+For example, the code following the case 1 label in this switch block
+doesn\[aq]t end with a break statement:
+.RS
+.IP
+.nf
+\f[CB]
+switch\ (x)\ {
+case\ 1:
+\ \ System.out.println("1");
+\ \ //\ No\ break\ statement\ here.
+case\ 2:
+\ \ System.out.println("2");
+}
+\f[R]
+.fi
+.PP
+If the \f[CB]\-Xlint:fallthrough\f[R] option was used when compiling this
+code, then the compiler emits a warning about possible fall\-through
+into case, with the line number of the case in question.
+.RE
+.TP
+.B \f[CB]finally\f[R]
+Warns about \f[CB]finally\f[R] clauses that can\[aq]t be completed
+normally, for example:
+.RS
+.IP
+.nf
+\f[CB]
+public\ static\ int\ m()\ {
+\ \ try\ {
+\ \ \ \ \ throw\ new\ NullPointerException();
+\ \ }\ \ catch\ (NullPointerException();\ {
+\ \ \ \ \ System.err.println("Caught\ NullPointerException.");
+\ \ \ \ \ return\ 1;
+\ \ \ }\ finally\ {
+\ \ \ \ \ return\ 0;
+\ \ \ }
+\ \ }
+\f[R]
+.fi
+.PP
+The compiler generates a warning for the \f[CB]finally\f[R] block in this
+example.
+When the \f[CB]int\f[R] method is called, it returns a value of 0.
+A \f[CB]finally\f[R] block executes when the \f[CB]try\f[R] block exits.
+In this example, when control is transferred to the \f[CB]catch\f[R]
+block, the \f[CB]int\f[R] method exits.
+However, the \f[CB]finally\f[R] block must execute, so it\[aq]s executed,
+even though control was transferred outside the method.
+.RE
+.TP
+.B \f[CB]options\f[R]
+Warns about issues that related to the use of command\-line options.
+See \f[B]Cross\-Compilation Options for javac\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]overrides\f[R]
+Warns about issues related to method overrides.
+For example, consider the following two classes:
+.RS
+.IP
+.nf
+\f[CB]
+public\ class\ ClassWithVarargsMethod\ {
+\ \ void\ varargsMethod(String...\ s)\ {\ }
+}
-.TP
-processing
-Warn about issues regarding annotation processing\&. The compiler generates this warning when you have a class that has an annotation, and you use an annotation processor that cannot handle that type of exception\&. For example, the following is a simple annotation processor:
-
-\fISource file AnnocProc\&.java\fR:
-.sp
-.nf
-\f3import java\&.util\&.*;\fP
-.fi
-.nf
-\f3import javax\&.annotation\&.processing\&.*;\fP
-.fi
-.nf
-\f3import javax\&.lang\&.model\&.*;\fP
-.fi
-.nf
-\f3import\&.javaz\&.lang\&.model\&.element\&.*;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3@SupportedAnnotationTypes("NotAnno")\fP
-.fi
-.nf
-\f3public class AnnoProc extends AbstractProcessor {\fP
-.fi
-.nf
-\f3 public boolean process(Set<? extends TypeElement> elems, RoundEnvironment renv){\fP
-.fi
-.nf
-\f3 return true;\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3 public SourceVersion getSupportedSourceVersion() {\fP
-.fi
-.nf
-\f3 return SourceVersion\&.latest();\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+public\ class\ ClassWithOverridingMethod\ extends\ ClassWithVarargsMethod\ {
+\ \ \ \@Override
+\ \ \ void\ varargsMethod(String[]\ s)\ {\ }
+}
+\f[R]
+.fi
+.PP
+The compiler generates a warning similar to the following:.
+.IP
+.nf
+\f[CB]
+warning:\ [override]\ varargsMethod(String[])\ in\ ClassWithOverridingMethod
+overrides\ varargsMethod(String...)\ in\ ClassWithVarargsMethod;\ overriding
+method\ is\ missing\ \[aq]...\[aq]
+\f[R]
+.fi
+.PP
+When the compiler encounters a \f[CB]varargs\f[R] method, it translates
+the \f[CB]varargs\f[R] formal parameter into an array.
+In the method \f[CB]ClassWithVarargsMethod.varargsMethod\f[R], the
+compiler translates the \f[CB]varargs\f[R] formal parameter
+\f[CB]String...\ s\f[R] to the formal parameter \f[CB]String[]\ s\f[R], an
+array that matches the formal parameter of the method
+\f[CB]ClassWithOverridingMethod.varargsMethod\f[R].
+Consequently, this example compiles.
+.RE
+.TP
+.B \f[CB]path\f[R]
+Warns about invalid path elements and nonexistent path directories on
+the command line (with regard to the class path, the source path, and
+other paths).
+Such warnings can\[aq]t be suppressed with the
+\f[CB]\@SuppressWarnings\f[R] annotation.
+For example:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+\f[CB]javac\ \-Xlint:path\ \-classpath\ /nonexistentpath\ Example.java\f[R]
+.IP \[bu] 2
+\f[B]Windows:\f[R]
+\f[CB]javac\ \-Xlint:path\ \-classpath\ C:\\nonexistentpath\ Example.java\f[R]
+.RE
+.TP
+.B \f[CB]processing\f[R]
+Warns about issues related to annotation processing.
+The compiler generates this warning when you have a class that has an
+annotation, and you use an annotation processor that can\[aq]t handle
+that type of exception.
+For example, the following is a simple annotation processor:
+.RS
+.PP
+\f[B]Source file AnnocProc.java\f[R]:
+.IP
+.nf
+\f[CB]
+import\ java.util.*;
+import\ javax.annotation.processing.*;
+import\ javax.lang.model.*;
+import\ javaz.lang.model.element.*;
-\fISource file AnnosWithoutProcessors\&.java\fR:
-.sp
-.nf
-\f3@interface Anno { }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3@Anno\fP
-.fi
-.nf
-\f3class AnnosWithoutProcessors { }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The following commands compile the annotation processor \f3AnnoProc\fR, then run this annotation processor against the source file \f3AnnosWithoutProcessors\&.java\fR:
-.sp
-.nf
-\f3javac AnnoProc\&.java\fP
-.fi
-.nf
-\f3javac \-cp \&. \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+\@SupportedAnnotationTypes("NotAnno")
+public\ class\ AnnoProc\ extends\ AbstractProcessor\ {
+\ \ public\ boolean\ process(Set<?\ extends\ TypeElement>\ elems,\ RoundEnvironment\ renv){
+\ \ \ \ \ return\ true;
+\ \ }
-When the compiler runs the annotation processor against the source file \f3AnnosWithoutProcessors\&.java\fR, it generates the following warning:
-.sp
-.nf
-\f3warning: [processing] No processor claimed any of these annotations: Anno\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-To resolve this issue, you can rename the annotation defined and used in the class \f3AnnosWithoutProcessors\fR from \f3Anno\fR to \f3NotAnno\fR\&.
-.TP
-rawtypes
-Warns about unchecked operations on raw types\&. The following statement generates a \f3rawtypes\fR warning:
-.sp
-.nf
-\f3void countElements(List l) { \&.\&.\&. }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The following example does not generate a \f3rawtypes\fR warning
-.sp
-.nf
-\f3void countElements(List<?> l) { \&.\&.\&. }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+\ \ public\ SourceVersion\ getSupportedSourceVersion()\ {
+\ \ \ \ \ return\ SourceVersion.latest();
+\ \ \ }
+}
+\f[R]
+.fi
+.PP
+\f[B]Source file AnnosWithoutProcessors.java\f[R]:
+.IP
+.nf
+\f[CB]
+\@interface\ Anno\ {\ }
-\f3List\fR is a raw type\&. However, \f3List<?>\fR is an unbounded wildcard parameterized type\&. Because \f3List\fR is a parameterized interface, always specify its type argument\&. In this example, the \f3List\fR formal argument is specified with an unbounded wildcard (\f3?\fR) as its formal type parameter, which means that the \f3countElements\fR method can accept any instantiation of the \f3List\fR interface\&.
-.TP
-Serial
-Warns about missing \f3serialVersionUID\fR definitions on serializable classes, for example:
-.sp
-.nf
-\f3public class PersistentTime implements Serializable\fP
-.fi
-.nf
-\f3{\fP
-.fi
-.nf
-\f3 private Date time;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3 public PersistentTime() {\fP
-.fi
-.nf
-\f3 time = Calendar\&.getInstance()\&.getTime();\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3 public Date getTime() {\fP
-.fi
-.nf
-\f3 return time;\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+\@Anno
+class\ AnnosWithoutProcessors\ {\ }
+\f[R]
+.fi
+.PP
+The following commands compile the annotation processor
+\f[CB]AnnoProc\f[R], then run this annotation processor against the source
+file \f[CB]AnnosWithoutProcessors.java\f[R]:
+.IP
+.nf
+\f[CB]
+javac\ AnnoProc.java
+javac\ \-cp\ .\ \-Xlint:processing\ \-processor\ AnnoProc\ \-proc:only\ AnnosWithoutProcessors.java
+\f[R]
+.fi
+.PP
+When the compiler runs the annotation processor against the source file
+\f[CB]AnnosWithoutProcessors.java\f[R], it generates the following
+warning:
+.IP
+.nf
+\f[CB]
+warning:\ [processing]\ No\ processor\ claimed\ any\ of\ these\ annotations:\ Anno
+\f[R]
+.fi
+.PP
+To resolve this issue, you can rename the annotation defined and used in
+the class \f[CB]AnnosWithoutProcessors\f[R] from \f[CB]Anno\f[R] to
+\f[CB]NotAnno\f[R].
+.RE
+.TP
+.B \f[CB]rawtypes\f[R]
+Warns about unchecked operations on raw types.
+The following statement generates a \f[CB]rawtypes\f[R] warning:
+.RS
+.RS
+.PP
+\f[CB]void\ countElements(List\ l)\ {\ ...\ }\f[R]
+.RE
+.PP
+The following example doesn\[aq]t generate a \f[CB]rawtypes\f[R] warning:
+.RS
+.PP
+\f[CB]void\ countElements(List<?>\ l)\ {\ ...\ }\f[R]
+.RE
+.PP
+\f[CB]List\f[R] is a raw type.
+However, \f[CB]List<?>\f[R] is an unbounded wildcard parameterized type.
+Because \f[CB]List\f[R] is a parameterized interface, always specify its
+type argument.
+In this example, the \f[CB]List\f[R] formal argument is specified with an
+unbounded wildcard (\f[CB]?\f[R]) as its formal type parameter, which
+means that the \f[CB]countElements\f[R] method can accept any
+instantiation of the \f[CB]List\f[R] interface.
+.RE
+.TP
+.B \f[CB]serial\f[R]
+Warns about missing \f[CB]serialVersionUID\f[R] definitions on
+serializable classes.
+For example:
+.RS
+.IP
+.nf
+\f[CB]
+public\ class\ PersistentTime\ implements\ Serializable
+{
+\ \ private\ Date\ time;
-The compiler generates the following warning:
-.sp
-.nf
-\f3warning: [serial] serializable class PersistentTime has no definition of\fP
-.fi
-.nf
-\f3serialVersionUID\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-If a serializable class does not explicitly declare a field named \f3serialVersionUID\fR, then the serialization runtime environment calculates a default \f3serialVersionUID\fR value for that class based on various aspects of the class, as described in the Java Object Serialization Specification\&. However, it is strongly recommended that all serializable classes explicitly declare \f3serialVersionUID\fR values because the default process of computing \f3serialVersionUID\fR vales is highly sensitive to class details that can vary depending on compiler implementations, and as a result, might cause an unexpected \f3InvalidClassExceptions\fR during deserialization\&. To guarantee a consistent \f3serialVersionUID\fR value across different Java compiler implementations, a serializable class must declare an explicit \f3serialVersionUID\fR value\&.
-.TP
-static
-Warns about issues relating to the use of statics, for example:
-.sp
-.nf
-\f3class XLintStatic {\fP
-.fi
-.nf
-\f3 static void m1() { }\fP
-.fi
-.nf
-\f3 void m2() { this\&.m1(); }\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The compiler generates the following warning:
-.sp
-.nf
-\f3warning: [static] static method should be qualified by type name, \fP
-.fi
-.nf
-\f3XLintStatic, instead of by an expression\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+\ \ \ public\ PersistentTime()\ {
+\ \ \ \ \ time\ =\ Calendar.getInstance().getTime();
+\ \ \ }
-To resolve this issue, you can call the \f3static\fR method \f3m1\fR as follows:
-.sp
-.nf
-\f3XLintStatic\&.m1();\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-Alternately, you can remove the \f3static\fR keyword from the declaration of the method \f3m1\fR\&.
-.TP
-try
-Warns about issues relating to use of \f3try\fR blocks, including try-with-resources statements\&. For example, a warning is generated for the following statement because the resource \f3ac\fR declared in the \f3try\fR block is not used:
-.sp
-.nf
-\f3try ( AutoCloseable ac = getResource() ) { // do nothing}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-unchecked
-Gives more detail for unchecked conversion warnings that are mandated by the Java Language Specification, for example:
-.sp
-.nf
-\f3List l = new ArrayList<Number>();\fP
-.fi
-.nf
-\f3List<String> ls = l; // unchecked warning\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-During type erasure, the types \f3ArrayList<Number>\fR and \f3List<String>\fR become \f3ArrayList\fR and \f3List\fR, respectively\&.
-
-The \f3ls\fR command has the parameterized type \f3List<String>\fR\&. When the \f3List\fR referenced by \f3l\fR is assigned to \f3ls\fR, the compiler generates an unchecked warning\&. At compile time, the compiler and JVM cannot determine whether \f3l\fR refers to a \f3List<String>\fR type\&. In this case, \f3l\fR does not refer to a \f3List<String>\fR type\&. As a result, heap pollution occurs\&.
-
-A heap pollution situation occurs when the \f3List\fR object \f3l\fR, whose static type is \f3List<Number>\fR, is assigned to another \f3List\fR object, \f3ls\fR, that has a different static type, \f3List<String>\fR\&. However, the compiler still allows this assignment\&. It must allow this assignment to preserve backward compatibility with releases of Java SE that do not support generics\&. Because of type erasure, \f3List<Number>\fR and \f3List<String>\fR both become \f3List\fR\&. Consequently, the compiler allows the assignment of the object \f3l\fR\f3,\fR which has a raw type of \f3List\fR, to the object \f3ls\fR\&.
-.TP
-varargs
-Warns about unsafe usages of variable arguments (\f3varargs\fR) methods, in particular, those that contain non-reifiable arguments, for example:
-.sp
-.nf
-\f3public class ArrayBuilder {\fP
-.fi
-.nf
-\f3 public static <T> void addToList (List<T> listArg, T\&.\&.\&. elements) {\fP
-.fi
-.nf
-\f3 for (T x : elements) {\fP
-.fi
-.nf
-\f3 listArg\&.add(x);\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-\fINote:\fR A non-reifiable type is a type whose type information is not fully available at runtime\&.
-
-The compiler generates the following warning for the definition of the method \f3ArrayBuilder\&.addToList\fR
-.sp
-.nf
-\f3warning: [varargs] Possible heap pollution from parameterized vararg type T\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-When the compiler encounters a varargs method, it translates the \f3varargs\fR formal parameter into an array\&. However, the Java programming language does not permit the creation of arrays of parameterized types\&. In the method \f3ArrayBuilder\&.addToList\fR, the compiler translates the \f3varargs\fR formal parameter \f3T\&.\&.\&.\fR elements to the formal parameter \f3T[]\fR elements, an array\&. However, because of type erasure, the compiler converts the \f3varargs\fR formal parameter to \f3Object[]\fR elements\&. Consequently, there is a possibility of heap pollution\&.
-.SH COMMAND-LINE\ ARGUMENT\ FILES
-To shorten or simplify the \f3javac\fR command, you can specify one or more files that contain arguments to the \f3javac\fR command (except \f3-J\fR options)\&. This enables you to create \f3javac\fR commands of any length on any operating system\&.
+\ \ \ public\ Date\ getTime()\ {
+\ \ \ \ \ return\ time;
+\ \ \ }
+}
+\f[R]
+.fi
+.PP
+The compiler generates the following warning:
+.IP
+.nf
+\f[CB]
+warning:\ [serial]\ serializable\ class\ PersistentTime\ has\ no\ definition\ of
+serialVersionUID
+\f[R]
+.fi
+.PP
+If a serializable class doesn\[aq]t explicitly declare a field named
+\f[CB]serialVersionUID\f[R], then the serialization runtime environment
+calculates a default \f[CB]serialVersionUID\f[R] value for that class
+based on various aspects of the class, as described in the Java Object
+Serialization Specification.
+However, it\[aq]s strongly recommended that all serializable classes
+explicitly declare \f[CB]serialVersionUID\f[R] values because the default
+process of computing \f[CB]serialVersionUID\f[R] values is highly
+sensitive to class details that can vary depending on compiler
+implementations.
+As a result, this might cause an unexpected
+\f[CB]InvalidClassExceptions\f[R] during deserialization.
+To guarantee a consistent \f[CB]serialVersionUID\f[R] value across
+different Java compiler implementations, a serializable class must
+declare an explicit \f[CB]serialVersionUID\f[R] value.
+.RE
+.TP
+.B \f[CB]static\f[R]
+Warns about issues relating to the use of statics variables, for
+example:
+.RS
+.IP
+.nf
+\f[CB]
+class\ XLintStatic\ {
+\ \ \ \ static\ void\ m1()\ {\ }
+\ \ \ \ void\ m2()\ {\ this.m1();\ }
+}
+\f[R]
+.fi
+.PP
+The compiler generates the following warning:
+.IP
+.nf
+\f[CB]
+warning:\ [static]\ static\ method\ should\ be\ qualified\ by\ type\ name,
+XLintStatic,\ instead\ of\ by\ an\ expression
+\f[R]
+.fi
+.PP
+To resolve this issue, you can call the \f[CB]static\f[R] method
+\f[CB]m1\f[R] as follows:
+.RS
+.PP
+\f[CB]XLintStatic.m1();\f[R]
+.RE
.PP
-An argument file can include \f3javac\fR options and source file names in any combination\&. The arguments within a file can be separated by spaces or new line characters\&. If a file name contains embedded spaces, then put the whole file name in double quotation marks\&.
+Alternately, you can remove the \f[CB]static\f[R] keyword from the
+declaration of the method \f[CB]m1\f[R].
+.RE
+.TP
+.B \f[CB]try\f[R]
+Warns about issues relating to the use of \f[CB]try\f[R] blocks, including
+try\-with\-resources statements.
+For example, a warning is generated for the following statement because
+the resource \f[CB]ac\f[R] declared in the \f[CB]try\f[R] block isn\[aq]t
+used:
+.RS
+.IP
+.nf
+\f[CB]
+try\ (\ AutoCloseable\ ac\ =\ getResource()\ )\ {\ \ \ \ //\ do\ nothing}
+\f[R]
+.fi
+.RE
+.TP
+.B \f[CB]unchecked\f[R]
+Gives more detail for unchecked conversion warnings that are mandated by
+the Java Language Specification, for example:
+.RS
+.IP
+.nf
+\f[CB]
+List\ l\ =\ new\ ArrayList<Number>();
+List<String>\ ls\ =\ l;\ \ \ \ \ \ \ //\ unchecked\ warning
+\f[R]
+.fi
.PP
-File Names within an argument file are relative to the current directory, not the location of the argument file\&. Wild cards (*) are not allowed in these lists (such as for specifying \f3*\&.java\fR)\&. Use of the at sign (@) to recursively interpret files is not supported\&. The \f3-J\fR options are not supported because they are passed to the launcher, which does not support argument files\&.
+During type erasure, the types \f[CB]ArrayList<Number>\f[R] and
+\f[CB]List<String>\f[R] become \f[CB]ArrayList\f[R] and \f[CB]List\f[R],
+respectively.
.PP
-When executing the \f3javac\fR command, pass in the path and name of each argument file with the at sign (@) leading character\&. When the \f3javac\fR command encounters an argument beginning with the at sign (@), it expands the contents of that file into the argument list\&.
+The \f[CB]ls\f[R] command has the parameterized type
+\f[CB]List<String>\f[R].
+When the \f[CB]List\f[R] referenced by \f[CB]l\f[R] is assigned to
+\f[CB]ls\f[R], the compiler generates an unchecked warning.
+At compile time, the compiler and JVM can\[aq]t determine whether
+\f[CB]l\f[R] refers to a \f[CB]List<String>\f[R] type.
+In this case, \f[CB]l\f[R] doesn\[aq]t refer to a \f[CB]List<String>\f[R]
+type.
+As a result, heap pollution occurs.
.PP
-\f3Example 1 Single Argument File\fR
+A heap pollution situation occurs when the \f[CB]List\f[R] object
+\f[CB]l\f[R], whose static type is \f[CB]List<Number>\f[R], is assigned to
+another \f[CB]List\f[R] object, \f[CB]ls\f[R], that has a different static
+type, \f[CB]List<String>\f[R].
+However, the compiler still allows this assignment.
+It must allow this assignment to preserve backward compatibility with
+releases of Java SE that don\[aq]t support generics.
+Because of type erasure, \f[CB]List<Number>\f[R] and \f[CB]List<String>\f[R]
+both become \f[CB]List\f[R].
+Consequently, the compiler allows the assignment of the object
+\f[CB]l\f[R], which has a raw type of \f[CB]List\f[R], to the object
+\f[CB]ls\f[R].
+.RE
+.TP
+.B \f[CB]varargs\f[R]
+Warns about unsafe use of variable arguments (\f[CB]varargs\f[R]) methods,
+in particular, those that contain non\-reifiable arguments, for example:
+.RS
+.IP
+.nf
+\f[CB]
+public\ class\ ArrayBuilder\ {
+\ \ public\ static\ <T>\ void\ addToList\ (List<T>\ listArg,\ T...\ elements)\ {
+\ \ \ \ for\ (T\ x\ :\ elements)\ {
+\ \ \ \ \ \ listArg.add(x);
+\ \ \ \ }
+\ \ }
+}
+\f[R]
+.fi
.PP
-You could use a single argument file named \f3argfile\fR to hold all \f3javac\fR arguments:
-.sp
-.nf
-\f3javac @argfile\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-This argument file could contain the contents of both files shown in Example 2
+A non\-reifiable type is a type whose type information isn\[aq]t fully
+available at runtime.
+.PP
+The compiler generates the following warning for the definition of the
+method \f[CB]ArrayBuilder.addToList\f[R]:
+.IP
+.nf
+\f[CB]
+warning:\ [varargs]\ Possible\ heap\ pollution\ from\ parameterized\ vararg\ type\ T
+\f[R]
+.fi
.PP
-\f3Example 2 Two Argument Files\fR
+When the compiler encounters a varargs method, it translates the
+\f[CB]varargs\f[R] formal parameter into an array.
+However, the Java programming language doesn\[aq]t permit the creation
+of arrays of parameterized types.
+In the method \f[CB]ArrayBuilder.addToList\f[R], the compiler translates
+the \f[CB]varargs\f[R] formal parameter \f[CB]T...\f[R] elements to the
+formal parameter \f[CB]T[]\f[R] elements, an array.
+However, because of type erasure, the compiler converts the
+\f[CB]varargs\f[R] formal parameter to \f[CB]Object[]\f[R] elements.
+Consequently, there\[aq]s a possibility of heap pollution.
+.RE
+.SH EXAMPLE OF COMPILING BY PROVIDING COMMAND\-LINE ARGUMENTS
.PP
-You can create two argument files: one for the \f3javac\fR options and the other for the source file names\&. Note that the following lists have no line-continuation characters\&.
+To compile as though providing command\-line arguments, use the
+following syntax:
+.RS
+.PP
+\f[CB]JavaCompiler\ javac\ =\ ToolProvider.getSystemJavaCompiler();\f[R]
+.RE
.PP
-Create a file named options that contains the following:
-.sp
-.nf
-\f3\-d classes\fP
-.fi
-.nf
-\f3\-g\fP
-.fi
-.nf
-\f3\-sourcepath /java/pubs/ws/1\&.3/src/share/classes\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Create a file named classes that contains the following:
-.sp
-.nf
-\f3MyClass1\&.java\fP
-.fi
-.nf
-\f3MyClass2\&.java\fP
-.fi
-.nf
-\f3MyClass3\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Then, run the \f3javac\fR command as follows:
-.sp
-.nf
-\f3javac @options @classes\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 3 Argument Files with Paths\fR
+The example writes diagnostics to the standard output stream and returns
+the exit code that \f[CB]javac\f[R] command would give when called from
+the command line.
+.PP
+You can use other methods in the \f[CB]javax.tools.JavaCompiler\f[R]
+interface to handle diagnostics, control where files are read from and
+written to, and more.
+.SH OLD INTERFACE
+.PP
+\f[B]Note:\f[R]
+.PP
+This API is retained for backward compatibility only.
+All new code should use the Java Compiler API.
.PP
-The argument files can have paths, but any file names inside the files are relative to the current working directory (not \f3path1\fR or \f3path2\fR):
-.sp
-.nf
-\f3javac @path1/options @path2/classes\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH ANNOTATION\ PROCESSING
-The \f3javac\fR command provides direct support for annotation processing, superseding the need for the separate annotation processing command, \f3apt\fR\&.
+The \f[CB]com.sun.tools.javac.Main\f[R] class provides two static methods
+to call the compiler from a program:
+.IP
+.nf
+\f[CB]
+public\ static\ int\ compile(String[]\ args);
+public\ static\ int\ compile(String[]\ args,\ PrintWriter\ out);
+\f[R]
+.fi
+.PP
+The \f[CB]args\f[R] parameter represents any of the command\-line
+arguments that would typically be passed to the compiler.
+.PP
+The \f[CB]out\f[R] parameter indicates where the compiler diagnostic
+output is directed.
+.PP
+The \f[CB]return\f[R] value is equivalent to the \f[CB]exit\f[R] value from
+\f[CB]javac\f[R].
+.PP
+\f[B]Note:\f[R]
.PP
-The API for annotation processors is defined in the \f3javax\&.annotation\&.processing\fR and j\f3avax\&.lang\&.model\fR packages and subpackages\&.
-.SS HOW\ ANNOTATION\ PROCESSING\ WORKS
-Unless annotation processing is disabled with the \f3-proc:none\fR option, the compiler searches for any annotation processors that are available\&. The search path can be specified with the \f3-processorpath\fR option\&. If no path is specified, then the user class path is used\&. Processors are located by means of service provider-configuration files named \f3META-INF/services/javax\&.annotation\&.processing\fR\&.Processor on the search path\&. Such files should contain the names of any annotation processors to be used, listed one per line\&. Alternatively, processors can be specified explicitly, using the \f3-processor\fR option\&.
+All other classes and methods found in a package with names that start
+with \f[CB]com.sun.tools.javac\f[R] (subpackages of
+\f[CB]com.sun.tools.javac\f[R]) are strictly internal and subject to
+change at any time.
+.SH EXAMPLE OF COMPILING MULTIPLE SOURCE FILES
.PP
-After scanning the source files and classes on the command line to determine what annotations are present, the compiler queries the processors to determine what annotations they process\&. When a match is found, the processor is called\&. A processor can claim the annotations it processes, in which case no further attempt is made to find any processors for those annotations\&. After all of the annotations are claimed, the compiler does not search for additional processors\&.
-.PP
-If any processors generate new source files, then another round of annotation processing occurs: Any newly generated source files are scanned, and the annotations processed as before\&. Any processors called on previous rounds are also called on all subsequent rounds\&. This continues until no new source files are generated\&.
+This example compiles the \f[CB]Aloha.java\f[R], \f[CB]GutenTag.java\f[R],
+\f[CB]Hello.java\f[R], and \f[CB]Hi.java\f[R] source files in the
+\f[CB]greetings\f[R] package.
.PP
-After a round occurs where no new source files are generated, the annotation processors are called one last time, to give them a chance to complete any remaining work\&. Finally, unless the \f3-proc:only\fR option is used, the compiler compiles the original and all generated source files\&.
-.SS IMPLICITLY\ LOADED\ SOURCE\ FILES
-To compile a set of source files, the compiler might need to implicitly load additional source files\&. See Searching for Types\&. Such files are currently not subject to annotation processing\&. By default, the compiler gives a warning when annotation processing occurred and any implicitly loaded source files are compiled\&. The \f3-implicit\fR option provides a way to suppress the warning\&.
-.SH SEARCHING\ FOR\ TYPES
-To compile a source file, the compiler often needs information about a type, but the type definition is not in the source files specified on the command line\&. The compiler needs type information for every class or interface used, extended, or implemented in the source file\&. This includes classes and interfaces not explicitly mentioned in the source file, but that provide information through inheritance\&.
-.PP
-For example, when you create a subclass \f3java\&.applet\&.Applet\fR, you are also using the ancestor classes of \f3Applet\fR: \f3java\&.awt\&.Panel\fR, \f3java\&.awt\&.Container\fR, \f3java\&.awt\&.Component\fR, and \f3java\&.lang\&.Object\fR\&.
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.IP
+.nf
+\f[CB]
+%\ javac\ greetings/*.java
+%\ ls\ greetings
+Aloha.class\ \ \ \ \ \ \ \ \ GutenTag.class\ \ \ \ \ \ Hello.class\ \ \ \ \ \ \ \ \ Hi.class
+Aloha.java\ \ \ \ \ \ \ \ \ \ GutenTag.java\ \ \ \ \ \ \ Hello.java\ \ \ \ \ \ \ \ \ \ Hi.java
+\f[R]
+.fi
.PP
-When the compiler needs type information, it searches for a source file or class file that defines the type\&. The compiler searches for class files first in the bootstrap and extension classes, then in the user class path (which by default is the current directory)\&. The user class path is defined by setting the \f3CLASSPATH\fR environment variable or by using the \f3-classpath\fR option\&.
-.PP
-If you set the \f3-sourcepath\fR option, then the compiler searches the indicated path for source files\&. Otherwise, the compiler searches the user class path for both class files and source files\&.
+\f[B]Windows:\f[R]
+.IP
+.nf
+\f[CB]
+C:\\>javac\ greetings\\*.java
+C:\\>dir\ greetings
+Aloha.class\ \ \ \ \ \ \ \ \ GutenTag.class\ \ \ \ \ \ Hello.class\ \ \ \ \ \ \ \ \ Hi.class
+Aloha.java\ \ \ \ \ \ \ \ \ \ GutenTag.java\ \ \ \ \ \ \ Hello.java\ \ \ \ \ \ \ \ \ \ Hi.java
+\f[R]
+.fi
+.SH EXAMPLE OF SPECIFYING A USER CLASS PATH
.PP
-You can specify different bootstrap or extension classes with the \f3-bootclasspath\fR and the \f3-extdirs\fR options\&. See Cross-Compilation Options\&.
-.PP
-A successful type search may produce a class file, a source file, or both\&. If both are found, then you can use the \f3-Xprefer\fR option to instruct the compiler which to use\&. If \f3newer\fR is specified, then the compiler uses the newer of the two files\&. If \f3source\fR is specified, the compiler uses the source file\&. The default is \f3newer\fR\&.
-.PP
-If a type search finds a source file for a required type, either by itself, or as a result of the setting for the \f3-Xprefer\fR option, then the compiler reads the source file to get the information it needs\&. By default the compiler also compiles the source file\&. You can use the \f3-implicit\fR option to specify the behavior\&. If \f3none\fR is specified, then no class files are generated for the source file\&. If \f3class\fR is specified, then class files are generated for the source file\&.
+After changing one of the source files in the previous example,
+recompile it:
.PP
-The compiler might not discover the need for some type information until after annotation processing completes\&. When the type information is found in a source file and no \f3-implicit\fR option is specified, the compiler gives a warning that the file is being compiled without being subject to annotation processing\&. To disable the warning, either specify the file on the command line (so that it will be subject to annotation processing) or use the \f3-implicit\fR option to specify whether or not class files should be generated for such source files\&.
-.SH PROGRAMMATIC\ INTERFACE
-The \f3javac\fR command supports the new Java Compiler API defined by the classes and interfaces in the \f3javax\&.tools\fR package\&.
-.SS EXAMPLE
-To compile as though providing command-line arguments, use the following syntax:
-.sp
-.nf
-\f3JavaCompiler javac = ToolProvider\&.getSystemJavaCompiler();\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The example writes diagnostics to the standard output stream and returns the exit code that \f3javac\fR would give when called from the command line\&.
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.IP
+.nf
+\f[CB]
+pwd
+/examples
+javac\ greetings/Hi.java
+\f[R]
+.fi
.PP
-You can use other methods in the \f3javax\&.tools\&.JavaCompiler\fR interface to handle diagnostics, control where files are read from and written to, and more\&.
-.SS OLD\ INTERFACE
-\fINote:\fR This API is retained for backward compatibility only\&. All new code should use the newer Java Compiler API\&.
+\f[B]Windows:\f[R]
+.IP
+.nf
+\f[CB]
+C:\\>cd
+\\examples
+C:\\>javac\ greetings\\Hi.java
+\f[R]
+.fi
.PP
-The \f3com\&.sun\&.tools\&.javac\&.Main\fR class provides two static methods to call the compiler from a program:
-.sp
-.nf
-\f3public static int compile(String[] args);\fP
-.fi
-.nf
-\f3public static int compile(String[] args, PrintWriter out);\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The \f3args\fR parameter represents any of the command-line arguments that would typically be passed to the compiler\&.
+Because \f[CB]greetings.Hi\f[R] refers to other classes in the
+\f[CB]greetings\f[R] package, the compiler needs to find these other
+classes.
+The previous example works because the default user class path is the
+directory that contains the package directory.
+If you want to recompile this file without concern for which directory
+you are in, then add the examples directory to the user class path by
+setting \f[CB]CLASSPATH\f[R].
+This example uses the \f[CB]\-classpath\f[R] option.
.PP
-The \f3out\fR parameter indicates where the compiler diagnostic output is directed\&.
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.RS
.PP
-The \f3return\fR value is equivalent to the \f3exit\fR value from \f3javac\fR\&.
+\f[CB]javac\ \-classpath\ /examples\ /examples/greetings/Hi.java\f[R]
+.RE
.PP
-\fINote:\fR All other classes and methods found in a package with names that start with \f3com\&.sun\&.tools\&.javac\fR (subpackages of \f3com\&.sun\&.tools\&.javac\fR) are strictly internal and subject to change at any time\&.
-.SH EXAMPLES
-\f3Example 1 Compile a Simple Program\fR
+\f[B]Windows:\f[R]
+.RS
.PP
-This example shows how to compile the \f3Hello\&.java\fR source file in the greetings directory\&. The class defined in \f3Hello\&.java\fR is called \f3greetings\&.Hello\fR\&. The greetings directory is the package directory both for the source file and the class file and is underneath the current directory\&. This makes it possible to use the default user class path\&. It also makes it unnecessary to specify a separate destination directory with the \f3-d\fR option\&.
+\f[CB]C:\\>javac\ \-classpath\ \\examples\ \\examples\\greetings\\Hi.java\f[R]
+.RE
.PP
-The source code in \f3Hello\&.java\fR:
-.sp
-.nf
-\f3package greetings;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3public class Hello {\fP
-.fi
-.nf
-\f3 public static void main(String[] args) {\fP
-.fi
-.nf
-\f3 for (int i=0; i < args\&.length; i++) {\fP
-.fi
-.nf
-\f3 System\&.out\&.println("Hello " + args[i]);\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Compile greetings\&.Hello:
-.sp
-.nf
-\f3javac greetings/Hello\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Run \f3greetings\&.Hello\fR:
-.sp
-.nf
-\f3java greetings\&.Hello World Universe Everyone\fP
-.fi
-.nf
-\f3Hello World\fP
-.fi
-.nf
-\f3Hello Universe\fP
-.fi
-.nf
-\f3Hello Everyone\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 2 Compile Multiple Source Files\fR
+If you change \f[CB]greetings.Hi\f[R] to use a banner utility, then that
+utility also needs to be accessible through the user class path.
+.PP
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.IP
+.nf
+\f[CB]
+javac\ \-classpath\ /examples:/lib/Banners.jar\ \\
+\ \ \ \ \ \ \ \ \ \ \ \ /examples/greetings/Hi.java
+\f[R]
+.fi
+.PP
+\f[B]Windows:\f[R]
+.IP
+.nf
+\f[CB]
+C:\\>javac\ \-classpath\ \\examples;\\lib\\Banners.jar\ ^
+\ \ \ \ \ \ \ \ \ \ \ \ \\examples\\greetings\\Hi.java
+\f[R]
+.fi
+.PP
+To execute a class in the \f[CB]greetings\f[R] package, the program needs
+access to the \f[CB]greetings\f[R] package, and to the classes that the
+\f[CB]greetings\f[R] classes use.
+.PP
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.RS
+.PP
+\f[CB]java\ \-classpath\ /examples:/lib/Banners.jar\ greetings.Hi\f[R]
+.RE
+.PP
+\f[B]Windows:\f[R]
+.RS
+.PP
+\f[CB]C:\\>java\ \-classpath\ \\examples;\\lib\\Banners.jar\ greetings.Hi\f[R]
+.RE
.PP
-This example compiles the \f3Aloha\&.java\fR, \f3GutenTag\&.java\fR, \f3Hello\&.java\fR, and \f3Hi\&.java\fR source files in the \f3greetings\fR package\&.
-.sp
-.nf
-\f3% javac greetings/*\&.java\fP
-.fi
-.nf
-\f3% ls greetings\fP
-.fi
-.nf
-\f3Aloha\&.class GutenTag\&.class Hello\&.class Hi\&.class\fP
-.fi
-.nf
-\f3Aloha\&.java GutenTag\&.java Hello\&.java Hi\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 3 Specify a User Class Path\fR
+The \f[CB]\-source\ 1.7\f[R] option specifies that release 1.7 (or 7) of
+the Java programming language must be used to compile OldCode.java.
+The \f[CB]\-target\ 1.7\f[R] option ensures that the generated class files
+are compatible with JVM 1.7.
+.SH ANNOTATION PROCESSING
+.PP
+The \f[CB]javac\f[R] command provides direct support for annotation
+processing, superseding the need for the separate annotation processing
+command, \f[CB]apt\f[R].
+.PP
+The API for annotation processors is defined in the
+\f[CB]javax.annotation.processing\f[R] and \f[CB]javax.lang.model\f[R]
+packages and subpackages.
+.SS How Annotation Processing Works
+.PP
+Unless annotation processing is disabled with the \f[CB]\-proc:none\f[R]
+option, the compiler searches for any annotation processors that are
+available.
+The search path can be specified with the \f[CB]\-processorpath\f[R]
+option.
+If no path is specified, then the user class path is used.
+Processors are located by means of service provider\-configuration files
+named \f[CB]META\-INF/services/javax.annotation.processing\f[R].
+Processor on the search path.
+Such files should contain the names of any annotation processors to be
+used, listed one per line.
+Alternatively, processors can be specified explicitly, using the
+\f[CB]\-processor\f[R] option.
+.PP
+After scanning the source files and classes on the command line to
+determine what annotations are present, the compiler queries the
+processors to determine what annotations they process.
+When a match is found, the processor is called.
+A processor can claim the annotations it processes, in which case no
+further attempt is made to find any processors for those annotations.
+After all of the annotations are claimed, the compiler does not search
+for additional processors.
.PP
-After changing one of the source files in the previous example, recompile it:
-.sp
-.nf
-\f3pwd\fP
-.fi
-.nf
-\f3/examples\fP
-.fi
-.nf
-\f3javac greetings/Hi\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Because \f3greetings\&.Hi\fR refers to other classes in the \f3greetings\fR package, the compiler needs to find these other classes\&. The previous example works because the default user class path is the directory that contains the package directory\&. If you want to recompile this file without concern for which directory you are in, then add the examples directory to the user class path by setting \f3CLASSPATH\fR\&. This example uses the \f3-classpath\fR option\&.
-.sp
-.nf
-\f3javac \-classpath /examples /examples/greetings/Hi\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-If you change \f3greetings\&.Hi\fR to use a banner utility, then that utility also needs to be accessible through the user class path\&.
-.sp
-.nf
-\f3javac \-classpath /examples:/lib/Banners\&.jar \e\fP
-.fi
-.nf
-\f3 /examples/greetings/Hi\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-To execute a class in the \f3greetings\fR package, the program needs access to the \f3greetings\fR package, and to the classes that the \f3greetings\fR classes use\&.
-.sp
-.nf
-\f3java \-classpath /examples:/lib/Banners\&.jar greetings\&.Hi\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 4 Separate Source Files and Class Files\fR
+If any processors generate new source files, then another round of
+annotation processing occurs: Any newly generated source files are
+scanned, and the annotations processed as before.
+Any processors called on previous rounds are also called on all
+subsequent rounds.
+This continues until no new source files are generated.
+.PP
+After a round occurs where no new source files are generated, the
+annotation processors are called one last time, to give them a chance to
+complete any remaining work.
+Finally, unless the \f[CB]\-proc:only\f[R] option is used, the compiler
+compiles the original and all generated source files.
+.SH SEARCHING FOR TYPES
+.PP
+To compile a source file, the compiler often needs information about a
+type, but the type definition is not in the source files specified on
+the command line.
.PP
-The following example uses \f3javac\fR to compile code that runs on JVM 1\&.7\&.
-.sp
-.nf
-\f3javac \-source 1\&.7 \-target 1\&.7 \-bootclasspath jdk1\&.7\&.0/lib/rt\&.jar \e \fP
-.fi
-.nf
-\f3\-extdirs "" OldCode\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The \f3-source 1\&.7\fR option specifies that release 1\&.7 (or 7) of the Java programming language be used to compile \f3OldCode\&.java\fR\&. The option \f3-target 1\&.7\fR option ensures that the generated class files are compatible with JVM 1\&.7\&. Note that in most cases, the value of the \f3-target\fR option is the value of the \f3-source\fR option; in this example, you can omit the \f3-target\fR option\&.
+The compiler needs type information for every class or interface used,
+extended, or implemented in the source file.
+This includes classes and interfaces not explicitly mentioned in the
+source file, but that provide information through inheritance.
+.PP
+For example, when you create a subclass of \f[CB]java.awt.Window\f[R], you
+are also using the ancestor classes of \f[CB]Window\f[R]:
+\f[CB]java.awt.Container\f[R], \f[CB]java.awt.Component\f[R], and
+\f[CB]java.lang.Object\f[R].
+.PP
+When the compiler needs type information, it searches for a source file
+or class file that defines the type.
+The compiler searches for class files first in the bootstrap and
+extension classes, then in the user class path (which by default is the
+current directory).
+The user class path is defined by setting the \f[CB]CLASSPATH\f[R]
+environment variable or by using the \f[CB]\-classpath\f[R] option.
.PP
-You must specify the \f3-bootclasspath\fR option to specify the correct version of the bootstrap classes (the \f3rt\&.jar\fR library)\&. If not, then the compiler generates a warning:
-.sp
-.nf
-\f3javac \-source 1\&.7 OldCode\&.java\fP
-.fi
-.nf
-\f3warning: [options] bootstrap class path not set in conjunction with \fP
-.fi
-.nf
-\f3\-source 1\&.7\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-If you do not specify the correct version of bootstrap classes, then the compiler uses the old language rules (in this example, it uses version 1\&.7 of the Java programming language) combined with the new bootstrap classes, which can result in class files that do not work on the older platform (in this case, Java SE 7) because reference to nonexistent methods can get included\&.
+If you set the \f[CB]\-sourcepath\f[R] option, then the compiler searches
+the indicated path for source files.
+Otherwise, the compiler searches the user class path for both class
+files and source files.
+.PP
+You can specify different bootstrap or extension classes with the
+\f[CB]\-bootclasspath\f[R] and the \f[CB]\-extdirs\f[R] options.
+See \f[B]Cross\-Compilation Options for javac\f[R].
.PP
-\f3Example 5 Cross Compile\fR
-.PP
-This example uses \f3javac\fR to compile code that runs on JVM 1\&.7\&.
-.sp
-.nf
-\f3javac \-source 1\&.7 \-target 1\&.7 \-bootclasspath jdk1\&.7\&.0/lib/rt\&.jar \e\fP
-.fi
-.nf
-\f3 \-extdirs "" OldCode\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The\f3-source 1\&.7\fR option specifies that release 1\&.7 (or 7) of the Java programming language to be used to compile OldCode\&.java\&. The \f3-target 1\&.7\fR option ensures that the generated class files are compatible with JVM 1\&.7\&.
+A successful type search may produce a class file, a source file, or
+both.
+If both are found, then you can use the \f[CB]\-Xprefer\f[R] option to
+instruct the compiler which to use.
+If \f[CB]newer\f[R] is specified, then the compiler uses the newer of the
+two files.
+If \f[CB]source\f[R] is specified, the compiler uses the source file.
+The default is \f[CB]newer\f[R].
.PP
-You must specify the \f3-bootclasspath\fR option to specify the correct version of the bootstrap classes (the \f3rt\&.jar\fR library)\&. If not, then the compiler generates a warning:
-.sp
-.nf
-\f3javac \-source 1\&.7 OldCode\&.java\fP
-.fi
-.nf
-\f3warning: [options] bootstrap class path not set in conjunction with \-source 1\&.7\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-If you do not specify the correct version of bootstrap classes, then the compiler uses the old language rules combined with the new bootstrap classes\&. This combination can result in class files that do not work on the older platform (in this case, Java SE 7) because reference to nonexistent methods can get included\&. In this example, the compiler uses release 1\&.7 of the Java programming language\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-java(1)
-.TP 0.2i
-\(bu
-jdb(1)
-.TP 0.2i
-\(bu
-javadoc(1)
-.TP 0.2i
-\(bu
-jar(1)
-.TP 0.2i
-\(bu
-jdb(1)
-.RE
-.br
-'pl 8.5i
-'bp
+If a type search finds a source file for a required type, either by
+itself, or as a result of the setting for the \f[CB]\-Xprefer\f[R] option,
+then the compiler reads the source file to get the information it needs.
+By default the compiler also compiles the source file.
+You can use the \f[CB]\-implicit\f[R] option to specify the behavior.
+If \f[CB]none\f[R] is specified, then no class files are generated for the
+source file.
+If \f[CB]class\f[R] is specified, then class files are generated for the
+source file.
+.PP
+The compiler might not discover the need for some type information until
+after annotation processing completes.
+When the type information is found in a source file and no
+\f[CB]\-implicit\f[R] option is specified, the compiler gives a warning
+that the file is being compiled without being subject to annotation
+processing.
+To disable the warning, either specify the file on the command line (so
+that it will be subject to annotation processing) or use the
+\f[CB]\-implicit\f[R] option to specify whether or not class files should
+be generated for such source files.
--- a/src/jdk.compiler/share/man/serialver.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.compiler/share/man/serialver.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,88 +19,66 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Remote Method Invocation (RMI) Tools
-.\" Title: serialver.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH serialver 1 "21 November 2013" "JDK 8" "Remote Method Invocation (RMI) Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-serialver \- Returns the serial version UID for specified classes\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBserialver\fR [ \fIoptions\fR ] [ \fIclassnames\fR ]
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.TP
-\fIclassnames\fR
-The classes for which the \f3serialVersionUID\fR is to be returned\&.
-.SH DESCRIPTION
-The \f3serialver\fR command returns the \f3serialVersionUID\fR for one or more classes in a form suitable for copying into an evolving class\&. When called with no arguments, the \f3serialver\fR command prints a usage line\&.
-.SH OPTIONS
+.TH "SERIALVER" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+serialver \- return the \f[CB]serialVersionUID\f[R] for one or more
+classes in a form suitable for copying into an evolving class
+.SH SYNOPSIS
+.PP
+\f[CB]serialver\f[R] [\f[I]options\f[R]] [\f[I]classnames\f[R]]
+.TP
+.B \f[I]options\f[R]
+This represents the command\-line options for the \f[CB]serialver\f[R]
+command.
+See \f[B]Options for serialver\f[R].
+.RS
+.RE
+.TP
+.B \f[I]classnames\f[R]
+The classes for which \f[CB]serialVersionUID\f[R] is to be returned.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]serialver\f[R] command returns the \f[CB]serialVersionUID\f[R] for
+one or more classes in a form suitable for copying into an evolving
+class.
+When called with no arguments, the \f[CB]serialver\f[R] command prints a
+usage line.
+.SH OPTIONS FOR SERIALVER
.TP
--classpath \fIpath-files\fR
-.br
-Sets the search path for application classes and resources\&. Separate classes and resources with a colon (:)\&.
-.TP
--show
-.br
-Displays a simple user interface\&. Enter the full class name and press either the \fIEnter\fR key or the \fIShow\fR button to display the \f3serialVersionUID\fR\&.
+.B \f[CB]\-classpath\f[R] \f[I]path\-files\f[R]
+Sets the search path for application classes and resources.
+Separate classes and resources with a colon (:).
+.RS
+.RE
.TP
--J\fIoption\fR
-.br
-Passes \f3option\fR to the Java Virtual Machine, where option is one of the options described on the reference page for the Java application launcher\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&. See java(1)\&.
-.SH NOTES
-The \f3serialver\fR command loads and initializes the specified classes in its virtual machine, and by default, it does not set a security manager\&. If the \f3serialver\fR command is to be run with untrusted classes, then a security manager can be set with the following option:
-.sp
-.nf
-\f3\-J\-Djava\&.security\&.manager\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-When necessary, a security policy can be specified with the following option:
-.sp
-.nf
-\f3\-J\-Djava\&.security\&.policy=<policy file>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-The \f3java\&.io\&.ObjectStream\fR class description at http://docs\&.oracle\&.com/javase/8/docs/api/java/io/ObjectStreamClass\&.html
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+Passes the specified \f[I]option\f[R] to the Java Virtual Machine, where
+\f[I]option\f[R] is one of the options described on the reference page
+for the Java application launcher.
+For example, \f[CB]\-J\-Xms48m\f[R] sets the startup memory to 48 MB.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
+.SH NOTES
+.PP
+The \f[CB]serialver\f[R] command loads and initializes the specified
+classes in its virtual machine, and by default, it doesn\[aq]t set a
+security manager.
+If the \f[CB]serialver\f[R] command is to be run with untrusted classes,
+then a security manager can be set with the following option:
+.RS
+.PP
+\f[CB]\-J\-Djava.security.manager\f[R]
+.RE
+.PP
+When necessary, a security policy can be specified with the following
+option:
+.RS
+.PP
+\f[CB]\-J\-Djava.security.policy=\f[R]\f[I]policy_file\f[R]
+.RE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.hotspot.agent/share/man/jhsdb.1 Fri May 31 17:27:28 2019 -0700
@@ -0,0 +1,274 @@
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
+.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+.\"
+.\" This code is free software; you can redistribute it and/or modify it
+.\" under the terms of the GNU General Public License version 2 only, as
+.\" published by the Free Software Foundation.
+.\"
+.\" This code is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" version 2 for more details (a copy is included in the LICENSE file that
+.\" accompanied this code).
+.\"
+.\" You should have received a copy of the GNU General Public License version
+.\" 2 along with this work; if not, write to the Free Software Foundation,
+.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+.\"
+.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+.\" or visit www.oracle.com if you need additional information or have any
+.\" questions.
+.\"
+.\" Automatically generated by Pandoc 2.3.1
+.\"
+.TH "JHSDB" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jhsdb \- attach to a Java process or launch a postmortem debugger to
+analyze the content of a core dump from a crashed Java Virtual Machine
+(JVM)
+.SH SYNOPSIS
+.PP
+\f[CB]jhsdb\f[R] \f[CB]clhsdb\f[R] [\f[CB]\-\-pid\f[R] \f[I]pid\f[R] |
+\f[CB]\-\-exe\f[R] \f[I]executable\f[R] \f[CB]\-\-core\f[R]
+\f[I]coredump\f[R]]
+.PP
+\f[CB]jhsdb\f[R] \f[CB]debugd\f[R] [\f[I]options\f[R]] (\f[I]pid\f[R] |
+\f[I]executable\f[R] \f[I]coredump\f[R]) [\f[I]server\-id\f[R]]
+.PP
+\f[CB]jhsdb\f[R] \f[CB]hsdb\f[R] [\f[CB]\-\-pid\f[R] \f[I]pid\f[R] |
+\f[CB]\-\-exe\f[R] \f[I]executable\f[R] \f[CB]\-\-core\f[R]
+\f[I]coredump\f[R]]
+.PP
+\f[CB]jhsdb\f[R] \f[CB]jstack\f[R] [\f[CB]\-\-pid\f[R] \f[I]pid\f[R] |
+\f[CB]\-\-exe\f[R] \f[I]executable\f[R] \f[CB]\-\-core\f[R]
+\f[I]coredump\f[R]] [\f[I]options\f[R]]
+.PP
+\f[CB]jhsdb\f[R] \f[CB]jmap\f[R] [\f[CB]\-\-pid\f[R] \f[I]pid\f[R] |
+\f[CB]\-\-exe\f[R] \f[I]executable\f[R] \f[CB]\-\-core\f[R]
+\f[I]coredump\f[R]] [\f[I]options\f[R]]
+.PP
+\f[CB]jhsdb\f[R] \f[CB]jinfo\f[R] [\f[CB]\-\-pid\f[R] \f[I]pid\f[R] |
+\f[CB]\-\-exe\f[R] \f[I]executable\f[R] \f[CB]\-\-core\f[R]
+\f[I]coredump\f[R]] [\f[I]options\f[R]]
+.PP
+\f[CB]jhsdb\f[R] \f[CB]jsnap\f[R] [\f[I]options\f[R]] [\f[CB]\-\-pid\f[R]
+\f[I]pid\f[R] | \f[CB]\-\-exe\f[R] \f[I]executable\f[R] \f[CB]\-\-core\f[R]
+\f[I]coredump\f[R]]
+.TP
+.B \f[I]pid\f[R]
+The process ID to which the \f[CB]jhsdb\f[R] tool should attach.
+The process must be a Java process.
+To get a list of Java processes running on a machine, use the
+\f[CB]ps\f[R] command or, if the JVM processes are not running in a
+separate docker instance, the \f[B]jps\f[R] command.
+.RS
+.PP
+\f[B]Note:\f[R] JDK 10 has added support for using the Attach API when
+attaching to Java processes running in a separate docker process.
+However, the \f[CB]jps\f[R] command will not list the JVM processes that
+are running in a separate docker instance.
+If you are trying to connect a Linux host with a Virtual Machine that is
+in a docker container, you must use tools such as \f[CB]ps\f[R] to look up
+the PID of the JVM.
+.RE
+.TP
+.B \f[I]server\-id\f[R]
+An optional unique ID to use when multiple debug servers are running on
+the same remote host.
+.RS
+.RE
+.TP
+.B \f[I]executable\f[R]
+The Java executable file from which the core dump was produced.
+.RS
+.RE
+.TP
+.B \f[I]coredump\f[R]
+The core file to which the \f[CB]jhsdb\f[R] tool should attach.
+.RS
+.RE
+.TP
+.B \f[I]options\f[R]
+The command\-line options for a \f[CB]jhsdb\f[R] mode.
+See \f[B]Common Options for jhsdb Modes\f[R], \f[B]Options for the debugd
+Mode\f[R], \f[B]Options for the jinfo Mode\f[R], \f[B]Options for the jmap
+Mode\f[R], \f[B]Options for the jmap Mode\f[R], \f[B]Options for the
+jstack Mode\f[R], and \f[B]Options for the jsnap Mode\f[R].
+.RS
+.RE
+.PP
+\f[B]Note:\f[R]
+.PP
+Either the \f[I]pid\f[R] or the pair of \f[I]executable\f[R] and
+\f[I]core\f[R] files must be provided.
+.SH DESCRIPTION
+.PP
+You can use the \f[CB]jhsdb\f[R] tool to attach to a Java process or to
+launch a postmortem debugger to analyze the content of a core\-dump from
+a crashed Java Virtual Machine (JVM).
+This command is experimental and unsupported.
+.PP
+\f[B]Note:\f[R]
+.PP
+Attaching the \f[CB]jhsdb\f[R] tool to a live process will cause the
+process to hang and the process will probably crash when the debugger
+detaches.
+.PP
+The \f[CB]jhsdb\f[R] tool can be launched in any one of the following
+modes:
+.TP
+.B \f[CB]jhsdb\ clhsdb\f[R]
+Starts the interactive command\-line debugger.
+.RS
+.RE
+.TP
+.B \f[CB]jhsdb\ debugd\f[R]
+Starts the remote debug server.
+.RS
+.RE
+.TP
+.B \f[CB]jhsdb\ hsdb\f[R]
+Starts the interactive GUI debugger.
+.RS
+.RE
+.TP
+.B \f[CB]jhsdb\ jstack\f[R]
+Prints stack and locks information.
+.RS
+.RE
+.TP
+.B \f[CB]jhsdb\ jmap\f[R]
+Prints heap information.
+.RS
+.RE
+.TP
+.B \f[CB]jhsdb\ jinfo\f[R]
+Prints basic JVM information.
+.RS
+.RE
+.TP
+.B \f[CB]jhsdb\ jsnap\f[R]
+Prints performance counter information.
+.RS
+.RE
+.SH COMMON OPTIONS FOR JHSDB MODES
+.PP
+In addition to any required \f[CB]jstack\f[R], \f[CB]jmap\f[R],
+\f[CB]jinfo\f[R] or \f[CB]jsnap\f[R] mode specific options, the
+\f[CB]pid\f[R], \f[CB]exe\f[R], or \f[CB]core\f[R] options must be provided
+for all modes.
+The following options are available for all modes.
+.TP
+.B \f[CB]\-\-pid\f[R]
+The process ID of the hanging process.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-exe\f[R]
+The executable file name.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-core\f[R]
+The core dump file name.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\f[R]
+Displays the options available for the command.
+.RS
+.RE
+.SH OPTIONS FOR THE DEBUGD MODE
+.TP
+.B \f[I]server\-id\f[R]
+An optional unique ID for this debug server.
+This is required if multiple debug servers are run on the same machine.
+.RS
+.RE
+.SH OPTIONS FOR THE JINFO MODE
+.PP
+Without specified options, the \f[CB]jhsdb\ jinfo\f[R] prints both flags
+and properties.
+.TP
+.B \f[CB]\-\-flags\f[R]
+Prints the VM flags.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-sysprops\f[R]
+Prints the Java system properties.
+.RS
+.RE
+.TP
+.B no option
+Prints the VM flags and the Java system properties.
+.RS
+.RE
+.SH OPTIONS FOR THE JMAP MODE
+.PP
+In addition to the following mode specific options, the \f[CB]pid\f[R],
+\f[CB]exe\f[R], or \f[CB]core\f[R] options described in \f[B]Common Options
+for jhsdb Modes\f[R] must be provided.
+.TP
+.B no option
+Prints the same information as Solaris \f[CB]pmap\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-heap\f[R]
+Prints the \f[CB]java\f[R] heap summary.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-binaryheap\f[R]
+Dumps the \f[CB]java\f[R] heap in \f[CB]hprof\f[R] binary format.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-dumpfile\f[R]
+Prints the name of the dumpfile.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-histo\f[R]
+Prints the histogram of \f[CB]java\f[R] object heap.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-clstats\f[R]
+Prints the class loader statistics.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-finalizerinfo\f[R]
+Prints the information on objects awaiting finalization.
+.RS
+.RE
+.SH OPTIONS FOR THE JSTACK MODE
+.PP
+In addition to the following mode specific options, the \f[CB]pid\f[R],
+\f[CB]exe\f[R], or \f[CB]core\f[R] options described in \f[B]Common Options
+for jhsdb Modes\f[R] must be provided.
+.TP
+.B \f[CB]\-\-locks\f[R]
+Prints the \f[CB]java.util.concurrent\f[R] locks information.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-mixed\f[R]
+Attempts to print both \f[CB]java\f[R] and native frames if the platform
+allows it.
+.RS
+.RE
+.SH OPTIONS FOR THE JSNAP MODE
+.PP
+In addition to the following mode specific option, the \f[CB]pid\f[R],
+\f[CB]exe\f[R], or \f[CB]core\f[R] options described in \f[B]Common Options
+for jhsdb Modes\f[R] must be provided.
+.TP
+.B \f[CB]\-\-all\f[R]
+Prints all performance counters.
+.RS
+.RE
--- a/src/jdk.jartool/share/man/jar.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jartool/share/man/jar.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,465 +19,328 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Basic Tools
-.\" Title: jar.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jar 1 "21 November 2013" "JDK 8" "Basic Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jar \- Manipulates Java Archive (JAR) files\&.
-.SH SYNOPSIS
-Create JAR file
-.sp
-.nf
-
-\fBjar c\fR[\fBefmMnv0\fR] [\fIentrypoint\fR] [\fIjarfile\fR] [\fImanifest\fR] [\fB\-C\fR \fIdir\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.]
-.fi
-.sp
-
-Update JAR file
-.sp
-.nf
-
-\fBjar u\fR[\fBefmMnv0\fR] [\fIentrypoint\fR] [\fIjarfile\fR] [\fImanifest\fR] [\fB\-C\fR \fIdir\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.]
-.fi
-.sp
-
-Extract JAR file
-.sp
-.nf
-
-\fBjar\fR \fBx\fR[\fBvf\fR] [\fIjarfile\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.]
-.fi
-.sp
-
-List Contents of JAR file
-.sp
-.nf
-
-\fBjar\fR \fBt\fR[\fBvf\fR] [\fIjarfile\fR] \fIfile\fR \&.\&.\&. [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.]
-.fi
-.sp
-
-Add Index to JAR file
-.sp
-.nf
-
-\fBjar\fR \fBi\fR \fIjarfile\fR [\-J\fIoption\fR \&.\&.\&.] [@\fIarg\-file\fR \&.\&.\&.]
-.fi
-.sp
-.SH DESCRIPTION
-The \f3jar\fR command is a general-purpose archiving and compression tool, based on ZIP and the ZLIB compression format\&. However, the \f3jar\fR command was designed mainly to package Java applets or applications into a single archive\&. When the components of an applet or application (files, images and sounds) are combined into a single archive, they can be downloaded by a Java agent (such as a browser) in a single HTTP transaction, rather than requiring a new connection for each piece\&. This dramatically improves download times\&. The \f3jar\fR command also compresses files, which further improves download time\&. The \f3jar\fR command also allows individual entries in a file to be signed by the applet author so that their origin can be authenticated\&. A JAR file can be used as a class path entry, whether or not it is compressed\&.
+.TH "JAR" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jar \- create an archive for classes and resources, and manipulate or
+restore individual classes or resources from an archive
+.SH SYNOPSIS
+.PP
+\f[CB]jar\f[R] [\f[I]OPTION\f[R] ...] [ [\f[CB]\-\-release\f[R]
+\f[I]VERSION\f[R]] [\f[CB]\-C\f[R] \f[I]dir\f[R]] \f[I]files\f[R]] ...
+.SH DESCRIPTION
+.PP
+The \f[CB]jar\f[R] command is a general\-purpose archiving and compression
+tool, based on the ZIP and ZLIB compression formats.
+Initially, the \f[CB]jar\f[R] command was designed to package Java applets
+(not supported since JDK 11) or applications; however, beginning with
+JDK 9, users can use the \f[CB]jar\f[R] command to create modular JARs.
+For transportation and deployment, it\[aq]s usually more convenient to
+package modules as modular JARs.
+.PP
+The syntax for the \f[CB]jar\f[R] command resembles the syntax for the
+\f[CB]tar\f[R] command.
+It has several main operation modes, defined by one of the mandatory
+operation arguments.
+Other arguments are either options that modify the behavior of the
+operation or are required to perform the operation.
+.PP
+When modules or the components of an application (files, images and
+sounds) are combined into a single archive, they can be downloaded by a
+Java agent (such as a browser) in a single HTTP transaction, rather than
+requiring a new connection for each piece.
+This dramatically improves download times.
+The \f[CB]jar\f[R] command also compresses files, which further improves
+download time.
+The \f[CB]jar\f[R] command also enables individual entries in a file to be
+signed so that their origin can be authenticated.
+A JAR file can be used as a class path entry, whether or not it\[aq]s
+compressed.
+.PP
+An archive becomes a modular JAR when you include a module descriptor,
+\f[CB]module\-info.class\f[R], in the root of the given directories or in
+the root of the \f[CB]\&.jar\f[R] archive.
+The following operations described in \f[B]Operation Modifiers Valid
+Only in Create and Update Modes\f[R] are valid only when creating or
+updating a modular jar or updating an existing non\-modular jar:
+.IP \[bu] 2
+\f[CB]\-\-module\-version\f[R]
+.IP \[bu] 2
+\f[CB]\-\-hash\-modules\f[R]
+.IP \[bu] 2
+\f[CB]\-\-module\-path\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+All mandatory or optional arguments for long options are also mandatory
+or optional for any corresponding short options.
+.SH MAIN OPERATION MODES
+.PP
+When using the \f[CB]jar\f[R] command, you must specify the operation for
+it to perform.
+You specify the operation mode for the \f[CB]jar\f[R] command by including
+the appropriate operation arguments described in this section.
+You can mix an operation argument with other one\-letter options.
+Generally the operation argument is the first argument specified on the
+command line.
+.TP
+.B \f[CB]\-c\f[R] or \f[CB]\-\-create\f[R]
+Creates the archive.
+.RS
+.RE
+.TP
+.B \f[CB]\-i=\f[R]\f[I]FILE\f[R] or \f[CB]\-\-generate\-index=\f[R]\f[I]FILE\f[R]
+Generates index information for the specified JAR file.
+.RS
+.RE
+.TP
+.B \f[CB]\-t\f[R] or \f[CB]\-\-list\f[R]
+Lists the table of contents for the archive.
+.RS
+.RE
+.TP
+.B \f[CB]\-u\f[R] or \f[CB]\-\-update\f[R]
+Updates an existing JAR file.
+.RS
+.RE
+.TP
+.B \f[CB]\-x\f[R] or \f[CB]\-\-extract\f[R]
+Extracts the named (or all) files from the archive.
+.RS
+.RE
+.TP
+.B \f[CB]\-d\f[R] or \f[CB]\-\-describe\-module\f[R]
+Prints the module descriptor or automatic module name.
+.RS
+.RE
+.SH OPERATION MODIFIERS VALID IN ANY MODE
+.PP
+You can use the following options to customize the actions of any
+operation mode included in the \f[CB]jar\f[R] command.
+.TP
+.B \f[CB]\-C\f[R] \f[I]DIR\f[R]
+Changes the specified directory and includes the \f[I]files\f[R]
+specified at the end of the command line.
+.RS
+.PP
+\f[CB]jar\f[R] [\f[I]OPTION\f[R] ...] [ [\f[CB]\-\-release\f[R]
+\f[I]VERSION\f[R]] [\f[CB]\-C\f[R] \f[I]dir\f[R]] \f[I]files\f[R]]
+.RE
+.TP
+.B \f[CB]\-f=\f[R]\f[I]FILE\f[R] or \f[CB]\-\-file=\f[R]\f[I]FILE\f[R]
+Specifies the archive file name.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-release\f[R] \f[I]VERSION\f[R]
+Creates a multirelease JAR file.
+Places all files specified after the option into a versioned directory
+of the JAR file named
+\f[CB]META\-INF/versions/\f[R]\f[I]VERSION\f[R]\f[CB]/\f[R], where
+\f[I]VERSION\f[R] must be must be a positive integer whose value is 9 or
+greater.
+.RS
+.PP
+At run time, where more than one version of a class exists in the JAR,
+the JDK will use the first one it finds, searching initially in the
+directory tree whose \f[I]VERSION\f[R] number matches the JDK\[aq]s major
+version number.
+It will then look in directories with successively lower
+\f[I]VERSION\f[R] numbers, and finally look in the root of the JAR.
+.RE
+.TP
+.B \f[CB]\-v\f[R] or \f[CB]\-\-verbose\f[R]
+Sends or prints verbose output to standard output.
+.RS
+.RE
+.SH OPERATION MODIFIERS VALID ONLY IN CREATE AND UPDATE MODES
.PP
-The syntax for the \f3jar\fR command resembles the syntax for the \f3tar\fR command\&. It has several operation modes, defined by one of the mandatory \fIoperation arguments\fR\&. Other arguments are either \fIoptions\fR that modify the behavior of the operation, or \fIoperands\fR required to perform the operation\&.
-.SH OPERATION\ ARGUMENTS
-When using the \f3jar\fR command, you have to select an operation to be performed by specifying one of the following operation arguments\&. You can mix them up with other one-letter options on the command line, but usually the operation argument is the first argument specified\&.
-.TP
-c
-Create a new JAR archive\&.
-.TP
-i
-Generate index information for a JAR archive\&.
-.TP
-t
-List the contents of a JAR archive\&.
-.TP
-u
-Update a JAR archive\&.
-.TP
-x
-Extract files from a JAR archive\&.
-.SH OPTIONS
-Use the following options to customize how the JAR file is created, updated, extracted, or viewed:
-.TP
-e
-Sets the class specified by the \fIentrypoint\fR operand to be the entry point\f3\fR for a standalone Java application bundled into an executable JAR file\&. The use of this option creates or overrides the \f3Main-Class\fR attribute value in the manifest file\&. The \f3e\fR option can be used when creating (\f3c\fR) or updating (\f3u\fR) the JAR file\&.
-
-For example, the following command creates the \f3Main\&.jar\fR archive with the \f3Main\&.class\fR file where the \f3Main-Clas\fRs attribute value in the manifest is set to \f3Main\fR:
-.sp
-.nf
-\f3jar cfe Main\&.jar Main Main\&.class\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The Java Runtime Environment (JRE) can directly call this application by running the following command:
-.sp
-.nf
-\f3java \-jar Main\&.jar\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-If the entry point class name is in a package, then it could use either the dot (\&.) or slash (/) as the delimiter\&. For example, if \f3Main\&.class\fR is in a package called \f3mydir\fR, then the entry point can be specified in one of the following ways:
-.sp
-.nf
-\f3jar \-cfe Main\&.jar mydir/Main mydir/Main\&.class\fP
-.fi
-.nf
-\f3jar \-cfe Main\&.jar mydir\&.Main mydir/Main\&.class\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-Note
-
-Specifying both \f3m\fR and \f3e\fR options together when a particular manifest also contains the \f3Main-Class\fR attribute results in an ambiguous \f3Main-Class\fR specification\&. The ambiguity leads to an error and the \f3jar\fR command creation or update operation is terminated\&.
-.TP
-f
-Sets the file specified by the \fI\fR\fIjarfile\fR operand to be the name of the JAR file that is created (\f3c\fR), updated (\f3u\fR), extracted (\f3x\fR) from, or viewed (\f3t\fR)\&. Omitting the \f3f\fR option and the \fIjarfile\fR operand instructs the \f3jar\fR command to accept the JAR file name from \f3stdin\fR (for \f3x\fR and \f3t\fR) or send the JAR \f3\fRfile to \f3stdout\fR (for \f3c\fR and \f3u\fR)\&.
-.TP
-m
-Includes names and values of attributes from the file specified by the \f3manifest\fR operand in the manifest file of the \f3jar\fR command (located in the archive at \f3META-INF/MANIFEST\&.MF\fR)\&. The \f3jar\fR command adds the attribute\(cqs name and value to the JAR file unless an entry already exists with the same name, in which case the \f3jar\fR command updates the value of the attribute\&. The \f3m\fR option can be used when creating (\f3c\fR) or updating (\f3u\fR) the JAR file\&.
-
-You can add special-purpose name-value attribute pairs to the manifest that are not contained in the default manifest file\&. For example, you can add attributes that specify vendor information, release information, package sealing, or to make JAR-bundled applications executable\&. For examples of using the \f3m\fR option, see Packaging Programs at http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.html
-.TP
-M
-Does not create a manifest file entry (for \f3c\fR and \f3u\fR), or delete a manifest file entry when one exists (for \f3u\fR)\&. The \f3M\fR option can be used when creating (\f3c\fR) or updating (\f3u\fR) the JAR file\&.
-.TP
-n
-When creating (\f3c\fR) a JAR file, this option normalizes the archive so that the content is not affected by the packing and unpacking operations of the pack200(1) command\&. Without this normalization, the signature of a signed JAR can become invalid\&.
-.TP
-v
-Generates verbose output to standard output\&. See Examples\&.
-.TP
-0
-(Zero) Creates (\f3c\fR) or updates (\f3u\fR) the JAR file without using ZIP compression\&.
+You can use the following options to customize the actions of the create
+and the update main operation modes:
+.TP
+.B \f[CB]\-e=\f[R]\f[I]CLASSNAME\f[R] or \f[CB]\-\-main\-class=\f[R]\f[I]CLASSNAME\f[R]
+Specifies the application entry point for standalone applications
+bundled into a modular or executable modular JAR file.
+.RS
+.RE
+.TP
+.B \f[CB]\-m=\f[R]\f[I]FILE\f[R] or \f[CB]\-\-manifest=\f[R]\f[I]FILE\f[R]
+Includes the manifest information from the given manifest file.
+.RS
+.RE
+.TP
+.B \f[CB]\-M\f[R] or \f[CB]\-\-no\-manifest\f[R]
+Doesn\[aq]t create a manifest file for the entries.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-version=\f[R]\f[I]VERSION\f[R]
+Specifies the module version, when creating or updating a modular JAR
+file, or updating a non\-modular JAR file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-hash\-modules=\f[R]\f[I]PATTERN\f[R]
+Computes and records the hashes of modules matched by the given pattern
+and that depend upon directly or indirectly on a modular JAR file being
+created or a non\-modular JAR file being updated.
+.RS
+.RE
+.TP
+.B \f[CB]\-p\f[R] or \f[CB]\-\-module\-path\f[R]
+Specifies the location of module dependence for generating the hash.
+.RS
+.RE
+.TP
+.B \f[CB]\@\f[R]\f[I]file\f[R]
+Reads \f[CB]jar\f[R] options and file names from a text file.
+.RS
+.RE
+.SH OPERATION MODIFIERS VALID ONLY IN CREATE, UPDATE, AND
+GENERATE\-INDEX MODES
+.PP
+You can use the following options to customize the actions of the create
+(\f[CB]\-c\f[R] or \f[CB]\-\-create\f[R]) the update (\f[CB]\-u\f[R] or
+\f[CB]\-\-update\f[R] ) and the generate\-index (\f[CB]\-i\f[R] or
+\f[CB]\-\-generate\-index=\f[R]\f[I]FILE\f[R]) main operation modes:
+.TP
+.B \f[CB]\-0\f[R] or \f[CB]\-\-no\-compress\f[R]
+Stores without using ZIP compression.
+.RS
+.RE
+.SH OTHER OPTIONS
+.PP
+The following options are recognized by the \f[CB]jar\f[R] command and not
+used with operation modes:
+.TP
+.B \f[CB]\-h\f[R] or \f[CB]\-\-help\f[R][\f[CB]:compat\f[R]]
+Displays the command\-line help for the \f[CB]jar\f[R] command or
+optionally the compatibility help.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\-extra\f[R]
+Displays help on extra options.
+.RS
+.RE
.TP
--C \fIdir\fR
-.br
-When creating (\f3c\fR) or updating (\f3u\fR) a JAR file, this option temporarily changes the directory while processing files specified by the \fIfile\fR operands\&. Its operation is intended to be similar to the \f3-C\fR option of the UNIX \f3tar\fR utility\&.For example, the following command changes to the \f3classes\fR directory and adds the \f3Bar\&.class\fR file from that directory to \f3my\&.jar\fR:
-.sp
-.nf
-\f3jar uf my\&.jar \-C classes Bar\&.class\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The following command changes to the \f3classes\fR directory and adds to \f3my\&.jar\fR all files within the classes directory (without creating a \f3classes\fR directory in the JAR file), then changes back to the original directory before changing to the \f3bin\fR directory to add \f3Xyz\&.class\fR to \f3my\&.jar\fR\&.
-.sp
-.nf
-\f3jar uf my\&.jar \-C classes \&. \-C bin Xyz\&.class\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-If \f3classes\fR contained files \f3bar1\fR and \f3bar2\fR, then the JAR file will contain the following after running the previous command:
-.sp
-.nf
-\f3% \fIjar tf my\&.jar\fR\fP
-.fi
-.nf
-\f3META\-INF/\fP
-.fi
-.nf
-\f3META\-INF/MANIFEST\&.MF\fP
-.fi
-.nf
-\f3bar1\fP
-.fi
-.nf
-\f3bar2\fP
-.fi
-.nf
-\f3Xyz\&.class\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-\fI\fR-J\fIoption\fR
-Sets the specified JVM option to be used when the JRE runs the JAR file\&. JVM options are described on the reference page for the java(1) command\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&.
-.SH OPERANDS
-The following operands are recognized by the \f3jar\fR command\&.
-.TP
-\fIfile\fR
-When creating (\f3c\fR) or updating (\f3u\fR) a JAR file, the \fIfile\fR operand defines the path and name of the file or directory that should be added to the archive\&. When extracting (\f3x\fR) or listing the contents (\f3t\fR) of a JAR file, the \fIfile\fR operand defines the path and name of the file to be extrated or listed\&. At least one valid file or directory must be specified\&. Separate multiple \fIfile\fR operands with spaces\&. If the \fIentrypoint\fR, \fIjarfile\fR, or \fImanifest\fR operands are used, the \fIfile\fR operands must be specified after them\&.
-.TP
-\fIentrypoint\fR
-When creating (\f3c\fR) or updating (\f3u\fR) a JAR file, the \fIentrypoint\fR operand defines the name of the class that should be the entry point\f3\fR for a standalone Java application bundled into an executable JAR file\&. The \fIentrypoint\fR operand must be specified if the \f3e\fR option is present\&.
-.TP
-\fIjarfile\fR
-Defines the name of the file to be created (\f3c\fR), updated (\f3u\fR), extracted (\f3x\fR), or viewed (\f3t\fR)\&. The \fIjarfile\fR operand must be specified if the \f3f\fR option is present\&. Omitting the \f3f\fR option and the \fIjarfile\fR operand instructs the \f3jar\fR command to accept the JAR file name from \f3stdin\fR (for \f3x\fR and \f3t\fR) or send the JAR \f3\fRfile to \f3stdout\fR (for \f3c\fR and \f3u\fR)\&.
-
-When indexing (\f3i\fR) a JAR file, specify the \fIjarfile\fR operand without the \f3f\fR option\&.
-.TP
-\fImanifest\fR
-When creating (\f3c\fR) or updating (\f3u\fR) a JAR file, the \fImanifest\fR operand defines the preexisting manifest files with names and values of attributes to be included in \f3MANIFEST\&.MF\fR in the JAR file\&. The \fImanifest\fR operand must be specified if the \f3f\fR option is present\&.
-.TP
-\fI@arg-file\fR
-To shorten or simplify the \f3jar\fR command, you can specify arguments in a separate text file and pass it to the \f3jar\fR command with the at sign (@) as a prefix\&. When the \f3jar\fR command encounters an argument beginning with the at sign, it expands the contents of that file into the argument list\&.
-
-An argument file can include options and arguments of the \f3jar\fR command (except the \f3-J\fR options, because they are passed to the launcher, which does not support argument files)\&. The arguments within a file can be separated by spaces or newline characters\&. File names within an argument file are relative to the current directory from which you run the \f3jar\fR command, not relative to the location of the argument file\&. Wild cards, such as the asterisk (*), that might otherwise be expanded by the operating system shell, are not expanded\&.
+.B \f[CB]\-\-version\f[R]
+Prints the program version.
+.RS
+.RE
+.SH EXAMPLES OF JAR COMMAND SYNTAX
+.IP \[bu] 2
+Create an archive, \f[CB]classes.jar\f[R], that contains two class files,
+\f[CB]Foo.class\f[R] and \f[CB]Bar.class\f[R].
+.RS 2
+.RS
+.PP
+\f[CB]jar\ \-\-create\ \-\-file\ classes.jar\ Foo.class\ Bar.class\f[R]
+.RE
+.RE
+.IP \[bu] 2
+Create an archive, \f[CB]classes.jar\f[R], by using an existing manifest,
+\f[CB]mymanifest\f[R], that contains all of the files in the directory
+\f[CB]foo/\f[R].
+.RS 2
+.RS
+.PP
+\f[CB]jar\ \-\-create\ \-\-file\ classes.jar\ \-\-manifest\ mymanifest\ \-C\ foo/\f[R]
+.RE
+.RE
+.IP \[bu] 2
+Create a modular JAR archive,\f[CB]foo.jar\f[R], where the module
+descriptor is located in \f[CB]classes/module\-info.class\f[R].
+.RS 2
+.RS
+.PP
+\f[CB]jar\ \-\-create\ \-\-file\ foo.jar\ \-\-main\-class\ com.foo.Main\ \-\-module\-version\ 1.0\ \-C\ foo/classes\ resources\f[R]
+.RE
+.RE
+.IP \[bu] 2
+Update an existing non\-modular JAR, \f[CB]foo.jar\f[R], to a modular JAR
+file.
+.RS 2
+.RS
+.PP
+\f[CB]jar\ \-\-update\ \-\-file\ foo.jar\ \-\-main\-class\ com.foo.Main\ \-\-module\-version\ 1.0\ \-C\ foo/module\-info.class\f[R]
+.RE
+.RE
+.IP \[bu] 2
+Create a versioned or multi\-release JAR, \f[CB]foo.jar\f[R], that places
+the files in the \f[CB]classes\f[R] directory at the root of the JAR, and
+the files in the \f[CB]classes\-10\f[R] directory in the
+\f[CB]META\-INF/versions/10\f[R] directory of the JAR.
+.RS 2
+.PP
+In this example, the \f[CB]classes/com/foo\f[R] directory contains two
+classes, \f[CB]com.foo.Hello\f[R] (the entry point class) and
+\f[CB]com.foo.NameProvider\f[R], both compiled for JDK 8.
+The \f[CB]classes\-10/com/foo\f[R] directory contains a different version
+of the \f[CB]com.foo.NameProvider\f[R] class, this one containing JDK 10
+specific code and compiled for JDK 10.
+.PP
+Given this setup, create a multirelease JAR file \f[CB]foo.jar\f[R] by
+running the following command from the directory containing the
+directories \f[CB]classes\f[R] and \f[CB]classes\-10\f[R] .
+.RS
+.PP
+\f[CB]jar\ \-\-create\ \-\-file\ foo.jar\ \-\-main\-class\ com.foo.Hello\ \-C\ classes\ .\ \-\-release\ 10\ \-C\ classes\-10\ .\f[R]
+.RE
+.PP
+The JAR file \f[CB]foo.jar\f[R] now contains:
+.IP
+.nf
+\f[CB]
+%\ jar\ \-tf\ foo.jar
-The following example, shows how to create a \f3classes\&.list\fR file with names of files from the current directory output by the \f3find\fR command:
-.sp
-.nf
-\f3find \&. \-name \&'*\&.class\&' \-print > classes\&.list\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-You can then execute the \f3jar\fR command and pass the \f3classes\&.list\fR file to it using the \fI@arg-file\fR syntax:
-.sp
-.nf
-\f3jar cf my\&.jar @classes\&.list\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-An argument file can be specified with a path, but any file names inside the argument file that have relative paths are relative to the current working directory of the \f3jar\fR command, not to the path passed in, for example:
-.sp
-.nf
-\f3jar @dir/classes\&.list\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.SH NOTES
-The \f3e\fR, \f3f\fR, and \f3m\fR options must appear in the same order on the command line as the \fIentrypoint\fR, \fIjarfile\fR, and \fImanifest\fR operands, for example:
-.sp
-.nf
-\f3jar cmef myManifestFile MyMainClass myFile\&.jar *\&.class\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH EXAMPLES
-\f3Example 1 Adding All Files From the Current Directory With Verbose Output\fR
-.sp
-.nf
-\f3% ls\fP
-.fi
-.nf
-\f31\&.au Animator\&.class monkey\&.jpg\fP
-.fi
-.nf
-\f32\&.au Wave\&.class spacemusic\&.au\fP
-.fi
-.nf
-\f33\&.au at_work\&.gif\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3% jar cvf bundle\&.jar *\fP
-.fi
-.nf
-\f3added manifest\fP
-.fi
-.nf
-\f3adding: 1\&.au(in = 2324) (out= 67)(deflated 97%)\fP
-.fi
-.nf
-\f3adding: 2\&.au(in = 6970) (out= 90)(deflated 98%)\fP
-.fi
-.nf
-\f3adding: 3\&.au(in = 11616) (out= 108)(deflated 99%)\fP
-.fi
-.nf
-\f3adding: Animator\&.class(in = 2266) (out= 66)(deflated 97%)\fP
-.fi
-.nf
-\f3adding: Wave\&.class(in = 3778) (out= 81)(deflated 97%)\fP
-.fi
-.nf
-\f3adding: at_work\&.gif(in = 6621) (out= 89)(deflated 98%)\fP
-.fi
-.nf
-\f3adding: monkey\&.jpg(in = 7667) (out= 91)(deflated 98%)\fP
-.fi
-.nf
-\f3adding: spacemusic\&.au(in = 3079) (out= 73)(deflated 97%)\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 2 Adding Files From Subdirectories\fR
-.sp
-.nf
-\f3% ls \-F\fP
-.fi
-.nf
-\f3audio/ classes/ images/\fP
-.fi
-.nf
-\f3% jar cvf bundle\&.jar audio classes images\fP
-.fi
-.nf
-\f3added manifest\fP
-.fi
-.nf
-\f3adding: audio/(in = 0) (out= 0)(stored 0%)\fP
-.fi
-.nf
-\f3adding: audio/1\&.au(in = 2324) (out= 67)(deflated 97%)\fP
-.fi
-.nf
-\f3adding: audio/2\&.au(in = 6970) (out= 90)(deflated 98%)\fP
-.fi
-.nf
-\f3adding: audio/3\&.au(in = 11616) (out= 108)(deflated 99%)\fP
-.fi
-.nf
-\f3adding: audio/spacemusic\&.au(in = 3079) (out= 73)(deflated 97%)\fP
-.fi
-.nf
-\f3adding: classes/(in = 0) (out= 0)(stored 0%)\fP
-.fi
-.nf
-\f3adding: classes/Animator\&.class(in = 2266) (out= 66)(deflated 97%)\fP
-.fi
-.nf
-\f3adding: classes/Wave\&.class(in = 3778) (out= 81)(deflated 97%)\fP
-.fi
-.nf
-\f3adding: images/(in = 0) (out= 0)(stored 0%)\fP
-.fi
-.nf
-\f3adding: images/monkey\&.jpg(in = 7667) (out= 91)(deflated 98%)\fP
-.fi
-.nf
-\f3adding: images/at_work\&.gif(in = 6621) (out= 89)(deflated 98%)\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3% ls \-F\fP
-.fi
-.nf
-\f3audio/ bundle\&.jar classes/ images/\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 3 Listing the Contents of JAR\fR
-.sp
-.nf
-\f3% jar tf bundle\&.jar\fP
-.fi
-.sp
-.sp
-.nf
-\f3META\-INF/\fP
-.fi
-.nf
-\f3META\-INF/MANIFEST\&.MF\fP
-.fi
-.nf
-\f3audio/1\&.au\fP
-.fi
-.nf
-\f3audio/2\&.au\fP
-.fi
-.nf
-\f3audio/3\&.au\fP
-.fi
-.nf
-\f3audio/spacemusic\&.au\fP
-.fi
-.nf
-\f3classes/Animator\&.class\fP
-.fi
-.nf
-\f3classes/Wave\&.class\fP
-.fi
-.nf
-\f3images/monkey\&.jpg\fP
-.fi
-.nf
-\f3images/at_work\&.gif\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 4 Adding an Index\fR
+META\-INF/
+META\-INF/MANIFEST.MF
+com/
+com/foo/
+com/foo/Hello.class
+com/foo/NameProvider.class
+META\-INF/versions/10/com/
+META\-INF/versions/10/com/foo/
+META\-INF/versions/10/com/foo/NameProvider.class
+\f[R]
+.fi
+.PP
+As well as other information, the file \f[CB]META\-INF/MANIFEST.MF\f[R],
+will contain the following lines to indicate that this is a multirelease
+JAR file with an entry point of \f[CB]com.foo.Hello\f[R].
+.IP
+.nf
+\f[CB]
+\&...
+Main\-Class:\ com.foo.Hello
+Multi\-Release:\ true
+\f[R]
+.fi
.PP
-Use the \f3i\fR option when you split the interdependent classes for a stock trade application into three JAR files: \f3main\&.jar\fR, \f3buy\&.jar\fR, and \f3sell\&.jar\fR\&. If you specify the \f3Class-Path\fR attribute in the \f3main\&.jar\fR manifest, then you can use the \f3i\fR option to speed up the class loading time for your application:
-.sp
-.nf
-\f3Class\-Path: buy\&.jar sell\&.jar\fP
-.fi
-.nf
-\f3jar i main\&.jar\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-An \f3INDEX\&.LIST\fR file is inserted to the \f3META-INF\fR directory\&. This enables the application class loader to download the specified JAR files when it is searching for classes or resources\&.
+Assuming that the \f[CB]com.foo.Hello\f[R] class calls a method on the
+\f[CB]com.foo.NameProvider\f[R] class, running the program using JDK 10
+will ensure that the \f[CB]com.foo.NameProvider\f[R] class is the one in
+\f[CB]META\-INF/versions/10/com/foo/\f[R].
+Running the program using JDK 8 will ensure that the
+\f[CB]com.foo.NameProvider\f[R] class is the one at the root of the JAR,
+in \f[CB]com/foo\f[R].
+.RE
+.IP \[bu] 2
+Create an archive, \f[CB]my.jar\f[R], by reading options and lists of
+class files from the file \f[CB]classes.list\f[R].
+.RS 2
.PP
-The application class loader uses the information stored in this file for efficient class loading\&. To copy directories, first compress files in \f3dir1\fR to \f3stdout\fR, then pipeline and extract from \f3stdin\fR to \f3dir2\fR (omitting the \f3-f\fR option from both \f3jar\fR commands):
-.sp
-.nf
-\f3(cd dir1; jar c \&.) | (cd dir2; jar x)\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-pack200(1)\&.
-.TP 0.2i
-\(bu
-The JAR section of The Java Tutorials at http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.html
+\f[B]Note:\f[R]
+.PP
+To shorten or simplify the \f[CB]jar\f[R] command, you can specify
+arguments in a separate text file and pass it to the \f[CB]jar\f[R]
+command with the at sign (\f[CB]\@\f[R]) as a prefix.
+.RS
+.PP
+\f[CB]jar\ \-\-create\ \-\-file\ my.jar\ \@classes.list\f[R]
.RE
-.br
-'pl 8.5i
-'bp
+.RE
--- a/src/jdk.jartool/share/man/jarsigner.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jartool/share/man/jarsigner.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,5 @@
-'\" t
-.\" Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+.\"t
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,789 +20,1370 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Security Tools
-.\" Title: jarsigner.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jarsigner 1 "21 November 2013" "JDK 8" "Security Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jarsigner \- Signs and verifies Java Archive (JAR) files\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjarsigner\fR [ \fIoptions\fR ] \fIjar\-file\fR \fIalias\fR
-.fi
-.nf
-
-\fBjarsigner\fR \fB\-verify\fR [ \fIoptions\fR ] \fIjar\-file\fR [\fIalias \&.\&.\&.\fR]
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
+.TH "JARSIGNER" "1" "2019" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jarsigner \- sign and verify Java Archive (JAR) files
+.SH SYNOPSIS
+.PP
+\f[CB]jarsigner\f[R] [\f[I]options\f[R]] \f[I]jar\-file\f[R] \f[I]alias\f[R]
+.PP
+\f[CB]jarsigner\f[R] \f[CB]\-verify\f[R] [\f[I]options\f[R]]
+\f[I]jar\-file\f[R] [\f[I]alias\f[R] ...]
+.TP
+.B \f[I]options\f[R]
+The command\-line options.
+See \f[B]Options for jarsigner\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-verify\f[R]
+The \f[CB]\-verify\f[R] option can take zero or more keystore alias names
+after the JAR file name.
+When the \f[CB]\-verify\f[R] option is specified, the \f[CB]jarsigner\f[R]
+command checks that the certificate used to verify each signed entry in
+the JAR file matches one of the keystore aliases.
+The aliases are defined in the keystore specified by \f[CB]\-keystore\f[R]
+or the default keystore.
+.RS
+.PP
+If you also specify the \f[CB]\-strict\f[R] option, and the
+\f[CB]jarsigner\f[R] command detects severe warnings, the message, "jar
+verified, with signer errors" is displayed.
+.RE
+.TP
+.B \f[I]jar\-file\f[R]
+The JAR file to be signed.
+.RS
+.PP
+If you also specified the \f[CB]\-strict\f[R] option, and the
+\f[CB]jarsigner\f[R] command detected severe warnings, the message, "jar
+signed, with signer errors" is displayed.
+.RE
.TP
--verify
-.br
-The \f3-verify\fR option can take zero or more keystore alias names after the JAR file name\&. When the \f3-verify\fR option is specified, the \f3jarsigner\fR command checks that the certificate used to verify each signed entry in the JAR file matches one of the keystore aliases\&. The aliases are defined in the keystore specified by \f3-keystore\fR or the default keystore\&.
-
-If you also specified the \f3-strict\fR option, and the \f3jarsigner\fR command detected severe warnings, the message, "jar verified, with signer errors" is displayed\&.
-.TP
-\fIjar-file\fR
-The JAR file to be signed\&.
-
-If you also specified the \f3-strict\fR option, and the \f3jarsigner\fR command detected severe warnings, the message, "jar signed, with signer errors" is displayed\&.
-.TP
-\fIalias\fR
-The aliases are defined in the keystore specified by \f3-keystore\fR or the default keystore\&.
-.SH DESCRIPTION
-The \f3jarsigner\fR tool has two purposes:
-.TP 0.2i
-\(bu
-To sign Java Archive (JAR) files\&.
-.TP 0.2i
-\(bu
-To verify the signatures and integrity of signed JAR files\&.
+.B \f[I]alias\f[R]
+The aliases are defined in the keystore specified by \f[CB]\-keystore\f[R]
+or the default keystore.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jarsigner\f[R] tool has two purposes:
+.IP \[bu] 2
+To sign Java Archive (JAR) files.
+.IP \[bu] 2
+To verify the signatures and integrity of signed JAR files.
+.PP
+The JAR feature enables the packaging of class files, images, sounds,
+and other digital data in a single file for faster and easier
+distribution.
+A tool named \f[CB]jar\f[R] enables developers to produce JAR files.
+(Technically, any ZIP file can also be considered a JAR file, although
+when created by the \f[CB]jar\f[R] command or processed by the
+\f[CB]jarsigner\f[R] command, JAR files also contain a
+\f[CB]META\-INF/MANIFEST.MF\f[R] file.)
.PP
-The JAR feature enables the packaging of class files, images, sounds, and other digital data in a single file for faster and easier distribution\&. A tool named \f3jar\fR enables developers to produce JAR files\&. (Technically, any zip file can also be considered a JAR file, although when created by the \f3jar\fR command or processed by the \f3jarsigner\fR command, JAR files also contain a \f3META-INF/MANIFEST\&.MF\fR file\&.)
+A digital signature is a string of bits that is computed from some data
+(the data being signed) and the private key of an entity (a person,
+company, and so on).
+Similar to a handwritten signature, a digital signature has many useful
+characteristics:
+.IP \[bu] 2
+Its authenticity can be verified by a computation that uses the public
+key corresponding to the private key used to generate the signature.
+.IP \[bu] 2
+It can\[aq]t be forged, assuming the private key is kept secret.
+.IP \[bu] 2
+It is a function of the data signed and thus can\[aq]t be claimed to be
+the signature for other data as well.
+.IP \[bu] 2
+The signed data can\[aq]t be changed.
+If the data is changed, then the signature can\[aq]t be verified as
+authentic.
+.PP
+To generate an entity\[aq]s signature for a file, the entity must first
+have a public/private key pair associated with it and one or more
+certificates that authenticate its public key.
+A certificate is a digitally signed statement from one entity that says
+that the public key of another entity has a particular value.
+.PP
+The \f[CB]jarsigner\f[R] command uses key and certificate information from
+a keystore to generate digital signatures for JAR files.
+A keystore is a database of private keys and their associated X.509
+certificate chains that authenticate the corresponding public keys.
+The \f[CB]keytool\f[R] command is used to create and administer keystores.
+.PP
+The \f[CB]jarsigner\f[R] command uses an entity\[aq]s private key to
+generate a signature.
+The signed JAR file contains, among other things, a copy of the
+certificate from the keystore for the public key corresponding to the
+private key used to sign the file.
+The \f[CB]jarsigner\f[R] command can verify the digital signature of the
+signed JAR file using the certificate inside it (in its signature block
+file).
+.PP
+The \f[CB]jarsigner\f[R] command can generate signatures that include a
+time stamp that enables a systems or deployer to check whether the JAR
+file was signed while the signing certificate was still valid.
+.PP
+In addition, APIs allow applications to obtain the timestamp
+information.
.PP
-A digital signature is a string of bits that is computed from some data (the data being signed) and the private key of an entity (a person, company, and so on)\&. Similar to a handwritten signature, a digital signature has many useful characteristics:
-.TP 0.2i
-\(bu
-Its authenticity can be verified by a computation that uses the public key corresponding to the private key used to generate the signature\&.
-.TP 0.2i
-\(bu
-It cannot be forged, assuming the private key is kept secret\&.
-.TP 0.2i
-\(bu
-It is a function of the data signed and thus cannot be claimed to be the signature for other data as well\&.
-.TP 0.2i
-\(bu
-The signed data cannot be changed\&. If the data is changed, then the signature cannot be verified as authentic\&.
+At this time, the \f[CB]jarsigner\f[R] command can only sign JAR files
+created by the \f[CB]jar\f[R] command or zip files.
+JAR files are the same as zip files, except they also have a
+\f[CB]META\-INF/MANIFEST.MF\f[R] file.
+A \f[CB]META\-INF/MANIFEST.MF\f[R] file is created when the
+\f[CB]jarsigner\f[R] command signs a zip file.
+.PP
+The default \f[CB]jarsigner\f[R] command behavior is to sign a JAR or zip
+file.
+Use the \f[CB]\-verify\f[R] option to verify a signed JAR file.
+.PP
+The \f[CB]jarsigner\f[R] command also attempts to validate the
+signer\[aq]s certificate after signing or verifying.
+If there is a validation error or any other problem, the command
+generates warning messages.
+If you specify the \f[CB]\-strict\f[R] option, then the command treats
+severe warnings as errors.
+See \f[B]Errors and Warnings\f[R].
+.SH KEYSTORE ALIASES
+.PP
+All keystore entities are accessed with unique aliases.
+.PP
+When you use the \f[CB]jarsigner\f[R] command to sign a JAR file, you must
+specify the alias for the keystore entry that contains the private key
+needed to generate the signature.
+If no output file is specified, it overwrites the original JAR file with
+the signed JAR file.
+.PP
+Keystores are protected with a password, so the store password must be
+specified.
+You are prompted for it when you don\[aq]t specify it on the command
+line.
+Similarly, private keys are protected in a keystore with a password, so
+the private key\[aq]s password must be specified, and you are prompted
+for the password when you don\[aq]t specify it on the command line and
+it isn\[aq]t the same as the store password.
+.SH KEYSTORE LOCATION
.PP
-To generate an entity\&'s signature for a file, the entity must first have a public/private key pair associated with it and one or more certificates that authenticate its public key\&. A certificate is a digitally signed statement from one entity that says that the public key of another entity has a particular value\&.
+The \f[CB]jarsigner\f[R] command has a \f[CB]\-keystore\f[R] option for
+specifying the URL of the keystore to be used.
+The keystore is by default stored in a file named \f[CB]\&.keystore\f[R]
+in the user\[aq]s home directory, as determined by the
+\f[CB]user.home\f[R] system property.
.PP
-The \f3jarsigner\fR command uses key and certificate information from a keystore to generate digital signatures for JAR files\&. A keystore is a database of private keys and their associated X\&.509 certificate chains that authenticate the corresponding public keys\&. The \f3keytool\fR command is used to create and administer keystores\&.
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] \f[CB]user.home\f[R] defaults to
+the user\[aq]s home directory.
.PP
-The \f3jarsigner\fR command uses an entity\&'s private key to generate a signature\&. The signed JAR file contains, among other things, a copy of the certificate from the keystore for the public key corresponding to the private key used to sign the file\&. The \f3jarsigner\fR command can verify the digital signature of the signed JAR file using the certificate inside it (in its signature block file)\&.
-.PP
-The \f3jarsigner\fR command can generate signatures that include a time stamp that lets a systems or deployer (including Java Plug-in) to check whether the JAR file was signed while the signing certificate was still valid\&. In addition, APIs allow applications to obtain the timestamp information\&.
+The input stream from the \f[CB]\-keystore\f[R] option is passed to the
+\f[CB]KeyStore.load\f[R] method.
+If \f[CB]NONE\f[R] is specified as the URL, then a null stream is passed
+to the \f[CB]KeyStore.load\f[R] method.
+\f[CB]NONE\f[R] should be specified when the \f[CB]KeyStore\f[R] class
+isn\[aq]t file based, for example, when it resides on a hardware token
+device.
+.SH KEYSTORE IMPLEMENTATION
.PP
-At this time, the \f3jarsigner\fR command can only sign JAR files created by the \f3jar\fR command or zip files\&. JAR files are the same as zip files, except they also have a \f3META-INF/MANIFEST\&.MF\fR file\&. A \f3META-INF/MANIFEST\&.MF\fR file is created when the \f3jarsigner\fR command signs a zip file\&.
+The \f[CB]KeyStore\f[R] class provided in the \f[CB]java.security\f[R]
+package supplies a number of well\-defined interfaces to access and
+modify the information in a keystore.
+You can have multiple different concrete implementations, where each
+implementation is for a particular type of keystore.
.PP
-The default \f3jarsigner\fR command behavior is to sign a JAR or zip file\&. Use the \f3-verify\fR option to verify a signed JAR file\&.
+Currently, there are two command\-line tools that use keystore
+implementations (\f[CB]keytool\f[R] and \f[CB]jarsigner\f[R]).
.PP
-The \f3jarsigner\fR command also attempts to validate the signer\&'s certificate after signing or verifying\&. If there is a validation error or any other problem, the command generates warning messages\&. If you specify the \f3-strict\fR option, then the command treats severe warnings as errors\&. See Errors and Warnings\&.
-.SS KEYSTORE\ ALIASES
-All keystore entities are accessed with unique aliases\&.
+The default keystore implementation is \f[CB]PKCS12\f[R].
+This is a cross platform keystore based on the RSA PKCS12 Personal
+Information Exchange Syntax Standard.
+This standard is primarily meant for storing or transporting a
+user\[aq]s private keys, certificates, and miscellaneous secrets.
+There is another built\-in implementation, provided by Oracle.
+It implements the keystore as a file with a proprietary keystore type
+(format) named \f[CB]JKS\f[R].
+It protects each private key with its individual password, and also
+protects the integrity of the entire keystore with a (possibly
+different) password.
.PP
-When you use the \f3jarsigner\fR command to sign a JAR file, you must specify the alias for the keystore entry that contains the private key needed to generate the signature\&. For example, the following command signs the JAR file named \f3MyJARFile\&.jar\fR with the private key associated with the alias \f3duke\fR in the keystore named \f3mystore\fR in the \f3working\fR directory\&. Because no output file is specified, it overwrites \f3MyJARFile\&.jar\fR with the signed JAR file\&.
-.sp
-.nf
-\f3jarsigner \-keystore /working/mystore \-storepass <keystore password>\fP
-.fi
-.nf
-\f3 \-keypass <private key password> MyJARFile\&.jar duke\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-Keystores are protected with a password, so the store password must be specified\&. You are prompted for it when you do not specify it on the command line\&. Similarly, private keys are protected in a keystore with a password, so the private key\&'s password must be specified, and you are prompted for the password when you do not specify it on the command line and it is not the same as the store password\&.
-.SS KEYSTORE\ LOCATION
-The \f3jarsigner\fR command has a \f3-keystore\fR option for specifying the URL of the keystore to be used\&. The keystore is by default stored in a file named \f3\&.keystore\fR in the user\&'s home directory, as determined by the \f3user\&.home\fR system property\&.
+Keystore implementations are provider\-based, which means the
+application interfaces supplied by the \f[CB]KeyStore\f[R] class are
+implemented in terms of a Service Provider Interface (SPI).
+There is a corresponding abstract \f[CB]KeystoreSpi\f[R] class, also in
+the \f[CB]java.security\ package\f[R], that defines the Service Provider
+Interface methods that providers must implement.
+The term provider refers to a package or a set of packages that supply a
+concrete implementation of a subset of services that can be accessed by
+the Java Security API.
+To provide a keystore implementation, clients must implement a provider
+and supply a \f[CB]KeystoreSpi\f[R] subclass implementation, as described
+in \f[B]How to Implement a Provider in the Java Cryptography
+Architecture\f[R]
+[https://www.oracle.com/pls/topic/lookup?ctx=en/java/javase/11/tools&id=JSSEC\-GUID\-2BCFDD85\-D533\-4E6C\-8CE9\-29990DEB0190].
.PP
-On Oracle Solaris systems, \f3user\&.home\fR defaults to the user\&'s home directory\&.
+Applications can choose different types of keystore implementations from
+different providers, with the \f[CB]getInstance\f[R] factory method in the
+\f[CB]KeyStore\f[R] class.
+A keystore type defines the storage and data format of the keystore
+information and the algorithms used to protect private keys in the
+keystore and the integrity of the keystore itself.
+Keystore implementations of different types aren\[aq]t compatible.
+.PP
+The \f[CB]jarsigner\f[R] commands can read file\-based keystores from any
+location that can be specified using a URL.
+In addition, these commands can read non\-file\-based keystores such as
+those provided by MSCAPI on Windows and PKCS11 on all platforms.
+.PP
+For the \f[CB]jarsigner\f[R] and \f[CB]keytool\f[R] commands, you can
+specify a keystore type at the command line with the
+\f[CB]\-storetype\f[R] option.
+.PP
+If you don\[aq]t explicitly specify a keystore type, then the tools
+choose a keystore implementation based on the value of the
+\f[CB]keystore.type\f[R] property specified in the security properties
+file.
+The security properties file is called \f[CB]java.security\f[R], and it
+resides in the JDK security properties directory,
+\f[CB]java.home/conf/security\f[R].
.PP
-The input stream from the \f3-keystore\fR option is passed to the \f3KeyStore\&.load\fR method\&. If \f3NONE\fR is specified as the URL, then a null stream is passed to the \f3KeyStore\&.load\fR method\&. \f3NONE\fR should be specified when the \f3KeyStore\fR class is not file based, for example, when it resides on a hardware token device\&.
-.SS KEYSTORE\ IMPLEMENTATION
-The \f3KeyStore\fR class provided in the \f3java\&.security\fR package supplies a number of well-defined interfaces to access and modify the information in a keystore\&. You can have multiple different concrete implementations, where each implementation is for a particular type of keystore\&.
+Each tool gets the \f[CB]keystore.type\f[R] value and then examines all
+the installed providers until it finds one that implements keystores of
+that type.
+It then uses the keystore implementation from that provider.
.PP
-Currently, there are two command-line tools that use keystore implementations (\f3keytool\fR and \f3jarsigner\fR), and a GUI-based tool named Policy Tool\&. Because the \f3KeyStore\fR class is publicly available, JDK users can write additional security applications that use it\&.
+The \f[CB]KeyStore\f[R] class defines a static method named
+\f[CB]getDefaultType\f[R] that lets applications retrieve the value of the
+\f[CB]keystore.type\f[R] property.
+The following line of code creates an instance of the default keystore
+type as specified in the \f[CB]keystore.type\f[R] property:
+.RS
.PP
-There is a built-in default implementation provided by Oracle that implements the keystore as a file, that uses a proprietary keystore type (format) named JKS\&. The built-in implementation protects each private key with its individual password and protects the integrity of the entire keystore with a (possibly different) password\&.
-.PP
-Keystore implementations are provider-based, which means the application interfaces supplied by the \f3KeyStore\fR class are implemented in terms of a Service Provider Interface (SPI)\&. There is a corresponding abstract \f3KeystoreSpi\fR class, also in the \f3java\&.security package\fR, that defines the Service Provider Interface methods that providers must implement\&. The term provider refers to a package or a set of packages that supply a concrete implementation of a subset of services that can be accessed by the Java Security API\&. To provide a keystore implementation, clients must implement a provider and supply a \f3KeystoreSpi\fR subclass implementation, as described in How to Implement a Provider in the Java Cryptography Architecture at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.html
+\f[CB]KeyStore\ keyStore\ =\ KeyStore.getInstance(KeyStore.getDefaultType());\f[R]
+.RE
.PP
-Applications can choose different types of keystore implementations from different providers, with the \f3getInstance\fR factory method in the \f3KeyStore\fR class\&. A keystore type defines the storage and data format of the keystore information and the algorithms used to protect private keys in the keystore and the integrity of the keystore itself\&. Keystore implementations of different types are not compatible\&.
+The default keystore type is \f[CB]pkcs12\f[R], which is a cross platform
+keystore based on the RSA PKCS12 Personal Information Exchange Syntax
+Standard.
+This is specified by the following line in the security properties file:
+.RS
.PP
-The \f3jarsigner\fR command can read file-based keystores from any location that can be specified using a URL\&. In addition, the command can read non-file-based keystores such as those provided by MSCAPI on Windows and PKCS11 on all platforms\&.
+\f[CB]keystore.type=pkcs12\f[R]
+.RE
+.PP
+Case doesn\[aq]t matter in keystore type designations.
+For example, \f[CB]JKS\f[R] is the same as \f[CB]jks\f[R].
.PP
-For the \f3jarsigner\fR and \f3keytool\fR commands, you can specify a keystore type at the command line with the \f3-storetype\fR option\&. For Policy Tool, you can specify a keystore type with the \fIEdit\fR command in the \fIKeyStore\fR menu\&.
+To have the tools utilize a keystore implementation other than the
+default, you can change that line to specify a different keystore type.
+For example, if you want to use the Oracle\[aq]s \f[CB]jks\f[R] keystore
+implementation, then change the line to the following:
+.RS
.PP
-If you do not explicitly specify a keystore type, then the tools choose a keystore implementation based on the value of the \f3keystore\&.type\fR property specified in the security properties file\&. The security properties file is called \f3java\&.security\fR, and it resides in the JDK security properties directory, \f3java\&.home/lib/security\fR, where \f3java\&.home\fR is the runtime environment\&'s directory\&. The \f3jre\fR directory in the JDK or the top-level directory of the Java Runtime Environment (JRE)\&.
+\f[CB]keystore.type=jks\f[R]
+.RE
+.SH SUPPORTED ALGORITHMS
.PP
-Each tool gets the \f3keystore\&.type\fR value and then examines all the installed providers until it finds one that implements keystores of that type\&. It then uses the keystore implementation from that provider\&.
+By default, the \f[CB]jarsigner\f[R] command signs a JAR file using one of
+the following algorithms files depending on the type and size of the
+private key:
.PP
-The \f3KeyStore\fR class defines a static method named \f3getDefaultType\fR that lets applications and applets retrieve the value of the \f3keystore\&.type\fR property\&. The following line of code creates an instance of the default keystore type as specified in the \f3keystore\&.type property\fR:
-.sp
-.nf
-\f3KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType());\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-The default keystore type is \f3jks\fR (the proprietary type of the keystore implementation provided by Oracle)\&. This is specified by the following line in the security properties file:
-.sp
-.nf
-\f3keystore\&.type=jks\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-Case does not matter in keystore type designations\&. For example, \f3JKS\fR is the same as \f3jks\fR\&.
+.TS
+tab(@);
+l l l.
+T{
+keyalg
+T}@T{
+keysize
+T}@T{
+default sigalg
+T}
+_
+T{
+DSA
+T}@T{
+any size
+T}@T{
+SHA256withDSA
+T}
+T{
+RSA \ \ \
+T}@T{
+<= 3072
+T}@T{
+SHA256withRSA
+T}
+T{
+T}@T{
+<= 7680
+T}@T{
+SHA384withRSA
+T}
+T{
+T}@T{
+> 7680
+T}@T{
+SHA512withRSA
+T}
+T{
+EC
+T}@T{
+< 384
+T}@T{
+SHA256withECDSA
+T}
+T{
+T}@T{
+< 512
+T}@T{
+SHA384withECDSA
+T}
+T{
+T}@T{
+= 512
+T}@T{
+SHA512withECDSA
+T}
+.TE
.PP
-To have the tools use a keystore implementation other than the default, change that line to specify a different keystore type\&. For example, if you have a provider package that supplies a keystore implementation for a keystore type called \f3pkcs12\fR, then change the line to the following:
-.sp
-.nf
-\f3keystore\&.type=pkcs12\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-\fINote:\fR If you use the PKCS 11 provider package, then see "KeyTool" and "JarSigner" in Java PKCS #11 Reference Guide at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/p11guide\&.html
-.SS SUPPORTED\ ALGORITHMS
-By default, the \f3jarsigner\fR command signs a JAR file using one of the following algorithms:
-.TP 0.2i
-\(bu
-Digital Signature Algorithm (DSA) with the SHA1 digest algorithm
-.TP 0.2i
-\(bu
-RSA algorithm with the SHA256 digest algorithm
-.TP 0.2i
-\(bu
-Elliptic Curve (EC) cryptography algorithm with the SHA256 with Elliptic Curve Digital Signature Algorithm (ECDSA)\&.
+These default signature algorithms can be overridden by using the
+\f[CB]\-sigalg\f[R] option.
.PP
-If the signer\&'s public and private keys are DSA keys, then \f3jarsigner\fR signs the JAR file with the \f3SHA1withDSA\fR algorithm\&. If the signer\&'s keys are RSA keys, then \f3jarsigner\fR attempts to sign the JAR file with the \f3SHA256withRSA\fR algorithm\&. If the signer\&'s keys are EC keys, then \f3jarsigner\fR signs the JAR file with the \f3SHA256withECDSA\fR algorithm\&.
+Signed JAR file algorithms are checked against the
+\f[CB]jdk.jar.disabledAlgorithms\f[R] security property during
+verification (\f[CB]\-verify\f[R]).
+If the JAR file was signed with any algorithms that are disabled, it
+will be treated as an unsigned JAR file.
+For detailed verification output, include
+\f[CB]\-J\-Djava.security.debug=jar\f[R].
+The default value for the \f[CB]jdk.jar.disabledAlgorithms\f[R] security
+property is defined in the \f[CB]java.security\f[R] file (located in the
+JRE\[aq]s \f[CB]$JAVA_HOME/conf/security\f[R] directory).
+.PP
+\f[B]Note:\f[R]
+.PP
+In order to improve out of the box security, default key size and
+signature algorithm names are periodically updated to stronger values
+with each release of the JDK.
+If interoperability with older releases of the JDK is important, please
+make sure the defaults are supported by those releases, or alternatively
+use the \f[CB]\-sigalg\f[R] option to override the default values at your
+own risk.
+.SH THE SIGNED JAR FILE
.PP
-These default signature algorithms can be overridden using the \f3-sigalg\fR option\&.
-.SS THE\ SIGNED\ JAR\ FILE
-When the \f3jarsigner\fR command is used to sign a JAR file, the output signed JAR file is exactly the same as the input JAR file, except that it has two additional files placed in the META-INF directory:
-.TP 0.2i
-\(bu
-A signature file with an \f3\&.SF\fR extension
-.TP 0.2i
-\(bu
-A signature block file with a \f3\&.DSA\fR, \f3\&.RSA\fR, or \f3\&.EC\fR extension
+When the \f[CB]jarsigner\f[R] command is used to sign a JAR file, the
+output signed JAR file is exactly the same as the input JAR file, except
+that it has two additional files placed in the META\-INF directory:
+.IP \[bu] 2
+A signature file with an \f[CB]\&.SF\f[R] extension
+.IP \[bu] 2
+A signature block file with a \f[CB]\&.DSA\f[R], \f[CB]\&.RSA\f[R], or
+\f[CB]\&.EC\f[R] extension
.PP
-The base file names for these two files come from the value of the \f3-sigFile\fR option\&. For example, when the option is \f3-sigFile MKSIGN\fR, the files are named \f3MKSIGN\&.SF\fR and \f3MKSIGN\&.DSA\fR
+The base file names for these two files come from the value of the
+\f[CB]\-sigfile\f[R] option.
+For example, when the option is \f[CB]\-sigfile\ MKSIGN\f[R], the files
+are named \f[CB]MKSIGN.SF\f[R] and \f[CB]MKSIGN.DSA\f[R]
.PP
-If no \f3-sigfile\fR option appears on the command line, then the base file name for the \f3\&.SF\fR and \f3\&.DSA\fR files is the first 8 characters of the alias name specified on the command line, all converted to uppercase\&. If the alias name has fewer than 8 characters, then the full alias name is used\&. If the alias name contains any characters that are not allowed in a signature file name, then each such character is converted to an underscore (_) character in forming the file name\&. Valid characters include letters, digits, underscores, and hyphens\&.
+If no \f[CB]\-sigfile\f[R] option appears on the command line, then the
+base file name for the \f[CB]\&.SF\f[R] and \f[CB]\&.DSA\f[R] files is the
+first 8 characters of the alias name specified on the command line, all
+converted to uppercase.
+If the alias name has fewer than 8 characters, then the full alias name
+is used.
+If the alias name contains any characters that aren\[aq]t allowed in a
+signature file name, then each such character is converted to an
+underscore (_) character in forming the file name.
+Valid characters include letters, digits, underscores, and hyphens.
+.SH SIGNATURE FILE
.PP
-Signature File
-
-A signature file (\f3\&.SF\fR file) looks similar to the manifest file that is always included in a JAR file when the \f3jarsigner\fR command is used to sign the file\&. For each source file included in the JAR file, the \f3\&.SF\fR file has three lines, such as in the manifest file, that list the following:
-.TP 0.2i
-\(bu
+A signature file (\f[CB]\&.SF\f[R] file) looks similar to the manifest
+file that is always included in a JAR file when the \f[CB]jarsigner\f[R]
+command is used to sign the file.
+For each source file included in the JAR file, the \f[CB]\&.SF\f[R] file
+has two lines, such as in the manifest file, that list the following:
+.IP \[bu] 2
File name
-.TP 0.2i
-\(bu
+.IP \[bu] 2
Name of the digest algorithm (SHA)
-.TP 0.2i
-\(bu
+.IP \[bu] 2
SHA digest value
.PP
-In the manifest file, the SHA digest value for each source file is the digest (hash) of the binary data in the source file\&. In the \f3\&.SF\fR file, the digest value for a specified source file is the hash of the three lines in the manifest file for the source file\&.
+\f[B]Note:\f[R]
+.PP
+The name of the digest algorithm (SHA) and the SHA digest value are on
+the same line.
+.PP
+In the manifest file, the SHA digest value for each source file is the
+digest (hash) of the binary data in the source file.
+In the \f[CB]\&.SF\f[R] file, the digest value for a specified source file
+is the hash of the two lines in the manifest file for the source file.
+.PP
+The signature file, by default, includes a header with a hash of the
+whole manifest file.
+The header also contains a hash of the manifest header.
+The presence of the header enables verification optimization.
+See \f[B]JAR File Verification\f[R].
+.SH SIGNATURE BLOCK FILE
+.PP
+The \f[CB]\&.SF\f[R] file is signed and the signature is placed in the
+signature block file.
+This file also contains, encoded inside it, the certificate or
+certificate chain from the keystore that authenticates the public key
+corresponding to the private key used for signing.
+The file has the extension \f[CB]\&.DSA\f[R], \f[CB]\&.RSA\f[R], or
+\f[CB]\&.EC\f[R], depending on the digest algorithm used.
+.SH SIGNATURE TIME STAMP
+.PP
+The \f[CB]jarsigner\f[R] command used with the following options generates
+and stores a signature time stamp when signing a JAR file:
+.IP \[bu] 2
+\f[CB]\-tsa\f[R] \f[I]url\f[R]
+.IP \[bu] 2
+\f[CB]\-tsacert\f[R] \f[I]alias\f[R]
+.IP \[bu] 2
+\f[CB]\-tsapolicyid\f[R] \f[I]policyid\f[R]
+.IP \[bu] 2
+\f[CB]\-tsadigestalg\f[R] \f[I]algorithm\f[R]
+.PP
+See \f[B]Options for jarsigner\f[R].
+.SH JAR FILE VERIFICATION
+.PP
+A successful JAR file verification occurs when the signatures are valid,
+and none of the files that were in the JAR file when the signatures were
+generated have changed since then.
+JAR file verification involves the following steps:
+.IP "1." 3
+Verify the signature of the \f[CB]\&.SF\f[R] file.
+.RS 4
.PP
-The signature file, by default, includes a header with a hash of the whole manifest file\&. The header also contains a hash of the manifest header\&. The presence of the header enables verification optimization\&. See JAR File Verification\&.
+The verification ensures that the signature stored in each signature
+block (\f[CB]\&.DSA\f[R]) file was generated using the private key
+corresponding to the public key whose certificate (or certificate chain)
+also appears in the \f[CB]\&.DSA\f[R] file.
+It also ensures that the signature is a valid signature of the
+corresponding signature (\f[CB]\&.SF\f[R]) file, and thus the
+\f[CB]\&.SF\f[R] file wasn\[aq]t tampered with.
+.RE
+.IP "2." 3
+Verify the digest listed in each entry in the \f[CB]\&.SF\f[R] file with
+each corresponding section in the manifest.
+.RS 4
+.PP
+The \f[CB]\&.SF\f[R] file by default includes a header that contains a
+hash of the entire manifest file.
+When the header is present, the verification can check to see whether or
+not the hash in the header matches the hash of the manifest file.
+If there is a match, then verification proceeds to the next step.
+.PP
+If there is no match, then a less optimized verification is required to
+ensure that the hash in each source file information section in the
+\f[CB]\&.SF\f[R] file equals the hash of its corresponding section in the
+manifest file.
+See Signature File.
+.PP
+One reason the hash of the manifest file that is stored in the
+\f[CB]\&.SF\f[R] file header might not equal the hash of the current
+manifest file is that one or more files were added to the JAR file (with
+the \f[CB]jar\f[R] tool) after the signature and \f[CB]\&.SF\f[R] file were
+generated.
+When the \f[CB]jar\f[R] tool is used to add files, the manifest file is
+changed by adding sections to it for the new files, but the
+\f[CB]\&.SF\f[R] file isn\[aq]t changed.
+A verification is still considered successful when none of the files
+that were in the JAR file when the signature was generated have been
+changed since then.
+This happens when the hashes in the non\-header sections of the
+\f[CB]\&.SF\f[R] file equal the hashes of the corresponding sections in
+the manifest file.
+.RE
+.IP "3." 3
+Read each file in the JAR file that has an entry in the \f[CB]\&.SF\f[R]
+file.
+While reading, compute the file\[aq]s digest and compare the result with
+the digest for this file in the manifest section.
+The digests should be the same or verification fails.
+.RS 4
.PP
-Signature Block File
-
-The \f3\&.SF\fR file is signed and the signature is placed in the signature block file\&. This file also contains, encoded inside it, the certificate or certificate chain from the keystore that authenticates the public key corresponding to the private key used for signing\&. The file has the extension \f3\&.DSA\fR, \f3\&.RSA\fR, or \f3\&.EC\fR, depending on the digest algorithm used\&.
-.SS SIGNATURE\ TIME\ STAMP
-The \f3jarsigner\fR command can generate and store a signature time stamp when signing a JAR file\&. In addition, \f3jarsigner\fR supports alternative signing mechanisms\&. This behavior is optional and is controlled by the user at the time of signing through these options\&. See Options\&.
-.sp
-.nf
-\f3\-tsa \fIurl\fR\fP
-.fi
-.nf
-\f3\-tsacert \fIalias\fR\fP
-.fi
-.nf
-\f3\-altsigner \fIclass\fR\fP
-.fi
-.nf
-\f3\-altsignerpath \fIclasspathlist\fR\fP
-.fi
-.nf
-\f3\-tsapolicyid \fIpolicyid\fR\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-.SS JAR\ FILE\ VERIFICATION
-A successful JAR file verification occurs when the signatures are valid, and none of the files that were in the JAR file when the signatures were generated have changed since then\&. JAR file verification involves the following steps:
-.TP 0.4i
-1\&.
-Verify the signature of the \f3\&.SF\fR file\&.
-
-The verification ensures that the signature stored in each signature block (\f3\&.DSA\fR) file was generated using the private key corresponding to the public key whose certificate (or certificate chain) also appears in the \f3\&.DSA\fR file\&. It also ensures that the signature is a valid signature of the corresponding signature (\f3\&.SF\fR) file, and thus the \f3\&.SF\fR file was not tampered with\&.
-.TP 0.4i
-2\&.
-Verify the digest listed in each entry in the \f3\&.SF\fR file with each corresponding section in the manifest\&.
-
-The \f3\&.SF\fR file by default includes a header that contains a hash of the entire manifest file\&. When the header is present, the verification can check to see whether or not the hash in the header matches the hash of the manifest file\&. If there is a match, then verification proceeds to the next step\&.
-
-If there is no match, then a less optimized verification is required to ensure that the hash in each source file information section in the \f3\&.SF\fR file equals the hash of its corresponding section in the manifest file\&. See Signature File\&.
-
-One reason the hash of the manifest file that is stored in the \f3\&.SF\fR file header might not equal the hash of the current manifest file is that one or more files were added to the JAR file (with the \f3jar\fR tool) after the signature and \f3\&.SF\fR file were generated\&. When the \f3jar\fR tool is used to add files, the manifest file is changed by adding sections to it for the new files, but the \f3\&.SF\fR file is not changed\&. A verification is still considered successful when none of the files that were in the JAR file when the signature was generated have been changed since then\&. This happens when the hashes in the non-header sections of the \f3\&.SF\fR file equal the hashes of the corresponding sections in the manifest file\&.
-.TP 0.4i
-3\&.
-Read each file in the JAR file that has an entry in the \f3\&.SF\fR file\&. While reading, compute the file\&'s digest and compare the result with the digest for this file in the manifest section\&. The digests should be the same or verification fails\&.
-
-If any serious verification failures occur during the verification process, then the process is stopped and a security exception is thrown\&. The \f3jarsigner\fR command catches and displays the exception\&.
+If any serious verification failures occur during the verification
+process, then the process is stopped and a security exception is thrown.
+The \f[CB]jarsigner\f[R] command catches and displays the exception.
+.RE
+.IP "4." 3
+Check for disabled algorithm usage.
+See \f[B]Supported Algorithms\f[R].
+.PP
+\f[B]Note:\f[R]
+.PP
+You should read any addition warnings (or errors if you specified the
+\f[CB]\-strict\f[R] option), as well as the content of the certificate (by
+specifying the \f[CB]\-verbose\f[R] and \f[CB]\-certs\f[R] options) to
+determine if the signature can be trusted.
+.SH MULTIPLE SIGNATURES FOR A JAR FILE
+.PP
+A JAR file can be signed by multiple people by running the
+\f[CB]jarsigner\f[R] command on the file multiple times and specifying the
+alias for a different person each time, as follows:
+.IP
+.nf
+\f[CB]
+jarsigner\ myBundle.jar\ susan
+jarsigner\ myBundle.jar\ kevin
+\f[R]
+.fi
+.PP
+When a JAR file is signed multiple times, there are multiple
+\f[CB]\&.SF\f[R] and \f[CB]\&.DSA\f[R] files in the resulting JAR file, one
+pair for each signature.
+In the previous example, the output JAR file includes files with the
+following names:
+.IP
+.nf
+\f[CB]
+SUSAN.SF
+SUSAN.DSA
+KEVIN.SF
+KEVIN.DSA
+\f[R]
+.fi
+.SH OPTIONS FOR JARSIGNER
+.PP
+The following sections describe the options for the \f[CB]jarsigner\f[R].
+Be aware of the following standards:
+.IP \[bu] 2
+All option names are preceded by a hyphen sign (\-).
+.IP \[bu] 2
+The options can be provided in any order.
+.IP \[bu] 2
+Items that are in italics or underlined (option values) represent the
+actual values that must be supplied.
+.IP \[bu] 2
+The \f[CB]\-storepass\f[R], \f[CB]\-keypass\f[R], \f[CB]\-sigfile\f[R],
+\f[CB]\-sigalg\f[R], \f[CB]\-digestalg\f[R], \f[CB]\-signedjar\f[R], and
+TSA\-related options are only relevant when signing a JAR file; they
+aren\[aq]t relevant when verifying a signed JAR file.
+The \f[CB]\-keystore\f[R] option is relevant for signing and verifying a
+JAR file.
+In addition, aliases are specified when signing and verifying a JAR
+file.
+.TP
+.B \f[CB]\-keystore\f[R] \f[I]url\f[R]
+Specifies the URL that tells the keystore location.
+This defaults to the file \f[CB]\&.keystore\f[R] in the user\[aq]s home
+directory, as determined by the \f[CB]user.home\f[R] system property.
+.RS
+.PP
+A keystore is required when signing.
+You must explicitly specify a keystore when the default keystore
+doesn\[aq]t exist or if you want to use one other than the default.
+.PP
+A keystore isn\[aq]t required when verifying, but if one is specified or
+the default exists and the \f[CB]\-verbose\f[R] option was also specified,
+then additional information is output regarding whether or not any of
+the certificates used to verify the JAR file are contained in that
+keystore.
+.PP
+The \f[CB]\-keystore\f[R] argument can be a file name and path
+specification rather than a URL, in which case it is treated the same as
+a file: URL, for example, the following are equivalent:
+.IP \[bu] 2
+\f[CB]\-keystore\f[R] \f[I]filePathAndName\f[R]
+.IP \[bu] 2
+\f[CB]\-keystore\ file:\f[R]\f[I]filePathAndName\f[R]
+.PP
+If the Sun PKCS #11 provider was configured in the
+\f[CB]java.security\f[R] security properties file (located in the
+JRE\[aq]s \f[CB]$JAVA_HOME/conf/security\f[R] directory), then the
+\f[CB]keytool\f[R] and \f[CB]jarsigner\f[R] tools can operate on the PKCS
+#11 token by specifying these options:
+.RS
+.PP
+\f[CB]\-keystore\ NONE\ \-storetype\ PKCS11\f[R]
+.RE
+.PP
+For example, the following command lists the contents of the configured
+PKCS#11 token:
+.RS
+.PP
+\f[CB]keytool\ \-keystore\ NONE\ \-storetype\ PKCS11\ \-list\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-storepass\f[R] [\f[CB]:env\f[R] | \f[CB]:file\f[R]] \f[I]argument\f[R]
+Specifies the password that is required to access the keystore.
+This is only needed when signing (not verifying) a JAR file.
+In that case, if a \f[CB]\-storepass\f[R] option isn\[aq]t provided at the
+command line, then the user is prompted for the password.
+.RS
.PP
-\fINote:\fR You should read any addition warnings (or errors if you specified the \f3-strict\fR option), as well as the content of the certificate (by specifying the \f3-verbose\fR and \f3-certs\fR options) to determine if the signature can be trusted\&.
-.SS MULTIPLE\ SIGNATURES\ FOR\ A\ JAR\ FILE
-A JAR file can be signed by multiple people by running the \f3jarsigner\fR command on the file multiple times and specifying the alias for a different person each time, as follows:
-.sp
-.nf
-\f3jarsigner myBundle\&.jar susan\fP
-.fi
-.nf
-\f3jarsigner myBundle\&.jar kevin\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-When a JAR file is signed multiple times, there are multiple \f3\&.SF\fR and \f3\&.DSA\fR files in the resulting JAR file, one pair for each signature\&. In the previous example, the output JAR file includes files with the following names:
-.sp
-.nf
-\f3SUSAN\&.SF\fP
-.fi
-.nf
-\f3SUSAN\&.DSA\fP
-.fi
-.nf
-\f3KEVIN\&.SF\fP
-.fi
-.nf
-\f3KEVIN\&.DSA\fP
-.fi
-.sp
-.SH OPTIONS
-The following sections describe the various \f3jarsigner\fR options\&. Be aware of the following standards:
-.TP 0.2i
-\(bu
-All option names are preceded by a minus sign (-)\&.
-.TP 0.2i
-\(bu
-The options can be provided in any order\&.
-.TP 0.2i
-\(bu
-Items that are in italics or underlined (option values) represent the actual values that must be supplied\&.
-.TP 0.2i
-\(bu
-The \f3-storepass\fR, \f3-keypass\fR, \f3-sigfile\fR, \f3-sigalg\fR, \f3-digestalg\fR, \f3-signedjar\fR, and TSA-related options are only relevant when signing a JAR file; they are not relevant when verifying a signed JAR file\&. The \f3-keystore\fR option is relevant for signing and verifying a JAR file\&. In addition, aliases are specified when signing and verifying a JAR file\&.
+If the modifier \f[CB]env\f[R] or \f[CB]file\f[R] isn\[aq]t specified, then
+the password has the value \f[CB]argument\f[R].
+Otherwise, the password is retrieved as follows:
+.IP \[bu] 2
+\f[CB]env\f[R]: Retrieve the password from the environment variable named
+\f[I]argument\f[R].
+.IP \[bu] 2
+\f[CB]file\f[R]: Retrieve the password from the file named
+\f[I]argument\f[R].
+.PP
+\f[B]Note:\f[R]
+.PP
+The password shouldn\[aq]t be specified on the command line or in a
+script unless it is for testing purposes, or you are on a secure system.
+.RE
+.TP
+.B \f[CB]\-storetype\f[R] \f[I]storetype\f[R]
+Specifies the type of keystore to be instantiated.
+The default keystore type is the one that is specified as the value of
+the \f[CB]keystore.type\f[R] property in the security properties file,
+which is returned by the static \f[CB]getDefaultType\f[R] method in
+\f[CB]java.security.KeyStore\f[R].
+.RS
+.PP
+The PIN for a PKCS #11 token can also be specified with the
+\f[CB]\-storepass\f[R] option.
+If none is specified, then the \f[CB]keytool\f[R] and \f[CB]jarsigner\f[R]
+commands prompt for the token PIN.
+If the token has a protected authentication path (such as a dedicated
+PIN\-pad or a biometric reader), then the \f[CB]\-protected\f[R] option
+must be specified and no password options can be specified.
+.RE
+.TP
+.B \f[CB]\-keypass\f[R] [\f[CB]:env\f[R] | \f[CB]:file\f[R]] \f[I]argument\f[R] \f[CB]\-certchain\f[R] \f[I]file\f[R]
+Specifies the password used to protect the private key of the keystore
+entry addressed by the alias specified on the command line.
+The password is required when using \f[CB]jarsigner\f[R] to sign a JAR
+file.
+If no password is provided on the command line, and the required
+password is different from the store password, then the user is prompted
+for it.
+.RS
+.PP
+If the modifier \f[CB]env\f[R] or \f[CB]file\f[R] isn\[aq]t specified, then
+the password has the value \f[CB]argument\f[R].
+Otherwise, the password is retrieved as follows:
+.IP \[bu] 2
+\f[CB]env\f[R]: Retrieve the password from the environment variable named
+\f[I]argument\f[R].
+.IP \[bu] 2
+\f[CB]file\f[R]: Retrieve the password from the file named
+\f[I]argument\f[R].
+.PP
+\f[B]Note:\f[R]
+.PP
+The password shouldn\[aq]t be specified on the command line or in a
+script unless it is for testing purposes, or you are on a secure system.
+.RE
+.TP
+.B \f[CB]\-certchain\f[R] \f[I]file\f[R]
+Specifies the certificate chain to be used when the certificate chain
+associated with the private key of the keystore entry that is addressed
+by the alias specified on the command line isn\[aq]t complete.
+This can happen when the keystore is located on a hardware token where
+there isn\[aq]t enough capacity to hold a complete certificate chain.
+The file can be a sequence of concatenated X.509 certificates, or a
+single PKCS#7 formatted data block, either in binary encoding format or
+in printable encoding format (also known as Base64 encoding) as defined
+by \f[B]Internet RFC 1421 Certificate Encoding Standard\f[R]
+[http://tools.ietf.org/html/rfc1421].
+.RS
+.RE
+.TP
+.B \f[CB]\-sigfile\f[R] \f[I]file\f[R]
+Specifies the base file name to be used for the generated \f[CB]\&.SF\f[R]
+and \f[CB]\&.DSA\f[R] files.
+For example, if file is \f[CB]DUKESIGN\f[R], then the generated
+\f[CB]\&.SF\f[R] and \f[CB]\&.DSA\f[R] files are named \f[CB]DUKESIGN.SF\f[R]
+and \f[CB]DUKESIGN.DSA\f[R], and placed in the \f[CB]META\-INF\f[R]
+directory of the signed JAR file.
+.RS
+.PP
+The characters in the file must come from the set
+\f[CB]a\-zA\-Z0\-9_\-\f[R].
+Only letters, numbers, underscore, and hyphen characters are allowed.
+All lowercase characters are converted to uppercase for the
+\f[CB]\&.SF\f[R] and \f[CB]\&.DSA\f[R] file names.
+.PP
+If no \f[CB]\-sigfile\f[R] option appears on the command line, then the
+base file name for the \f[CB]\&.SF\f[R] and \f[CB]\&.DSA\f[R] files is the
+first 8 characters of the alias name specified on the command line, all
+converted to upper case.
+If the alias name has fewer than 8 characters, then the full alias name
+is used.
+If the alias name contains any characters that aren\[aq]t valid in a
+signature file name, then each such character is converted to an
+underscore (_) character to form the file name.
+.RE
+.TP
+.B \f[CB]\-signedjar\f[R] \f[I]file\f[R]
+Specifies the name of signed JAR file.
+.RS
+.RE
.TP
--keystore \fIurl\fR
-.br
-Specifies the URL that tells the keystore location\&. This defaults to the file \f3\&.keystore\fR in the user\&'s home directory, as determined by the \f3user\&.home\fR system property\&.
-
-A keystore is required when signing\&. You must explicitly specify a keystore when the default keystore does not exist or if you want to use one other than the default\&.
-
-A keystore is not required when verifying, but if one is specified or the default exists and the \f3-verbose\fR option was also specified, then additional information is output regarding whether or not any of the certificates used to verify the JAR file are contained in that keystore\&.
-
-The \f3-keystore\fR argument can be a file name and path specification rather than a URL, in which case it is treated the same as a file: URL, for example, the following are equivalent:
-.sp
-.nf
-\f3\-keystore \fIfilePathAndName\fR\fP
-.fi
-.nf
-\f3\-keystore file:\fIfilePathAndName\fR\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-
-
-If the Sun PKCS #11 provider was configured in the \f3java\&.security\fR security properties file (located in the JRE\&'s \f3$JAVA_HOME/lib/security directory\fR), then the \f3keytool\fR and \f3jarsigner\fR tools can operate on the PKCS #11 token by specifying these options:
-.sp
-.nf
-\f3\-keystore NONE\fP
-.fi
-.nf
-\f3\-storetype PKCS11\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-
-
-For example, the following command lists the contents of the configured PKCS#11 token:
-.sp
-.nf
-\f3keytool \-keystore NONE \-storetype PKCS11 \-list\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-
+.B \f[CB]\-digestalg\f[R] \f[I]algorithm\f[R]
+Specifies the name of the message digest algorithm to use when digesting
+the entries of a JAR file.
+.RS
+.PP
+For a list of standard message digest algorithm names, see Java Security
+Standard Algorithm Names.
+.PP
+If this option isn\[aq]t specified, then \f[CB]SHA256\f[R] is used.
+There must either be a statically installed provider supplying an
+implementation of the specified algorithm or the user must specify one
+with the \f[CB]\-addprovider\f[R] or \f[CB]\-providerClass\f[R] options;
+otherwise, the command will not succeed.
+.RE
+.TP
+.B \f[CB]\-sigalg\f[R] \f[I]algorithm\f[R]
+Specifies the name of the signature algorithm to use to sign the JAR
+file.
+.RS
+.PP
+This algorithm must be compatible with the private key used to sign the
+JAR file.
+If this option isn\[aq]t specified, then use a default algorithm
+matching the private key as described in the \f[B]Supported
+Algorithms\f[R] section.
+There must either be a statically installed provider supplying an
+implementation of the specified algorithm or you must specify one with
+the \f[CB]\-addprovider\f[R] or \f[CB]\-providerClass\f[R] option;
+otherwise, the command doesn\[aq]t succeed.
+.PP
+For a list of standard message digest algorithm names, see Java Security
+Standard Algorithm Names.
+.RE
+.TP
+.B \f[CB]\-verify\f[R]
+Verifies a signed JAR file.
+.RS
+.RE
+.TP
+.B \f[CB]\-verbose\f[R][\f[CB]:\f[R]\f[I]suboptions\f[R]]
+When the \f[CB]\-verbose\f[R] option appears on the command line, it
+indicates that the \f[CB]jarsigner\f[R] use the verbose mode when signing
+or verifying with the suboptions determining how much information is
+shown.
+This causes the , which causes \f[CB]jarsigner\f[R] to output extra
+information about the progress of the JAR signing or verification.
+The \f[I]suboptions\f[R] can be \f[CB]all\f[R], \f[CB]grouped\f[R], or
+\f[CB]summary\f[R].
+.RS
+.PP
+If the \f[CB]\-certs\f[R] option is also specified, then the default mode
+(or suboption \f[CB]all\f[R]) displays each entry as it is being
+processed, and after that, the certificate information for each signer
+of the JAR file.
+.PP
+If the \f[CB]\-certs\f[R] and the \f[CB]\-verbose:grouped\f[R] suboptions
+are specified, then entries with the same signer info are grouped and
+displayed together with their certificate information.
+.PP
+If \f[CB]\-certs\f[R] and the \f[CB]\-verbose:summary\f[R] suboptions are
+specified, then entries with the same signer information are grouped and
+displayed together with their certificate information.
+.PP
+Details about each entry are summarized and displayed as \f[I]one entry
+(and more)\f[R].
+See \f[B]Example of Verifying a Signed JAR File\f[R] and \f[B]Example of
+Verification with Certificate Information\f[R].
+.RE
+.TP
+.B \f[CB]\-certs\f[R]
+If the \f[CB]\-certs\f[R] option appears on the command line with the
+\f[CB]\-verify\f[R] and \f[CB]\-verbose\f[R] options, then the output
+includes certificate information for each signer of the JAR file.
+This information includes the name of the type of certificate (stored in
+the \f[CB]\&.DSA\f[R] file) that certifies the signer\[aq]s public key,
+and if the certificate is an X.509 certificate (an instance of the
+\f[CB]java.security.cert.X509Certificate\f[R]), then the distinguished
+name of the signer.
+.RS
+.PP
+The keystore is also examined.
+If no keystore value is specified on the command line, then the default
+keystore file (if any) is checked.
+If the public key certificate for a signer matches an entry in the
+keystore, then the alias name for the keystore entry for that signer is
+displayed in parentheses.
+.RE
+.TP
+.B \f[CB]\-tsa\f[R] \f[I]url\f[R]
+If \f[CB]\-tsa\ http://example.tsa.url\f[R] appears on the command line
+when signing a JAR file then a time stamp is generated for the
+signature.
+The URL, \f[CB]http://example.tsa.url\f[R], identifies the location of the
+Time Stamping Authority (TSA) and overrides any URL found with the
+\f[CB]\-tsacert\f[R] option.
+The \f[CB]\-tsa\f[R] option doesn\[aq]t require the TSA public key
+certificate to be present in the keystore.
+.RS
+.PP
+To generate the time stamp, \f[CB]jarsigner\f[R] communicates with the TSA
+with the Time\-Stamp Protocol (TSP) defined in RFC 3161.
+When successful, the time stamp token returned by the TSA is stored with
+the signature in the signature block file.
+.RE
+.TP
+.B \f[CB]\-tsacert\f[R] \f[I]alias\f[R]
+When \f[CB]\-tsacert\f[R] \f[I]alias\f[R] appears on the command line when
+signing a JAR file, a time stamp is generated for the signature.
+The alias identifies the TSA public key certificate in the keystore that
+is in effect.
+The entry\[aq]s certificate is examined for a Subject Information Access
+extension that contains a URL identifying the location of the TSA.
+.RS
+.PP
+The TSA public key certificate must be present in the keystore when
+using the \f[CB]\-tsacert\f[R] option.
+.RE
.TP
--storetype \fIstoretype\fR
-.br
-Specifies the type of keystore to be instantiated\&. The default keystore type is the one that is specified as the value of the \f3keystore\&.type\fR property in the security properties file, which is returned by the static \f3getDefaultType\fR method in \f3java\&.security\&.KeyStore\fR\&.
-
-The PIN for a PCKS #11 token can also be specified with the \f3-storepass\fR option\&. If none is specified, then the \f3keytool\fR and \f3jarsigner\fR commands prompt for the token PIN\&. If the token has a protected authentication path (such as a dedicated PIN-pad or a biometric reader), then the \f3-protected\fR option must be specified and no password options can be specified\&.
+.B \f[CB]\-tsapolicyid\f[R] \f[I]policyid\f[R]
+Specifies the object identifier (OID) that identifies the policy ID to
+be sent to the TSA server.
+If this option isn\[aq]t specified, no policy ID is sent and the TSA
+server will choose a default policy ID.
+.RS
+.PP
+Object identifiers are defined by X.696, which is an ITU
+Telecommunication Standardization Sector (ITU\-T) standard.
+These identifiers are typically period\-separated sets of non\-negative
+digits like \f[CB]1.2.3.4\f[R], for example.
+.RE
+.TP
+.B \f[CB]\-tsadigestalg\f[R] \f[I]algorithm\f[R]
+Specifies the message digest algorithm that is used to generate the
+message imprint to be sent to the TSA server.
+If this option isn\[aq]t specified, SHA\-256 will be used.
+.RS
+.PP
+See \f[B]Supported Algorithms\f[R].
+.PP
+For a list of standard message digest algorithm names, see Java Security
+Standard Algorithm Names.
+.RE
.TP
--storepass[:env | :file] \fIargument\fR
-.br
-Specifies the password that is required to access the keystore\&. This is only needed when signing (not verifying) a JAR file\&. In that case, if a \f3-storepass\fR option is not provided at the command line, then the user is prompted for the password\&.
-
-If the modifier \f3env\fR or \f3file\fR is not specified, then the password has the value \fIargument\fR\&. Otherwise, the password is retrieved as follows:
-.RS
-.TP 0.2i
-\(bu
-\f3env\fR: Retrieve the password from the environment variable named \f3argument\fR\&.
-.TP 0.2i
-\(bu
-\f3file\fR: Retrieve the password from the file named \f3argument\fR\&.
-.RE
-
-
-\fINote:\fR The password should not be specified on the command line or in a script unless it is for testing purposes, or you are on a secure system\&.
+.B \f[CB]\-internalsf\f[R]
+In the past, the \f[CB]\&.DSA\f[R] (signature block) file generated when a
+JAR file was signed included a complete encoded copy of the
+\f[CB]\&.SF\f[R] file (signature file) also generated.
+This behavior has been changed.
+To reduce the overall size of the output JAR file, the \f[CB]\&.DSA\f[R]
+file by default doesn\[aq]t contain a copy of the \f[CB]\&.SF\f[R] file
+anymore.
+If \f[CB]\-internalsf\f[R] appears on the command line, then the old
+behavior is utilized.
+This option is useful for testing.
+In practice, don\[aq]t use the \f[CB]\-internalsf\f[R] option because it
+incurs higher overhead.
+.RS
+.RE
+.TP
+.B \f[CB]\-sectionsonly\f[R]
+If the \f[CB]\-sectionsonly\f[R] option appears on the command line, then
+the \f[CB]\&.SF\f[R] file (signature file) generated when a JAR file is
+signed doesn\[aq]t include a header that contains a hash of the whole
+manifest file.
+It contains only the information and hashes related to each individual
+source file included in the JAR file.
+See Signature File.
+.RS
+.PP
+By default, this header is added, as an optimization.
+When the header is present, whenever the JAR file is verified, the
+verification can first check to see whether the hash in the header
+matches the hash of the whole manifest file.
+When there is a match, verification proceeds to the next step.
+When there is no match, it is necessary to do a less optimized
+verification that the hash in each source file information section in
+the \f[CB]\&.SF\f[R] file equals the hash of its corresponding section in
+the manifest file.
+See \f[B]JAR File Verification\f[R].
+.PP
+The \f[CB]\-sectionsonly\f[R] option is primarily used for testing.
+It shouldn\[aq]t be used other than for testing because using it incurs
+higher overhead.
+.RE
+.TP
+.B \f[CB]\-protected\f[R]
+Values can be either \f[CB]true\f[R] or \f[CB]false\f[R].
+Specify \f[CB]true\f[R] when a password must be specified through a
+protected authentication path such as a dedicated PIN reader.
+.RS
+.RE
.TP
--keypass [:env | :file] \fIargument\fR
-.br
-Specifies the password used to protect the private key of the keystore entry addressed by the alias specified on the command line\&. The password is required when using \f3jarsigner\fR to sign a JAR file\&. If no password is provided on the command line, and the required password is different from the store password, then the user is prompted for it\&.
-
-If the modifier \f3env\fR or \f3file\fR is not specified, then the password has the value \f3argument\fR\&. Otherwise, the password is retrieved as follows:
-.RS
-.TP 0.2i
-\(bu
-\f3env\fR: Retrieve the password from the environment variable named \f3argument\fR\&.
-.TP 0.2i
-\(bu
-\f3file\fR: Retrieve the password from the file named \f3argument\fR\&.
-.RE
-
-
-\fINote:\fR The password should not be specified on the command line or in a script unless it is for testing purposes, or you are on a secure system\&.
+.B \f[CB]\-providerName\f[R] \f[I]providerName\f[R]
+If more than one provider was configured in the \f[CB]java.security\f[R]
+security properties file, then you can use the \f[CB]\-providerName\f[R]
+option to target a specific provider instance.
+The argument to this option is the name of the provider.
+.RS
+.PP
+For the Oracle PKCS #11 provider, \f[I]providerName\f[R] is of the form
+\f[CB]SunPKCS11\-\f[R]\f[I]TokenName\f[R], where \f[I]TokenName\f[R] is the
+name suffix that the provider instance has been configured with, as
+detailed in the configuration attributes table.
+For example, the following command lists the contents of the
+\f[CB]PKCS\ #11\f[R] keystore provider instance with name suffix
+\f[CB]SmartCard\f[R]:
+.RS
+.PP
+\f[CB]jarsigner\ \-keystore\ NONE\ \-storetype\ PKCS11\ \-providerName\ SunPKCS11\-SmartCard\ \-list\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-addprovider\f[R] \f[I]name\f[R] [\f[CB]\-providerArg\f[R] \f[I]arg\f[R]]
+Adds a security provider by name (such as SunPKCS11) and an optional
+configure argument.
+The value of the security provider is the name of a security provider
+that is defined in a module.
+.RS
+.PP
+Used with the \f[CB]\-providerArg\ ConfigFilePath\f[R] option, the
+\f[CB]keytool\f[R] and \f[CB]jarsigner\f[R] tools install the provider
+dynamically and use \f[CB]ConfigFilePath\f[R] for the path to the token
+configuration file.
+The following example shows a command to list a \f[CB]PKCS\ #11\f[R]
+keystore when the Oracle PKCS #11 provider wasn\[aq]t configured in the
+security properties file.
+.RS
+.PP
+\f[CB]jarsigner\ \-keystore\ NONE\ \-storetype\ PKCS11\ \-addprovider\ SunPKCS11\ \-providerArg\ /mydir1/mydir2/token.config\f[R]
+.RE
+.RE
.TP
--sigfile \fIfile\fR
-.br
-Specifies the base file name to be used for the generated \f3\&.SF\fR and \f3\&.DSA\fR files\&. For example, if file is \f3DUKESIGN\fR, then the generated \f3\&.SF\fR and \f3\&.DSA\fR files are named \f3DUKESIGN\&.SF\fR and \f3DUKESIGN\&.DSA\fR, and placed in the \f3META-INF\fR directory of the signed JAR file\&.
-
-The characters in the file must come from the set \f3a-zA-Z0-9_-\fR\&. Only letters, numbers, underscore, and hyphen characters are allowed\&. All lowercase characters are converted to uppercase for the \f3\&.SF\fR and \f3\&.DSA\fR file names\&.
-
-If no \f3-sigfile\fR option appears on the command line, then the base file name for the \f3\&.SF\fR and \f3\&.DSA\fR files is the first 8 characters of the alias name specified on the command line, all converted to upper case\&. If the alias name has fewer than 8 characters, then the full alias name is used\&. If the alias name contains any characters that are not valid in a signature file name, then each such character is converted to an underscore (_) character to form the file name\&.
+.B \f[CB]\-providerClass\f[R] \f[I]provider\-class\-name\f[R] [\f[CB]\-providerArg\f[R] \f[I]arg\f[R]]
+Used to specify the name of cryptographic service provider\[aq]s master
+class file when the service provider isn\[aq]t listed in the
+\f[CB]java.security\f[R] security properties file.
+Adds a security provider by fully\-qualified class name and an optional
+configure argument.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+The preferred way to load PKCS11 is by using modules.
+See \f[CB]\-addprovider\f[R].
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]javaoption\f[R]
+Passes through the specified \f[I]javaoption\f[R] string directly to the
+Java interpreter.
+The \f[CB]jarsigner\f[R] command is a wrapper around the interpreter.
+This option shouldn\[aq]t contain any spaces.
+It is useful for adjusting the execution environment or memory usage.
+For a list of possible interpreter options, type \f[CB]java\ \-h\f[R] or
+\f[CB]java\ \-X\f[R] at the command line.
+.RS
+.RE
.TP
--sigalg \fIalgorithm\fR
-.br
-Specifies the name of the signature algorithm to use to sign the JAR file\&.
-
-For a list of standard signature algorithm names, see "Appendix A: Standard Names" in the Java Cryptography Architecture (JCA) Reference Guide at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppA
-
-This algorithm must be compatible with the private key used to sign the JAR file\&. If this option is not specified, then \f3SHA1withDSA\fR, \f3SHA256withRSA\fR, or \f3SHA256withECDSA\fR are used depending on the type of private key\&. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the \f3-providerClass\fR option; otherwise, the command will not succeed\&.
+.B \f[CB]\-strict\f[R]
+During the signing or verifying process, the command may issue warning
+messages.
+If you specify this option, the exit code of the tool reflects the
+severe warning messages that this command found.
+See \f[B]Errors and Warnings\f[R].
+.RS
+.RE
.TP
--digestalg \fIalgorithm\fR
-.br
-Specifies the name of the message digest algorithm to use when digesting the entries of a JAR file\&.
-
-For a list of standard message digest algorithm names, see "Appendix A: Standard Names" in the Java Cryptography Architecture (JCA) Reference Guide at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppA
-
-If this option is not specified, then \f3SHA256\fR is used\&. There must either be a statically installed provider supplying an implementation of the specified algorithm or the user must specify one with the \f3-providerClass\fR option; otherwise, the command will not succeed\&.
+.B \f[CB]\-conf\f[R] \f[I]url\f[R]
+Specifies a pre\-configured options file.
+Read the \f[B]keytool documentation\f[R] for details.
+The property keys supported are "jarsigner.all" for all actions,
+"jarsigner.sign" for signing, and "jarsigner.verify" for verification.
+\f[CB]jarsigner\f[R] arguments including the JAR file name and alias
+name(s) cannot be set in this file.
+.RS
+.RE
+.SH DEPRECATED OPTIONS
+.PP
+The following \f[CB]jarsigner\f[R] options are deprecated as of JDK 9 and
+might be removed in a future JDK release.
.TP
--certs
-.br
-If the \f3-certs\fR option appears on the command line with the \f3-verify\fR and \f3-verbose\fR options, then the output includes certificate information for each signer of the JAR file\&. This information includes the name of the type of certificate (stored in the \f3\&.DSA\fR file) that certifies the signer\&'s public key, and if the certificate is an X\&.509 certificate (an instance of the \f3java\&.security\&.cert\&.X509Certificate\fR), then the distinguished name of the signer\&.
-
-The keystore is also examined\&. If no keystore value is specified on the command line, then the default keystore file (if any) is checked\&. If the public key certificate for a signer matches an entry in the keystore, then the alias name for the keystore entry for that signer is displayed in parentheses\&.
+.B \f[CB]\-altsigner\f[R] \f[I]class\f[R]
+This option specifies an alternative signing mechanism.
+The fully qualified class name identifies a class file that extends the
+\f[CB]com.sun.jarsigner.ContentSigner\f[R] abstract class.
+The path to this class file is defined by the \f[CB]\-altsignerpath\f[R]
+option.
+If the \f[CB]\-altsigner\f[R] option is used, then the \f[CB]jarsigner\f[R]
+command uses the signing mechanism provided by the specified class.
+Otherwise, the \f[CB]jarsigner\f[R] command uses its default signing
+mechanism.
+.RS
+.PP
+For example, to use the signing mechanism provided by a class named
+\f[CB]com.sun.sun.jarsigner.AuthSigner\f[R], use the \f[CB]jarsigner\f[R]
+option \f[CB]\-altsigner\ com.sun.jarsigner.AuthSigner\f[R].
+.RE
.TP
--certchain \fIfile\fR
-.br
-Specifies the certificate chain to be used when the certificate chain associated with the private key of the keystore entry that is addressed by the alias specified on the command line is not complete\&. This can happen when the keystore is located on a hardware token where there is not enough capacity to hold a complete certificate chain\&. The file can be a sequence of concatenated X\&.509 certificates, or a single PKCS#7 formatted data block, either in binary encoding format or in printable encoding format (also known as Base64 encoding) as defined by the Internet RFC 1421 standard\&. See Internet RFC 1421 Certificate Encoding Standard and http://tools\&.ietf\&.org/html/rfc1421\&.
-.TP
--verbose
-.br
-When the \f3-verbose\fR option appears on the command line, it indicates verbose mode, which causes \f3jarsigner\fR to output extra information about the progress of the JAR signing or verification\&.
-.TP
--internalsf
-.br
-In the past, the \f3\&.DSA\fR (signature block) file generated when a JAR file was signed included a complete encoded copy of the \f3\&.SF\fR file (signature file) also generated\&. This behavior has been changed\&. To reduce the overall size of the output JAR file, the \f3\&.DSA\fR file by default does not contain a copy of the \f3\&.SF\fR file anymore\&. If \f3-internalsf\fR appears on the command line, then the old behavior is utilized\&. This option is useful for testing\&. In practice, do not use the \f3-internalsf\fR option because it incurs higher overhead\&.
+.B \f[CB]\-altsignerpath\f[R] \f[I]classpathlist\f[R]
+Specifies the path to the class file and any JAR file it depends on.
+The class file name is specified with the \f[CB]\-altsigner\f[R] option.
+If the class file is in a JAR file, then this option specifies the path
+to that JAR file.
+.RS
+.PP
+An absolute path or a path relative to the current directory can be
+specified.
+If \f[I]classpathlist\f[R] contains multiple paths or JAR files, then
+they should be separated with a:
+.IP \[bu] 2
+Colon (\f[CB]:\f[R]) on Oracle Solaris, Linux, and macOS
+.IP \[bu] 2
+Semicolon (\f[CB];\f[R]) on Windows
+.PP
+This option isn\[aq]t necessary when the class is already in the search
+path.
+.PP
+The following example shows how to specify the path to a JAR file that
+contains the class file.
+The JAR file name is included.
+.RS
+.PP
+\f[CB]\-altsignerpath\ /home/user/lib/authsigner.jar\f[R]
+.RE
+.PP
+The following example shows how to specify the path to the JAR file that
+contains the class file.
+The JAR file name is omitted.
+.RS
+.PP
+\f[CB]\-altsignerpath\ /home/user/classes/com/sun/tools/jarsigner/\f[R]
+.RE
+.RE
+.SH ERRORS AND WARNINGS
+.PP
+During the signing or verifying process, the \f[CB]jarsigner\f[R] command
+may issue various errors or warnings.
+.PP
+If there is a failure, the \f[CB]jarsigner\f[R] command exits with code 1.
+If there is no failure, but there are one or more severe warnings, the
+\f[CB]jarsigner\f[R] command exits with code 0 when the \f[CB]\-strict\f[R]
+option is \f[B]not\f[R] specified, or exits with the OR\-value of the
+warning codes when the \f[CB]\-strict\f[R] is specified.
+If there is only informational warnings or no warning at all, the
+command always exits with code 0.
+.PP
+For example, if a certificate used to sign an entry is expired and has a
+KeyUsage extension that doesn\[aq]t allow it to sign a file, the
+\f[CB]jarsigner\f[R] command exits with code 12 (=4+8) when the
+\f[CB]\-strict\f[R] option is specified.
+.PP
+\f[B]Note:\f[R] Exit codes are reused because only the values from 0 to
+255 are legal on Oracle Solaris, Linux, and OS X.
+.PP
+The following sections describes the names, codes, and descriptions of
+the errors and warnings that the \f[CB]jarsigner\f[R] command can issue.
+.SH FAILURE
+.PP
+Reasons why the \f[CB]jarsigner\f[R] command fails include (but aren\[aq]t
+limited to) a command line parsing error, the inability to find a
+keypair to sign the JAR file, or the verification of a signed JAR fails.
.TP
--sectionsonly
-.br
-If the \f3-sectionsonly\fR option appears on the command line, then the \f3\&.SF\fR file (signature file) generated when a JAR file is signed does not include a header that contains a hash of the whole manifest file\&. It contains only the information and hashes related to each individual source file included in the JAR file\&. See Signature File\&.
-
-By default, this header is added, as an optimization\&. When the header is present, whenever the JAR file is verified, the verification can first check to see whether the hash in the header matches the hash of the whole manifest file\&. When there is a match, verification proceeds to the next step\&. When there is no match, it is necessary to do a less optimized verification that the hash in each source file information section in the \f3\&.SF\fR file equals the hash of its corresponding section in the manifest file\&. See JAR File Verification\&.
-
-The \f3-sectionsonly\fR option is primarily used for testing\&. It should not be used other than for testing because using it incurs higher overhead\&.
+.B failure
+Code 1.
+The signing or verifying fails.
+.RS
+.RE
+.SH SEVERE WARNINGS
+.PP
+\f[B]Note:\f[R]
+.PP
+Severe warnings are reported as errors if you specify the
+\f[CB]\-strict\f[R] option.
+.PP
+Reasons why the \f[CB]jarsigner\f[R] command issues a severe warning
+include the certificate used to sign the JAR file has an error or the
+signed JAR file has other problems.
+.TP
+.B hasExpiredCert
+Code 4.
+This JAR contains entries whose signer certificate has expired.
+.RS
+.RE
+.TP
+.B hasExpiredTsaCert
+Code 4.
+The timestamp has expired.
+.RS
+.RE
.TP
--protected
-.br
-Values can be either \f3true\fR or \f3false\fR\&. Specify \f3true\fR when a password must be specified through a protected authentication path such as a dedicated PIN reader\&.
+.B notYetValidCert
+Code 4.
+This JAR contains entries whose signer certificate isn\[aq]t yet valid.
+.RS
+.RE
+.TP
+.B chainNotValidated
+Code 4.
+This JAR contains entries whose certificate chain isn\[aq]t validated.
+.RS
+.RE
+.TP
+.B tsaChainNotValidated
+Code 64.
+The timestamp is invalid.
+.RS
+.RE
+.TP
+.B signerSelfSigned
+Code 4.
+This JAR contains entries whose signer certificate is self signed.
+.RS
+.RE
+.TP
+.B weakAlg
+Code 4.
+An algorithm specified on the command line is considered a security
+risk.
+.RS
+.RE
.TP
--providerClass \fIprovider-class-name\fR
-.br
-Used to specify the name of cryptographic service provider\&'s master class file when the service provider is not listed in the \f3java\&.security\fR security properties file\&.
-
-Used with the \f3-providerArg ConfigFilePath\fR option, the \f3keytool\fR and \f3jarsigner\fR tools install the provider dynamically and use \fIConfigFilePath\fR for the path to the token configuration file\&. The following example shows a command to list a \f3PKCS #11\fR keystore when the Oracle PKCS #11 provider was not configured in the security properties file\&.
-.sp
-.nf
-\f3jarsigner \-keystore NONE \-storetype PKCS11 \e\fP
-.fi
-.nf
-\f3 \-providerClass sun\&.security\&.pkcs11\&.SunPKCS11 \e\fP
-.fi
-.nf
-\f3 \-providerArg /mydir1/mydir2/token\&.config \e\fP
-.fi
-.nf
-\f3 \-list\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-
+.B badKeyUsage
+Code 8.
+This JAR contains entries whose signer certificate\[aq]s KeyUsage
+extension doesn\[aq]t allow code signing.
+.RS
+.RE
+.TP
+.B badExtendedKeyUsage
+Code 8.
+This JAR contains entries whose signer certificate\[aq]s
+ExtendedKeyUsage extension doesn\[aq]t allow code signing.
+.RS
+.RE
+.TP
+.B badNetscapeCertType
+Code 8.
+This JAR contains entries whose signer certificate\[aq]s
+NetscapeCertType extension doesn\[aq]t allow code signing.
+.RS
+.RE
+.TP
+.B hasUnsignedEntry
+Code 16.
+This JAR contains unsigned entries which haven\[aq]t been
+integrity\-checked.
+.RS
+.RE
+.TP
+.B notSignedByAlias
+Code 32.
+This JAR contains signed entries which aren\[aq]t signed by the
+specified alias(es).
+.RS
+.RE
+.TP
+.B aliasNotInStore
+Code 32.
+This JAR contains signed entries that aren\[aq]t signed by alias in this
+keystore.
+.RS
+.RE
+.TP
+.B tsaChainNotValidated
+Code 64.
+This JAR contains entries whose TSA certificate chain is invalid.
+.RS
+.RE
+.SH INFORMATIONAL WARNINGS
+.PP
+Informational warnings include those that aren\[aq]t errors but regarded
+as bad practice.
+They don\[aq]t have a code.
+.TP
+.B hasExpiringCert
+This JAR contains entries whose signer certificate expires within six
+months.
+.RS
+.RE
+.TP
+.B hasExpiringTsaCert
+The timestamp will expire within one year on \f[CB]YYYY\-MM\-DD\f[R].
+.RS
+.RE
.TP
--providerName \fIproviderName\fR
-.br
-If more than one provider was configured in the \f3java\&.security\fR security properties file, then you can use the \f3-providerName\fR option to target a specific provider instance\&. The argument to this option is the name of the provider\&.
-
-For the Oracle PKCS #11 provider, \fIproviderName\fR is of the form \f3SunPKCS11-\fR\fITokenName\fR, where \fITokenName\fR is the name suffix that the provider instance has been configured with, as detailed in the configuration attributes table\&. For example, the following command lists the contents of the \f3PKCS #11\fR keystore provider instance with name suffix \f3SmartCard\fR:
-.sp
-.nf
-\f3jarsigner \-keystore NONE \-storetype PKCS11 \e\fP
-.fi
-.nf
-\f3 \-providerName SunPKCS11\-SmartCard \e\fP
-.fi
-.nf
-\f3 \-list\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-
-.TP
--J\fIjavaoption\fR
-.br
-Passes through the specified \fIjavaoption\fR string directly to the Java interpreter\&. The \f3jarsigner\fR command is a wrapper around the interpreter\&. This option should not contain any spaces\&. It is useful for adjusting the execution environment or memory usage\&. For a list of possible interpreter options, type \f3java -h\fR or \f3java -X\fR at the command line\&.
-.TP
--tsa \fIurl\fR
-.br
-If \f3-tsa http://example\&.tsa\&.url\fR appears on the command line when signing a JAR file then a time stamp is generated for the signature\&. The URL, \f3http://example\&.tsa\&.url\fR, identifies the location of the Time Stamping Authority (TSA) and overrides any URL found with the \f3-tsacert\fR option\&. The \f3-tsa\fR option does not require the TSA public key certificate to be present in the keystore\&.
+.B noTimestamp
+This JAR contains signatures that doesn\[aq]t include a timestamp.
+Without a timestamp, users may not be able to validate this JAR file
+after the signer certificate\[aq]s expiration date
+(\f[CB]YYYY\-MM\-DD\f[R]) or after any future revocation date.
+.RS
+.RE
+.SH EXAMPLE OF SIGNING A JAR FILE
+.PP
+Use the following command to sign \f[CB]bundle.jar\f[R] with the private
+key of a user whose keystore alias is \f[CB]jane\f[R] in a keystore named
+\f[CB]mystore\f[R] in the \f[CB]working\f[R] directory and name the signed
+JAR file \f[CB]sbundle.jar\f[R]:
+.RS
+.PP
+\f[CB]jarsigner\ \-keystore\ /working/mystore\ \-storepass\f[R]
+\f[I]keystore_password\f[R] \f[CB]\-keypass\f[R]
+\f[I]private_key_password\f[R]
+\f[CB]\-signedjar\ sbundle.jar\ bundle.jar\ jane\f[R]
+.RE
+.PP
+There is no \f[CB]\-sigfile\f[R] specified in the previous command so the
+generated \f[CB]\&.SF\f[R] and \f[CB]\&.DSA\f[R] files to be placed in the
+signed JAR file have default names based on the alias name.
+They are named \f[CB]JANE.SF\f[R] and \f[CB]JANE.DSA\f[R].
+.PP
+If you want to be prompted for the store password and the private key
+password, then you could shorten the previous command to the following:
+.RS
+.PP
+\f[CB]jarsigner\ \-keystore\ /working/mystore\ \-signedjar\ sbundle.jar\ bundle.jar\ jane\f[R]
+.RE
+.PP
+If the \f[CB]keystore\f[R] is the default \f[CB]keystore\f[R]
+(\f[CB]\&.keystore\f[R] in your home directory), then you don\[aq]t need
+to specify a \f[CB]keystore\f[R], as follows:
+.RS
+.PP
+\f[CB]jarsigner\ \-signedjar\ sbundle.jar\ bundle.jar\ jane\f[R]
+.RE
+.PP
+If you want the signed JAR file to overwrite the input JAR file
+(\f[CB]bundle.jar\f[R]), then you don\[aq]t need to specify a
+\f[CB]\-signedjar\f[R] option, as follows:
+.RS
+.PP
+\f[CB]jarsigner\ bundle.jar\ jane\f[R]
+.RE
+.SH EXAMPLE OF VERIFYING A SIGNED JAR FILE
+.PP
+To verify a signed JAR file to ensure that the signature is valid and
+the JAR file wasn\[aq]t been tampered with, use a command such as the
+following:
+.RS
+.PP
+\f[CB]jarsigner\ \-verify\ ButtonDemo.jar\f[R]
+.RE
+.PP
+When the verification is successful, \f[CB]jar\ verified\f[R] is
+displayed.
+Otherwise, an error message is displayed.
+You can get more information when you use the \f[CB]\-verbose\f[R] option.
+A sample use of \f[CB]jarsigner\f[R] with the \f[CB]\-verbose\f[R] option
+follows:
+.IP
+.nf
+\f[CB]
+jarsigner\ \-verify\ \-verbose\ ButtonDemo.jar
-To generate the time stamp, \f3jarsigner\fR communicates with the TSA with the Time-Stamp Protocol (TSP) defined in RFC 3161\&. When successful, the time stamp token returned by the TSA is stored with the signature in the signature block file\&.
-.TP
--tsacert \fIalias\fR
-.br
-When \f3-tsacert alias\fR appears on the command line when signing a JAR file, a time stamp is generated for the signature\&. The alias identifies the TSA public key certificate in the keystore that is in effect\&. The entry\&'s certificate is examined for a Subject Information Access extension that contains a URL identifying the location of the TSA\&.
-
-The TSA public key certificate must be present in the keystore when using the \f3-tsacert\fR option\&.
-.TP
--tsapolicyid \fIpolicyid\fR
-.br
-Specifies the object identifier (OID) that identifies the policy ID to be sent to the TSA server\&. If this option is not specified, no policy ID is sent and the TSA server will choose a default policy ID\&.
-
-Object identifiers are defined by X\&.696, which is an ITU Telecommunication Standardization Sector (ITU-T) standard\&. These identifiers are typically period-separated sets of non-negative digits like \f31\&.2\&.3\&.4\fR, for example\&.
-.TP
--altsigner \fIclass\fR
-.br
-This option specifies an alternative signing mechanism\&. The fully qualified class name identifies a class file that extends the \f3com\&.sun\&.jarsigner\&.ContentSigner\fR abstract class\&. The path to this class file is defined by the \f3-altsignerpath\fR option\&. If the \f3-altsigner\fR option is used, then the \f3jarsigner\fR command uses the signing mechanism provided by the specified class\&. Otherwise, the \f3jarsigner\fR command uses its default signing mechanism\&.
-
-For example, to use the signing mechanism provided by a class named \f3com\&.sun\&.sun\&.jarsigner\&.AuthSigner\fR, use the jarsigner option \f3-altsigner com\&.sun\&.jarsigner\&.AuthSigner\fR\&.
-.TP
--altsignerpath \fIclasspathlist\fR
-.br
-Specifies the path to the class file and any JAR file it depends on\&. The class file name is specified with the \f3-altsigner\fR option\&. If the class file is in a JAR file, then this option specifies the path to that JAR file\&.
-
-An absolute path or a path relative to the current directory can be specified\&. If \fIclasspathlist\fR contains multiple paths or JAR files, then they should be separated with a colon (:) on Oracle Solaris and a semicolon (;) on Windows\&. This option is not necessary when the class is already in the search path\&.
-
-The following example shows how to specify the path to a JAR file that contains the class file\&. The JAR file name is included\&.
-.sp
-.nf
-\f3\-altsignerpath /home/user/lib/authsigner\&.jar\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-
-
-The following example shows how to specify the path to the JAR file that contains the class file\&. The JAR file name is omitted\&.
-.sp
-.nf
-\f3\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
+s\ \ \ \ \ \ \ 866\ Tue\ Sep\ 12\ 20:08:48\ EDT\ 2017\ META\-INF/MANIFEST.MF
+\ \ \ \ \ \ \ \ 825\ Tue\ Sep\ 12\ 20:08:48\ EDT\ 2017\ META\-INF/ORACLE_C.SF
+\ \ \ \ \ \ \ 7475\ Tue\ Sep\ 12\ 20:08:48\ EDT\ 2017\ META\-INF/ORACLE_C.RSA
+\ \ \ \ \ \ \ \ \ \ 0\ Tue\ Sep\ 12\ 20:07:54\ EDT\ 2017\ META\-INF/
+\ \ \ \ \ \ \ \ \ \ 0\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/
+\ \ \ \ \ \ \ \ \ \ 0\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/images/
+sm\ \ \ \ \ \ 523\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/ButtonDemo$1.class
+sm\ \ \ \ \ 3440\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/ButtonDemo.class
+sm\ \ \ \ \ 2346\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/ButtonDemo.jnlp
+sm\ \ \ \ \ \ 172\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/images/left.gif
+sm\ \ \ \ \ \ 235\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/images/middle.gif
+sm\ \ \ \ \ \ 172\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/images/right.gif
-.TP
--strict
-.br
-During the signing or verifying process, the command may issue warning messages\&. If you specify this option, the exit code of the tool reflects the severe warning messages that this command found\&. See Errors and Warnings\&.
-.TP
--verbose \fIsuboptions\fR
-.br
-For the verifying process, the \f3-verbose\fR option takes suboptions to determine how much information is shown\&. If the \f3-certs\fR option is also specified, then the default mode (or suboption \f3all\fR) displays each entry as it is being processed, and after that, the certificate information for each signer of the JAR file\&. If the \f3-certs\fR and the \f3-verbose:grouped\fR suboptions are specified, then entries with the same signer info are grouped and displayed together with their certificate information\&. If \f3-certs\fR and the \f3-verbose:summary\fR suboptions are specified, then entries with the same signer information are grouped and displayed together with their certificate information\&. Details about each entry are summarized and displayed as \fIone entry (and more)\fR\&. See Examples\&.
-.SH ERRORS\ AND\ WARNINGS
-During the signing or verifying process, the \f3jarsigner\fR command may issue various errors or warnings\&.
-.PP
-If there is a failure, the \f3jarsigner\fR command exits with code 1\&. If there is no failure, but there are one or more severe warnings, the \f3jarsigner\fR command exits with code 0 when the \f3-strict\fR option is \fInot\fR specified, or exits with the OR-value of the warning codes when the \f3-strict\fR is specified\&. If there is only informational warnings or no warning at all, the command always exits with code 0\&.
-.PP
-For example, if a certificate used to sign an entry is expired and has a KeyUsage extension that does not allow it to sign a file, the \f3jarsigner\fR command exits with code 12 (=4+8) when the \f3-strict\fR option is specified\&.
-.PP
-\fINote:\fR Exit codes are reused because only the values from 0 to 255 are legal on Unix-based operating systems\&.
-.PP
-The following sections describes the names, codes, and descriptions of the errors and warnings that the \f3jarsigner\fR command can issue\&.
-.SS FAILURE
-Reasons why the \f3jarsigner\fR command fails include (but are not limited to) a command line parsing error, the inability to find a keypair to sign the JAR file, or the verification of a signed JAR fails\&.
-.TP
-failure
-Code 1\&. The signing or verifying fails\&.
-.SS SEVERE\ WARNINGS
-\fINote:\fR Severe warnings are reported as errors if you specify the \f3-strict\fR option\&.
-.PP
-Reasons why the \f3jarsigner\fR command issues a severe warning include the certificate used to sign the JAR file has an error or the signed JAR file has other problems\&.
-.TP
-hasExpiredCert
-Code 4\&. This jar contains entries whose signer certificate has expired\&.
-.TP
-notYetValidCert
-Code 4\&. This jar contains entries whose signer certificate is not yet valid\&.
-.TP
-chainNotValidated
-Code 4\&. This jar contains entries whose certificate chain cannot be correctly validated\&.
-.TP
-badKeyUsage
-Code 8\&. This jar contains entries whose signer certificate\&'s KeyUsage extension doesn\&'t allow code signing\&.
-.TP
-badExtendedKeyUsage
-Code 8\&. This jar contains entries whose signer certificate\&'s ExtendedKeyUsage extension doesn\&'t allow code signing\&.
-.TP
-badNetscapeCertType
-Code 8\&. This jar contains entries whose signer certificate\&'s NetscapeCertType extension doesn\&'t allow code signing\&.
-.TP
-hasUnsignedEntry
-Code 16\&. This jar contains unsigned entries which have not been integrity-checked\&.
-.TP
-notSignedByAlias
-Code 32\&. This jar contains signed entries which are not signed by the specified alias(es)\&.
-.TP
-aliasNotInStore
-Code 32\&. This jar contains signed entries that are not signed by alias in this keystore\&.
-.SS INFORMATIONAL\ WARNINGS
-Informational warnings include those that are not errors but regarded as bad practice\&. They do not have a code\&.
-.TP
-hasExpiringCert
-This jar contains entries whose signer certificate will expire within six months\&.
-.TP
-noTimestamp
-This jar contains signatures that does not include a timestamp\&. Without a timestamp, users may not be able to validate this JAR file after the signer certificate\&'s expiration date (\f3YYYY-MM-DD\fR) or after any future revocation date\&.
-.SH EXAMPLES
-.SS SIGN\ A\ JAR\ FILE
-Use the following command to sign bundle\&.jar with the private key of a user whose keystore alias is \f3jane\fR in a keystore named \f3mystore\fR in the \f3working\fR directory and name the signed JAR file \f3sbundle\&.jar\fR:
-.sp
-.nf
-\f3jarsigner \-keystore /working/mystore\fP
-.fi
-.nf
-\f3 \-storepass <keystore password>\fP
-.fi
-.nf
-\f3 \-keypass <private key password>\fP
-.fi
-.nf
-\f3 \-signedjar sbundle\&.jar bundle\&.jar jane\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-There is no \f3-sigfile\fR specified in the previous command so the generated \f3\&.SF\fR and \f3\&.DSA\fR files to be placed in the signed JAR file have default names based on the alias name\&. They are named \f3JANE\&.SF\fR and \f3JANE\&.DSA\fR\&.
+\ \ s\ =\ signature\ was\ verified
+\ \ m\ =\ entry\ is\ listed\ in\ manifest
+\ \ k\ =\ at\ least\ one\ certificate\ was\ found\ in\ keystore
+
+\-\ Signed\ by\ "CN="Oracle\ America,\ Inc.",\ OU=Software\ Engineering,\ O="Oracle\ America,\ Inc.",\ L=Redwood\ City,\ ST=California,\ C=US"
+\ \ \ \ Digest\ algorithm:\ SHA\-256
+\ \ \ \ Signature\ algorithm:\ SHA256withRSA,\ 2048\-bit\ key
+\ \ Timestamped\ by\ "CN=Symantec\ Time\ Stamping\ Services\ Signer\ \-\ G4,\ O=Symantec\ Corporation,\ C=US"\ on\ Tue\ Sep\ 12\ 20:08:49\ UTC\ 2017
+\ \ \ \ Timestamp\ digest\ algorithm:\ SHA\-1
+\ \ \ \ Timestamp\ signature\ algorithm:\ SHA1withRSA,\ 2048\-bit\ key
+
+jar\ verified.
+
+The\ signer\ certificate\ expired\ on\ 2018\-02\-01.\ However,\ the\ JAR\ will\ be\ valid\ until\ the\ timestamp\ expires\ on\ 2020\-12\-29.
+\f[R]
+.fi
+.SH EXAMPLE OF VERIFICATION WITH CERTIFICATE INFORMATION
.PP
-If you want to be prompted for the store password and the private key password, then you could shorten the previous command to the following:
-.sp
-.nf
-\f3jarsigner \-keystore /working/mystore\fP
-.fi
-.nf
-\f3 \-signedjar sbundle\&.jar bundle\&.jar jane\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-If the keystore is the default keystore (\&.keystore in your home directory), then you do not need to specify a keystore, as follows:
-.sp
-.nf
-\f3jarsigner \-signedjar sbundle\&.jar bundle\&.jar jane\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-If you want the signed JAR file to overwrite the input JAR file (bundle\&.jar), then you do not need to specify a \f3-signedjar\fR option, as follows:
-.sp
-.nf
-\f3jarsigner bundle\&.jar jane\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-.SS VERIFY\ A\ SIGNED\ JAR\ FILE
-To verify a signed JAR file to ensure that the signature is valid and the JAR file was not been tampered with, use a command such as the following:
-.sp
-.nf
-\f3jarsigner \-verify sbundle\&.jar\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-When the verification is successful, \f3jar verified\fR is displayed\&. Otherwise, an error message is displayed\&. You can get more information when you use the \f3-verbose\fR option\&. A sample use of \f3jarsigner\fR with the\f3-verbose\fR option follows:
-.sp
-.nf
-\f3jarsigner \-verify \-verbose sbundle\&.jar\fP
-.fi
-.nf
-\f3\fR
-.fi
-.nf
-\f3 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fP
-.fi
-.nf
-\f3 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fP
-.fi
-.nf
-\f3 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fP
-.fi
-.nf
-\f3 smk 2752 Fri Sep 26 16:12:30 PDT 1997 AclEx\&.class\fP
-.fi
-.nf
-\f3 smk 849 Fri Sep 26 16:12:46 PDT 1997 test\&.class\fP
-.fi
-.nf
-\f3\fR
-.fi
-.nf
-\f3 s = signature was verified\fP
-.fi
-.nf
-\f3 m = entry is listed in manifest\fP
-.fi
-.nf
-\f3 k = at least one certificate was found in keystore\fP
-.fi
-.nf
-\f3\fR
-.fi
-.nf
-\f3 jar verified\&.\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-.SS VERIFICATION\ WITH\ CERTIFICATE\ INFORMATION
-If you specify the \f3-certs\fR option with the \f3-verify\fR and \f3-verbose\fR options, then the output includes certificate information for each signer of the JAR file\&. The information includes the certificate type, the signer distinguished name information (when it is an X\&.509 certificate), and in parentheses, the keystore alias for the signer when the public key certificate in the JAR file matches the one in a keystore entry, for example:
-.sp
-.nf
-\f3jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest\&.jar\fP
-.fi
-.nf
-\f3\fR
-.fi
-.nf
-\f3 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fP
-.fi
-.nf
-\f3 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fP
-.fi
-.nf
-\f3 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fP
-.fi
-.nf
-\f3 208 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.SF\fP
-.fi
-.nf
-\f3 1087 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.DSA\fP
-.fi
-.nf
-\f3 smk 2752 Fri Sep 26 16:12:30 PDT 1997 Tst\&.class\fP
-.fi
-.nf
-\f3\fR
-.fi
-.nf
-\f3 X\&.509, CN=Test Group, OU=Java Software, O=Oracle, L=CUP, S=CA, C=US (javatest)\fP
-.fi
-.nf
-\f3 X\&.509, CN=Jane Smith, OU=Java Software, O=Oracle, L=cup, S=ca, C=us (jane)\fP
-.fi
-.nf
-\f3\fR
-.fi
-.nf
-\f3 s = signature was verified\fP
-.fi
-.nf
-\f3 m = entry is listed in manifest\fP
-.fi
-.nf
-\f3 k = at least one certificate was found in keystore\fP
-.fi
-.nf
-\f3\fR
-.fi
-.nf
-\f3 jar verified\&.\fP
-.fi
-.nf
-\f3\fR
-.fi
-.sp
-If the certificate for a signer is not an X\&.509 certificate, then there is no distinguished name information\&. In that case, just the certificate type and the alias are shown\&. For example, if the certificate is a PGP certificate, and the alias is \f3bob\fR, then you would get: \f3PGP, (bob)\fR\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-jar(1)
-.TP 0.2i
-\(bu
-keytool(1)
-.TP 0.2i
-\(bu
-Trail: Security Features in Java SE at http://docs\&.oracle\&.com/javase/tutorial/security/index\&.html
-.RE
-.br
-'pl 8.5i
-'bp
+If you specify the \f[CB]\-certs\f[R] option with the \f[CB]\-verify\f[R]
+and \f[CB]\-verbose\f[R] options, then the output includes certificate
+information for each signer of the JAR file.
+The information includes the certificate type, the signer distinguished
+name information (when it is an X.509 certificate), and in parentheses,
+the keystore alias for the signer when the public key certificate in the
+JAR file matches the one in a keystore entry, for example:
+.IP
+.nf
+\f[CB]
+jarsigner\ \-keystore\ $JAVA_HOME/lib/security/cacerts\ \-verify\ \-verbose\ \-certs\ ButtonDemo.jar
+
+s\ k\ \ \ \ \ 866\ Tue\ Sep\ 12\ 20:08:48\ EDT\ 2017\ META\-INF/MANIFEST.MF
+
+\ \ \ \ \ \ >>>\ Signer
+\ \ \ \ \ \ X.509,\ CN="Oracle\ America,\ Inc.",\ OU=Software\ Engineering,\ O="Oracle\ America,\ Inc.",\ L=Redwood\ City,\ ST=California,\ C=US
+\ \ \ \ \ \ [certificate\ is\ valid\ from\ 2017\-01\-30,\ 7:00\ PM\ to\ 2018\-02\-01,\ 6:59\ PM]
+\ \ \ \ \ \ X.509,\ CN=Symantec\ Class\ 3\ SHA256\ Code\ Signing\ CA,\ OU=Symantec\ Trust\ Network,\ O=Symantec\ Corporation,\ C=US
+\ \ \ \ \ \ [certificate\ is\ valid\ from\ 2013\-12\-09,\ 7:00\ PM\ to\ 2023\-12\-09,\ 6:59\ PM]
+\ \ \ \ \ \ X.509,\ CN=VeriSign\ Class\ 3\ Public\ Primary\ Certification\ Authority\ \-\ G5,\ OU="(c)\ 2006\ VeriSign,\ Inc.\ \-\ For\ authorized\ use\ only",\ OU=VeriSign\ Trust\ Network,\ O="VeriSign,\ Inc.",\ C=US\ (verisignclass3g5ca\ [jdk])
+\ \ \ \ \ \ [trusted\ certificate]
+\ \ \ \ \ \ >>>\ TSA
+\ \ \ \ \ \ X.509,\ CN=Symantec\ Time\ Stamping\ Services\ Signer\ \-\ G4,\ O=Symantec\ Corporation,\ C=US
+\ \ \ \ \ \ [certificate\ is\ valid\ from\ 2012\-10\-17,\ 8:00\ PM\ to\ 2020\-12\-29,\ 6:59\ PM]
+\ \ \ \ \ \ X.509,\ CN=Symantec\ Time\ Stamping\ Services\ CA\ \-\ G2,\ O=Symantec\ Corporation,\ C=US
+\ \ \ \ \ \ [certificate\ is\ valid\ from\ 2012\-12\-20,\ 7:00\ PM\ to\ 2020\-12\-30,\ 6:59\ PM]
+
+\ \ \ \ \ \ \ \ 825\ Tue\ Sep\ 12\ 20:08:48\ EDT\ 2017\ META\-INF/ORACLE_C.SF
+\ \ \ \ \ \ \ 7475\ Tue\ Sep\ 12\ 20:08:48\ EDT\ 2017\ META\-INF/ORACLE_C.RSA
+\ \ \ \ \ \ \ \ \ \ 0\ Tue\ Sep\ 12\ 20:07:54\ EDT\ 2017\ META\-INF/
+\ \ \ \ \ \ \ \ \ \ 0\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/
+\ \ \ \ \ \ \ \ \ \ 0\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/images/
+smk\ \ \ \ \ 523\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/ButtonDemo$1.class
+
+\ \ \ \ \ \ [entry\ was\ signed\ on\ 2017\-09\-12,\ 4:08\ PM]
+\ \ \ \ \ \ >>>\ Signer
+\ \ \ \ \ \ X.509,\ CN="Oracle\ America,\ Inc.",\ OU=Software\ Engineering,\ O="Oracle\ America,\ Inc.",\ L=Redwood\ City,\ ST=California,\ C=US
+\ \ \ \ \ \ [certificate\ is\ valid\ from\ 2017\-01\-30,\ 7:00\ PM\ to\ 2018\-02\-01,\ 6:59\ PM]
+\ \ \ \ \ \ X.509,\ CN=Symantec\ Class\ 3\ SHA256\ Code\ Signing\ CA,\ OU=Symantec\ Trust\ Network,\ O=Symantec\ Corporation,\ C=US
+\ \ \ \ \ \ [certificate\ is\ valid\ from\ 2013\-12\-09,\ 7:00\ PM\ to\ 2023\-12\-09,\ 6:59\ PM]
+\ \ \ \ \ \ X.509,\ CN=VeriSign\ Class\ 3\ Public\ Primary\ Certification\ Authority\ \-\ G5,\ OU="(c)\ 2006\ VeriSign,\ Inc.\ \-\ For\ authorized\ use\ only",\ OU=VeriSign\ Trust\ Network,\ O="VeriSign,\ Inc.",\ C=US\ (verisignclass3g5ca\ [jdk])
+\ \ \ \ \ \ [trusted\ certificate]
+\ \ \ \ \ \ >>>\ TSA
+\ \ \ \ \ \ X.509,\ CN=Symantec\ Time\ Stamping\ Services\ Signer\ \-\ G4,\ O=Symantec\ Corporation,\ C=US
+\ \ \ \ \ \ [certificate\ is\ valid\ from\ 2012\-10\-17,\ 8:00\ PM\ to\ 2020\-12\-29,\ 6:59\ PM]
+\ \ \ \ \ \ X.509,\ CN=Symantec\ Time\ Stamping\ Services\ CA\ \-\ G2,\ O=Symantec\ Corporation,\ C=US
+\ \ \ \ \ \ [certificate\ is\ valid\ from\ 2012\-12\-20,\ 7:00\ PM\ to\ 2020\-12\-30,\ 6:59\ PM]
+
+smk\ \ \ \ 3440\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/ButtonDemo.class
+\&...
+smk\ \ \ \ 2346\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/ButtonDemo.jnlp
+\&...
+smk\ \ \ \ \ 172\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/images/left.gif
+\&...
+smk\ \ \ \ \ 235\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/images/middle.gif
+\&...
+smk\ \ \ \ \ 172\ Tue\ Sep\ 12\ 20:07:16\ EDT\ 2017\ components/images/right.gif
+\&...
+
+\ \ s\ =\ signature\ was\ verified
+\ \ m\ =\ entry\ is\ listed\ in\ manifest
+\ \ k\ =\ at\ least\ one\ certificate\ was\ found\ in\ keystore
+
+\-\ Signed\ by\ "CN="Oracle\ America,\ Inc.",\ OU=Software\ Engineering,\ O="Oracle\ America,\ Inc.",\ L=Redwood\ City,\ ST=California,\ C=US"
+\ \ \ \ Digest\ algorithm:\ SHA\-256
+\ \ \ \ Signature\ algorithm:\ SHA256withRSA,\ 2048\-bit\ key
+\ \ Timestamped\ by\ "CN=Symantec\ Time\ Stamping\ Services\ Signer\ \-\ G4,\ O=Symantec\ Corporation,\ C=US"\ on\ Tue\ Sep\ 12\ 20:08:49\ UTC\ 2017
+\ \ \ \ Timestamp\ digest\ algorithm:\ SHA\-1
+\ \ \ \ Timestamp\ signature\ algorithm:\ SHA1withRSA,\ 2048\-bit\ key
+
+jar\ verified.
+
+The\ signer\ certificate\ expired\ on\ 2018\-02\-01.\ However,\ the\ JAR\ will\ be\ valid\ until\ the\ timestamp\ expires\ on\ 2020\-12\-29.
+\f[R]
+.fi
+.PP
+If the certificate for a signer isn\[aq]t an X.509 certificate, then
+there is no distinguished name information.
+In that case, just the certificate type and the alias are shown.
+For example, if the certificate is a PGP certificate, and the alias is
+\f[CB]bob\f[R], then you would get: \f[CB]PGP,\ (bob)\f[R].
--- a/src/jdk.javadoc/share/man/javadoc.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.javadoc/share/man/javadoc.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,2982 +19,1283 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 03 March 2015
-.\" SectDesc: Basic Tools
-.\" Title: javadoc.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH javadoc 1 "03 March 2015" "JDK 8" "Basic Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-javadoc \- Generates HTML pages of API documentation from Java source files\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjavadoc\fR {\fIpackages\fR|\fIsource\-files\fR} [\fIoptions\fR] [\fI@argfiles\fR]
-.fi
-.sp
-.TP
-\fIpackages\fR
-Names of packages that you want to document, separated by spaces, for example \f3java\&.lang java\&.lang\&.reflect java\&.awt\fR\&. If you want to also document the subpackages, use the \f3-subpackages\fR option to specify the packages\&.
-
-By default, \f3javadoc\fR looks for the specified packages in the current directory and subdirectories\&. Use the \f3-sourcepath\fR option to specify the list of directories where to look for packages\&.
-.TP
-\fIsource-files\fR
-Names of Java source files that you want to document, separated by spaces, for example \f3Class\&.java Object\&.java Button\&.java\fR\&. By default, \f3javadoc\fR looks for the specified classes in the current directory\&. However, you can specify the full path to the class file and use wildcard characters, for example \f3/home/src/java/awt/Graphics*\&.java\fR\&. You can also specify the path relative to the current directory\&.
-.TP
-\fIoptions\fR
-Command-line options, separated by spaces\&. See Options\&.
-.TP
-\fI@argfiles\fR
-Names of files that contain a list of \f3javadoc\fR command options, package names and source file names in any order\&.
-.SH DESCRIPTION
-The \f3javadoc\fR command parses the declarations and documentation comments in a set of Java source files and produces a corresponding set of HTML pages that describe (by default) the public and protected classes, nested classes (but not anonymous inner classes), interfaces, constructors, methods, and fields\&. You can use the \f3javadoc\fR command to generate the API documentation or the implementation documentation for a set of source files\&.
+.TH "JAVADOC" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+javadoc \- generate HTML pages of API documentation from Java source
+files
+.SH SYNOPSIS
.PP
-You can run the \f3javadoc\fR command on entire packages, individual source files, or both\&. When documenting entire packages, you can either use the \f3-subpackages\fR option to recursively traverse a directory and its subdirectories, or to pass in an explicit list of package names\&. When you document individual source files, pass in a list of Java source file names\&. See Simple Examples\&.
-.SS PROCESS\ SOURCE\ FILES
-The \f3javadoc\fR command processes files that end in source and other files described in Source Files\&. If you run the \f3javadoc\fR command by passing in individual source file names, then you can determine exactly which source files are processed\&. However, that is not how most developers want to work, because it is simpler to pass in package names\&. The \f3javadoc\fR command can be run three ways without explicitly specifying the source file names\&. You can pass in package names, use the \f3-subpackages\fR option, or use wild cards with source file names\&. In these cases, the \f3javadoc\fR command processes a source file only when the file fulfills all of the following requirements:
-.TP 0.2i
-\(bu
-The file name prefix (with \f3\&.java\fR removed) is a valid class name\&.
-.TP 0.2i
-\(bu
-The path name relative to the root of the source tree is a valid package name after the separators are converted to dots\&.
-.TP 0.2i
-\(bu
-The package statement contains the valid package name\&.
+\f[CB]javadoc\f[R] [\f[I]options\f[R]] [\f[I]packagenames\f[R]]
+[\f[I]sourcefiles\f[R]] [\f[CB]\@\f[R]\f[I]files\f[R]]
+.TP
+.B \f[I]options\f[R]
+Specifies command\-line options, separated by spaces.
+See \f[B]Options for javadoc\f[R], \f[B]Extended Options\f[R],
+\f[B]Standard doclet Options\f[R], and \f[B]Additional Options Provided
+by the Standard doclet\f[R].
+.RS
+.RE
+.TP
+.B \f[I]packagenames\f[R]
+Specifies names of packages that you want to document, separated by
+spaces, for example \f[CB]java.lang\ java.lang.reflect\ java.awt\f[R].
+If you want to also document the subpackages, then use the
+\f[CB]\-subpackages\f[R] option to specify the packages.
+.RS
.PP
-Processing Links
-
-During a run, the \f3javadoc\fR command adds cross-reference links to package, class, and member names that are being documented as part of that run\&. Links appear in the following places\&. See Javadoc Tags for a description of the @ tags\&.
-.TP 0.2i
-\(bu
-Declarations (return types, argument types, and field types)\&.
-.TP 0.2i
-\(bu
-\fISee Also\fR sections that are generated from \f3@see\fR tags\&.
-.TP 0.2i
-\(bu
-Inline text generated from \f3{@link}\fR tags\&.
-.TP 0.2i
-\(bu
-Exception names generated from \f3@throws\fR tags\&.
-.TP 0.2i
-\(bu
-\fISpecified by\fR links to interface members and \fIOverrides\fR links to class members\&. See Method Comment Inheritance\&.
-.TP 0.2i
-\(bu
-Summary tables listing packages, classes and members\&.
-.TP 0.2i
-\(bu
-Package and class inheritance trees\&.
-.TP 0.2i
-\(bu
-The index\&.
-.PP
-You can add links to existing text for classes not included on the command line (but generated separately) by way of the \f3-link\fR and \f3-linkoffline\fR options\&.
-.PP
-Processing Details
-
-The \f3javadoc\fR command produces one complete document every time it runs\&. It does not do incremental builds that modify or directly incorporate the results from earlier runs\&. However, the \f3javadoc\fR command can link to results from other runs\&.
+By default, \f[CB]javadoc\f[R] looks for the specified packages in the
+current directory and subdirectories.
+Use the \f[CB]\-sourcepath\f[R] option to specify the list of directories
+where to look for packages.
+.RE
+.TP
+.B \f[I]sourcefiles\f[R]
+Specifies names of Java source files that you want to document,
+separated by spaces, for example
+\f[CB]Class.java\ Object.java\ Button.java\f[R].
+By default, \f[CB]javadoc\f[R] looks for the specified classes in the
+current directory.
+However, you can specify the full path to the class file and use
+wildcard characters, for example
+\f[CB]/home/src/java/awt/Graphics*.java\f[R].
+You can also specify the path relative to the current directory.
+.RS
+.RE
+.TP
+.B \f[CB]\@\f[R]\f[I]files\f[R]
+Specifies names of files that contain a list of \f[CB]javadoc\f[R] tool
+options, package names, and source file names in any order.
+.RS
+.RE
+.SH DESCRIPTION
.PP
-The \f3javadoc\fR command implementation requires and relies on the Java compiler\&. The \f3javadoc\fR command calls part of the \f3javac\fR command to compile the declarations and ignore the member implementations\&. The \f3javadoc\fR command builds a rich internal representation of the classes that includes the class hierarchy and use relationships to generate the HTML\&. The \f3javadoc\fR command also picks up user-supplied documentation from documentation comments in the source code\&. See Documentation Comments\&.
-.PP
-The \f3javadoc\fR command runs on source files that are pure stub files with no method bodies\&. This means you can write documentation comments and run the \f3javadoc\fR command in the early stages of design before API implementation\&.
-.PP
-Relying on the compiler ensures that the HTML output corresponds exactly with the actual implementation, which may rely on implicit, rather than explicit, source code\&. For example, the \f3javadoc\fR command documents default constructors that are present in the compiled class files but not in the source code\&.
-.PP
-In many cases, the \f3javadoc\fR command lets you generate documentation for source files with incomplete or erroneous code\&. You can generate documentation before all debugging and troubleshooting is done\&. The \f3javadoc\fR command does primitive checking of documentation comments\&.
-.PP
-When the \f3javadoc\fR command builds its internal structure for the documentation, it loads all referenced classes\&. Because of this, the \f3javadoc\fR command must be able to find all referenced classes, whether bootstrap classes, extensions, or user classes\&. See How Classes Are Found at http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html
-.PP
-Typically, classes you create must either be loaded as an extension or in the \f3javadoc\fR command class path\&.
-.SS JAVADOC\ DOCLETS
-You can customize the content and format of the \f3javadoc\fR command output with doclets\&. The \f3javadoc\fR command has a default built-in doclet, called the standard doclet, that generates HTML-formatted API documentation\&. You can modify or make a subclass of the standard doclet, or write your own doclet to generate HTML, XML, MIF, RTF or whatever output format you want\&.
-.PP
-When a custom doclet is not specified with the \f3-doclet\fR option, the \f3javadoc\fR command uses the default standard doclet\&. The \f3javadoc\fR command has several options that are available regardless of which doclet is being used\&. The standard doclet adds a supplementary set of command-line options\&. See Options\&.
-.SH SOURCE\ FILES
-The \f3javadoc\fR command generates output that originates from the following types of source files: Java language source files for classes (\f3\&.java\fR), package comment files, overview comment files, and miscellaneous unprocessed files\&. This section also describes test files and template files that can also be in the source tree, but that you want to be sure not to document\&.
-.SS CLASS\ SOURCE\ FILES
-Each class or interface and its members can have their own documentation comments contained in a source file\&. See Documentation Comments\&.
-.SS PACKAGE\ COMMENT\ FILES
-Each package can have its own documentation comment, contained in its own source file, that the \f3javadoc\fR command merges into the generated package summary page\&. You typically include in this comment any documentation that applies to the entire package\&.
-.PP
-To create a package comment file, you can place your comments in one of the following files:
-.TP 0.2i
-\(bu
-The \f3package-info\&.java\fR file can contain the package declaration, package annotations, package comments, and Javadoc tags\&. This file is preferred\&.
-.TP 0.2i
-\(bu
-The \f3package\&.html\fR file contains only package comments and Javadoc tags\&. No package annotations\&.
-.PP
-A package can have a single \f3package\&.html\fR file or a single \f3package-info\&.java\fR file, but not both\&. Place either file in the package directory in the source tree with your source files\&.
-.PP
-The package-info\&.java File
-
-The \f3package-info\&.java\fR file can contain a package comment of the following structure\&. The comment is placed before the package declaration\&.
+The \f[CB]javadoc\f[R] tool parses the declarations and documentation
+comments in a set of Java source files and produces corresponding HTML
+pages that describe (by default) the public and protected classes,
+nested classes (but not anonymous inner classes), interfaces,
+constructors, methods, and fields.
+You can use the \f[CB]javadoc\f[R] tool to generate the API documentation
+or the implementation documentation for a set of source files.
.PP
-\fINote:\fR The comment separators \f3/**\fR and \f3*/\fR must be present, but the leading asterisks on the intermediate lines can be left off\&.
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * Provides the classes necessary to create an \fP
-.fi
-.nf
-\f3 * applet and the classes an applet uses \fP
-.fi
-.nf
-\f3 * to communicate with its applet context\&.\fP
-.fi
-.nf
-\f3 * <p>\fP
-.fi
-.nf
-\f3 * The applet framework involves two entities:\fP
-.fi
-.nf
-\f3 * the applet and the applet context\&.\fP
-.fi
-.nf
-\f3 * An applet is an embeddable window (see the\fP
-.fi
-.nf
-\f3 * {@link java\&.awt\&.Panel} class) with a few extra\fP
-.fi
-.nf
-\f3 * methods that the applet context can use to \fP
-.fi
-.nf
-\f3 * initialize, start, and stop the applet\&.\fP
-.fi
-.nf
-\f3 *\fP
-.fi
-.nf
-\f3 * @since 1\&.0\fP
-.fi
-.nf
-\f3 * @see java\&.awt\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3package java\&.lang\&.applet;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+You can run the \f[CB]javadoc\f[R] tool on entire packages, individual
+source files, or both.
+When documenting entire packages, you can use the \f[CB]\-subpackages\f[R]
+option either to recursively traverse a directory and its
+subdirectories, or to pass in an explicit list of package names.
+When you document individual source files, pass in a list of Java source
+file names.
+See \f[B]javadoc Overview\f[R]
+[https://www.oracle.com/pls/topic/lookup?ctx=en/java/javase/11/tools&id=JSJAV\-GUID\-7A344353\-3BBF\-45C4\-8B28\-15025DDCC643]
+in Java Platform, Standard Edition Javadoc Guide for information about
+using the \f[CB]javadoc\f[R] tool.
+.SH CONFORMANCE
.PP
-The package\&.html File
-
-The \f3package\&.html\fR file can contain a package comment of the following structure\&. The comment is placed in the \f3<body>\fR element\&.
+The standard doclet does not validate the content of documentation
+comments for conformance, nor does it attempt to correct any errors in
+documentation comments.
+Anyone running javadoc is advised to be aware of the problems that may
+arise when generating non\-conformant output or output containing
+executable content, such as JavaScript.
+The standard doclet does provide the \f[CB]doclint\f[R] feature to help
+developers detect common problems in documentation comments; but it is
+also recommended to check the generated output with any appropriate
+conformance and other checking tools.
+.PP
+For more details on the conformance requirements for HTML5 documents,
+see \f[B]Conformance requirements\f[R]
+[https://www.w3.org/TR/html5/infrastructure.html#conformance\-requirements]
+in the HTML5 Specification.
+For more details on security issues related to web pages, see the
+\f[B]Open Web Application Security Project (OWASP)\f[R]
+[https://www.owasp.org] page.
+.SH OPTIONS FOR JAVADOC
.PP
-File: \f3java/applet/package\&.html\fR
-.sp
-.nf
-\f3<HTML>\fP
-.fi
-.nf
-\f3<BODY>\fP
-.fi
-.nf
-\f3Provides the classes necessary to create an applet and the \fP
-.fi
-.nf
-\f3classes an applet uses to communicate with its applet context\&.\fP
-.fi
-.nf
-\f3<p>\fP
-.fi
-.nf
-\f3The applet framework involves two entities: the applet\fP
-.fi
-.nf
-\f3and the applet context\&. An applet is an embeddable\fP
-.fi
-.nf
-\f3window (see the {@link java\&.awt\&.Panel} class) with a\fP
-.fi
-.nf
-\f3few extra methods that the applet context can use to\fP
-.fi
-.nf
-\f3initialize, start, and stop the applet\&. \fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3@since 1\&.0 \fP
-.fi
-.nf
-\f3@see java\&.awt\fP
-.fi
-.nf
-\f3</BODY>\fP
-.fi
-.nf
-\f3</HTML>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The \f3package\&.html\fR file is a typical HTML file and does not include a package declaration\&. The content of the package comment file is written in HTML with one exception\&. The documentation comment should not include the comment separators \f3/**\fR and \f3*/\fR or leading asterisks\&. When writing the comment, make the first sentence a summary about the package, and do not put a title or any other text between the \f3<body>\fR tag and the first sentence\&. You can include package tags\&. All block tags must appear after the main description\&. If you add an \f3@see\fR tag in a package comment file, then it must have a fully qualified name\&.
+The following core \f[CB]javadoc\f[R] options are equivalent to
+corresponding \f[CB]javac\f[R] options.
+See \f[I]Standard Options\f[R] in \f[B]javac\f[R] for the detailed
+descriptions of using these options:
+.IP \[bu] 2
+\f[CB]\-\-add\-modules\f[R]
+.IP \[bu] 2
+\f[CB]\-bootclasspath\f[R]
+.IP \[bu] 2
+\f[CB]\-\-class\-path\f[R], \f[CB]\-classpath\f[R], or \f[CB]\-cp\f[R]
+.IP \[bu] 2
+\f[CB]\-\-enable\-preview\f[R]
+.IP \[bu] 2
+\f[CB]\-encoding\f[R]
+.IP \[bu] 2
+\f[CB]\-extdirs\f[R]
+.IP \[bu] 2
+\f[CB]\-\-limit\-modules\f[R]
+.IP \[bu] 2
+\f[CB]\-\-module\f[R]
+.IP \[bu] 2
+\f[CB]\-\-module\-path\f[R] or \f[CB]\-p\f[R]
+.IP \[bu] 2
+\f[CB]\-\-module\-source\-path\f[R]
+.IP \[bu] 2
+\f[CB]\-\-release\f[R]
+.IP \[bu] 2
+\f[CB]\-source\f[R]
+.IP \[bu] 2
+\f[CB]\-\-source\-path\f[R] or \f[CB]\-sourcepath\f[R]
+.IP \[bu] 2
+\f[CB]\-\-system\f[R]
+.IP \[bu] 2
+\f[CB]\-\-upgrade\-module\-path\f[R]
.PP
-Processing the Comment File
-
-When the \f3javadoc\fR command runs, it searches for the package comment file\&. If the package comment file is found, then the \f3javadoc\fR command does the following:
-.TP 0.2i
-\(bu
-Copies the comment for processing\&. For package\&.html, the \f3javadoc\fR command copies all content between the \f3<body>\fR and \f3</body>\fR HTML tags\&. You can include a \f3<head>\fR section to put a \f3<title>\fR tag, source file copyright statement, or other information, but none of these appear in the generated documentation\&.
-.TP 0.2i
-\(bu
-Processes the package tags\&. See Package Tags\&.
-.TP 0.2i
-\(bu
-Inserts the processed text at the bottom of the generated package summary page\&. See Java Platform, Standard Edition API Specification Overview at http://docs\&.oracle\&.com/javase/8/docs/api/overview-summary\&.html
-.TP 0.2i
-\(bu
-Copies the first sentence of the package comment to the top of the package summary page\&. The \f3javadoc\fR command also adds the package name and this first sentence to the list of packages on the overview page\&. See Java Platform, Standard Edition API Specification Overview at http://docs\&.oracle\&.com/javase/8/docs/api/overview-summary\&.html
-
-The end of the sentence is determined by the same rules used for the end of the first sentence of class and member main descriptions\&.
-.SS OVERVIEW\ COMMENT\ FILES
-Each application or set of packages that you are documenting can have its own overview documentation comment that is kept in its own source file, that the \f3javadoc\fR command merges into the generated overview page\&. You typically include in this comment any documentation that applies to the entire application or set of packages\&.
-.PP
-You can name the file anything you want such as overview\&.html and place it anywhere\&. A typical location is at the top of the source tree\&.
-.PP
-For example, if the source files for the \f3java\&.applet\fR package are contained in the /home/user/src/java/applet directory, then you could create an overview comment file at /home/user/src/overview\&.html\&.
-.PP
-You can have multiple overview comment files for the same set of source files in case you want to run the \f3javadoc\fR command multiple times on different sets of packages\&. For example, you could run the \f3javadoc\fR command once with \f3-private\fR for internal documentation and again without that option for public documentation\&. In this case, you could describe the documentation as public or internal in the first sentence of each overview comment file\&.
-.PP
-The content of the overview comment file is one big documentation comment that is written in HTML\&. Make the first sentence a summary about the application or set of packages\&. Do not put a title or any other text between the \f3<body>\fR tag and the first sentence\&. All tags except inline tags, such as an {\f3@link}\fR tag, must appear after the main description\&. If you add an \f3@see\fR tag, then it must have a fully qualified name\&.
+The following options are the core \f[CB]javadoc\f[R] options that are not
+equivalent to a corresponding \f[CB]javac\f[R] option:
.PP
-When you run the \f3javadoc\fR command, specify the overview comment file name with the \f3-overview\fR option\&. The file is then processed similarly to that of a package comment file\&. The \f3javadoc\fR command does the following:
-.TP 0.2i
-\(bu
-Copies all content between the \f3<body>\fR and \f3</body>\fR tags for processing\&.
-.TP 0.2i
-\(bu
-Processes the overview tags that are present\&. See Overview Tags\&.
-.TP 0.2i
-\(bu
-Inserts the processed text at the bottom of the generated overview page\&. See Java Platform Standard Edition API Specification Overview at http://docs\&.oracle\&.com/javase/8/docs/api/overview-summary\&.html
-.TP 0.2i
-\(bu
-Copies the first sentence of the overview comment to the top of the overview summary page\&.
-.SS UNPROCESSED\ FILES
-Your source files can include any files that you want the \f3javadoc\fR command to copy to the destination directory\&. These files usually include graphic files, example Java source and class files, and self-standing HTML files with a lot of content that would overwhelm the documentation comment of a typical Java source file\&.
-.PP
-To include unprocessed files, put them in a directory called doc-files\&. The doc-files directory can be a subdirectory of any package directory that contains source files\&. You can have one doc-files subdirectory for each package\&.
-.PP
-For example, if you want to include the image of a button in the \f3java\&.awt\&.Button\fR class documentation, then place the image file in the /home/user/src/java/awt/doc-files/ directory\&. Do not place the doc-files directory at /home/user/src/java/doc-files, because java is not a package\&. It does not contain any source files\&.
-.PP
-All links to the unprocessed files must be included in the code because the \f3javadoc\fR command does not look at the files\&. The \f3javadoc\fR command copies the directory and all of its contents to the destination\&. The following example shows how the link in the Button\&.java documentation comment might look:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * This button looks like this: \fP
-.fi
-.nf
-\f3 * <img src="doc\-files/Button\&.gif">\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS TEST\ AND\ TEMPLATE\ FILES
-You can store test and template files in the source tree in the same directory with or in a subdirectory of the directory where the source files reside\&. To prevent test and template files from being processed, run the \f3javadoc\fR command and explicitly pass in individual source file names\&.
-.PP
-Test files are valid, compilable source files\&. Template files are not valid, compatible source files, but they often have the \f3\&.java\fR suffix\&.
-.PP
-Test Files
-
-If you want your test files to belong to either an unnamed package or to a package other than the package that the source files are in, then put the test files in a subdirectory underneath the source files and give the directory an invalid name\&. If you put the test files in the same directory with the source and call the \f3javadoc\fR command with a command-line argument that indicates its package name, then the test files cause warnings or errors\&. If the files are in a subdirectory with an invalid name, then the test file directory is skipped and no errors or warnings are issued\&. For example, to add test files for source files in com\&.package1, put them in a subdirectory in an invalid package name\&. The following directory name is invalid because it contains a hyphen:
-.sp
-.nf
-\f3com/package1/test\-files/\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-If your test files contain documentation comments, then you can set up a separate run of the \f3javadoc\fR command to produce test file documentation by passing in their test source file names with wild cards, such as \f3com/package1/test-files/*\&.java\fR\&.
+\f[B]Note:\f[R]
.PP
-Template Files
-
-If you want a template file to be in the source directory, but not generate errors when you execute the \f3javadoc\fR command, then give it an invalid file name such as \f3Buffer-Template\&.java\fR to prevent it from being processed\&. The \f3javadoc\fR command only processes source files with names, when stripped of the \f3\&.java\fR suffix, that are valid class names\&.
-.SH GENERATED\ FILES
-By default, the \f3javadoc\fR command uses a standard doclet that generates HTML-formatted documentation\&. The standard doclet generates basic content, cross-reference, and support pages described here\&. Each HTML page corresponds to a separate file\&. The \f3javadoc\fR command generates two types of files\&. The first type is named after classes and interfaces\&. The second type contain hyphens (such as package-summary\&.html) to prevent conflicts with the first type of file\&.
-.SS BASIC\ CONTENT\ PAGES
-.TP 0.2i
-\(bu
-One class or interface page (classname\&.html) for each class or interface being documented\&.
-.TP 0.2i
-\(bu
-One package page (package-summary\&.html) for each package being documented\&. The \f3javadoc\fR command includes any HTML text provided in a file with the name package\&.html or package-info\&.java in the package directory of the source tree\&.
-.TP 0.2i
-\(bu
-One overview page (overview-summary\&.html) for the entire set of packages\&. The overview page is the front page of the generated document\&. The \f3javadoc\fR command includes any HTML text provided in a file specified by the \f3-overview\fR option\&. The Overview page is created only when you pass two or more package names into the \f3javadoc\fR command\&. See HTML Frames and Options\&.
-.SS CROSS-REFERENCE\ PAGES
-.TP 0.2i
-\(bu
-One class hierarchy page for the entire set of packages (overview-tree\&.html)\&. To view the hierarchy page, click \fIOverview\fR in the navigation bar and click \fITree\fR\&.
-.TP 0.2i
-\(bu
-One class hierarchy page for each package (package-tree\&.html) To view the hierarchy page, go to a particular package, class, or interface page, and click \fITree\fR to display the hierarchy for that package\&.
-.TP 0.2i
-\(bu
-One use page for each package (package-use\&.html) and a separate use page for each class and interface (class-use/classname\&.html)\&. The use page describes what packages, classes, methods, constructors and fields use any part of the specified class, interface, or package\&. For example, given a class or interface A, its use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A\&. To view the use page, go to the package, class, or interface and click the \fIUse\fR link in the navigation bar\&.
-.TP 0.2i
-\(bu
-A deprecated API page (deprecated-list\&.html) that lists all deprecated APIs and their suggested replacements\&. Avoid deprecated APIs because they can be removed in future implementations\&.
-.TP 0.2i
-\(bu
-A constant field values page (constant-values\&.html) for the values of static fields\&.
-.TP 0.2i
-\(bu
-A serialized form page (serialized-form\&.html) that provides information about serializable and externalizable classes with field and method descriptions\&. The information on this page is of interest to reimplementors, and not to developers who want to use the API\&. To access the serialized form page, go to any serialized class and click \fISerialized Form\fR in the See Also section of the class comment\&. The standard doclet generates a serialized form page that lists any class (public or non-public) that implements Serializable with its \f3readObject\fR and \f3writeObject\fR methods, the fields that are serialized, and the documentation comments from the \f3@serial\fR, \f3@serialField\fR, and \f3@serialData\fR tags\&. Public serializable classes can be excluded by marking them (or their package) with \f3@serial\fR exclude, and package-private serializable classes can be included by marking them (or their package) with an \f3@serial\fR include\&. As of Release 1\&.4, you can generate the complete serialized form for public and private classes by running the \f3javadoc\fR command without specifying the \f3-private\fR option\&. See Options\&.
-.TP 0.2i
-\(bu
-An index page (\f3index-*\&.html\fR) of all class, interface, constructor, field and method names, in alphabetical order\&. The index page is internationalized for Unicode and can be generated as a single file or as a separate file for each starting character (such as A\(enZ for English)\&.
-.SS SUPPORT\ PAGES
-.TP 0.2i
-\(bu
-A help page (help-doc\&.html) that describes the navigation bar and the previous pages\&. Use \f3-helpfile\fR to override the default help file with your own custom help file\&.
-.TP 0.2i
-\(bu
-One index\&.html file that creates the HTML frames for display\&. Load this file to display the front page with frames\&. The index\&.html file contains no text content\&.
-.TP 0.2i
-\(bu
-Several frame files (\f3*-frame\&.html\fR) that contains lists of packages, classes, and interfaces\&. The frame files display the HTML frames\&.
-.TP 0.2i
-\(bu
-A package list file (package-list) that is used by the \f3-link\fR and \f3-linkoffline\fR options\&. The package list file is a text file that is not reachable through links\&.
-.TP 0.2i
-\(bu
-A style sheet file (stylesheet\&.css) that controls a limited amount of color, font family, font size, font style, and positioning information on the generated pages\&.
-.TP 0.2i
-\(bu
-A doc-files directory that holds image, example, source code, or other files that you want copied to the destination directory\&. These files are not processed by the \f3javadoc\fR command\&. This directory is not processed unless it exists in the source tree\&.
+In tools that support \f[CB]\-\-\f[R] style options, the GNU\-style
+options can use the equal sign (=) instead of a white space to separate
+the name of an option from its value.
+.TP
+.B \f[CB]\-breakiterator\f[R]
+Computes the first sentence with \f[CB]BreakIterator\f[R].
+The first sentence is copied to the package, class, or member summary
+and to the alphabetic index.
+The \f[CB]BreakIterator\f[R] class is used to determine the end of a
+sentence for all languages except for English.
+.RS
+.IP \[bu] 2
+English default sentence\-break algorithm \-\-\- Stops at a period
+followed by a space or an HTML block tag, such as \f[CB]<P>\f[R].
+.IP \[bu] 2
+Breakiterator sentence\-break algorithm \-\-\- Stops at a period,
+question mark, or exclamation point followed by a space when the next
+word starts with a capital letter.
+This is meant to handle most abbreviations (such as "The serial no.
+is valid", but will not handle "Mr.\ Smith").
+The \f[CB]\-breakiterator\f[R] option doesn\[aq]t stop at HTML tags or
+sentences that begin with numbers or symbols.
+The algorithm stops at the last period in \f[CB]\&../filename\f[R], even
+when embedded in an HTML tag.
+.RE
+.TP
+.B \f[CB]\-doclet\f[R] \f[I]class\f[R]
+Generates output by using an alternate doclet.
+Use the fully qualified name.
+This doclet defines the content and formats the output.
+If the \f[CB]\-doclet\f[R] option isn\[aq]t used, then the
+\f[CB]javadoc\f[R] tool uses the standard doclet for generating the
+default HTML format.
+This class must contain the \f[CB]start(Root)\f[R] method.
+The path to this starting class is defined by the \f[CB]\-docletpath\f[R]
+option.
+.RS
+.RE
+.TP
+.B \f[CB]\-docletpath\f[R] \f[I]path\f[R]
+Specifies where to find doclet class files (specified with the
+\f[CB]\-doclet\f[R] option) and any JAR files it depends on.
+If the starting class file is in a JAR file, then this option specifies
+the path to that JAR file.
+You can specify an absolute path or a path relative to the current
+directory.
+If \f[CB]classpathlist\f[R] contains multiple paths or JAR files, then
+they should be separated with a colon (\f[CB]:\f[R]) on Oracle Solaris and
+a semi\-colon (\f[CB];\f[R]) on Windows.
+This option isn\[aq]t necessary when the \f[CB]doclet\f[R] starting class
+is already in the search path.
+.RS
+.RE
+.TP
+.B \f[CB]\-exclude\f[R] \f[I]pkglist\f[R]
+Unconditionally, excludes the specified packages and their subpackages
+from the list formed by \f[CB]\-subpackages\f[R].
+It excludes those packages even when they would otherwise be included by
+some earlier or later \f[CB]\-subpackages\f[R] option.
+.RS
.PP
-See Options\&.
-.SS HTML\ FRAMES
-The \f3javadoc\fR command generates the minimum number of frames (two or three) necessary based on the values passed to the command\&. It omits the list of packages when you pass a single package name or source files that belong to a single package as an argument to the \f3javadoc\fR command\&. Instead, the \f3javadoc\fR command creates one frame in the left-hand column that displays the list of classes\&. When you pass two or more package names, the \f3javadoc\fR command creates a third frame that lists all packages and an overview page (overview-summary\&.html)\&. To bypass frames, click the \fINo Frames\fR link or enter the page set from the overview-summary\&.html page\&.
-.SS GENERATED\ FILE\ STRUCTURE
-The generated class and interface files are organized in the same directory hierarchy that Java source files and class files are organized\&. This structure is one directory per subpackage\&.
-.PP
-For example, the document generated for the \f3java\&.applet\&.Applet\fR class would be located at java/applet/Applet\&.html\&.
-.PP
-The file structure for the \f3java\&.applet\fR package follows, assuming that the destination directory is named \f3apidocs\fR\&. All files that contain the word \fIframe\fR appear in the upper-left or lower-left frames, as noted\&. All other HTML files appear in the right-hand frame\&.
+The following example would include \f[CB]java.io\f[R],
+\f[CB]java.util\f[R], and \f[CB]java.math\f[R] (among others), but would
+exclude packages rooted at \f[CB]java.net\f[R] and \f[CB]java.lang\f[R].
+Notice that these examples exclude \f[CB]java.lang.ref\f[R], which is a
+subpackage of \f[CB]java.lang\f[R].
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.RS 2
+.RS
.PP
-Directories are bold\&. The asterisks (*) indicate the files and directories that are omitted when the arguments to the \f3javadoc\fR command are source file names rather than package names\&. When arguments are source file names, an empty package list is created\&. The doc-files directory is not created in the destination unless it exists in the source tree\&. See Generated Files\&.
-.TP 0.2i
-\(bu
-\fIapidocs\fR: Top-level directory
-.RS
-.TP 0.2i
-\(bu
-index\&.html: Initial Page that sets up HTML frames
-.TP 0.2i
-\(bu
-*overview-summary\&.html: Package list with summaries
-.TP 0.2i
-\(bu
-overview-tree\&.html: Class hierarchy for all packages
-.TP 0.2i
-\(bu
-deprecated-list\&.html: Deprecated APIs for all packages
-.TP 0.2i
-\(bu
-constant-values\&.html: Static field values for all packages
-.TP 0.2i
-\(bu
-serialized-form\&.html: Serialized forms for all packages
-.TP 0.2i
-\(bu
-*overview-frame\&.html: All packages for display in upper-left frame
-.TP 0.2i
-\(bu
-allclasses-frame\&.html: All classes for display in lower-left frame
-.TP 0.2i
-\(bu
-help-doc\&.html: Help about Javadoc page organization
-.TP 0.2i
-\(bu
-index-all\&.html: Default index created without \f3-splitindex\fR option
-.TP 0.2i
-\(bu
-\fIindex-files\fR: Directory created with \f3-splitindex\fR option
-.RS
-.TP 0.2i
-\(bu
-index-<number>\&.html: Index files created with \f3-splitindex\fR option
-.RE
-
-.TP 0.2i
-\(bu
-package-list: Package names for resolving external references
-.TP 0.2i
-\(bu
-stylesheet\&.css: Defines fonts, colors, positions, and so on
-.RE
-
-.TP 0.2i
-\(bu
-\fIjava\fR: Package directory
-.RS
-.TP 0.2i
-\(bu
-\fIapplet\fR: Subpackage directory
-.RS
-.TP 0.2i
-\(bu
-Applet\&.html: \f3Applet\fR class page
-.TP 0.2i
-\(bu
-AppletContext\&.html: \f3AppletContext\fR interface
-.TP 0.2i
-\(bu
-AppletStub\&.html: \f3AppletStub\fR interface
-.TP 0.2i
-\(bu
-AudioClip\&.html: \f3AudioClip\fR interface
-.TP 0.2i
-\(bu
-package-summary\&.html: Classes with summaries
-.TP 0.2i
-\(bu
-package-frame\&.html: Package classes for display in lower-left frame
-.TP 0.2i
-\(bu
-package-tree\&.html: Class hierarchy for this package
-.TP 0.2i
-\(bu
-package-use\&.html: Where this package is used
-.TP 0.2i
-\(bu
-\fIdoc-files\fR: Image and example files directory
-.TP 0.2i
-\(bu
-\fIclass-use\fR: Image and examples file location
-
-- Applet\&.html: Uses of the Applet class
-
-- AppletContext\&.html: Uses of the \f3AppletContext\fR interface
-
-- AppletStub\&.html: Uses of the \f3AppletStub\fR interface
-
-- AudioClip\&.html: Uses of the \f3AudioClip\fR interface
-.RE
-
-.RE
-
-.TP 0.2i
-\(bu
-\fIsrc-html\fR: Source code directory
-.RS
-.TP 0.2i
-\(bu
-\fIjava\fR: Package directory
-.RS
-.TP 0.2i
-\(bu
-\fIapplet\fR: Subpackage directory
-
-- Applet\&.html: Applet source code
-
-- AppletContext\&.html: \f3AppletContext\fR source code
-
-- AppletStub\&.html: \f3AppletStub\fR source code
-
-- AudioClip\&.html: \f3AudioClip\fR source code
-.RE
-
-.RE
-
-.SS GENERATED\ API\ DECLARATIONS
-The \f3javadoc\fR command generates a declaration at the start of each class, interface, field, constructor, and method description for that API item\&. For example, the declaration for the \f3Boolean\fR class is:
-.sp
-.nf
-\f3public final class Boolean\fP
-.fi
-.nf
-\f3extends Object\fP
-.fi
-.nf
-\f3implements Serializable\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The declaration for the \f3Boolean\&.valueOf\fR method is:
-.sp
-.nf
-\f3public static Boolean valueOf(String s)\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The \f3javadoc\fR command can include the modifiers \f3public\fR, \f3protected\fR, \f3private\fR, \f3abstract\fR, \f3final\fR, \f3static\fR, \f3transient\fR, and \f3volatile\fR, but not \f3synchronized\fR or \f3native\fR\&. The \f3synchronized\fR and \f3native\fR modifiers are considered implementation detail and not part of the API specification\&.
+\f[CB]javadoc\ \-sourcepath\ /home/user/src\ \-subpackages\ java\ \-exclude\ java.net:java.lang\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R]
+.RS 2
+.RS
.PP
-Rather than relying on the keyword \f3synchronized\fR, APIs should document their concurrency semantics in the main description of the comment\&. For example, a description might be: A single enumeration cannot be used by multiple threads concurrently\&. The document should not describe how to achieve these semantics\&. As another example, while the \f3Hashtable\fR option should be thread-safe, there is no reason to specify that it is achieved by synchronizing all of its exported methods\&. It is better to reserve the right to synchronize internally at the bucket level for higher concurrency\&.
-.SH DOCUMENTATION\ COMMENTS
-This section describes source code comments and comment inheritance\&.
-.SS SOURCE\ CODE\ COMMENTS
-You can include documentation comments in the source code, ahead of declarations for any class, interface, method, constructor, or field\&. You can also create documentation comments for each package and another one for the overview, though their syntax is slightly different\&. A documentation comment consists of the characters between \f3/**\fR and \f3*/\fR that end it\&. Leading asterisks are allowed on each line and are described further in the following section\&. The text in a comment can continue onto multiple lines\&.
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * This is the typical format of a simple documentation comment\fP
-.fi
-.nf
-\f3 * that spans two lines\&.\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-To save space you can put a comment on one line:
-.sp
-.nf
-\f3/** This comment takes up only one line\&. */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.PP
-Placement of Comments
-
-Documentation comments are recognized only when placed immediately before class, interface, constructor, method, or field declarations\&. Documentation comments placed in the body of a method are ignored\&. The \f3javadoc\fR command recognizes only one documentation comment per declaration statement\&. See Where Tags Can Be Used\&.
-.PP
-A common mistake is to put an \f3import\fR statement between the class comment and the class declaration\&. Do not put an \f3import\fR statement at this location because the \f3javadoc\fR command ignores the class comment\&.
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * This is the class comment for the class Whatever\&.\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3import com\&.example; // MISTAKE \- Important not to put import statement here\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3public class Whatever{ }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.PP
-Parts of Comments
-
-A documentation comment has a main description followed by a tag section\&. The main description begins after the starting delimiter \f3/**\fR and continues until the tag section\&. The tag section starts with the first block tag, which is defined by the first \f3@\fR character that begins a line (ignoring leading asterisks, white space, and leading separator \f3/**\fR)\&. It is possible to have a comment with only a tag section and no main description\&. The main description cannot continue after the tag section begins\&. The argument to a tag can span multiple lines\&. There can be any number of tags, and some types of tags can be repeated while others cannot\&. For example, this \f3@see\fR tag starts the tag section:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * This sentence holds the main description for this documentation comment\&.\fP
-.fi
-.nf
-\f3 * @see java\&.lang\&.Object\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+\f[CB]javadoc\ \-sourcepath\ \\user\\src\ \-subpackages\ java\ \-exclude\ java.net:java.lang\f[R]
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]\-\-expand\-requires\f[R] \f[I]value\f[R]
+Instructs the javadoc tool to expand the set of modules to be
+documented.
+By default, only the modules given explicitly on the command line are
+documented.
+Supports the following values:
+.RS
+.IP \[bu] 2
+\f[CB]transitive\f[R]: additionally includes all the required transitive
+dependencies of those modules.
+.IP \[bu] 2
+\f[CB]all\f[R]: includes all dependencies.
+.RE
+.TP
+.B \f[CB]\-help\f[R] or \f[CB]\-\-help\f[R]
+Displays the online help, which lists all of the \f[CB]javadoc\f[R] and
+\f[CB]doclet\f[R] command\-line options.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\-extra\f[R] or \f[CB]\-X\f[R]
+Prints a synopsis of non\-standard options and exits.
+.RS
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]flag\f[R]
+Passes \f[I]flag\f[R] directly to the Java Runtime Environment (JRE) that
+runs the \f[CB]javadoc\f[R] tool.
+For example, if you must ensure that the system sets aside 32 MB of
+memory in which to process the generated documentation, then you would
+call the \f[CB]\-Xmx\f[R] option as follows:
+\f[CB]javadoc\ \-J\-Xmx32m\ \-J\-Xms32m\ com.mypackage\f[R].
+Be aware that \f[CB]\-Xms\f[R] is optional because it only sets the size
+of initial memory, which is useful when you know the minimum amount of
+memory required.
+.RS
.PP
-Block and inline Tags
-
-A tag is a special keyword within a documentation comment that the \f3javadoc\fR command processes\&. There are two kinds of tags: block tags, which appear as an \f3@tag\fR tag (also known as standalone tags), and inline tags, which appear within braces, as an \f3{@tag}\fR tag\&. To be interpreted, a block tag must appear at the beginning of a line, ignoring leading asterisks, white space, and the separator (\f3/**\fR)\&. This means you can use the \f3@\fR character elsewhere in the text and it will not be interpreted as the start of a tag\&. If you want to start a line with the \f3@\fR character and not have it be interpreted, then use the HTML entity \f3@\fR\&. Each block tag has associated text, which includes any text following the tag up to, but not including, either the next tag, or the end of the documentation comment\&. This associated text can span multiple lines\&. An inline tag is allowed and interpreted anywhere that text is allowed\&. The following example contains the \f3@deprecated\fR block tag and the \f3{@link}\fR inline tag\&. See Javadoc Tags\&.
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * @deprecated As of JDK 1\&.1, replaced by {@link #setBounds(int,int,int,int)}\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.PP
-Write Comments in HTML
-
-The text must be written in HTML with HTML entities and HTML tags\&. You can use whichever version of HTML your browser supports\&. The standard doclet generates HTML 3\&.2-compliant code elsewhere (outside of the documentation comments) with the inclusion of cascading style sheets and frames\&. HTML 4\&.0 is preferred for generated files because of the frame sets\&.
-.PP
-For example, entities for the less than symbol (<) and the greater than symbol (>) should be written as \f3<\fR and \f3>\fR\&. Similarly, the ampersand (&) should be written as \f3&\fR\&. The bold HTML tag \f3<b>\fR is shown in the following example\&.
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * This is a <b>doc</b> comment\&.\fP
-.fi
-.nf
-\f3 * @see java\&.lang\&.Object\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.PP
-Leading Asterisks
-
-When the \f3javadoc\fR command parses a documentation comment, leading asterisks (*) on each line are discarded, and blanks and tabs that precede the initial asterisks (*) are also discarded\&. If you omit the leading asterisk on a line, then the leading white space is no longer removed so that you can paste code examples directly into a documentation comment inside a \f3<PRE>\fR tag with its indentation preserved\&. Spaces are interpreted by browsers more uniformly than tabs\&. Indentation is relative to the left margin (rather than the separator \f3/**\fR or \f3<PRE>\fR tag)\&.
+There is no space between the \f[CB]J\f[R] and the \f[CB]flag\f[R].
.PP
-First Sentence
-
-The first sentence of each documentation comment should be a summary sentence that contains a concise but complete description of the declared entity\&. This sentence ends at the first period that is followed by a blank, tab, or line terminator, or at the first block tag\&. The \f3javadoc\fR command copies this first sentence to the member summary at the top of the HTML page\&.
+Use the \f[CB]\-version\f[R] option to report the version of the JRE being
+used to run the \f[CB]javadoc\f[R] tool.
+.IP
+.nf
+\f[CB]
+javadoc\ \-J\-version
+java\ version\ "10\-ea"\ 2018\-03\-20
+Java(TM)\ SE\ Runtime\ Environment\ 18.3\ (build\ 10\-ea+36)
+Java\ HotSpot(TM)\ 64\-Bit\ Server\ VM\ 18.3\ (build\ 10\-ea+36,\ mixed\ mode)
+\f[R]
+.fi
+.RE
+.TP
+.B \f[CB]\-locale\f[R] \f[I]name\f[R]
+Specifies the locale that the \f[CB]javadoc\f[R] tool uses when it
+generates documentation.
+The argument is the name of the locale, as described in
+\f[CB]java.util.Locale\f[R] documentation, such as \f[CB]en_US\f[R]
+(English, United States) or \f[CB]en_US_WIN\f[R] (Windows variant).
+.RS
.PP
-Multiple-Field Declarations
-
-The Java platform lets you declare multiple fields in a single statement, but this statement can have only one documentation comment that is copied for all fields\&. If you want individual documentation comments for each field, then declare each field in a separate statement\&. For example, the following documentation comment does not make sense written as a single declaration and would be better handled as two declarations:
-.sp
-.nf
-\f3/** \fP
-.fi
-.nf
-\f3 * The horizontal and vertical distances of point (x,y)\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3public int x, y; // Avoid this \fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The \f3javadoc\fR command generates the following documentation from the previous code:
-.sp
-.nf
-\f3public int x\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The horizontal and vertical distances of point (x, y)\&.
-.sp
-.nf
-\f3public int y\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The horizontal and vertical distances of point (x, y)\&.
-.PP
-Use of Header Tags
-
-When writing documentation comments for members, it is best not to use HTML heading tags such as \f3<H1>\fR and \f3<H2>\fR, because the \f3javadoc\fR command creates an entire structured document, and these structural tags might interfere with the formatting of the generated document\&. However, you can use these headings in class and package comments to provide your own structure\&.
-.SS METHOD\ COMMENT\ INHERITANCE
-The \f3javadoc\fR command allows method comment inheritance in classes and interfaces to fill in missing text or to explicitly inherit method comments\&. Constructors, fields, and nested classes do not inherit documentation comments\&.
+\f[B]Note:\f[R]
.PP
-\fINote:\fR The source file for an inherited method must be on the path specified by the \f3-sourcepath\fR option for the documentation comment to be available to copy\&. Neither the class nor its package needs to be passed in on the command line\&. This contrasts with Release 1\&.3\&.\fIn\fR and earlier releases, where the class had to be a documented class\&.
-.PP
-Fill in Missing Text
-
-When a main description, or \f3@return\fR, \f3@param\fR, or \f3@throws\fR tag is missing from a method comment, the \f3javadoc\fR command copies the corresponding main description or tag comment from the method it overrides or implements (if any)\&. See Method Comment Inheritance\&.
-.PP
-When an \f3@param\fR tag for a particular parameter is missing, the comment for that parameter is copied from the method further up the inheritance hierarchy\&. When an \f3@throws\fR tag for a particular exception is missing, the \f3@throws\fR tag is copied only when that exception is declared\&.
-.PP
-This behavior contrasts with Release 1\&.3 and earlier, where the presence of any main description or tag would prevent all comments from being inherited\&.
-.PP
-See Javadoc Tags and Options\&.
-.PP
-Explicit Inheritance
-
-Insert the \f3{@inheritDoc}\fR inline tag in a method main description or \f3@return\fR, \f3@param\fR, or \f3@throws\fR tag comment\&. The corresponding inherited main description or tag comment is copied into that spot\&.
-.SS CLASS\ AND\ INTERFACE\ INHERITANCE
-Comment inheritance occurs in all possible cases of inheritance from classes and interfaces:
-.TP 0.2i
-\(bu
-When a method in a class overrides a method in a superclass
-.TP 0.2i
-\(bu
-When a method in an interface overrides a method in a superinterface
-.TP 0.2i
-\(bu
-When a method in a class implements a method in an interface
-.PP
-In the first two cases, the \f3javadoc\fR command generates the subheading \fIOverrides\fR in the documentation for the overriding method\&. A link to the method being overridden is included, whether or not the comment is inherited\&.
-.PP
-In the third case, when a method in a specified class implements a method in an interface, the \f3javadoc\fR command generates the subheading \fISpecified by\fR in the documentation for the overriding method\&. A link to the method being implemented is included, whether or not the comment is inherited\&.
-.SS METHOD\ COMMENTS\ ALGORITHM
-If a method does not have a documentation comment, or has an \f3{@inheritDoc}\fR tag, then the \f3javadoc\fR command uses the following algorithm to search for an applicable comment\&. The algorithm is designed to find the most specific applicable documentation comment, and to give preference to interfaces over superclasses:
-.TP 0.4i
-1\&.
-Look in each directly implemented (or extended) interface in the order they appear following the word \f3implements\fR (or \f3extends\fR) in the method declaration\&. Use the first documentation comment found for this method\&.
-.TP 0.4i
-2\&.
-If Step 1 failed to find a documentation comment, then recursively apply this entire algorithm to each directly implemented (or extended) interface in the same order they were examined in Step 1\&.
-.TP 0.4i
-3\&.
-When Step 2 fails to find a documentation comment and this is a class other than the \f3Object\fR class, but not an interface:
-.RS
-.TP 0.4i
-1\&.
-If the superclass has a documentation comment for this method, then use it\&.
-.TP 0.4i
-2\&.
-If Step 3a failed to find a documentation comment, then recursively apply this entire algorithm to the superclass\&.
-.RE
-
-.SH JAVADOC\ TAGS
-The \f3javadoc\fR command parses special tags when they are embedded within a Java documentation comment\&. The \f3javadoc\fR tags let you autogenerate a complete, well-formatted API from your source code\&. The tags start with an at sign (\f3@\fR) and are case-sensitive\&. They must be typed with the uppercase and lowercase letters as shown\&. A tag must start at the beginning of a line (after any leading spaces and an optional asterisk), or it is treated as text\&. By convention, tags with the same name are grouped together\&. For example, put all \f3@see\fR tags together\&. For more information, see Where Tags Can Be Used\&.
-.PP
-Tags have the following types:
-.TP 0.2i
-\(bu
-Bock tags: Place block tags only in the tag section that follows the description\&. Block tags have the form: \fI@tag\fR\&.
-.TP 0.2i
-\(bu
-Inline tags: Place inline tags anywhere in the main description or in the comments for block tags\&. Inline tags are enclosed within braces: \fI{@tag}\fR\&.
+The \f[CB]\-locale\f[R] option must be placed ahead (to the left) of any
+options provided by the standard doclet or any other doclet.
+Otherwise, the navigation bars appear in English.
+This is the only command\-line option that depends on order.
.PP
-For custom tags, see -tag tagname:Xaoptcmf:"taghead"\&. See also Where Tags Can Be Used\&.
-.SS TAG\ DESCRIPTIONS
-.TP
-@author \fIname-text\fR
-Introduced in JDK 1\&.0
-
-Adds an Author entry with the specified name text to the generated documents when the \f3-author\fR option is used\&. A documentation comment can contain multiple \f3@author\fR tags\&. You can specify one name per \f3@author\fR tag or multiple names per tag\&. In the former case, the \f3javadoc\fR command inserts a comma (,) and space between names\&. In the latter case, the entire text is copied to the generated document without being parsed\&. Therefore, you can use multiple names per line if you want a localized name separator other than a comma\&. See @author in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#@author
-.TP
-{@code \fItext\fR}
-Introduced in JDK 1\&.5
-
-Equivalent to \f3<code>{@literal}</code>\fR\&.
-
-Displays text in code font without interpreting the text as HTML markup or nested Javadoc tags\&. This enables you to use regular angle brackets (< and >) instead of the HTML entities (\f3<\fR and \f3>\fR) in documentation comments, such as in parameter types (\f3<Object>\fR), inequalities (\f33 < 4\fR), or arrows (\f3<-\fR)\&. For example, the documentation comment text \f3{@code A<B>C}\fR displayed in the generated HTML page unchanged as \f3A<B>C\fR\&. This means that the \f3<B>\fR is not interpreted as bold and is in code font\&. If you want the same functionality without the code font, then use the \f3{@literal}\fR tag\&.
-.TP
-@deprecated \fIdeprecated-text\fR
-Introduced in JDK 1\&.0
-
-Adds a comment indicating that this API should no longer be used (even though it may continue to work)\&. The \f3javadoc\fR command moves \f3deprecated-text\fRahead of the main description, placing it in italics and preceding it with a bold warning: Deprecated\&. This tag is valid in all documentation comments: overview, package, class, interface, constructor, method and field\&.
-
-The first sentence of deprecated text should tell the user when the API was deprecated and what to use as a replacement\&. The \f3javadoc\fR command copies the first sentence to the summary section and index\&. Subsequent sentences can also explain why it was deprecated\&. You should include an \f3{@link}\fR tag (for Javadoc 1\&.2 or later) that points to the replacement API\&.
-
-Use the \fI@deprecated annotation\fR tag to deprecate a program element\&. See How and When to Deprecate APIs at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/deprecation/deprecation\&.html
-
-See also @deprecated in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#@deprecated
-.TP
-{@docRoot}
-Introduced in JDK 1\&.3
-
-Represents the relative path to the generated document\&'s (destination) root directory from any generated page\&. This tag is useful when you want to include a file, such as a copyright page or company logo, that you want to reference from all generated pages\&. Linking to the copyright page from the bottom of each page is common\&.
-
-This \f3{@docRoot}\fR tag can be used both on the command line and in a documentation comment\&. This tag is valid in all documentation comments: overview, package, class, interface, constructor, method and field, and includes the text portion of any tag (such as the \f3@return\fR, \f3@param\fR and \f3@deprecated\fR tags)\&.
-.RS
-.TP 0.2i
-\(bu
-On the command line, where the header, footer, or bottom are defined: \f3javadoc -bottom \&'<a href="{@docRoot}/copyright\&.html">Copyright</a>\&'\fR\&.
-
-When you use the \f3{@docRoot}\fR tag this way in a make file, some \f3makefile\fR programs require a special way to escape for the brace \f3{}\fR characters\&. For example, the Inprise MAKE version 5\&.2 running on Windows requires double braces: \f3{{@docRoot}}\fR\&. It also requires double (rather than single) quotation marks to enclose arguments to options such as the \f3-bottom\fR option (with the quotation marks around the \f3href\fR argument omitted)\&.
-.TP 0.2i
-\(bu
-In a documentation comment:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * See the <a href="{@docRoot}/copyright\&.html">Copyright</a>\&.\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-This tag is needed because the generated documents are in hierarchical directories, as deep as the number of subpackages\&. The expression: \f3<a href="{@docRoot}/copyright\&.html">\fR resolves to \f3<a href="\&.\&./\&.\&./copyright\&.html">\fR for \f3java/lang/Object\&.java\fR and \f3<a href="\&.\&./\&.\&./\&.\&./copyright\&.html">\fR for \f3java/lang/ref/Reference\&.java\fR\&.
-.RE
-
-.TP
-@exception \fIclass-name description\fR
-Introduced in JDK 1\&.0
-
-Identical to the \f3@throws\fR tag\&. See @throws class-name description\&.
-.TP
-{@inheritDoc}
-Introduced in JDK 1\&.4
-
-Inherits (copies) documentation from the nearest inheritable class or implementable interface into the current documentation comment at this tag\&'s location\&. This enables you to write more general comments higher up the inheritance tree and to write around the copied text\&.
-
-This tag is valid only in these places in a documentation comment:
-.RS
-.TP 0.2i
-\(bu
-In the main description block of a method\&. In this case, the main description is copied from a class or interface up the hierarchy\&.
-.TP 0.2i
-\(bu
-In the text arguments of the \f3@return\fR, \f3@param,\fR and \f3@throws\fR tags of a method\&. In this case, the tag text is copied from the corresponding tag up the hierarchy\&.
-.RE
-
-
-See Method Comment Inheritance for a description of how comments are found in the inheritance hierarchy\&. Note that if this tag is missing, then the comment is or is not automatically inherited according to rules described in that section\&.
-.TP
-{@link \fIpackage\&.class#member label\fR}
-Introduced in JDK 1\&.2
-
-Inserts an inline link with a visible text label that points to the documentation for the specified package, class, or member name of a referenced class\&. This tag is valid in all documentation comments: overview, package, class, interface, constructor, method and field, including the text portion of any tag, such as the \f3@return\fR, \f3@param\fR and \f3@deprecated\fR tags\&. See @link in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#{@link
-
-This tag is similar to the \f3@see\fR tag\&. Both tags require the same references and accept the same syntax for \f3package\&.class#member\fR and \f3label\fR\&. The main difference is that the \f3{@link}\fR tag generates an inline link rather than placing the link in the See Also section\&. The \f3{@link}\fR tag begins and ends with braces to separate it from the rest of the inline text\&. If you need to use the right brace (\f3}\fR) inside the label, then use the HTML entity notation \f3}\fR\&.
-
-There is no limit to the number of \f3{@link}\fR tags allowed in a sentence\&. You can use this tag in the main description part of any documentation comment or in the text portion of any tag, such as the \f3@deprecated\fR, \f3@return\fR or \f3@param\fR tags\&.
-
-For example, here is a comment that refers to the \f3getComponentAt(int, int)\fR method:
-.sp
-.nf
-\f3Use the {@link #getComponentAt(int, int) getComponentAt} method\&.\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-From this code, the standard doclet generates the following HTML (assuming it refers to another class in the same package):
-.sp
-.nf
-\f3Use the <a href="Component\&.html#getComponentAt(int, int)">getComponentAt</a> method\&.\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The previous line appears on the web page as:
-.sp
-.nf
-\f3Use the getComponentAt method\&.\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-{@linkplain \fIpackage\&.class#member label\fR}
-Introduced in JDK 1\&.4
-
-Behaves the same as the \f3{@link}\fR tag, except the link label is displayed in plain text rather than code font\&. Useful when the label is plain text\&. For example, \f3Refer to {@linkplain add() the overridden method}\fR\&. displays as: Refer to the overridden method\&.
-.TP
-{@literal \fItext\fR}
-Introduced in JDK 1\&.5
-
-Displays text without interpreting the text as HTML markup or nested Javadoc tags\&. This enables you to use angle brackets (\f3< and >\fR) instead of the HTML entities (\f3<\fR and \f3>\fR) in documentation comments, such as in parameter types (\f3<Object>\fR), inequalities (\f33 < 4\fR), or arrows (<-)\&. For example, the documentation comment text \f3{@literal A<B>C}\fR displays unchanged in the generated HTML page in your browser, as \f3A<B>C\fR\&. The \f3<B>\fR is not interpreted as bold (and it is not in code font)\&. If you want the same functionality with the text in code font, then use the \f3{@code}\fR tag\&.
-.TP
-@param \fIparameter-name description\fR
-Introduced in JDK 1\&.0
-
-Adds a parameter with the specified \f3parameter-name\fR followed by the specified description to the Parameters section\&. When writing the documentation comment, you can continue the description onto multiple lines\&. This tag is valid only in a documentation comment for a method, constructor, or class\&. See @param in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#@param
-
-The \f3parameter-name\fR can be the name of a parameter in a method or constructor, or the name of a type parameter of a class, method, or constructor\&. Use angle brackets around this parameter name to specify the use of a type parameter\&.
-
-Example of a type parameter of a class:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * @param <E> Type of element stored in a list\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3public interface List<E> extends Collection<E> {\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-Example of a type parameter of a method:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * @param string the string to be converted\fP
-.fi
-.nf
-\f3 * @param type the type to convert the string to\fP
-.fi
-.nf
-\f3 * @param <T> the type of the element\fP
-.fi
-.nf
-\f3 * @param <V> the value of the element\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3<T, V extends T> V convert(String string, Class<T> type) {\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-@return \fIdescription\fR
-Introduced in JDK 1\&.0
-
-Adds a Returns section with the description text\&. This text should describe the return type and permissible range of values\&. This tag is valid only in a documentation comment for a method\&. See @return in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#@return
-.TP
-@see \fIreference\fR
-Introduced in JDK 1\&.0
-
-Adds a \fISee Also\fR heading with a link or text entry that points to a reference\&. A documentation comment can contain any number of \f3@see\fR tags, which are all grouped under the same heading\&. The \f3@see\fR tag has three variations\&. The form is the most common\&. This tag is valid in any documentation comment: overview, package, class, interface, constructor, method, or field\&. For inserting an inline link within a sentence to a package, class, or member, see \f3{@link}\fR\&.
-
-\fIForm 1\fR\&. The @see \f3string\fR tag form adds a text entry for \fIstring\fR\&. No link is generated\&. The string is a book or other reference to information not available by URL\&. The \f3javadoc\fR command distinguishes this from the previous cases by searching for a double quotation mark (") as the first character\&. For example, \f3@see "The Java Programming Language"\fR that generates the following text:
-
-\fISee Also\fR:
-
-"The Java Programming Language"
-
-\fIForm 2\fR\&. The \f3@see <a href="URL#value">label</a>\fR form adds a link as defined by \f3URL#value\fR\&. The \f3URL#value\fR parameter is a relative or absolute URL\&. The \f3javadoc\fR command distinguishes this from other cases by searching for a less-than symbol (\f3<\fR) as the first character\&. For example, \f3@see <a href="spec\&.html#section">Java Spec</a>\fR generates the following link:
-
-\fISee Also\fR:
-
-Java Spec
-
-\fIForm 3\fR\&. The \f3@see package\&.class#member label\fR form adds a link with a visible text label that points to the documentation for the specified name in the Java Language that is referenced\&. The label is optional\&. If the label is omitted, then the name appears instead as visible text, suitably shortened\&. Use the \f3-noqualifier\fR option to globally remove the package name from this visible text\&. Use the label when you want the visible text to be different from the autogenerated visible text\&. See How a Name Appears\&.
-
-In Java SE 1\&.2 only, the name but not the label automatically appears in \f3<code>\fR HTML tags\&. Starting with Java SE 1\&.2\&.2, the \f3<code>\fR tag is always included around the visible text, whether or not a label is used\&.
-.RS
-.TP 0.2i
-\(bu
-\f3package\&.class#member\fR is any valid program element name that is referenced, such as a package, class, interface, constructor, method or field name, except that the character ahead of the member name should be a number sign (\f3#\fR)\&. The class represents any top-level or nested class or interface\&. The member represents any constructor, method, or field (not a nested class or interface)\&. If this name is in the documented classes, then the \f3javadoc\fR command create a link to it\&. To create links to external referenced classes, use the \f3-link\fR option\&. Use either of the other two \f3@see\fR tag forms to refer to the documentation of a name that does not belong to a referenced class\&. See Specify a Name\&.
-
-\fINote:\fR External referenced classes are classes that are not passed into the \f3javadoc\fR command on the command line\&. Links in the generated documentation to external referenced classes are called external references or external links\&. For example, if you run the \f3javadoc\fR command on only the \f3java\&.awt package\fR, then any class in \f3java\&.lang\fR, such as \f3Object\fR, is an external referenced class\&. Use the \f3-link\fR and \f3-linkoffline\fR options to link to external referenced classes\&. The source comments of external referenced classes are not available to the \f3javadoc\fR command run\&.
-.TP 0.2i
-\(bu
-\f3label\fR is optional text that is visible as the link label\&. The label can contain white space\&. If \f3label\fR is omitted, then \f3package\&.class\&.member\fR appears, suitably shortened relative to the current class and package\&. See How a Name Appears\&.
-.TP 0.2i
-\(bu
-A space is the delimiter between \f3package\&.class#member\fR and \f3label\fR\&. A space inside parentheses does not indicate the start of a label, so spaces can be used between parameters in a method\&.
-.RE
-
-
-\fI\fRIn the following example, an \f3@see\fR tag (in the \f3Character\fR class) refers to the equals method in the \f3String\fR class\&. The tag includes both arguments: the name \f3String#equals(Object)\fR and the label \f3equals\fR\&.
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * @see String#equals(Object) equals\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The standard doclet produces HTML that is similar to:
-.sp
-.nf
-\f3<dl>\fP
-.fi
-.nf
-\f3<dt><b>See Also:</b>\fP
-.fi
-.nf
-\f3<dd><a href="\&.\&./\&.\&./java/lang/String#equals(java\&.lang\&.Object)"><code>equals<code></a>\fP
-.fi
-.nf
-\f3</dl>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The previous code looks similar to the following in a browser, where the label is the visible link text:
-
-\fISee Also\fR:
-
-equals
+Specifying a locale causes the \f[CB]javadoc\f[R] tool to choose the
+resource files of that locale for messages such as strings in the
+navigation bar, headings for lists and tables, help file contents,
+comments in the \f[CB]stylesheet.css\f[R] file, and so on.
+It also specifies the sorting order for lists sorted alphabetically, and
+the sentence separator to determine the end of the first sentence.
+The \f[CB]\-locale\f[R] option doesn\[aq]t determine the locale of the
+documentation comment text specified in the source files of the
+documented classes.
+.RE
+.TP
+.B \f[CB]\-package\f[R]
+Shows only package, protected, and public classes and members.
+.RS
+.RE
+.TP
+.B \f[CB]\-private\f[R]
+Shows all classes and members.
+.RS
+.RE
+.TP
+.B \f[CB]\-protected\f[R]
+Shows only protected and public classes and members.
+This is the default.
+.RS
+.RE
+.TP
+.B \f[CB]\-public\f[R]
+Shows only the public classes and members.
+.RS
+.RE
+.TP
+.B \f[CB]\-quiet\f[R]
+Shuts off messages so that only the warnings and errors appear to make
+them easier to view.
+It also suppresses the \f[CB]version\f[R] string.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-show\-members\f[R] \f[I]value\f[R]
+Specifies which members (fields or methods) are documented, where
+\f[I]value\f[R] can be any of the following:
+.RS
+.IP \[bu] 2
+\f[CB]protected\f[R]: The default value is protected.
+.IP \[bu] 2
+\f[CB]public\f[R]: Shows only public values.
+.IP \[bu] 2
+\f[CB]package\f[R]: Shows public, protected, and package members.
+.IP \[bu] 2
+\f[CB]private\f[R]: Shows all members.
+.RE
+.TP
+.B \f[CB]\-\-show\-module\-contents\f[R] \f[I]value\f[R]
+Specifies the documentation granularity of module declarations, where
+\f[I]value\f[R] can be \f[CB]api\f[R] or \f[CB]all\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-show\-packages\f[R] \f[I]value\f[R]
+Specifies which modules packages are documented, where \f[I]value\f[R]
+can be \f[CB]exported\f[R] or \f[CB]all\f[R] packages.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-show\-types\f[R] \f[I]value\f[R]
+Specifies which types (classes, interfaces, etc.) are documented, where
+\f[I]value\f[R] can be any of the following:
+.RS
+.IP \[bu] 2
+\f[CB]protected\f[R]: The default value.
+Shows public and protected types.
+.IP \[bu] 2
+\f[CB]public\f[R]: Shows only public values.
+.IP \[bu] 2
+\f[CB]package\f[R]: Shows public, protected, and package types.
+.IP \[bu] 2
+\f[CB]private\f[R]: Shows all types.
+.RE
+.TP
+.B \f[CB]\-subpackages\f[R] \f[I]subpkglist\f[R]
+Generates documentation from source files in the specified packages and
+recursively in their subpackages.
+This option is useful when adding new subpackages to the source code
+because they are automatically included.
+Each package argument is any top\-level subpackage (such as
+\f[CB]java\f[R]) or fully qualified package (such as \f[CB]javax.swing\f[R])
+that doesn\[aq]t need to contain source files.
+Arguments are separated by colons on all operating systems.
+Wild cards aren\[aq]t allowed.
+Use \f[CB]\-sourcepath\f[R] to specify where to find the packages.
+This option doesn\[aq]t process source files that are in the source tree
+but don\[aq]t belong to the packages.
+.RS
+.PP
+For example, the following commands generates documentation for packages
+named \f[CB]java\f[R] and \f[CB]javax.swing\f[R] and all of their
+subpackages.
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.RS 2
+.RS
+.PP
+\f[CB]javadoc\ \-d\ docs\ \-sourcepath\ /home/user/src\ \-subpackages\ java:javax.swing\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R]
+.RS 2
+.RS
+.PP
+\f[CB]javadoc\ \-d\ docs\ \-sourcepath\ \\user\\src\ \-subpackages\ java:javax.swing\f[R]
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]\-verbose\f[R]
+Provides more detailed messages while the \f[CB]javadoc\f[R] tool runs.
+Without the \f[CB]\-verbose\f[R] option, messages appear for loading the
+source files, generating the documentation (one message per source
+file), and sorting.
+The \f[CB]\-verbose\f[R] option causes the printing of additional messages
+that specify the number of milliseconds to parse each Java source file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-version\f[R]
+Prints version information.
+.RS
+.RE
+.SH EXTENDED OPTIONS
+.PP
+\f[B]Note:\f[R]
+.PP
+The extended options for \f[CB]javadoc\f[R] are subject to change without
+notice.
.PP
-Specify a Name
-
-\fI\fRThis \f3package\&.class#member\fR name can be either fully qualified, such as \f3java\&.lang\&.String#toUpperCase()\fR or not, such as \f3String#toUpperCase()\fR or \f3#toUpperCase()\fR\&. If the name is less than fully qualified, then the \f3javadoc\fR command uses the standard Java compiler search order to find it\&. See Search Order for the @see Tag\&. The name can contain white space within parentheses, such as between method arguments\&.The advantage to providing shorter, partially qualified names is that they are shorter to type and there is less clutter in the source code\&. The following listing shows the different forms of the name, where \f3Class\fR can be a class or interface; Type can be a class, interface, array, or primitive; and method can be a method or constructor\&.
-.sp
-.nf
-\f3\fITypical forms for\fR\fI @see package\&.class#member\fR\fP
-.fi
-.nf
-\f3\fIReferencing a member of the current class\fR\fP
-.fi
-.nf
-\f3@see #field\fP
-.fi
-.nf
-\f3@see #method(Type, Type,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see #method(Type argname, Type argname,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see #constructor(Type, Type,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see #constructor(Type argname, Type argname,\&.\&.\&.) \fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\fIReferencing another class in the current or imported packages\fR\fP
-.fi
-.nf
-\f3@see Class#field\fP
-.fi
-.nf
-\f3@see Class#method(Type, Type,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see Class#method(Type argname, Type argname,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see Class#constructor(Type, Type,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see Class#constructor(Type argname, Type argname,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see Class\&.NestedClass\fP
-.fi
-.nf
-\f3@see Class \fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3\fIReferencing an element in another package (fully qualified)\fR\fP
-.fi
-.nf
-\f3@see package\&.Class#field\fP
-.fi
-.nf
-\f3@see package\&.Class#method(Type, Type,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see package\&.Class#method(Type argname, Type argname,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see package\&.Class#constructor(Type, Type,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see package\&.Class#constructor(Type argname, Type argname,\&.\&.\&.)\fP
-.fi
-.nf
-\f3@see package\&.Class\&.NestedClass\fP
-.fi
-.nf
-\f3@see package\&.Class\fP
-.fi
-.nf
-\f3@see package\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3\fRNotes about the previous listing:
-.TP 0.2i
-\(bu
-The first set of forms with no class or package causes the \f3javadoc\fR command to search only through the current class hierarchy\&. It finds a member of the current class or interface, one of its superclasses or superinterfaces, or one of its enclosing classes or interfaces (search Items 1\(en3)\&. It does not search the rest of the current package or other packages (search Items 4\(en5)\&. See Search Order for the @see Tag\&.
-.TP 0.2i
-\(bu
-If any method or constructor is entered as a name with no parentheses, such as \f3getValue\fR, and if there is no field with the same name, then the \f3javadoc\fR command still creates a link to the method\&. If this method is overloaded, then the \f3javadoc\fR command links to the first method its search encounters, which is unspecified\&.
-.TP 0.2i
-\(bu
-Nested classes must be specified as \f3outer\&.inner\fR, not simply \f3inner\fR, for all forms\&.
-.TP 0.2i
-\(bu
-As stated, the number sign (\f3#\fR), rather than a dot (\f3\&.\fR) separates a member from its class\&. This enables the \f3javadoc\fR command to resolve ambiguities, because the dot also separates classes, nested classes, packages, and subpackages\&. However, the \f3javadoc\fR command properly parses a dot when there is no ambiguity, but prints a warning to alert you\&.
+The following extended \f[CB]javadoc\f[R] options are equivalent to
+corresponding \f[CB]javac\f[R] options.
+See \f[I]Extra Options\f[R] in \f[B]javac\f[R] for the detailed
+descriptions of using these options:
+.IP \[bu] 2
+\f[CB]\-add\-exports\f[R]
+.IP \[bu] 2
+\f[CB]\-\-add\-reads\f[R]
+.IP \[bu] 2
+\f[CB]\-\-patch\-module\f[R]
+.IP \[bu] 2
+\f[CB]\-\-Xmaxerrs\f[R]
+.IP \[bu] 2
+\f[CB]\-Xmaxwarns\f[R]
+.PP
+The following extended \f[CB]javadoc\f[R] options are not equivalent to a
+corresponding \f[CB]javac\f[R] option:
+.TP
+.B \f[CB]\-Xmodule:\f[R]\f[I]module\-name\f[R]
+Specifies a module to which the classes being compiled belong.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xold\f[R]
+Invokes the legacy javadoc tool.
+.RS
+.RE
+.SH STANDARD DOCLET OPTIONS
.PP
-Search Order for the @see Tag
-
-\fI\fRThe \f3javadoc\fR command processes an \f3@see\fR tag that appears in a source file, package file, or overview file\&. In the latter two files, you must fully qualify the name you supply with the \f3@see\fR tag\&. In a source file, you can specify a name that is fully qualified or partially qualified\&.
+The following options are provided by the standard doclet.
+.TP
+.B \f[CB]\-\-add\-stylesheet\f[R] \f[I]file\f[R]
+Adds additional stylesheet file for the generated documentation.
+This option can be used one or more times to specify additional
+stylesheets included in the documentation.
+.RS
.PP
-The following is the search order for the \f3@see\fR tag\&.
-.TP 0.4i
-1\&.
-The current class or interface\&.
-.TP 0.4i
-2\&.
-Any enclosing classes and interfaces searching the closest first\&.
-.TP 0.4i
-3\&.
-Any superclasses and superinterfaces, searching the closest first\&.
-.TP 0.4i
-4\&.
-The current package\&.
-.TP 0.4i
-5\&.
-Any imported packages, classes, and interfaces, searching in the order of the \f3import\fR statement\&.
-.PP
-The \f3javadoc\fR command continues to search recursively through Items 1-3 for each class it encounters until it finds a match\&. That is, after it searches through the current class and its enclosing class E, it searches through the superclasses of E before the enclosing classes of E\&. In Items 4 and 5, the \f3javadoc\fR command does not search classes or interfaces within a package in any specified order (that order depends on the particular compiler)\&. In Item 5, the \f3javadoc\fR command searches in \fIjava\&.lang\fR because that is imported by all programs\&.
+Command\-line example:
+.RS
.PP
-When the \f3javadoc\fR command encounters an \f3@see\fR tag in a source file that is not fully qualified, it searches for the specified name in the same order as the Java compiler would, except the \f3javadoc\fR command does not detect certain name space ambiguities because it assumes the source code is free of these errors\&. This search order is formally defined in the Java Language Specification\&. The \f3javadoc\fR command searches for that name through all related and imported classes and packages\&. In particular, it searches in this order:
-.TP 0.4i
-1\&.
-The current class or interface\&.
-.TP 0.4i
-2\&.
-Any enclosing classes and interfaces, searching the closest first\&.
-.TP 0.4i
-3\&.
-Any superclasses and superinterfaces, searching the closest first\&.
-.TP 0.4i
-4\&.
-The current package\&.
-.TP 0.4i
-5\&.
-Any imported packages, classes, and interfaces, searching in the order of the \f3import\fR statements\&.
-.PP
-The \f3javadoc\fR command does not necessarily look in subclasses, nor will it look in other packages even when their documentation is being generated in the same run\&. For example, if the \f3@see\fR tag is in the \f3java\&.awt\&.event\&.KeyEvent\fR class and refers to a name in the \f3java\&.awt package\fR, then the \f3javadoc\fR command does not look in that package unless that class imports it\&.
-.PP
-How a Name Appears
-
-\fI\fRIf \f3label\fR is omitted, then \f3package\&.class\&.member\fR appears\&. In general, it is suitably shortened relative to the current class and package\&. Shortened means the \f3javadoc\fR command displays only the minimum name necessary\&. For example, if the \f3String\&.toUpperCase()\fR method contains references to a member of the same class and to a member of a different class, then the class name is displayed only in the latter case, as shown in the following listing\&. Use the \f3-noqualifier\fR option to globally remove the package names\&.
-.PP
-\fIType of reference\fR: The \f3@see\fR tag refers to a member of the same class, same package
-.br
-\fIExample in\fR: \f3@see String#toLowerCase()\fR
-.br
-\fIAppears as\fR: \f3toLowerCase()\fR - omits the package and class names
-.br
-
-.PP
-\fIType of reference\fR: The \f3@see\fR tag refers to a member of a different class, same package
-.br
-\fIExample in\fR: \f3@see Character#toLowerCase(char)\fR
-.br
-\fIAppears as\fR: \f3Character\&.toLowerCase(char)\fR - omits the package name, includes the class name
-.br
-
-.PP
-\fIType of reference\fR: The \f3@see\fR tag refers to a member of a different class, different package
-.br
-\fIExample in\fR: \f3@see java\&.io\&.File#exists()\fR
-.br
-\fIAppears as\fR: \f3java\&.io\&.File\&.exists()\fR - includes the package and class names
-.br
-
+\f[CB]javadoc\ \-\-add\-stylesheet\ new_stylesheet_1.css\ \-\-add\-stylesheet\ new_stylesheet_2.css\ pkg_foo\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-\-allow\-script\-in\-comments\f[R]
+Allow JavaScript in options and comments
+.RS
+.RE
+.TP
+.B \f[CB]\-author\f[R]
+Includes the \f[CB]\@author\f[R] text in the generated docs.
+.RS
+.RE
+.TP
+.B \f[CB]\-bottom\f[R] \f[I]html\-code\f[R]
+Specifies the text to be placed at the bottom of each output file.
+The text is placed at the bottom of the page, underneath the lower
+navigation bar.
+The text can contain HTML tags and white space, but when it does, the
+text must be enclosed in quotation marks.
+Use escape characters for any internal quotation marks within text.
+.RS
+.RE
+.TP
+.B \f[CB]\-charset\f[R] \f[I]name\f[R]
+Specifies the HTML character set for this document.
+The name should be a preferred MIME name as specified in the \f[B]IANA
+Registry, Character Sets\f[R]
+[http://www.iana.org/assignments/character\-sets].
+.RS
.PP
-Examples of the @see Tag
-
-The comment to the right shows how the name appears when the \f3@see\fR tag is in a class in another package, such as \f3java\&.applet\&.Applet\fR\&. See @see in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#@see
-.sp
-.nf
-\f3 See also:\fP
-.fi
-.nf
-\f3@see java\&.lang\&.String // String \fP
-.fi
-.nf
-\f3@see java\&.lang\&.String The String class // The String class \fP
-.fi
-.nf
-\f3@see String // String \fP
-.fi
-.nf
-\f3@see String#equals(Object) // String\&.equals(Object) \fP
-.fi
-.nf
-\f3@see String#equals // String\&.equals(java\&.lang\&.Object) \fP
-.fi
-.nf
-\f3@see java\&.lang\&.Object#wait(long) // java\&.lang\&.Object\&.wait(long) \fP
-.fi
-.nf
-\f3@see Character#MAX_RADIX // Character\&.MAX_RADIX \fP
-.fi
-.nf
-\f3@see <a href="spec\&.html">Java Spec</a> // Java Spec \fP
-.fi
-.nf
-\f3@see "The Java Programming Language" // "The Java Programming Language" \fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\fINote:\fR You can extend the \f3@se\fR\f3e\fR tag to link to classes not being documented with the \f3-link\fR option\&.
-.TP
-@serial \fIfield-description\fR | include | exclude
-Introduced in JDK 1\&.2
-
-Used in the documentation comment for a default serializable field\&. See Documenting Serializable Fields and Data for a Class at http://docs\&.oracle\&.com/javase/8/docs/platform/serialization/spec/serial-arch\&.html#5251
-
-See also Oracle\(cqs Criteria for Including Classes in the Serialized Form Specification at http://www\&.oracle\&.com/technetwork/java/javase/documentation/serialized-criteria-137781\&.html
-
-An optional \f3field-description\fR should explain the meaning of the field and list the acceptable values\&. When needed, the description can span multiple lines\&. The standard doclet adds this information to the serialized form page\&. See Cross-Reference Pages\&.
-
-If a serializable field was added to a class after the class was made serializable, then a statement should be added to its main description to identify at which version it was added\&.
-
-The \f3include\fR and \f3exclude\fR arguments identify whether a class or package should be included or excluded from the serialized form page\&. They work as follows:
-.RS
-.TP 0.2i
-\(bu
-A public or protected class that implements \f3Serializable\fR is included unless that class (or its package) is marked with the \f3@serial exclude\fR tag\&.
-.TP 0.2i
-\(bu
-A private or package-private class that implements \f3Serializable\fR is excluded unless that class (or its package) is marked with the \f3@serial include\fR tag\&.
-.RE
-
-
-For example, the \f3javax\&.swing\fR package is marked with the \f3@serial\fR\f3exclude\fR tag in package\&.html or package-info\&.java\&. The public class \f3java\&.security\&.BasicPermission\fR is marked with the \f3@serial exclude\fR tag\&. The package-private class \f3java\&.util\&.PropertyPermissionCollection\fR is marked with the \f3@serial include\fR tag\&.
-
-The \f3@serial\fR tag at the class level overrides the \f3@serial\fR tag at the package level\&.
-.TP
-@serialData \fIdata-description\fR
-Introduced in JDK 1\&.2
-
-Uses the data description value to document the types and order of data in the serialized form\&. This data includes the optional data written by the \f3writeObject\fR method and all data (including base classes) written by the \f3Externalizable\&.writeExternal\fR method\&.
-
-The \f3@serialData\fR tag can be used in the documentation comment for the \f3writeObject\fR, \f3readObject\fR, \f3writeExternal\fR, \f3readExternal\fR, \f3writeReplace\fR, and \f3readResolve\fR methods\&.
-.TP
-@serialField \fIfield-name\fR\fIfield-type\fR\fIfield-description\fR
-Introduced in JDK 1\&.2
-
-Documents an \f3ObjectStreamField\fR component of the \f3serialPersistentFields\fR member of a \f3Serializable\fR class\&. Use one \f3@serialField\fR tag for each \f3ObjectStreamField\fR component\&.
-.TP
-@since \fIsince-text\fR
-Introduced in JDK 1\&.1
-
-Adds a \fISince\fR heading with the specified \f3since-text\fR value to the generated documentation\&. The text has no special internal structure\&. This tag is valid in any documentation comment: overview, package, class, interface, constructor, method, or field\&. This tag means that this change or feature has existed since the software release specified by the \f3since-text\fR value, for example: \f3@since 1\&.5\fR\&.
-
-For Java platform source code, the \f3@since\fR tag indicates the version of the Java platform API specification, which is not necessarily when the source code was added to the reference implementation\&. Multiple \f3@since\fR tags are allowed and are treated like multiple \f3@author\fR tags\&. You could use multiple tags when the program element is used by more than one API\&.
-.TP
-@throws \fIclass-name\fR\fIdescription\fR
-Introduced in JDK 1\&.2
-
-Behaves the same as the \f3@exception\fR tag\&. See @throws in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#@exception
-
-The \f3@throws\fR tag adds a \fIThrows\fR subheading to the generated documentation, with the \f3class-name\fR and \f3description\fR text\&. The \fIclass-name\fR is the name of the exception that might be thrown by the method\&. This tag is valid only in the documentation comment for a method or constructor\&. If this class is not fully specified, then the \f3javadoc\fR command uses the search order to look up this class\&. Multiple \f3@throws\fR tags can be used in a specified documentation comment for the same or different exceptions\&. See Search Order for the @see Tag\&.
-
-To ensure that all checked exceptions are documented, when an \f3@throws\fR tag does not exist for an exception in the throws clause, the \f3javadoc\fR command adds that exception to the HTML output (with no description) as though it were documented with the \f3@throws\fR tag\&.
-
-The \f3@throws\fR documentation is copied from an overridden method to a subclass only when the exception is explicitly declared in the overridden method\&. The same is true for copying from an interface method to an implementing method\&. You can use the \f3{@inheritDoc}\fR tag to force the \f3@throws\fR tag to inherit documentation\&.
-.TP
-{@value \fIpackage\&.class#field\fR}
-Introduced in JDK 1\&.4
-
-Displays constant values\&. When the \f3{@value}\fR tag is used without an argument in the documentation comment of a static field, it displays the value of that constant:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * The value of this constant is {@value}\&.\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3public static final String SCRIPT_START = "<script>"\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-When used with the argument \f3package\&.class#field\fR in any documentation comment, he \f3{@value}\fR tag displays the value of the specified constant:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * Evaluates the script starting with {@value #SCRIPT_START}\&.\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3public String evalScript(String script) {}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The argument \f3package\&.class#field\fR takes a form similar to that of the \f3@see\fR tag argument, except that the member must be a static field\&.
-
-The values of these constants are also displayed in Constant Field Values at http://docs\&.oracle\&.com/javase/8/docs/api/constant-values\&.html
-.TP
-@version \fIversion-text\fR
-Introduced in JDK 1\&.0
-
-Adds a \fIVersion\fR subheading with the specified \f3version-text\fR value to the generated documents when the \f3-version\fR option is used\&. This tag is intended to hold the current release number of the software that this code is part of, as opposed to the\f3@since\fR tag, which holds the release number where this code was introduced\&. The \f3version-text\fR value has no special internal structure\&. See @version in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#@version
-
-A documentation comment can contain multiple \f3@version\fR tags\&. When it makes sense, you can specify one release number per \f3@version\fR tag or multiple release numbers per tag\&. In the former case, the \f3javadoc\fR command inserts a comma (,) and a space between the names\&. In the latter case, the entire text is copied to the generated document without being parsed\&. Therefore, you can use multiple names per line when you want a localized name separator other than a comma\&.
-.SH WHERE\ TAGS\ CAN\ BE\ USED
-The following sections describe where tags can be used\&. Note that the following tags can be used in all documentation comments: \f3@see\fR, \f3@since\fR, \f3@deprecated\fR, \f3{@link}\fR, \f3{@linkplain}\fR, and \f3{@docroot}\fR\&.
-.SS OVERVIEW\ TAGS
-Overview tags are tags that can appear in the documentation comment for the overview page (which resides in the source file typically named overview\&.html)\&. Similar to any other documentation comments, these tags must appear after the main description
+For example:
+.RS
+.PP
+\f[CB]javadoc\ \-charset\ "iso\-8859\-1"\ mypackage\f[R]
+.RE
+.PP
+This command inserts the following line in the head of every generated
+page:
+.RS
+.PP
+\f[CB]<META\ http\-equiv="Content\-Type"\ content="text/html;\ charset=ISO\-8859\-1">\f[R]
+.RE
+.PP
+The \f[CB]META\f[R] tag is described in the \f[B]HTML standard (4197265
+and 4137321), HTML Document Representation\f[R]
+[http://www.w3.org/TR/REC\-html40/charset.html#h\-5.2.2].
+.RE
+.TP
+.B \f[CB]\-d\f[R] \f[I]directory\f[R]
+Specifies the destination directory where the \f[CB]javadoc\f[R] tool
+saves the generated HTML files.
+If you omit the \f[CB]\-d\f[R] option, then the files are saved to the
+current directory.
+The \f[CB]directory\f[R] value can be absolute or relative to the current
+working directory.
+The destination directory is automatically created when the
+\f[CB]javadoc\f[R] tool runs.
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] For example, the following
+command generates the documentation for the package
+\f[CB]com.mypackage\f[R] and saves the results in the \f[CB]/user/doc/\f[R]
+directory:
+.RS 2
+.RS
.PP
-\fINote:\fR The \f3{@link}\fR tag has a bug in overview documents in Java SE 1\&.2\&. The text appears correctly but has no link\&. The \f3{@docRoot}\fR tag does not currently work in overview documents\&.
-.PP
-The overview tags are the following:
-.PP
-@see reference || @since since-text || @serialField field-name field-type field-description || @author name-text || @version version-text || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} ||
-.SS PACKAGE\ TAGS
-Package tags are tags that can appear in the documentation comment for a package, that resides in the source file named package\&.html or package-info\&.java\&. The \f3@serial\fR tag can only be used here with the \f3include\fR or \f3exclude\fR argument\&.
-.PP
-The package tags are the following:
-.PP
-@see reference || @since since-text || @serial field-description | include | exclude || @author name-text || @version version-text || {@linkplain package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} ||
-.SS CLASS\ AND\ INTERFACE\ TAGS
-The following are tags that can appear in the documentation comment for a class or interface\&. The \f3@serial\fR tag can only be used within the documentation for a class or interface with an \f3include\fR or \f3exclude\fR argument\&.
-.PP
-@see reference || @since since-text || @deprecated deprecated-text || @serial field-description | include | exclude || @author name-text || @version version-text || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} ||
+\f[CB]javadoc\ \-d\ /user/doc/\ com.mypackage\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R] For example, the following command generates the
+documentation for the package \f[CB]com.mypackage\f[R] and saves the
+results in the \f[CB]\\user\\doc\\\f[R] directory:
+.RS 2
+.RS
.PP
-Class comment example:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * A class representing a window on the screen\&.\fP
-.fi
-.nf
-\f3 * For example:\fP
-.fi
-.nf
-\f3 * <pre>\fP
-.fi
-.nf
-\f3 * Window win = new Window(parent);\fP
-.fi
-.nf
-\f3 * win\&.show();\fP
-.fi
-.nf
-\f3 * </pre>\fP
-.fi
-.nf
-\f3 *\fP
-.fi
-.nf
-\f3 * @author Sami Shaio\fP
-.fi
-.nf
-\f3 * @version 1\&.13, 06/08/06\fP
-.fi
-.nf
-\f3 * @see java\&.awt\&.BaseWindow\fP
-.fi
-.nf
-\f3 * @see java\&.awt\&.Button\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3class Window extends BaseWindow {\fP
-.fi
-.nf
-\f3 \&.\&.\&.\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS FIELD\ TAGS
-These tags can appear in fields:
+\f[CB]javadoc\ \-d\ \\user\\doc\\\ com.mypackage\f[R]
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]\-docencoding\f[R] \f[I]name\f[R]
+Specifies the encoding of the generated HTML files.
+The name should be a preferred MIME name as specified in the \f[B]IANA
+Registry, Character Sets\f[R]
+[http://www.iana.org/assignments/character\-sets].
+.RS
.PP
-@see reference || @since since-text || @deprecated deprecated-text || @serial field-description | include | exclude || @serialField field-name field-type field-description || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@docRoot} || {@value package\&.class#field}
+Three options are available for use in a \f[CB]javadoc\f[R] encoding
+command.
+The \f[CB]\-encoding\f[R] option is used for encoding the files read by
+the \f[CB]javadoc\f[R] tool, while the \f[CB]\-docencoding\f[R] and
+\f[CB]\-charset\f[R] options are used for encoding the files written by
+the tool.
+Of the three available options, at most, only the input and an output
+encoding option are used in a single encoding command.
+If you specify both input and output encoding options in a command, they
+must be the same value.
+If you specify neither output option, it the tool defaults to the input
+encoding.
+.PP
+For example:
+.RS
.PP
-Field comment example:
-.sp
-.nf
-\f3 /**\fP
-.fi
-.nf
-\f3 * The X\-coordinate of the component\&.\fP
-.fi
-.nf
-\f3 *\fP
-.fi
-.nf
-\f3 * @see #getLocation()\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3 int x = 1263732;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS CONSTRUCTOR\ AND\ METHOD\ TAGS
-The following tags can appear in the documentation comment for a constructor or a method, except for the \f3@return\fR tag, which cannot appear in a constructor, and the \f3{@inheritDoc}\fR tag, which has restrictions\&.
-.PP
-@see reference || @since since-text || @deprecated deprecated-text || @param parameter-name description || @return description || @throws class-name description || @exception class-name description || @serialData data-description || {@link package\&.class#member label} || {@linkplain package\&.class#member label} || {@inheritDoc} || {@docRoot}
-.PP
-\fINote:\fR The \f3@serialData\fR tag can only be used in the documentation comment for the \f3writeObject\fR, \f3readObject\fR, \f3writeExternal\fR, \f3readExternal\fR, \f3writeReplace\fR, and \f3readResolve\fR methods\&.
-.PP
-Method comment example:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * Returns the character at the specified index\&. An index \fP
-.fi
-.nf
-\f3 * ranges from <code>0</code> to <code>length() \- 1</code>\fP
-.fi
-.nf
-\f3 *\fP
-.fi
-.nf
-\f3 * @param index the index of the desired character\&.\fP
-.fi
-.nf
-\f3 * @return the desired character\&.\fP
-.fi
-.nf
-\f3 * @exception StringIndexOutOfRangeException \fP
-.fi
-.nf
-\f3 * if the index is not in the range <code>0</code> \fP
-.fi
-.nf
-\f3 * to <code>length()\-1</code>\fP
-.fi
-.nf
-\f3 * @see java\&.lang\&.Character#charValue()\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3 public char charAt(int index) {\fP
-.fi
-.nf
-\f3 \&.\&.\&.\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH OPTIONS
-The \f3javadoc\fR command uses doclets to determine its output\&. The \f3javadoc\fR command uses the default standard doclet unless a custom doclet is specified with the \f3-doclet\fR option\&. The \f3javadoc\fR command provides a set of command-line options that can be used with any doclet\&. These options are described in Javadoc Options\&. The standard doclet provides an additional set of command-line options that are described in Standard Doclet Options\&. All option names are not case-sensitive, but their arguments are case-sensitive\&.
-.TP 0.2i
-\(bu
-See also Javadoc Options
-.TP 0.2i
-\(bu
-See also Standard Doclet Options
-.PP
-The options are:
-.PP
--1\&.1 || -author || -bootclasspath classpathlist || -bottom text || -breakiterator || -charset name || -classpath classpathlist || -d directory || -docencoding name || -docfilesubdirs || -doclet class || -docletpath classpathlist || -doctitle title || -encoding || -exclude packagename1:packagename2:\&.\&.\&. || -excludedocfilessubdir name1:name2 || -extdirs dirist || -footer footer || -group groupheading packagepattern:packagepattern || -header header || -help || -helpfile path\efilename || -Jflag || -javafx ||-keywords || -link extdocURL || -linkoffline extdocURL packagelistLoc || -linksource || -locale language_country_variant || -nocomment || -nodeprecated || -nodeprecatedlist || -nohelp || -noindex || -nonavbar || -noqualifier all | packagename1:packagename2\&.\&.\&. || -nosince || -notimestamp || -notree || -overview path/filename || -package || -private || -protected || -public || -quiet || -serialwarn || -source release || -sourcepath sourcepathlist || -sourcetab tablength || -splitindex || -stylesheet path/filename || -subpackages package1:package2:\&.\&.\&. || -tag tagname:Xaoptcmf:"taghead" || -taglet class || -tagletpath tagletpathlist || -title title || -top || -use || -verbose || -version || -windowtitle title
-.PP
-The following options are the core Javadoc options that are available to all doclets\&. The standard doclet provides the rest of the doclets: \f3-bootclasspath\fR, \f3-breakiterator\fR, \f3-classpath\fR, \f3-doclet\fR, \f3-docletpath\fR, \f3-encoding\fR, -\f3exclude\fR, \f3-extdirs\fR, \f3-help\fR, \f3-locale\fR, \f3-\fR\f3overview\fR, \f3-package\fR, \f3-private\fR, \f3-protected\fR, \f3-public\fR, \f3-quiet\fR, \f3-source\fR, \f3-sourcepath\fR, \f3-subpackages\fR, and \f3-verbose\fR\&.
-.SS JAVADOC\ OPTIONS
+\f[CB]javadoc\ \-docencoding\ "iso\-8859\-1"\ mypackage\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-docfilessubdirs\f[R]
+Recursively copies doc\-file subdirectories.
+.RS
+.RE
+.TP
+.B \f[CB]\-doctitle\f[R] \f[I]html\-code\f[R]
+Specifies the title to place near the top of the overview summary file.
+The text specified in the \f[CB]title\f[R] tag is placed as a centered,
+level\-one heading directly beneath the top navigation bar.
+The \f[CB]title\f[R] tag can contain HTML tags and white space, but when
+it does, you must enclose the title in quotation marks.
+Additional quotation marks within the \f[CB]title\f[R] tag must be
+escaped.
+For example,
+\f[CB]javadoc\ \-header\ "<b>My\ Library</b><br>v1.0"\ com.mypackage.\f[R]
+.RS
+.RE
+.TP
+.B \f[CB]\-excludedocfilessubdir\f[R] \f[I]name\f[R]
+Excludes any doc files sub directories with the given name.
+Enables deep copying of doc\-files directories.
+Subdirectories and all contents are recursively copied to the
+destination.
+For example, the directory \f[CB]doc\-files/example/images\f[R] and all of
+its contents are copied.
+There is also an option to exclude subdirectories.
+.RS
+.RE
.TP
--overview \fIpath/filename\fR
-.br
-Specifies that the \f3javadoc\fR command should retrieve the text for the overview documentation from the source file specified by the \fIpath/filename\fRand place it on the Overview page (overview-summary\&.html)\&. The \fIpath/filename\fRis relative to the current directory\&.
-
-While you can use any name you want for the \f3filename\fR value and place it anywhere you want for the path, it is typical to name it overview\&.html and place it in the source tree at the directory that contains the topmost package directories\&. In this location, no path is needed when documenting packages, because the \f3-sourcepath\fR option points to this file\&.
-
-For example, if the source tree for the \f3java\&.lang\fR package is /src/classes/java/lang/, then you could place the overview file at /src/classes/overview\&.html
-
-See Real-World Examples\&.
-
-For information about the file specified by \fIpath/filename,\fRsee Overview Comment Files\&.
-
-The overview page is created only when you pass two or more package names to the \f3javadoc\fR command\&. For a further explanation, see HTML Frames\&. The title on the overview page is set by \f3-doctitle\fR\&.
+.B \f[CB]\-footer\f[R] \f[I]html\-code\f[R]
+Specifies the footer text to be placed at the bottom of each output
+file.
+The\f[CB]html\-code\f[R] value is placed to the right of the lower
+navigation bar.
+The \f[CB]html\-code\f[R] value can contain HTML tags and white space, but
+when it does, the \f[CB]html\-code\f[R] value must be enclosed in
+quotation marks.
+Use escape characters for any internal quotation marks within a footer.
+.RS
+.RE
.TP
--Xdoclint:(all|none|[-]\fI<group>\fR)
-.br
-Reports warnings for bad references, lack of accessibility and missing Javadoc comments, and reports errors for invalid Javadoc syntax and missing HTML tags\&.
-
-This option enables the \f3javadoc\fR command to check for all documentation comments included in the generated output\&. As always, you can select which items to include in the generated output with the standard options \f3-public\fR, \f3-protected\fR, \f3-package\fR and \f3-private\fR\&.
-
-When the \f3-Xdoclint\fR is enabled, it reports issues with messages similar to the \f3javac\fR command\&. The \f3javadoc\fR command prints a message, a copy of the source line, and a caret pointing at the exact position where the error was detected\&. Messages may be either warnings or errors, depending on their severity and the likelihood to cause an error if the generated documentation were run through a validator\&. For example, bad references or missing Javadoc comments do not cause the \f3javadoc\fR command to generate invalid HTML, so these issues are reported as warnings\&. Syntax errors or missing HTML end tags cause the \f3javadoc\fR command to generate invalid output, so these issues are reported as errors\&.
-
-By default, the \f3-Xdoclint\fR option is enabled\&. Disable it with the option \f3-Xdoclint:none\fR\&.
-
-Change what the \f3-Xdoclint\fR option reports with the following options:
-.RS
-.TP 0.2i
-\(bu
-\f3-Xdoclint none\fR : disable the \f3-Xdoclint\fR option
-.TP 0.2i
-\(bu
-\f3-Xdoclint\fR\fIgroup\fR : enable \fIgroup\fR checks
-.TP 0.2i
-\(bu
-\f3-Xdoclint all\fR : enable all groups of checks
-.TP 0.2i
-\(bu
-\f3-Xdoclint all,\fR\fI-group\fR : enable all except \fIgroup\fR checks
-.RE
-
-
-The variable \fIgroup\fR has one of the following values:
-.RS
-.TP 0.2i
-\(bu
-\f3accessibility\fR : Checks for the issues to be detected by an accessibility checker (for example, no caption or summary attributes specified in a \f3<table>\fR tag)\&.
-.TP 0.2i
-\(bu
-\f3html\fR : Detects high-level HTML issues, like putting block elements inside inline elements, or not closing elements that require an end tag\&. The rules are derived from theHTML 4\&.01 Specification\&. This type of check enables the \f3javadoc\fR command to detect HTML issues that many browsers might accept\&.
-.TP 0.2i
-\(bu
-\f3missing\fR : Checks for missing Javadoc comments or tags (for example, a missing comment or class, or a missing \f3@return\fR tag or similar tag on a method)\&.
-.TP 0.2i
-\(bu
-\f3reference\fR : Checks for issues relating to the references to Java API elements from Javadoc tags (for example, item not found in \f3@see\fR , or a bad name after \f3@param)\fR\&.
-.TP 0.2i
-\(bu
-\f3syntax\fR : Checks for low level issues like unescaped angle brackets (\f3<\fR and \f3>\fR) and ampersands (\f3&\fR) and invalid Javadoc tags\&.
-.RE
-
-
-You can specify the \f3-Xdoclint\fR option multiple times to enable the option to check errors and warnings in multiple categories\&. Alternatively, you can specify multiple error and warning categories by using the preceding options\&. For example, use either of the following commands to check for the HTML, syntax, and accessibility issues in the file \fIfilename\fR\&.
-.sp
-.nf
-\f3javadoc \-Xdoclint:html \-Xdoclint:syntax \-Xdoclint:accessibility \fIfilename\fR\fP
-.fi
-.nf
-\f3javadoc \-Xdoclint:html,syntax,accessibility \fIfilename\fR\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-\fINote:\fR The \f3javadoc\fR command does not guarantee the completeness of these checks\&. In particular, it is not a full HTML compliance checker\&. The goal of the -\f3Xdoclint\fR option is to enable the \f3javadoc\fR command to report majority of common errors\&.
-
-The \f3javadoc\fR command does not attempt to fix invalid input, it just reports it\&.
+.B \f[CB]\-\-frames\f[R]
+Enables the use of frames in the generated output (default).
+.RS
+.RE
+.TP
+.B \f[CB]\-group\f[R] \f[I]namep1\f[R]\f[CB]:\f[R]\f[I]p2\f[R]
+Group the specified packages together in the Overview page.
+.RS
+.RE
.TP
--public
-.br
-Shows only public classes and members\&.
+.B \f[CB]\-header\f[R] \f[I]html\-code\f[R]
+Specifies the header text to be placed at the top of each output file.
+The header is placed to the right of the upper navigation bar.
+The \f[CB]header\f[R] can contain HTML tags and white space, but when it
+does, the \f[CB]header\f[R] must be enclosed in quotation marks.
+Use escape characters for internal quotation marks within a header.
+For example,
+\f[CB]javadoc\ \-header\ "<b>My\ Library</b><br>v1.0"\ com.mypackage.\f[R]
+.RS
+.RE
.TP
--protected
-.br
-Shows only protected and public classes and members\&. This is the default\&.
-.TP
--package
-.br
-Shows only package, protected, and public classes and members\&.
-.TP
--private
-.br
-Shows all classes and members\&.
-.TP
--help
-.br
-Displays the online help, which lists all of the \f3javadoc\fR and \f3doclet\fR command-line options\&.
-.TP
--doclet \fIclass\fR
-.br
-Specifies the class file that starts the doclet used in generating the documentation\&. Use the fully qualified name\&. This doclet defines the content and formats the output\&. If the \f3-doclet\fR option is not used, then the \f3javadoc\fR command uses the standard doclet for generating the default HTML format\&. This class must contain the \f3start(Root)\fR method\&. The path to this starting class is defined by the \f3-docletpath\fR option\&. See Doclet Overview at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html
-.TP
--docletpath \fIclasspathlist\fR
-.br
-Specifies the path to the doclet starting class file (specified with the \f3-doclet\fR option) and any JAR files it depends on\&. If the starting class file is in a JAR file, then this option specifies the path to that JAR file\&. You can specify an absolute path or a path relative to the current directory\&. If \f3classpathlist\fR contains multiple paths or JAR files, then they should be separated with a colon (:) on Oracle Solaris and a semi-colon (;) on Windows\&. This option is not necessary when the doclet starting class is already in the search path\&. See Doclet Overview at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html
-.TP
--1\&.1
-.br
-Removed from Javadoc 1\&.4 with no replacement\&. This option created documentation with the appearance and functionality of documentation generated by Javadoc 1\&.1 (it never supported nested classes)\&. If you need this option, then use Javadoc 1\&.2 or 1\&.3 instead\&.
+.B \f[CB]\-helpfile\f[R] \f[I]filename\f[R]
+Includes the file that links to the \f[B]HELP\f[R] link in the top and
+bottom navigation bars .
+Without this option, the \f[CB]javadoc\f[R] tool creates a help file
+\f[CB]help\-doc.html\f[R] that is hard\-coded in the \f[CB]javadoc\f[R]
+tool.
+This option lets you override the default.
+The \f[I]filename\f[R] can be any name and isn\[aq]t restricted to
+\f[CB]help\-doc.html\f[R].
+The \f[CB]javadoc\f[R] tool adjusts the links in the navigation bar
+accordingly.
+For example:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.RS 2
+.RS
+.PP
+\f[CB]javadoc\ \-helpfile\ /home/user/myhelp.html\ java.awt.\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R]
+.RS 2
+.RS
+.PP
+\f[CB]javadoc\ \-helpfile\ C:\\user\\myhelp.html\ java.awt.\f[R]
+.RE
+.RE
+.RE
.TP
--source \fIrelease\fR
-.br
-Specifies the release of source code accepted\&. The following values for the \f3release\fR parameter are allowed\&. Use the value of \f3release\fR that corresponds to the value used when you compile code with the \f3javac\fR command\&.
-.RS
-.TP 0.2i
-\(bu
-\fIRelease Value: 1\&.5\fR\&. The \f3javadoc\fR command accepts code containing generics and other language features introduced in JDK 1\&.5\&. The compiler defaults to the 1\&.5 behavior when the \f3-source\fR option is not used\&.
-.TP 0.2i
-\(bu
-\fIRelease Value: 1\&.4\fR\&. The \f3javadoc\fR command accepts code containing assertions, which were introduced in JDK 1\&.4\&.
-.TP 0.2i
-\(bu
-\fIRelease Value: 1\&.3\fR\&. The \f3javadoc\fR command does not support assertions, generics, or other language features introduced after JDK 1\&.3\&.
-.RE
-
-.TP
--sourcepath \fIsourcepathlist\fR
-.br
-Specifies the search paths for finding source files when passing package names or the \f3-subpackages\fR option into the \f3javadoc\fR command\&. Separate multiple paths with a colon (:)\&. The \f3javadoc\fR command searches all subdirectories of the specified paths\&. Note that this option is not only used to locate the source files being documented, but also to find source files that are not being documented, but whose comments are inherited by the source files being documented\&.
-
-You can use the \f3-sourcepath\fR option only when passing package names into the \f3javadoc\fR command\&. This will not locate source files passed into the \f3javadoc\fR command\&. To locate source files, \f3\fRchange to that directory or include the path ahead of each file, as shown at Document One or More Classes\&. If you omit \f3-sourcepath\fR, then the \f3javadoc\fR command uses the class path to find the source files (see \f3-classpath\fR)\&. The default \f3-sourcepath\fR is the value of class path\&. If \f3-classpath\fR is omitted and you pass package names into the \f3javadoc\fR command, then the \f3javadoc\fR command searches in the current directory and subdirectories for the source files\&.
-
-Set \f3sourcepathlist\fR to the root directory of the source tree for the package you are documenting\&.
-
-For example, suppose you want to document a package called \f3com\&.mypackage\fR, whose source files are located at:/home/user/src/com/mypackage/*\&.java\&. Specify the sourcepath to /home/user/src, the directory that contains com\emypackage, and then supply the package name, as follows:
-.sp
-.nf
-\f3javadoc \-sourcepath /home/user/src/ com\&.mypackage\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-Notice that if you concatenate the value of sourcepath and the package name together and change the dot to a slash (/), then you have the full path to the package:
-
-/home/user/src/com/mypackage
-
-To point to two source paths:
-.sp
-.nf
-\f3javadoc \-sourcepath /home/user1/src:/home/user2/src com\&.mypackage\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+.B \f[CB]\-html4\f[R]
+Generates HTML 4.0.1 output.
+If the option is not used, \f[CB]\-html4\f[R] is the default
+.RS
+.RE
.TP
--classpath \fIclasspathlist\fR
-.br
-Specifies the paths where the \f3javadoc\fR command searches for referenced classes These are the documented classes plus any classes referenced by those classes\&. Separate multiple paths with a colon (:)\&. The \f3javadoc\fR command searches all subdirectories of the specified paths\&. Follow the instructions in the class path documentation for specifying the \f3classpathlist\fR value\&.
-
-If you omit \f3-sourcepath\fR, then the \f3javadoc\fR command uses \f3-classpath\fR to find the source files and class files (for backward compatibility)\&. If you want to search for source and class files in separate paths, then use both \f3-sourcepath\fR and \f3-classpath\fR\&.
-
-For example, if you want to document \f3com\&.mypackage\fR, whose source files reside in the directory /home/user/src/com/mypackage, and if this package relies on a library in /home/user/lib, then you would use the following command:
-.sp
-.nf
-\f3javadoc \-sourcepath /home/user/lib \-classpath /home/user/src com\&.mypackage\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-Similar to other tools, if you do not specify \f3-classpath\fR, then the \f3javadoc\fR command uses the \f3CLASSPATH\fR environment variable when it is set\&. If both are not set, then the \f3javadoc\fR command searches for classes from the current directory\&.
-
-For an in-depth description of how the \f3javadoc\fR command uses \f3-classpath\fR to find user classes as it relates to extension classes and bootstrap classes, see How Classes Are Found at http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html
-
-A class path element that contains a base name of * is considered equivalent to specifying a list of all the files in the directory with the extension \f3\&.jar\fR or \f3\&.JAR\fR\&.
-
-For example, if directory \f3mydir\fR contains \f3a\&.jar\fR and \f3b\&.JA\fRR, then the class path element \f3foo/*\fR is expanded to a \f3A\&.jar:b\&.JAR\fR, except that the order of JAR files is unspecified\&. All JAR files in the specified directory including hidden files are included in the list\&. A class path entry that consists of * expands to a list of all the jar files in the current directory\&. The \f3CLASSPATH\fR environment variable is similarly expanded\&. Any class path wildcard expansion occurs before the Java Virtual Machine (JVM) starts\&. No Java program ever sees unexpanded wild cards except by querying the environment, for example, by calling System\&.getenv(\f3"CLASSPATH"\fR)\&.
+.B \f[CB]\-html5\f[R]
+Generates HTML 5 output.
+If the option is not used, \f[CB]\-html4\f[R] is the default.
+.RS
+.RE
.TP
--subpackages \fIpackage1:package2:\&.\&.\&.\fR
-.br
-Generates documentation from source files in the specified packages and recursively in their subpackages\&. This option is useful when adding new subpackages to the source code because they are automatically included\&. Each package argument is any top-level subpackage (such as \f3java\fR) or fully qualified package (such as \f3javax\&.swing\fR) that does not need to contain source files\&. Arguments are separated by colons on all operating systems\&. Wild cards are not allowed\&. Use \f3-sourcepath\fR to specify where to find the packages\&. This option does not process source files that are in the source tree but do not belong to the packages\&. See Process Source Files\&.
-
-For example, the following command generates documentation for packages named \f3java\fR and \f3javax\&.swing\fR and all of their subpackages\&.
-.sp
-.nf
-\f3javadoc \-d docs \-sourcepath /home/user/src \-subpackages java:javax\&.swing \fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+.B \f[CB]\-\-javafx\f[R] or \f[CB]\-javafx\f[R]
+Enables JavaFX functionality.
+.RS
+.RE
.TP
--exclude \fIpackagename1:packagename2:\&.\&.\&.\fR
-.br
-Unconditionally excludes the specified packages and their subpackages from the list formed by \f3-subpackages\fR\&. It excludes those packages even when they would otherwise be included by some earlier or later \f3-subpackages\fR option\&.
-
-The following example would include \f3java\&.io\fR, \f3java\&.util\fR, and \f3java\&.math\fR (among others), but would exclude packages rooted at \f3java\&.net\fR and \f3java\&.lang\fR\&. Notice that this example excludes \f3java\&.lang\&.ref\fR, which is a subpackage of \f3java\&.lang\fR\&.
-.sp
-.nf
-\f3javadoc \-sourcepath /home/user/src \-subpackages java \-exclude \fP
-.fi
-.nf
-\f3 java\&.net:java\&.lang\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
--bootclasspath \fIclasspathlist\fR
-.br
-Specifies the paths where the boot classes reside\&. These are typically the Java platform classes\&. The \f3bootclasspath\fR is part of the search path the \f3javadoc\fR command uses to look up source and class files\&. For more information, see How Classes Are Found at http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html
-
-Separate directories in the \f3classpathlist\fR parameters with semicolons (;) for Windows and colons (:) for Oracle Solaris\&.
-.TP
--extdirs \fIdirist\fR
-.br
-Specifies the directories where extension classes reside\&. These are any classes that use the Java Extension mechanism\&. The \f3extdirs\fR option is part of the search path the \f3javadoc\fR command uses to look up source and class files\&. See the \f3-classpath\fR option for more information\&. Separate directories in \f3dirlist\fR with semicolons (;) for Windows and colons (:) for Oracle Solaris\&.
-.TP
--verbose
-.br
-Provides more detailed messages while the \f3javadoc\fR command runs\&. Without the \f3verbose\fR option, messages appear for loading the source files, generating the documentation (one message per source file), and sorting\&. The verbose option causes the printing of additional messages that specify the number of milliseconds to parse each Java source file\&.
-.TP
--quiet
-.br
-Shuts off messages so that only the warnings and errors appear to make them easier to view\&. It also suppresses the \f3version\fR string\&.
-.TP
--breakiterator
-.br
-Uses the internationalized sentence boundary of \f3java\&.text\&.BreakIterator\fR to determine the end of the first sentence in the main description of a package, class, or member for English\&. All other locales already use the \f3BreakIterator\fR class, rather than an English language, locale-specific algorithm\&. The first sentence is copied to the package, class, or member summary and to the alphabetic index\&. From JDK 1\&.2 and later, the \f3BreakIterator\fR class is used to determine the end of a sentence for all languages except for English\&. Therefore, the \f3-breakiterator\fR option has no effect except for English from 1\&.2 and later\&. English has its own default algorithm:
-.RS
-.TP 0.2i
-\(bu
-English default sentence-break algorithm\&. Stops at a period followed by a space or an HTML block tag, such as \f3<P>\fR\&.
-.TP 0.2i
-\(bu
-Breakiterator sentence-break algorithm\&. Stops at a period, question mark, or exclamation point followed by a space when the next word starts with a capital letter\&. This is meant to handle most abbreviations (such as "The serial no\&. is valid", but will not handle "Mr\&. Smith")\&. The \f3-breakiterator\fR option does not stop at HTML tags or sentences that begin with numbers or symbols\&. The algorithm stops at the last period in \&.\&./filename, even when embedded in an HTML tag\&.
-.RE
-
-
-In Java SE 1\&.5 the \f3-breakiterator\fR option warning messages are removed, and the default sentence-break algorithm is unchanged\&. If you have not modified your source code to eliminate the \f3-breakiterator\fR option warnings in Java SE 1\&.4\&.x, then you do not have to do anything\&. The warnings go away starting with Java SE 1\&.5\&.0\&.
-.TP
--locale \fIlanguage_country_variant\fR
-.br
-Specifies the locale that the \f3javadoc\fR command uses when it generates documentation\&. The argument is the name of the locale, as described in \f3j\fR\f3ava\&.util\&.Locale\fR documentation, such as \f3en_US\fR (English, United States) or \f3en_US_WIN\fR (Windows variant)\&.
-
-\fINote:\fR The \f3-locale\fR option must be placed ahead (to the left) of any options provided by the standard doclet or any other doclet\&. Otherwise, the navigation bars appear in English\&. This is the only command-line option that depends on order\&. See Standard Doclet Options\&.
-
-Specifying a locale causes the \f3javadoc\fR command to choose the resource files of that locale for messages such as strings in the navigation bar, headings for lists and tables, help file contents, comments in the stylesheet\&.css file, and so on\&. It also specifies the sorting order for lists sorted alphabetically, and the sentence separator to determine the end of the first sentence\&. The \f3-locale\fR option does not determine the locale of the documentation comment text specified in the source files of the documented classes\&.
-.TP
--encoding
-.br
-Specifies the encoding name of the source files, such as \f3EUCJIS/SJIS\fR\&. If this option is not specified, then the platform default converter is used\&. See also the\f3-docencoding name\fR and \f3-charset name\fR options\&.
+.B \f[CB]\-keywords\f[R]
+Adds HTML keyword \f[CB]<META>\f[R] tags to the generated file for each
+class.
+These tags can help search engines that look for \f[CB]<META>\f[R] tags
+find the pages.
+Most search engines that search the entire Internet don\[aq]t look at
+\f[CB]<META>\f[R] tags, because pages can misuse them.
+Search engines offered by companies that confine their searches to their
+own website can benefit by looking at \f[CB]<META>\f[R] tags.
+The \f[CB]<META>\f[R] tags include the fully qualified name of the class
+and the unqualified names of the fields and methods.
+Constructors aren\[aq]t included because they are identical to the class
+name.
+For example, the class \f[CB]String\f[R] starts with these keywords:
+.RS
+.IP
+.nf
+\f[CB]
+<META\ NAME="keywords"\ CONTENT="java.lang.String\ class">
+<META\ NAME="keywords"\ CONTENT="CASE_INSENSITIVE_ORDER">
+<META\ NAME="keywords"\ CONTENT="length()">
+<META\ NAME="keywords"\ CONTENT="charAt()">
+\f[R]
+.fi
+.RE
.TP
--J\fIflag\fR
-.br
-Passes \f3flag\fR directly to the Java Runtime Environment (JRE) that runs the \f3javadoc\fR command\&. For example, if you must ensure that the system sets aside 32 MB of memory in which to process the generated documentation, then you would call the \f3-Xmx\fR option as follows: \f3javadoc -J-Xmx32m -J-Xms32m com\&.mypackage\fR\&. Be aware that \f3-Xms\fR is optional because it only sets the size of initial memory, which is useful when you know the minimum amount of memory required\&.
-
-There is no space between the \f3J\fR and the \f3flag\fR\&.
-
-Use the \f3-version\fR option to find out what version of the \f3javadoc\fR command you are using\&. The version number of the standard doclet appears in its output stream\&. See Running the Javadoc Command\&.
-.sp
-.nf
-\f3javadoc \-J\-version\fP
-.fi
-.nf
-\f3java version "1\&.7\&.0_09"\fP
-.fi
-.nf
-\f3Java(TM) SE Runtime Environment (build 1\&.7\&.0_09\-b05)\fP
-.fi
-.nf
-\f3Java HotSpot(TM) 64\-Bit Server VM (build 23\&.5\-b02, mixed mode)\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
--javafx
-.br
-Generates HTML documentation using the JavaFX extensions to the standard doclet\&. The generated documentation includes a Property Summary section in addition to the other summary sections generated by the standard Java doclet\&. The listed properties are linked to the sections for the getter and setter methods of each property\&.
-
-If there are no documentation comments written explicitly for getter and setter methods, the documentation comments from the property method are automatically copied to the generated documentation for these methods\&. This option also adds a new \f3@defaultValue\fR tag that allows documenting the default value for a property\&.
-
-Example:
-.sp
-.nf
-\f3javadoc \-javafx MyClass\&.java \-d testdir\fP
-.fi
-.sp
-
-.SS STANDARD\ DOCLET\ OPTIONS
-.TP
--d \fIdirectory\fR
-.br
-Specifies the destination directory where the \f3javadoc\fR command saves the generated HTML files\&. If you omit the \f3-d\fR option, then the files are saved to the current directory\&. The \f3directory\fR value can be absolute or relative to the current working directory\&. As of Java SE 1\&.4, the destination directory is automatically created when the \f3javadoc\fR command runs\&.
-
-For example, the following command generates the documentation for the package \f3com\&.mypackage\fR and saves the results in the /user/doc/ directory: \f3javadoc -d\fR\f3/user/doc/\fR\f3com\&.mypackage\fR\&.
-.TP
--use
-.br
-Includes one Use page for each documented class and package\&. The page describes what packages, classes, methods, constructors and fields use any API of the specified class or package\&. Given class C, things that use class C would include subclasses of C, fields declared as C, methods that return C, and methods and constructors with parameters of type C\&. For example, you can look at the Use page for the \f3String\fR type\&. Because the \f3getName\fR method in the \f3java\&.awt\&.Font\fR class returns type \f3String\fR, the \f3getName\fR method uses \f3String\fR and so the \f3getName\fR method appears on the Use page for \f3String\fR\&.This documents only uses of the API, not the implementation\&. When a method uses \f3String\fR in its implementation, but does not take a string as an argument or return a string, that is not considered a use of \f3String\fR\&.To access the generated Use page, go to the class or package and click the \fIUse link\fR in the navigation bar\&.
-.TP
--version
-.br
-Includes the @version text in the generated docs\&. This text is omitted by default\&. To find out what version of the \f3javadoc\fR command you are using, use the \f3-J-version\fR option\&.
-.TP
--author
-.br
-Includes the \f3@author\fR text in the generated docs\&.
-.TP
--splitindex
-.br
-Splits the index file into multiple files, alphabetically, one file per letter, plus a file for any index entries that start with non-alphabetical symbols\&.
-.TP
--windowtitle \fItitle\fR
-.br
-Specifies the title to be placed in the HTML \f3<title>\fR tag\&. The text specified in the \f3title\fR tag appears in the window title and in any browser bookmarks (favorite places) that someone creates for this page\&. This title should not contain any HTML tags because the browser does not interpret them correctly\&. Use escape characters on any internal quotation marks within the \f3title\fR tag\&. If the \f3-windowtitle\fR option is omitted, then the \f3javadoc\fR command uses the value of the \f3-doctitle\fR option for the \f3-windowtitle\fR option\&. For example, \f3javadoc -windowtitle "Java SE Platform" com\&.mypackage\fR\&.
-.TP
--doctitle \fItitle\fR
-.br
-Specifies the title to place near the top of the overview summary file\&. The text specified in the \f3title\fR tag is placed as a centered, level-one heading directly beneath the top navigation bar\&. The \f3title\fR tag can contain HTML tags and white space, but when it does, you must enclose the title in quotation marks\&. Internal quotation marks within the \f3title\fR tag must be escaped\&. For example, \f3javadoc -header "<b>Java Platform </b><br>v1\&.4" com\&.mypackage\&.\fR
-.TP
--title \fItitle\fR
-.br
-No longer exists\&. It existed only in Beta releases of Javadoc 1\&.2\&. It was renamed to \f3-doctitle\fR\&. This option was renamed to make it clear that it defines the document title, rather than the window title\&.
-.TP
--header \fIheader\fR
-.br
-Specifies the header text to be placed at the top of each output file\&. The header is placed to the right of the upper navigation bar\&. The \f3header\fR can contain HTML tags and white space, but when it does, the \f3header\fR must be enclosed in quotation marks\&. Use escape characters for internal quotation marks within a header\&. For example, \f3javadoc -header "<b>Java Platform </b><br>v1\&.4" com\&.mypackage\&.\fR
-.TP
--footer \fIfooter\fR
-.br
-Specifies the footer text to be placed at the bottom of each output file\&. The \fIfooter\fR value is placed to the right of the lower navigation bar\&. The \f3footer\fR value can contain HTML tags and white space, but when it does, the \f3footer\fR value must be enclosed in quotation marks\&. Use escape characters for any internal quotation marks within a footer\&.
+.B \f[CB]\-link\f[R] \f[I]url\f[R]
+Creates links to existing \f[CB]javadoc\f[R] generated documentation of
+externally referenced classes.
+The \f[I]url\f[R] argument is the absolute or relative URL of the
+directory that contains the external \f[CB]javadoc\f[R] generated
+documentation.
+You can specify multiple \f[CB]\-link\f[R] options in a specified
+\f[CB]javadoc\f[R] tool run to link to multiple documents.
+.RS
+.PP
+Either a \f[CB]package\-list\f[R] or an \f[CB]element\-list\f[R] file must
+be in this \f[I]url\f[R] directory (otherwise, use the
+\f[CB]\-linkoffline\f[R] option).
+.PP
+\f[B]Note:\f[R]
+.PP
+The \f[CB]package\-list\f[R] and \f[CB]element\-list\f[R] files are
+generated by the \f[CB]javadoc\f[R] tool when generating the API
+documentation and should not be modified by the user.
+.PP
+When you use the \f[CB]javadoc\f[R] tool to document packages, it uses the
+\f[CB]package\-list\f[R] file to determine the packages declared in an
+API.
+When you generate API documents for modules, the \f[CB]javadoc\f[R] tool
+uses the \f[CB]element\-list\f[R] file to determine the modules and
+packages declared in an API.
+.PP
+The \f[CB]javadoc\f[R] tool reads the names from the appropriate list file
+and then links to the packages or modules at that URL.
+.PP
+When the \f[CB]javadoc\f[R] tool runs, the \f[I]url\f[R] value is copied
+into the \f[CB]<A\ HREF>\f[R] links that are created.
+Therefore, \f[I]url\f[R] must be the URL to the directory and not to a
+file.
+.PP
+You can use an absolute link for \f[I]url\f[R] to enable your documents
+to link to a document on any web site, or you can use a relative link to
+link only to a relative location.
+If you use a relative link, then the value you pass in should be the
+relative path from the destination directory (specified with the
+\f[CB]\-d\f[R] option) to the directory containing the packages being
+linked to.
+When you specify an absolute link, you usually use an HTTP link.
+However, if you want to link to a file system that has no web server,
+then you can use a file link.
+Use a file link only when everyone who wants to access the generated
+documentation shares the same file system.
+In all cases, and on all operating systems, use a slash as the
+separator, whether the URL is absolute or relative, and \f[CB]https:\f[R],
+\f[CB]http:\f[R], or \f[CB]file:\f[R] as specified in the \f[B]URL Memo:
+Uniform Resource Locators\f[R] [http://www.ietf.org/rfc/rfc1738.txt].
+.IP
+.nf
+\f[CB]
+\-link\ https://<host>/<directory>/<directory>/.../<name>
+\-link\ http://<host>/<directory>/<directory>/.../<name>
+\-link\ file://<host>/<directory>/<directory>/.../<name>
+\-link\ <directory>/<directory>/.../<name>
+\f[R]
+.fi
+.RE
.TP
--top
-.br
-Specifies the text to be placed at the top of each output file\&.
-.TP
--bottom \fItext\fR
-.br
-Specifies the text to be placed at the bottom of each output file\&. The text is placed at the bottom of the page, underneath the lower navigation bar\&. The text can contain HTML tags and white space, but when it does, the text must be enclosed in quotation marks\&. Use escape characters for any internal quotation marks within text\&.
-.TP
--link \fIextdocURL\fR
-.br
-Creates links to existing Javadoc-generated documentation of externally referenced classes\&. The \fIextdocURL\fR argument is the absolute or relative URL of the directory that contains the external Javadoc-generated documentation you want to link to\&. You can specify multiple \f3-link\fR options in a specified \f3javadoc\fR command run to link to multiple documents\&.
-
-The package-list file must be found in this directory (otherwise, use the \f3-linkoffline\fR option)\&. The \f3javadoc\fR command reads the package names from the package-list file and links to those packages at that URL\&. When the \f3javadoc\fR command runs, the \f3extdocURL\fR value is copied into the \f3<A HREF>\fR links that are created\&. Therefore, \f3extdocURL\fR must be the URL to the directory, and not to a file\&. You can use an absolute link for \fIextdocURL\fR to enable your documents to link to a document on any web site, or you can use a relative link to link only to a relative location\&. If you use a relative link, then the value you pass in should be the relative path from the destination directory (specified with the \f3-d\fR option) to the directory containing the packages being linked to\&.When you specify an absolute link, you usually use an HTTP link\&. However, if you want to link to a file system that has no web server, then you can use a file link\&. Use a file link only when everyone who wants to access the generated documentation shares the same file system\&.In all cases, and on all operating systems, use a slash as the separator, whether the URL is absolute or relative, and \f3h\fR\f3ttp:\fR or \f3f\fR\f3ile:\fR as specified in the URL Memo: Uniform Resource Locators at http://www\&.ietf\&.org/rfc/rfc1738\&.txt
-.sp
-.nf
-\f3\-link http://<host>/<directory>/<directory>/\&.\&.\&./<name>\fP
-.fi
-.nf
-\f3\-link file://<host>/<directory>/<directory>/\&.\&.\&./<name>\fP
-.fi
-.nf
-\f3\-link <directory>/<directory>/\&.\&.\&./<name>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+.B \f[CB]\-linkoffline\f[R] \f[I]url1\f[R] \f[I]url2\f[R]
+This option is a variation of the \f[CB]\-link\f[R] option.
+They both create links to \f[CB]javadoc\f[R] generated documentation for
+externally referenced classes.
+You can specify multiple \f[CB]\-linkoffline\f[R] options in a specified
+\f[CB]javadoc\f[R] tool run.
+.RS
.PP
-Differences between the -linkoffline and -link options
-
-Use the \f3-link\fR option in the following cases:
-.TP 0.2i
-\(bu
-When you use a relative path to the external API document\&.
-.TP 0.2i
-\(bu
-When you use an absolute URL to the external API document if your shell lets you open a connection to that URL for reading\&.
+Use the \f[CB]\-linkoffline\f[R] option when:
+.IP \[bu] 2
+Linking to a document on the web that the \f[CB]javadoc\f[R] tool
+can\[aq]t access through a web connection
+.IP \[bu] 2
+The \f[CB]package\-list\f[R] or \f[CB]element\-list\f[R] file of the
+external document either isn\[aq]t accessible or doesn\[aq]t exist at
+the URL location, but does exist at a different location and can be
+specified by either the \f[CB]package\-list\f[R] or \f[CB]element\-list\f[R]
+file (typically local).
.PP
-Use the \f3-linkoffline\fR option when you use an absolute URL to the external API document, if your shell does not allow a program to open a connection to that URL for reading\&. This can occur when you are behind a firewall and the document you want to link to is on the other side\&.
+\f[B]Note:\f[R]
.PP
-\f3Example 1 Absolute Link to External Documents\fR
+The \f[CB]package\-list\f[R] and \f[CB]element\-list\f[R] files are
+generated by the \f[CB]javadoc\f[R] tool when generating the API
+documentation and should not be modified by the user.
.PP
-Use the following command if you want to link to the \f3java\&.lang\fR, \f3java\&.io\fR and other Java platform packages, shown at http://docs\&.oracle\&.com/javase/8/docs/api/index\&.html
-.sp
-.nf
-\f3javadoc \-link http://docs\&.oracle\&.com/javase/8/docs/api/ com\&.mypackage\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The command generates documentation for the package \f3com\&.mypackage\fR with links to the Java SE packages\&. The generated documentation contains links to the \f3Object\fR class, for example, in the class \f3trees\fR\&. Other options, such as the \f3-sourcepath\fR and \f3-d\fR options, are not shown\&.
-.PP
-\f3Example 2 Relative Link to External Documents\fR
-.PP
-In this example, there are two packages with documents that are generated in different runs of the \f3javadoc\fR command, and those documents are separated by a relative path\&. The packages are \f3com\&.apipackage\fR, an API, and c\f3om\&.spipackage\fR, an Service Provide Interface (SPI)\&. You want the documentation to reside in docs/api/com/apipackage and docs/spi/com/spipackage\&. Assuming that the API package documentation is already generated, and that docs is the current directory, you document the SPI package with links to the API documentation by running: \f3javadoc -d \&./spi -link \&.\&./api com\&.spipackage\fR\&.
-.PP
-Notice the \f3-link\fR option is relative to the destination directory (docs/spi)\&.
+If \f[I]url1\f[R] is accessible only on the World Wide Web, then the
+\f[CB]\-linkoffline\f[R] option removes the constraint that the
+\f[CB]javadoc\f[R] tool must have a web connection to generate
+documentation.
.PP
-Notes
-
-The \f3-link\fR option lets you link to classes referenced to by your code, but not documented in the current \f3javadoc\fR command run\&. For these links to go to valid pages, you must know where those HTML pages are located and specify that location with \f3extdocURL\fR\&. This allows third-party documentation to link to java\&.* documentation at http://docs\&.oracle\&.com\&.Omit the \f3-link\fR option when you want the \f3javadoc\fR command to create links only to APIs within the documentation it is generating in the current run\&. Without the \f3-link\fR option, the \f3javadoc\fR command does not create links to documentation for external references because it does not know whether or where that documentation exists\&.The \f3-link\fR option can create links in several places in the generated documentation\&. See Process Source Files\&. Another use is for cross-links between sets of packages: Execute the \f3javadoc\fR command on one set of packages, then run the \f3javadoc\fR command again on another set of packages, creating links both ways between both sets\&.
-.PP
-How to Reference a Class
-
-For a link to an externally referenced class to appear (and not just its text label), the class must be referenced in the following way\&. It is not sufficient for it to be referenced in the body of a method\&. It must be referenced in either an \f3import\fR statement or in a declaration\&. Here are examples of how the class \f3java\&.io\&.File\fR can be referenced:
-.PP
-\fI\fRIn any kind of import statement\&. By wildcard import, import explicitly by name, or automatically import for \f3java\&.lang\&.*\fR\&.
-.PP
-In Java SE 1\&.3\&.\fIn\fR and 1\&.2\&.\fIn\fR, only an explicit import by name works\&. A wildcard \f3import\fR statement does not work, nor does the automatic \f3import java\&.lang\&.*\fR\&.
+Another use of the \f[CB]\-linkoffline\f[R] option is as a work\-around to
+update documents.
+After you have run the \f[CB]javadoc\f[R] tool on a full set of packages
+or modules, you can run the \f[CB]javadoc\f[R] tool again on a smaller set
+of changed packages or modules, so that the updated files can be
+inserted back into the original set.
.PP
-\fI\fRIn a declaration: \f3void mymethod(File f) {}\fR
-.PP
-The reference can be in the return type or parameter type of a method, constructor, field, class, or interface, or in an implements, extends, or throws statement\&.
-.PP
-An important corollary is that when you use the \f3-link\fR option, there can be many links that unintentionally do not appear due to this constraint\&. The text would appear without being a link\&. You can detect these by the warnings they emit\&. The simplest way to properly reference a class and add the link would be to import that class\&.
-.PP
-Package List
-
-The \f3-link\fR option requires that a file named package-list, which is generated by the \f3javadoc\fR command, exists at the URL you specify with the \f3-link\fR option\&. The package-list file is a simple text file that lists the names of packages documented at that location\&. In the earlier example, the \f3javadoc\fR command searches for a file named package-list at the specified URL, reads in the package names, and links to those packages at that URL\&.
-.PP
-For example, the package list for the Java SE API is located at http://docs\&.oracle\&.com/javase/8/docs/api/package-list
+For example, the \f[CB]\-linkoffline\f[R] option takes two arguments.
+The first is for the string to be embedded in the \f[CB]<a\ href>\f[R]
+links, and the second tells the \f[CB]javadoc\f[R] tool where to find
+either the \f[CB]package\-list\f[R] or \f[CB]element\-list\f[R] file.
.PP
-The package list starts as follows:
-.sp
-.nf
-\f3java\&.applet\fP
-.fi
-.nf
-\f3java\&.awt\fP
-.fi
-.nf
-\f3java\&.awt\&.color\fP
-.fi
-.nf
-\f3java\&.awt\&.datatransfer\fP
-.fi
-.nf
-\f3java\&.awt\&.dnd\fP
-.fi
-.nf
-\f3java\&.awt\&.event\fP
-.fi
-.nf
-\f3java\&.awt\&.font\fP
-.fi
-.nf
-\f3and so on \&.\&.\&.\&.\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-When \f3javadoc\fR is run without the \f3-link\fR option and encounters a name that belongs to an externally referenced class, it prints the name with no link\&. However, when the \f3-link\fR option is used, the \f3javadoc\fR command searches the package-list file at the specified \fIextdocURL\fR location for that package name\&. When it finds the package name, it prefixes the name with \fIextdocURL\fR\&.
-.PP
-For there to be no broken links, all of the documentation for the external references must exist at the specified URLs\&. The \f3javadoc\fR command does not check that these pages exist, but only that the package-list exists\&.
-.PP
-Multiple Links
-
-You can supply multiple \f3-link\fR options to link to any number of externally generated documents\&. Javadoc 1\&.2 has a known bug that prevents you from supplying more than one \f3-link\fR options\&. This was fixed in Javadoc 1\&.2\&.2\&. Specify a different link option for each external document to link to \f3javadoc -link extdocURL1 -link extdocURL2 \&.\&.\&. -link extdocURLn com\&.mypackage\fR where \fIextdocURL1\fR, \fIextdocURL2\fR, \&.\f3\&.\&. extdocURLn\fR point respectively to the roots of external documents, each of which contains a file named package-list\&.
-.PP
-Cross Links
-
-Note that bootstrapping might be required when cross-linking two or more documents that were previously generated\&. If package-list does not exist for either document when you run the \f3javadoc\fR command on the first document, then the package-list does not yet exist for the second document\&. Therefore, to create the external links, you must regenerate the first document after you generate the second document\&.
-.PP
-In this case, the purpose of first generating a document is to create its package-list (or you can create it by hand if you are certain of the package names)\&. Then, generate the second document with its external links\&. The \f3javadoc\fR command prints a warning when a needed external package-list file does not exist\&.
+The \f[I]url1\f[R] or \f[I]url2\f[R] value is the absolute or relative URL
+of the directory that contains the external \f[CB]javadoc\f[R] generated
+documentation that you want to link to.
+When relative, the value should be the relative path from the
+destination directory (specified with the \f[CB]\-d\f[R] option) to the
+root of the packages being linked to.
+See \f[I]url\f[R] in the \f[CB]\-link\f[R] option.
+.RE
.TP
--linkoffline \fIextdocURL packagelistLoc\fR
-.br
-This option is a variation of the \f3-link\fR option\&. They both create links to Javadoc-generated documentation for externally referenced classes\&. Use the \f3-link\fRo\f3ffline\fR option when linking to a document on the web when the \f3javadoc\fR command cannot access the document through a web connection\&. Use the \f3-linkoffline\fR option when package-list file of the external document is not accessible or does not exist at the \f3extdocURL\fR location, but does exist at a different location that can be specified by \f3packageListLoc\fR (typically local)\&. If \f3extdocURL\fR is accessible only on the World Wide Web, then the \f3-linkoffline\fR option removes the constraint that the \f3javadoc\fR command must have a web connection to generate documentation\&. Another use is as a work-around to update documents: After you have run the \f3javadoc\fR command on a full set of packages, you can run the \f3javadoc\fR command again on a smaller set of changed packages, so that the updated files can be inserted back into the original set\&. Examples follow\&. The \f3-linkoffline\fR option takes two arguments\&. The first is for the string to be embedded in the \f3<a href>\fR links, and the second tells the \f3-linkoffline\fR option where to find package-list:
-.RS
-.TP 0.2i
-\(bu
-The \f3extdocURL\fR value is the absolute or relative URL of the directory that contains the external Javadoc-generated documentation you want to link to\&. When relative, the value should be the relative path from the destination directory (specified with the \f3-d\fR option) to the root of the packages being linked to\&. For more information, see \fIextdocURL\fR in the \f3-link\fR option\&.
-.TP 0.2i
-\(bu
-The \f3packagelistLoc\fR value is the path or URL to the directory that contains the package-list file for the external documentation\&. This can be a URL (http: or file:) or file path, and can be absolute or relative\&. When relative, make it relative to the current directory from where the \f3javadoc\fR command was run\&. Do not include the package-list file name\&.
-
-You can specify multiple \f3-linkoffline\fR options in a specified \f3javadoc\fR command run\&. Before Javadoc 1\&.2\&.2, the \f3-linkfile\fR options could be specified once\&.
-.RE
-
+.B \f[CB]\-linksource\f[R]
+Creates an HTML version of each source file (with line numbers) and adds
+links to them from the standard HTML documentation.
+Links are created for classes, interfaces, constructors, methods, and
+fields whose declarations are in a source file.
+Otherwise, links aren\[aq]t created, such as for default constructors
+and generated classes.
+.RS
.PP
-Absolute Links to External Documents
-
-You might have a situation where you want to link to the \f3java\&.lang\fR, \f3java\&.io\fR and other Java SE packages at http://docs\&.oracle\&.com/javase/8/docs/api/index\&.html
+This option exposes all private implementation details in the included
+source files, including private classes, private fields, and the bodies
+of private methods, regardless of the \f[CB]\-public\f[R],
+\f[CB]\-package\f[R], \f[CB]\-protected\f[R], and \f[CB]\-private\f[R]
+options.
+Unless you also use the \f[CB]\-private\f[R] option, not all private
+classes or interfaces are accessible through links.
.PP
-However, your shell does not have web access\&. In this case, do the following:
-.TP 0.4i
-1\&.
-Open the package-list file in a browser at http://docs\&.oracle\&.com/javase/8/docs/api/package-list
-.TP 0.4i
-2\&.
-Save the file to a local directory, and point to this local copy with the second argument, \f3packagelistLoc\fR\&. In this example, the package list file was saved to the current directory (\&.)\&.
+Each link appears on the name of the identifier in its declaration.
+For example, the link to the source code of the \f[CB]Button\f[R] class
+would be on the word \f[CB]Button\f[R]:
+.RS
.PP
-The following command generates documentation for the package c\f3om\&.mypackage\fR with links to the Java SE packages\&. The generated documentation will contain links to the \f3Object\fR class, for example, in the class \f3trees\fR\&. Other necessary options, such as \f3-sourcepath\fR, are not shown\&.
-.sp
-.nf
-\f3javadoc \-linkoffline http://docs\&.oracle\&.com/javase/8/docs/api/ \&. com\&.mypackage \fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+\f[CB]public\ class\ Button\ extends\ Component\ implements\ Accessible\f[R]
+.RE
.PP
-Relative Links to External Documents
-
-It is not very common to use \f3-linkoffline\fR with relative paths, for the simple reason that the \f3-link\fR option is usually enough\&. When you use the \f3-linkoffline\fR option, the package-list file is usually local, and when you use relative links, the file you are linking to is also local, so it is usually unnecessary to give a different path for the two arguments to the \f3-linkoffline\fR option When the two arguments are identical, you can use the \f3-link\fR option\&.
-.PP
-Create a package-list File Manually
-
-If a package-list file does not exist yet, but you know what package names your document will link to, then you can manually create your own copy of this file and specify its path with \f3packagelistLoc\fR\&. An example would be the previous case where the package list for \f3com\&.spipackage\fR did not exist when \f3com\&.apipackage\fR was first generated\&. This technique is useful when you need to generate documentation that links to new external documentation whose package names you know, but which is not yet published\&. This is also a way of creating package-list files for packages generated with Javadoc 1\&.0 or 1\&.1, where package-list files were not generated\&. Similarly, two companies can share their unpublished package-list files so they can release their cross-linked documentation simultaneously\&.
+The link to the source code of the \f[CB]getLabel\f[R] method in the
+\f[CB]Button\f[R] class is on the word \f[CB]getLabel\f[R]:
+.RS
.PP
-Link to Multiple Documents
-
-You can include the \f3-linkoffline\fR option once for each generated document you want to refer to:
-.sp
-.nf
-\f3javadoc \-linkoffline extdocURL1 packagelistLoc1 \-linkoffline extdocURL2\fP
-.fi
-.nf
-\f3packagelistLoc2 \&.\&.\&.\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.PP
-Update Documents
-
-You can also use the \f3-linkoffline\fR option when your project has dozens or hundreds of packages\&. If you have already run the \f3javadoc\fR command on the entire source tree, then you can quickly make small changes to documentation comments and rerun the \f3javadoc\fR command on a portion of the source tree\&. Be aware that the second run works properly only when your changes are to documentation comments and not to declarations\&. If you were to add, remove, or change any declarations from the source code, then broken links could show up in the index, package tree, inherited member lists, Use page, and other places\&.
+\f[CB]public\ String\ getLabel()\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-\-main\-stylesheet\f[R] \f[I]file\f[R] or \f[CB]\-stylesheetfile\f[R] \f[I]file\f[R]
+Specifies the path of an alternate stylesheet file that contains the
+definitions for the CSS styles used in the generated documentation.
+This option lets you override the default.
+If you do not specify the option, the \f[CB]javadoc\f[R] tool will create
+and use a default stylesheet.
+The file name can be any name and isn\[aq]t restricted to
+\f[CB]stylesheet.css\f[R].
+The \f[CB]\-\-main\-stylesheet\f[R] option is the preferred form.
+.RS
.PP
-First, create a new destination directory, such as update, for this new small run\&. In this example, the original destination directory is named html\&. In the simplest example, change directory to the parent of html\&. Set the first argument of the \f3-linkoffline\fR option to the current directory (\&.) and set the second argument to the relative path to html, where it can find package-list and pass in only the package names of the packages you want to update:
-.sp
-.nf
-\f3javadoc \-d update \-linkoffline \&. html com\&.mypackage\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-When the \f3javadoc\fR command completes, copy these generated class pages in update/com/package (not the overview or index) to the original files in html/com/package\&.
+Command\-line example:
+.RS
+.PP
+\f[CB]javadoc\ \-\-main\-stylesheet\ main_stylesheet.css\ pkg_foo\f[R]
+.RE
+.RE
.TP
--linksource
-.br
-Creates an HTML version of each source file (with line numbers) and adds links to them from the standard HTML documentation\&. Links are created for classes, interfaces, constructors, methods, and fields whose declarations are in a source file\&. Otherwise, links are not created, such as for default constructors and generated classes\&.
-
-This option exposes all private implementation details in the included source files, including private classes, private fields, and the bodies of private methods, regardless of the \f3-public\fR, \f3-package\fR, \f3-protected\fR, and \f3-private\fR options\&. Unless you also use the \f3-private\fR option, not all private classes or interfaces are accessible through links\&.
-
-Each link appears on the name of the identifier in its declaration\&. For example, the link to the source code of the \f3Button\fR class would be on the word \f3Button\fR:
-.sp
-.nf
-\f3public class Button extends Component implements Accessible\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The link to the source code of the \f3getLabel\fR method in the \f3Button\fR class is on the word \f3getLabel\fR:
-.sp
-.nf
-\f3public String getLabel()\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+.B \f[CB]\-nocomment\f[R]
+Suppresses the entire comment body, including the main description and
+all tags, and generate only declarations.
+This option lets you reuse source files that were originally intended
+for a different purpose so that you can produce skeleton HTML
+documentation during the early stages of a new project.
+.RS
+.RE
+.TP
+.B \f[CB]\-nodeprecated\f[R]
+Prevents the generation of any deprecated API in the documentation.
+This does what the \f[CB]\-nodeprecatedlist\f[R] option does, and it
+doesn\[aq]t generate any deprecated API throughout the rest of the
+documentation.
+This is useful when writing code when you don\[aq]t want to be
+distracted by the deprecated code.
+.RS
+.RE
.TP
--group groupheading \fIpackagepattern:packagepattern\fR
-.br
-Separates packages on the overview page into whatever groups you specify, one group per table\&. You specify each group with a different \f3-group\fR option\&. The groups appear on the page in the order specified on the command line\&. Packages are alphabetized within a group\&. For a specified \f3-group\fR option, the packages matching the list of \f3packagepattern\fR expressions appear in a table with the heading \fIgroupheading\fR\&.
-.RS
-.TP 0.2i
-\(bu
-The \f3groupheading\fR can be any text and can include white space\&. This text is placed in the table heading for the group\&.
-.TP 0.2i
-\(bu
-The \f3packagepattern\fR value can be any package name at the start of any package name followed by an asterisk (*)\&. The asterisk is the only wildcard allowed and means match any characters\&. Multiple patterns can be included in a group by separating them with colons (:)\&. If you use an asterisk in a pattern or pattern list, then the pattern list must be inside quotation marks, such as \f3"java\&.lang*:java\&.util"\fR\&.
-.RE
-
-
-When you do not supply a \f3-group\fR option, all packages are placed in one group with the heading \fIPackages\fR and appropriate subheadings\&. If the subheadings do not include all documented packages (all groups), then the remaining packages appear in a separate group with the subheading Other Packages\&.
-
-For example, the following \f3javadoc\fR command separates the three documented packages into \fICore\fR, \fIExtension\fR, and \fIOther Packages\fR\&. The trailing dot (\&.) does not appear in \f3java\&.lang*\fR\&. Including the dot, such as \f3java\&.lang\&.*\fR omits the\f3java\&.lang\fR package\&.
-.sp
-.nf
-\f3javadoc \-group "Core Packages" "java\&.lang*:java\&.util"\fP
-.fi
-.nf
-\f3 \-group "Extension Packages" "javax\&.*"\fP
-.fi
-.nf
-\f3 java\&.lang java\&.lang\&.reflect java\&.util javax\&.servlet java\&.new\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-\fICore Packages\fR
-
-\f3java\&.lang\fR
-
-\f3java\&.lang\&.reflect\fR
-
-\f3java\&.util\fR
-
-\fIExtension Packages\fR
-
-\f3javax\&.servlet\fR
-
-\fIOther Packages\fR
-
-\f3java\&.new\fR
+.B \f[CB]\-nodeprecatedlist\f[R]
+Prevents the generation of the file that contains the list of deprecated
+APIs (\f[CB]deprecated\-list.html\f[R]) and the link in the navigation bar
+to that page.
+The \f[CB]javadoc\f[R] tool continues to generate the deprecated API
+throughout the rest of the document.
+This is useful when your source code contains no deprecated APIs, and
+you want to make the navigation bar cleaner.
+.RS
+.RE
.TP
--nodeprecated
-.br
-Prevents the generation of any deprecated API in the documentation\&. This does what the \f3-nodeprecatedlist\fR option does, and it does not generate any deprecated API throughout the rest of the documentation\&. This is useful when writing code when you do not want to be distracted by the deprecated code\&.
-.TP
--nodeprecatedlist
-.br
-Prevents the generation of the file that contains the list of deprecated APIs (deprecated-list\&.html) and the link in the navigation bar to that page\&. The \f3javadoc\fR command continues to generate the deprecated API throughout the rest of the document\&. This is useful when your source code contains no deprecated APIs, and you want to make the navigation bar cleaner\&.
-.TP
--nosince
-.br
-Omits from the generated documents the \f3Since\fR sections associated with the \f3@since\fR tags\&.
+.B \f[CB]\-\-no\-frames\f[R]
+Disables the use of frames in the generated output.
+.RS
+.RE
.TP
--notree
-.br
-Omits the class/interface hierarchy pages from the generated documents\&. These are the pages you reach using the Tree button in the navigation bar\&. The hierarchy is produced by default\&.
+.B \f[CB]\-nohelp\f[R]
+Omits the HELP link in the navigation bars at the top and bottom of each
+page of output.
+.RS
+.RE
.TP
--noindex
-.br
-Omits the index from the generated documents\&. The index is produced by default\&.
-.TP
--nohelp
-.br
-Omits the HELP link in the navigation bars at the top and bottom of each page of output\&.
+.B \f[CB]\-noindex\f[R]
+Omits the index from the generated documents.
+The index is produced by default.
+.RS
+.RE
.TP
--nonavbar
-.br
-Prevents the generation of the navigation bar, header, and footer, that are usually found at the top and bottom of the generated pages\&. The \f3-nonavbar\fR option has no affect on the \f3-bottom\fR option\&. The \f3-nonavbar\fR option is useful when you are interested only in the content and have no need for navigation, such as when you are converting the files to PostScript or PDF for printing only\&.
-.TP
--helpfile \fIpath\efilename\fR
-.br
-Specifies the path of an alternate help file path\efilename that the HELP link in the top and bottom navigation bars link to\&. Without this option, the \f3javadoc\fR command creates a help file help-doc\&.html that is hard-coded in the \f3javadoc\fR command\&. This option lets you override the default\&. The file name can be any name and is not restricted to help-doc\&.html\&. The \f3javadoc\fR command adjusts the links in the navigation bar accordingly, for example:
-.sp
-.nf
-\f3javadoc \-helpfile /home/user/myhelp\&.html java\&.awt\&.\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
--stylesheet \fIpath/filename\fR
-.br
-Specifies the path of an alternate HTML stylesheet file\&. Without this option, the \f3javadoc\fR command automatically creates a stylesheet file stylesheet\&.css that is hard-coded in the \f3javadoc\fR command\&. This option lets you override the default\&. The file name can be any name and is not restricted to stylesheet\&.css, for example:
-.sp
-.nf
-\f3javadoc \-stylesheet file /home/user/mystylesheet\&.css com\&.mypackage\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
--serialwarn
-.br
-Generates compile-time warnings for missing \f3@serial\fR tags\&. By default, Javadoc 1\&.2\&.2 and later versions generate no serial warnings\&. This is a reversal from earlier releases\&. Use this option to display the serial warnings, which helps to properly document default serializable fields and \f3writeExternal\fR methods\&.
-.TP
--charset \fIname\fR
-.br
-Specifies the HTML character set for this document\&. The name should be a preferred MIME name as specified in the IANA Registry, Character Sets at http://www\&.iana\&.org/assignments/character-sets
-
-For example, \f3javadoc -charset "iso-8859-1" mypackage\fR inserts the following line in the head of every generated page:
-.sp
-.nf
-\f3<META http\-equiv="Content\-Type" content="text/html; charset=ISO\-8859\-1">\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-This \f3META\fR tag is described in the HTML standard (4197265 and 4137321), HTML Document Representation, at http://www\&.w3\&.org/TR/REC-html40/charset\&.html#h-5\&.2\&.2
-
-See also the \f3-encoding\fR and \f3-docencoding name\fR options\&.
-.TP
--docencoding \fIname\fR
-.br
-Specifies the encoding of the generated HTML files\&. The name should be a preferred MIME name as specified in the IANA Registry, Character Sets at http://www\&.iana\&.org/assignments/character-sets
-
-If you omit the \f3-docencoding\fR option but use the \f3-encoding\fR option, then the encoding of the generated HTML files is determined by the \f3-encoding\fR option, for example: \f3javadoc -docencoding "iso-8859-1" mypackage\fR\&. See also the \f3-encoding\fR and \f3-docencoding name\fR options\&.
-.TP
--keywords
-.br
-Adds HTML keyword <META> tags to the generated file for each class\&. These tags can help search engines that look for <META> tags find the pages\&. Most search engines that search the entire Internet do not look at <META> tags, because pages can misuse them\&. Search engines offered by companies that confine their searches to their own website can benefit by looking at <META> tags\&. The <META> tags include the fully qualified name of the class and the unqualified names of the fields and methods\&. Constructors are not included because they are identical to the class name\&. For example, the class \f3String\fR starts with these keywords:
-.sp
-.nf
-\f3<META NAME="keywords" CONTENT="java\&.lang\&.String class">\fP
-.fi
-.nf
-\f3<META NAME="keywords" CONTENT="CASE_INSENSITIVE_ORDER">\fP
-.fi
-.nf
-\f3<META NAME="keywords" CONTENT="length()">\fP
-.fi
-.nf
-\f3<META NAME="keywords" CONTENT="charAt()">\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+.B \f[CB]\-nonavbar\f[R]
+Prevents the generation of the navigation bar, header, and footer, that
+are usually found at the top and bottom of the generated pages.
+The \f[CB]\-nonavbar\f[R] option has no affect on the \f[CB]\-bottom\f[R]
+option.
+The \f[CB]\-nonavbar\f[R] option is useful when you are interested only in
+the content and have no need for navigation, such as when you are
+converting the files to PostScript or PDF for printing only.
+.RS
+.RE
.TP
--tag \fItagname\fR:Xaoptcmf:"\fItaghead\fR"
-.br
-Enables the \f3javadoc\fR command to interpret a simple, one-argument \f3@tagname\fR custom block tag in documentation comments\&. For the \f3javadoc\fR command to spell-check tag names, it is important to include a \f3-tag\fR option for every custom tag that is present in the source code, disabling (with \f3X\fR) those that are not being output in the current run\&.The colon (:) is always the separator\&. The \f3-tag\fR option outputs the tag heading \fItaghead\fR in bold, followed on the next line by the text from its single argument\&. Similar to any block tag, the argument text can contain inline tags, which are also interpreted\&. The output is similar to standard one-argument tags, such as the \f3@return\fR and \f3@author\fR tags\&. Omitting a value for \fItaghead\fR causes \f3tagname\fR to be the heading\&.
-
-\fIPlacement of tags\fR: The \f3Xaoptcmf\fR arguments determine where in the source code the tag is allowed to be placed, and whether the tag can be disabled (using \f3X\fR)\&. You can supply either \f3a\fR, to allow the tag in all places, or any combination of the other letters:
-
-\f3X\fR (disable tag)
-
-\f3a\fR (all)
-
-\f3o\fR (overview)
-
-\f3p\fR (packages)
-
-\f3t\fR (types, that is classes and interfaces)
-
-\f3c\fR (constructors)
-
-\f3m\fR (methods)
-
-\f3f\fR (fields)
-
-\fIExamples of single tags\fR: An example of a tag option for a tag that can be used anywhere in the source code is: \f3-tag todo:a:"To Do:"\fR\&.
-
-If you want the \f3@todo\fR tag to be used only with constructors, methods, and fields, then you use: \f3-tag todo:cmf:"To Do:"\fR\&.
-
-Notice the last colon (:) is not a parameter separator, but is part of the heading text\&. You would use either tag option for source code that contains the \f3@todo\fR tag, such as: \f3@todo The documentation for this method needs work\fR\&.
-
-\fIColons in tag names\fR: Use a backslash to escape a colon that you want to use in a tag name\&. Use the \f3-tag ejb\e\e:bean:a:"EJB Bean:"\fR option for the following documentation comment:
-.sp
-.nf
-\f3/**\fP
-.fi
-.nf
-\f3 * @ejb:bean\fP
-.fi
-.nf
-\f3 */\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-\fISpell-checking tag names\fR: Some developers put custom tags in the source code that they do not always want to output\&. In these cases, it is important to list all tags that are in the source code, enabling the ones you want to output and disabling the ones you do not want to output\&. The presence of \f3X\fR disables the tag, while its absence enables the tag\&. This gives the \f3javadoc\fR command enough information to know whether a tag it encounters is unknown, which is probably the results of a typographical error or a misspelling\&. The \f3javadoc\fR command prints a warning in these cases\&. You can add \f3X\fR to the placement values already present, so that when you want to enable the tag, you can simply delete the \f3X\fR\&. For example, if the \f3@todo\fR tag is a tag that you want to suppress on output, then you would use: \f3-tag todo:Xcmf:"To Do:"\fR\&. If you would rather keep it simple, then use this: \f3-tag todo:X\fR\&. The syntax \f3-tag todo:X\fR works even when the \f3@todo\fR tag is defined by a taglet\&.
-
-\fIOrder of tags\fR: The order of the \f3-ta\fR\f3g\fR and \f3-taglet\fR options determines the order the tags are output\&. You can mix the custom tags with the standard tags to intersperse them\&. The tag options for standard tags are placeholders only for determining the order\&. They take only the standard tag\&'s name\&. Subheadings for standard tags cannot be altered\&. This is illustrated in the following example\&.If the \f3-tag\fR option is missing, then the position of the \f3-tagle\fR\f3t\fR option determines its order\&. If they are both present, then whichever appears last on the command line determines its order\&. This happens because the tags and taglets are processed in the order that they appear on the command line\&. For example, if the \f3-taglet\fR and \f3-tag\fR options have the name \f3todo\fR value, then the one that appears last on the command line determines the order\&.
-
-\fIExample of a complete set of tags\fR: This example inserts To Do after Parameters and before Throws in the output\&. By using \f3X\fR, it also specifies that the \f3@example\fR tag might be encountered in the source code that should not be output during this run\&. If you use the \f3@argfile\fR tag, then you can put the tags on separate lines in an argument file similar to this (no line continuation characters needed):
-.sp
-.nf
-\f3\-tag param\fP
-.fi
-.nf
-\f3\-tag return\fP
-.fi
-.nf
-\f3\-tag todo:a:"To Do:"\fP
-.fi
-.nf
-\f3\-tag throws\fP
-.fi
-.nf
-\f3\-tag see\fP
-.fi
-.nf
-\f3\-tag example:X\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-When the \f3javadoc\fR command parses the documentation comments, any tag encountered that is neither a standard tag nor passed in with the \f3-tag\fR or \f3-taglet\fR options is considered unknown, and a warning is thrown\&.
-
-The standard tags are initially stored internally in a list in their default order\&. Whenever the \f3-tag\fR options are used, those tags get appended to this list\&. Standard tags are moved from their default position\&. Therefore, if a \f3-tag\fR option is omitted for a standard tag, then it remains in its default position\&.
-
-\fIAvoiding conflicts\fR: If you want to create your own namespace, then you can use a dot-separated naming convention similar to that used for packages: \f3com\&.mycompany\&.todo\fR\&. Oracle will continue to create standard tags whose names do not contain dots\&. Any tag you create will override the behavior of a tag by the same name defined by Oracle\&. If you create a \f3@todo\fR tag or taglet, then it always has the same behavior you define, even when Oracle later creates a standard tag of the same name\&.
-
-\fIAnnotations vs\&. Javadoc tags\fR: In general, if the markup you want to add is intended to affect or produce documentation, then it should be a Javadoc tag\&. Otherwise, it should be an annotation\&. See Custom Tags and Annotations in How to Write Doc Comments for the Javadoc Tool at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html#annotations
-
-You can also create more complex block tags or custom inline tags with the \f3-taglet\fR option\&.
+.B \f[CB]\-noqualifier\f[R] \f[I]name1\f[R]\f[CB]:\f[R]\f[I]name2\f[R]...
+Excludes the list of qualifiers from the output.
+The package name is removed from places where class or interface names
+appear.
+.RS
+.PP
+The following example omits all package qualifiers:
+\f[CB]\-noqualifier\ all\f[R].
+.PP
+The following example omits \f[CB]java.lang\f[R] and \f[CB]java.io\f[R]
+package qualifiers: \f[CB]\-noqualifier\ java.lang:java.io\f[R].
+.PP
+The following example omits package qualifiers starting with
+\f[CB]java\f[R] and \f[CB]com.sun\f[R] subpackages, but not
+\f[CB]javax:\ \-noqualifier\ java.*:com.sun.*\f[R].
+.PP
+Where a package qualifier would appear due to the previous behavior, the
+name can be suitably shortened.
+This rule is in effect whether or not the \f[CB]\-noqualifier\f[R] option
+is used.
+.RE
+.TP
+.B \f[CB]\-nosince\f[R]
+Omits from the generated documents the \f[CB]Since\f[R] sections
+associated with the \f[CB]\@since\f[R] tags.
+.RS
+.RE
+.TP
+.B \f[CB]\-notimestamp\f[R]
+Suppresses the time stamp, which is hidden in an HTML comment in the
+generated HTML near the top of each page.
+The \f[CB]\-notimestamp\f[R] option is useful when you want to run the
+\f[CB]javadoc\f[R] tool on two source bases and get the differences
+between \f[CB]diff\f[R] them, because it prevents time stamps from causing
+a \f[CB]diff\f[R] (which would otherwise be a \f[CB]diff\f[R] on every
+page).
+The time stamp includes the \f[CB]javadoc\f[R] tool release number.
+.RS
+.RE
+.TP
+.B \f[CB]\-notree\f[R]
+Omits the class and interface hierarchy pages from the generated
+documents.
+These are the pages you reach using the Tree button in the navigation
+bar.
+The hierarchy is produced by default.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-override\-methods\f[R] (\f[CB]detail\f[R]|\f[CB]summary\f[R])
+Documents overridden methods in the detail or summary sections.
+.RS
+.RE
.TP
--taglet \fIclass\fR
-.br
-Specifies the class file that starts the taglet used in generating the documentation for that tag\&. Use the fully qualified name for the \f3class\fR value\&. This taglet also defines the number of text arguments that the custom tag has\&. The taglet accepts those arguments, processes them, and generates the output\&. For extensive documentation with example taglets, see: Taglet Overview at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/taglet/overview\&.html
-
-Taglets are useful for block or inline tags\&. They can have any number of arguments and implement custom behavior, such as making text bold, formatting bullets, writing out the text to a file, or starting other processes\&. Taglets can only determine where a tag should appear and in what form\&. All other decisions are made by the doclet\&. A taglet cannot do things such as remove a class name from the list of included classes\&. However, it can execute side effects, such as printing the tag\&'s text to a file or triggering another process\&. Use the \f3-tagletpath\fR option to specify the path to the taglet\&. The following example inserts the To Do taglet after Parameters and ahead of Throws in the generated pages\&. Alternately, you can use the \f3-taglet\fR option in place of its \f3-tag\fR option, but that might be difficult to read\&.
-.sp
-.nf
-\f3\-taglet com\&.sun\&.tools\&.doclets\&.ToDoTaglet\fP
-.fi
-.nf
-\f3\-tagletpath /home/taglets \fP
-.fi
-.nf
-\f3\-tag return\fP
-.fi
-.nf
-\f3\-tag param\fP
-.fi
-.nf
-\f3\-tag todo\fP
-.fi
-.nf
-\f3\-tag throws\fP
-.fi
-.nf
-\f3\-tag see\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
--tagletpath \fItagletpathlist\fR
-.br
-Specifies the search paths for finding taglet class files\&. The \f3tagletpathlist\fR can contain multiple paths by separating them with a colon (:)\&. The \f3javadoc\fR command searches all subdirectories of the specified paths\&.
-.TP
--docfilesubdirs
-.br
-Enables deep copying of doc-files directories\&. Subdirectories and all contents are recursively copied to the destination\&. For example, the directory doc-files/example/images and all of its contents would be copied\&. There is also an option to exclude subdirectories\&.
-.TP
--excludedocfilessubdir \fIname1:name2\fR
-.br
-Excludes any doc-files subdirectories with the specified names\&. This prevents the copying of SCCS and other source-code-control subdirectories\&.
-.TP
--noqualifier all | \fIpackagename1\fR:\fIpackagename2\&.\&.\&.\fR
-.br
-Omits qualifying package names from class names in output\&. The argument to the \f3-noqualifier\fR option is either \f3all\fR (all package qualifiers are omitted) or a colon-separate list of packages, with wild cards, to be removed as qualifiers\&. The package name is removed from places where class or interface names appear\&. See Process Source Files\&.
-
-The following example omits all package qualifiers: \f3-noqualifier all\fR\&.
-
-The following example omits \f3java\&.lang\fR and \f3java\&.io\fR package qualifiers: \f3-noqualifier java\&.lang:java\&.io\fR\&.
-
-The following example omits package qualifiers starting with \f3java\fR, and \f3com\&.sun\fR subpackages, but not \f3javax\fR: \f3-noqualifier java\&.*:com\&.sun\&.*\fR\&.
-
-Where a package qualifier would appear due to the previous behavior, the name can be suitably shortened\&. See How a Name Appears\&. This rule is in effect whether or not the \f3-noqualifier\fR option is used\&.
-.TP
--notimestamp
-.br
-Suppresses the time stamp, which is hidden in an HTML comment in the generated HTML near the top of each page\&. The \f3-notimestamp\fR option is useful when you want to run the \f3javadoc\fR command on two source bases and get the differences between \f3diff\fR them, because it prevents time stamps from causing a \f3diff\fR (which would otherwise be a \f3diff\fR on every page)\&. The time stamp includes the \f3javadoc\fR command release number, and currently appears similar to this: \f3<!-- Generated by javadoc (build 1\&.5\&.0_01) on Thu Apr 02 14:04:52 IST 2009 -->\fR\&.
-.TP
--nocomment
-.br
-Suppresses the entire comment body, including the main description and all tags, and generate only declarations\&. This option lets you reuse source files that were originally intended for a different purpose so that you can produce skeleton HTML documentation at the early stages of a new project\&.
-.TP
--sourcetab \fItablength\fR
-.br
-Specifies the number of spaces each tab uses in the source\&.
-.SH COMMAND-LINE\ ARGUMENT\ FILES
-To shorten or simplify the \f3javadoc\fR command, you can specify one or more files that contain arguments to the \f3javadoc\fR command (except \f3-J\fR options)\&. This enables you to create \f3javadoc\fR commands of any length on any operating system\&.
+.B \f[CB]\-overview\f[R] \f[I]filename\f[R]
+Specifies that the \f[CB]javadoc\f[R] tool should retrieve the text for
+the overview documentation from the source file specified by
+\f[CB]filename\f[R] and place it on the Overview page
+(\f[CB]overview\-summary.html\f[R]).
+A relative path specified with the file name is relative to the current
+working directory.
+.RS
.PP
-An argument file can include \f3javac\fR options and source file names in any combination\&. The arguments within a file can be space-separated or newline-separated\&. If a file name contains embedded spaces, then put the whole file name in double quotation marks\&.
-.PP
-File Names within an argument file are relative to the current directory, not the location of the argument file\&. Wild cards (\f3*\fR) are not allowed in these lists (such as for specifying *\&.java)\&. Using the at sign (@) to recursively interpret files is not supported\&. The \f3-J\fR options are not supported because they are passed to the launcher, which does not support argument files\&.
-.PP
-When you run the \f3javadoc\fR command, pass in the path and name of each argument file with the @ leading character\&. When the \f3javadoc\fR command encounters an argument beginning with the at sign (@), it expands the contents of that file into the argument list\&.
-.PP
-\f3Example 1 Single Argument File\fR
-.PP
-You could use a single argument file named \f3argfile\fR to hold all \f3javadoc\fR command arguments: \f3javadoc @argfile\fR\&. The argument file \f3\fRcontains the contents of both files, as shown in the next example\&.
-.PP
-\f3Example 2 Two Argument Files\fR
-.PP
-You can create two argument files: One for the \f3javadoc\fR command options and the other for the package names or source file names\&. Notice the following lists have no line-continuation characters\&.
+While you can use any name you want for the \f[CB]filename\f[R] value and
+place it anywhere you want for the path, it is typical to name it
+\f[CB]overview.html\f[R] and place it in the source tree at the directory
+that contains the topmost package directories.
+In this location, no path is needed when documenting packages, because
+the \f[CB]\-sourcepath\f[R] option points to this file.
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] For example, if the source
+tree for the \f[CB]java.lang\f[R] package is
+\f[CB]/src/classes/java/lang/\f[R], then you could place the overview file
+at /src/classes/overview.html.
+.IP \[bu] 2
+\f[B]Windows:\f[R] For example, if the source tree for the
+\f[CB]java.lang\f[R] package is \f[CB]\\src\\classes\\java\\lang\\\f[R],
+then you could place the overview file at
+\f[CB]\\src\\classes\\overview.html\f[R]
.PP
-Create a file named options that contains:
-.sp
-.nf
-\f3\-d docs\-filelist \fP
-.fi
-.nf
-\f3\-use \fP
-.fi
-.nf
-\f3\-splitindex\fP
-.fi
-.nf
-\f3\-windowtitle \&'Java SE 7 API Specification\&'\fP
-.fi
-.nf
-\f3\-doctitle \&'Java SE 7 API Specification\&'\fP
-.fi
-.nf
-\f3\-header \&'<b>Java\(tm SE 7</b>\&'\fP
-.fi
-.nf
-\f3\-bottom \&'Copyright © 1993\-2011 Oracle and/or its affiliates\&. All rights reserved\&.\&'\fP
-.fi
-.nf
-\f3\-group "Core Packages" "java\&.*"\fP
-.fi
-.nf
-\f3\-overview /java/pubs/ws/1\&.7\&.0/src/share/classes/overview\-core\&.html\fP
-.fi
-.nf
-\f3\-sourcepath /java/pubs/ws/1\&.7\&.0/src/share/classes\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Create a file named packages that contains:
-.sp
-.nf
-\f3com\&.mypackage1\fP
-.fi
-.nf
-\f3com\&.mypackage2\fP
-.fi
-.nf
-\f3com\&.mypackage3\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Run the \f3javadoc\fR command as follows:
-.sp
-.nf
-\f3javadoc @options @packages\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 3 Argument Files with Paths\fR
+The overview page is created only when you pass two or more package
+names to the \f[CB]javadoc\f[R] tool.
+The title on the overview page is set by \f[CB]\-doctitle\f[R].
+.RE
+.TP
+.B \f[CB]\-serialwarn\f[R]
+Generates compile\-time warnings for missing \f[CB]\@serial\f[R] tags.
+By default, Javadoc generates no serial warnings.
+Use this option to display the serial warnings, which helps to properly
+document default serializable fields and \f[CB]writeExternal\f[R] methods.
+.RS
+.RE
+.TP
+.B \f[CB]\-sourcetab\f[R] \f[I]tablength\f[R]
+Specifies the number of spaces each tab uses in the source.
+.RS
+.RE
+.TP
+.B \f[CB]\-splitindex\f[R]
+Splits the index file into multiple files, alphabetically, one file per
+letter, plus a file for any index entries that start with
+non\-alphabetical symbols.
+.RS
+.RE
+.TP
+.B \f[CB]\-tag\f[R] \f[I]name\f[R]:\f[I]locations\f[R]:\f[I]header\f[R]
+Specifies single argument custom tags.
+For the \f[CB]javadoc\f[R] tool to spell\-check tag names, it is important
+to include a \f[CB]\-tag\f[R] option for every custom tag that is present
+in the source code, disabling (with \f[CB]X\f[R]) those that aren\[aq]t
+being output in the current run.
+The colon (\f[CB]:\f[R]) is always the separator.
+The \f[CB]\-tag\f[R] option outputs the tag heading, \f[I]header\f[R], in
+bold, followed on the next line by the text from its single argument.
+Similar to any block tag, the argument text can contain inline tags,
+which are also interpreted.
+The output is similar to standard one\-argument tags, such as the
+\f[CB]\@return\f[R] and \f[CB]\@author\f[R] tags.
+Omitting a \f[I]header\f[R] value causes the \f[I]name\f[R] to be the
+heading.
+.RS
+.RE
+.TP
+.B \f[CB]\-taglet\f[R] \f[I]class\f[R]
+Specifies the fully qualified name of the taglet used in generating the
+documentation for that tag.
+Use the fully qualified name for the \f[I]class\f[R] value.
+This taglet also defines the number of text arguments that the custom
+tag has.
+The taglet accepts those arguments, processes them, and generates the
+output.
+.RS
.PP
-The argument files can have paths, but any file names inside the files are relative to the current working directory (not \f3path1\fR or \f3path2\fR):
-.sp
-.nf
-\f3javadoc @path1/options @path2/packages\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 4 Option Arguments\fR
-.PP
-The following example saves an argument to a \f3javadoc\fR command option in an argument file\&. The \f3-bottom\fR option is used because it can have a lengthy argument\&. You could create a file named bottom to contain the text argument:
-.sp
-.nf
-\f3<font size="\-1">\fP
-.fi
-.nf
-\f3 <a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/>\fP
-.fi
-.nf
-\f3 Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&. <br/>\fP
-.fi
-.nf
-\f3 Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&.\fP
-.fi
-.nf
-\f3 Other names may be trademarks of their respective owners\&.</font>\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Run the \f3javadoc\fR command as follows:\f3javadoc -bottom @bottom @packages\fR\&.
-.PP
-You can also include the \f3-bottom\fR option at the start of the argument file and run the \f3javadoc\fR command as follows: \f3javadoc @bottom @packages\fR\&.
-.SH RUNNING\ THE\ JAVADOC\ COMMAND
-The release number of the \f3javadoc\fR command can be determined with the \f3javadoc -J-version\fR option\&. The release number of the standard doclet appears in the output stream\&. It can be turned off with the \f3-quiet\fR option\&.
-.PP
-Use the public programmatic interface to call the \f3javadoc\fR command from within programs written in the Java language\&. This interface is in \f3com\&.sun\&.tools\&.javadoc\&.Main\fR (and the \f3javadoc\fR command is reentrant)\&. For more information, see The Standard Doclet at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/standard-doclet\&.html#runningprogrammatically
-.PP
-The following instructions call the standard HTML doclet\&. To call a custom doclet, use the \f3-doclet\fR and \f3-docletpath\fR options\&. See Doclet Overview at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html
-.SS SIMPLE\ EXAMPLES
-You can run the \f3javadoc\fR command on entire packages or individual source files\&. Each package name has a corresponding directory name\&.
-.PP
-In the following examples, the source files are located at /home/src/java/awt/*\&.java\&. The destination directory is /home/html\&.
-.PP
-Document One or More Packages
-
-To document a package, the source files for that package must be located in a directory that has the same name as the package\&.
-.PP
-If a package name has several identifiers (separated by dots, such as \f3java\&.awt\&.color\fR), then each subsequent identifier must correspond to a deeper subdirectory (such as java/awt/color)\&.
-.PP
-You can split the source files for a single package among two such directory trees located at different places, as long as \f3-sourcepath\fR points to them both\&. For example, src1/java/awt/color and src2/java/awt/color\&.
-.PP
-You can run the \f3javadoc\fR command either by changing directories (with the \f3cd\fR command) or by using the \f3-sourcepath\fR option\&. The following examples illustrate both alternatives\&.
-.PP
-\f3Example 1 Recursive Run from One or More Packages\fR
+Taglets are useful for block or inline tags.
+They can have any number of arguments and implement custom behavior,
+such as making text bold, formatting bullets, writing out the text to a
+file, or starting other processes.
+Taglets can only determine where a tag should appear and in what form.
+All other decisions are made by the doclet.
+A taglet can\[aq]t do things such as remove a class name from the list
+of included classes.
+However, it can execute side effects, such as printing the tag\[aq]s
+text to a file or triggering another process.
+Use the \f[CB]\-tagletpath\f[R] option to specify the path to the taglet.
+The following example inserts the To Do taglet after Parameters and
+ahead of Throws in the generated pages.
+.IP
+.nf
+\f[CB]
+\-taglet\ com.sun.tools.doclets.ToDoTaglet
+\-tagletpath\ /home/taglets
+\-tag\ return
+\-tag\ param
+\-tag\ todo
+\-tag\ throws
+\-tag\ see
+\f[R]
+.fi
.PP
-This example uses \f3-sourcepath\fR so the \f3javadoc\fR command can be run from any directory and \f3-subpackages\fR (a new 1\&.4 option) for recursion\&. It traverses the subpackages of the java directory excluding packages rooted at \f3java\&.net\fR and \f3java\&.lang\fR\&. Notice this excludes \f3java\&.lang\&.ref\fR, a subpackage of \f3java\&.lang\fR\&. To also traverse down other package trees, append their names to the \f3-subpackages\fR argument, such as \f3java:javax:org\&.xml\&.sax\fR\&.
-.sp
-.nf
-\f3javadoc \-d /home/html \-sourcepath /home/src \-subpackages java \-exclude\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 2 Change to Root and Run Explicit Packages\fR
-.PP
-Change to the parent directory of the fully qualified package\&. Then, run the \f3javadoc\fR command with the names of one or more packages that you want to document:
-.sp
-.nf
-\f3cd /home/src/\fP
-.fi
-.nf
-\f3javadoc \-d /home/html java\&.awt java\&.awt\&.event\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-To also traverse down other package trees, append their names to the \f3-subpackages\fR argument, such as j\f3ava:javax:org\&.xml\&.sax\fR\&.
-.PP
-\f3Example 3 Run from Any Directory on Explicit Packages in One Tree\fR
-.PP
-In this case, it does not matter what the current directory is\&. Run the \f3javadoc\fR command and use the \f3-sourcepath\fR option with the parent directory of the top-level package\&. Provide the names of one or more packages that you want to document:
-.sp
-.nf
-\f3javadoc \-d /home/html \-sourcepath /home/src java\&.awt java\&.awt\&.event\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 4 Run from Any Directory on Explicit Packages in Multiple Trees\fR
-.PP
-Run the \f3javadoc\fR command and use the \f3-sourcepath\fR option with a colon-separated list of the paths to each tree\&'s root\&. Provide the names of one or more packages that you want to document\&. All source files for a specified package do not need to be located under a single root directory, but they must be found somewhere along the source path\&.
-.sp
-.nf
-\f3javadoc \-d /home/html \-sourcepath /home/src1:/home/src2 java\&.awt java\&.awt\&.event\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The result is that all cases generate HTML-formatted documentation for the \f3public\fR and \f3protected\fR classes and interfaces in packages j\f3ava\&.awt\fR and \f3java\&.awt\&.even\fRt and save the HTML files in the specified destination directory\&. Because two or more packages are being generated, the document has three HTML frames: one for the list of packages, another for the list of classes, and the third for the main class pages\&.
-.PP
-Document One or More Classes
-
-The second way to run the \f3javadoc\fR command is to pass one or more source files\&. You can run \f3javadoc\fR either of the following two ways: by changing directories (with the \f3cd\fR command) or by fully specifying the path to the source files\&. Relative paths are relative to the current directory\&. The \f3-sourcepath\fR option is ignored when passing source files\&. You can use command-line wild cards, such as an asterisk (*), to specify groups of classes\&.
-.PP
-\f3Example 1 Change to the Source Directory\fR
-.PP
-Change to the directory that holds the source files\&. Then run the \f3javadoc\fR command with the names of one or more source files you want to document\&.
-.PP
-This example generates HTML-formatted documentation for the classes \f3Button\fR, \f3Canvas,\fR and classes that begin with \f3Graphics\fR\&. Because source files rather than package names were passed in as arguments to the \f3javadoc\fR command, the document has two frames: one for the list of classes and the other for the main page\&.
-.sp
-.nf
-\f3cd /home/src/java/awt\fP
-.fi
-.nf
-\f3javadoc \-d /home/html Button\&.java Canvas\&.java Graphics*\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 2 Change to the Root Directory of the Package\fR
-.PP
-This is useful for documenting individual source files from different subpackages off of the same root\&. Change to the package root directory, and supply the source files with paths from the root\&.
-.sp
-.nf
-\f3cd /home/src/\fP
-.fi
-.nf
-\f3javadoc \-d /home/html java/awt/Button\&.java java/applet/Applet\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3Example 3 Document Files from Any Directory\fR
+Alternately, you can use the \f[CB]\-taglet\f[R] option in place of its
+\f[CB]\-tag\f[R] option, but that might be difficult to read.
+.RE
+.TP
+.B \f[CB]\-tagletpath\f[R] \f[I]tagletpathlist\f[R]
+Specifies the search paths for finding taglet class files.
+The \f[I]tagletpathlist\f[R] can contain multiple paths by separating
+them with a colon (\f[CB]:\f[R]).
+The \f[CB]javadoc\f[R] tool searches all subdirectories of the specified
+paths.
+.RS
+.RE
+.TP
+.B \f[CB]\-top\f[R] \f[I]html\-code\f[R]
+Specifies the text to be placed at the top of each output file.
+.RS
+.RE
+.TP
+.B \f[CB]\-use\f[R]
+Creates class and package usage pages.
+Includes one Use page for each documented class and package.
+The page describes what packages, classes, methods, constructors and
+fields use any API of the specified class or package.
+Given class C, things that use class C would include subclasses of C,
+fields declared as C, methods that return C, and methods and
+constructors with parameters of type C.
+For example, you can look at the Use page for the \f[CB]String\f[R] type.
+Because the \f[CB]getName\f[R] method in the \f[CB]java.awt.Font\f[R] class
+returns type \f[CB]String\f[R], the \f[CB]getName\f[R] method uses
+\f[CB]String\f[R] and so the \f[CB]getName\f[R] method appears on the Use
+page for \f[CB]String\f[R].
+This documents only uses of the API, not the implementation.
+When a method uses \f[CB]String\f[R] in its implementation, but
+doesn\[aq]t take a string as an argument or return a string, that
+isn\[aq]t considered a use of \f[CB]String\f[R].To access the generated
+Use page, go to the class or package and click the \f[B]Use link\f[R] in
+the navigation bar.
+.RS
+.RE
+.TP
+.B \f[CB]\-version\f[R]
+Includes the version text in the generated docs.
+This text is omitted by default.
+To find out what version of the \f[CB]javadoc\f[R] tool you are using, use
+the \f[CB]\-J\-version\f[R] option.
+.RS
+.RE
+.TP
+.B \f[CB]\-windowtitle\f[R] \f[I]title\f[R]
+Specifies the title to be placed in the HTML \f[CB]<title>\f[R] tag.
+The text specified in the \f[CB]title\f[R] tag appears in the window title
+and in any browser bookmarks (favorite places) that someone creates for
+this page.
+This title shouldn\[aq]t contain any HTML tags because the browser
+doesn\[aq]t interpret them correctly.
+Use escape characters on any internal quotation marks within the
+\f[CB]title\f[R] tag.
+If the \f[CB]\-windowtitle\f[R] option is omitted, then the
+\f[CB]javadoc\f[R] tool uses the value of the \f[CB]\-doctitle\f[R] option
+for the \f[CB]\-windowtitle\f[R] option.
+For example,
+\f[CB]javadoc\ \-windowtitle\ "My\ Library"\ com.mypackage\f[R].
+.RS
+.RE
+.SH ADDITIONAL OPTIONS PROVIDED BY THE STANDARD DOCLET
.PP
-In this case, it does not matter what the current directory is\&. Run the \f3javadoc\fR command with the absolute path (or path relative to the current directory) to the source files you want to document\&.
-.sp
-.nf
-\f3javadoc \-d /home/html /home/src/java/awt/Button\&.java\fP
-.fi
-.nf
-\f3/home/src/java/awt/Graphics*\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.PP
-Document Packages and Classes
-
-You can document entire packages and individual classes at the same time\&. Here is an example that mixes two of the previous examples\&. You can use the \f3-sourcepath\fR option for the path to the packages but not for the path to the individual classes\&.
-.sp
-.nf
-\f3javadoc \-d /home/html \-sourcepath /home/src java\&.awt\fP
-.fi
-.nf
-\f3/home/src/java/applet/Applet\&.java\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS REAL-WORLD\ EXAMPLES
-The following command-line and \f3makefile\fR versions of the \f3javadoc\fR command run on the Java platform APIs\&. It uses 180 MB of memory to generate the documentation for the 1500 (approximately) public and protected classes in the Java SE 1\&.2\&. Both examples use absolute paths in the option arguments, so that the same \f3javadoc\fR command can be run from any directory\&.
-.PP
-Command-Line Example
-
-The following command might be too long for some shells\&. You can use a command-line argument file (or write a shell script) to overcome this limitation\&.
+The following are additional options provided by the standard doclet and
+are subject to change without notice.
+Additional options might are less commonly used or are otherwise
+regarded as advanced.
+.TP
+.B \f[CB]\-Xdoclint\f[R]
+Enables recommended checks for problems in Javadoc comments.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xdoclint:\f[R](\f[CB]all\f[R]|\f[CB]none\f[R]|[\f[CB]\-\f[R]]\f[I]group\f[R])
+Enable or disable specific checks for bad references, lack of
+accessibility, missing Javadoc comments, and reports errors for invalid
+Javadoc syntax and missing HTML tags.
+.RS
.PP
-In the example, \f3packages\fR is the name of a file that contains the packages to process, such as \f3java\&.applet\fR\f3java\&.lang\fR\&. None of the options should contain any newline characters between the single quotation marks\&. For example, if you copy and paste this example, then delete the newline characters from the \f3-bottom\fR option\&.
-.sp
-.nf
-\f3javadoc \-sourcepath /java/jdk/src/share/classes \e\fP
-.fi
-.nf
-\f3\-overview /java/jdk/src/share/classes/overview\&.html \e\fP
-.fi
-.nf
-\f3\-d /java/jdk/build/api \e\fP
-.fi
-.nf
-\f3\-use \e\fP
-.fi
-.nf
-\f3\-splitIndex \e\fP
-.fi
-.nf
-\f3\-windowtitle \&'Java Platform, Standard Edition 7 API Specification\&' \e\fP
-.fi
-.nf
-\f3\-doctitle \&'Java Platform, Standard Edition 7 API Specification\&' \e\fP
-.fi
-.nf
-\f3\-header \&'<b>Java\(tm SE 7</b>\&' \e\fP
-.fi
-.nf
-\f3\-bottom \&'<font size="\-1">\fP
-.fi
-.nf
-\f3<a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/>\fP
-.fi
-.nf
-\f3Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.<br/>\fP
-.fi
-.nf
-\f3Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&.\fP
-.fi
-.nf
-\f3Other names may be trademarks of their respective owners\&.</font>\&' \e\fP
-.fi
-.nf
-\f3\-group "Core Packages" "java\&.*:com\&.sun\&.java\&.*:org\&.omg\&.*" \e\fP
-.fi
-.nf
-\f3\-group "Extension Packages" "javax\&.*" \e\fP
-.fi
-.nf
-\f3\-J\-Xmx180m \e \fP
-.fi
-.nf
-\f3@packages\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.PP
-Programmatic Interface
-
-The Javadoc Access API enables the user to invoke the Javadoc tool directly from a Java application without executing a new process\&.
+This option enables the \f[CB]javadoc\f[R] tool to check for all
+documentation comments included in the generated output.
+You can select which items to include in the generated output with the
+standard options \f[CB]\-public\f[R], \f[CB]\-protected\f[R],
+\f[CB]\-package\f[R] and \f[CB]\-private\f[R].
.PP
-For example, the following statements are equivalent to the command \f3javadoc -d /home/html -sourcepath /home/src -subpackages java -exclude java\&.net:java\&.lang com\&.example\fR:
-.sp
-.nf
-\f3import javax\&.tools\&.DocumentationTool;\fP
-.fi
-.nf
-\f3import javax\&.tools\&.ToolProvider;\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3public class JavaAccessSample{\fP
-.fi
-.nf
-\f3 public static void main(String[] args){\fP
-.fi
-.nf
-\f3 DocumentationTool javadoc = ToolProvider\&.getSystemDocumentationTool();\fP
-.fi
-.nf
-\f3 int rc = javadoc\&.run( null, null, null,\fP
-.fi
-.nf
-\f3 "\-d", "/home/html",\fP
-.fi
-.nf
-\f3 "\-sourcepath", "home/src",\fP
-.fi
-.nf
-\f3 "\-subpackages", "java",\fP
-.fi
-.nf
-\f3 "\-exclude", "java\&.net:java\&.lang",\fP
-.fi
-.nf
-\f3 "com\&.example");\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3 }\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The first three arguments of the \f3run\fR method specify input, standard output, and standard error streams\&. \f3Null\fR is the default value for \f3System\&.in\fR, \f3System\&.out\fR, and \f3System\&.err\fR, respectively\&.
-.SS THE\ MAKEFILE\ EXAMPLE
-This is an example of a GNU \f3makefile\fR\&. Single quotation marks surround \f3makefile\fR arguments\&. For an example of a Windows \f3makefile\fR, see the \f3makefiles\fR section of the Javadoc FAQ at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137483\&.html#makefiles
-.sp
-.nf
-\f3javadoc \-sourcepath $(SRCDIR) \e /* Sets path for source files */\fP
-.fi
-.nf
-\f3 \-overview $(SRCDIR)/overview\&.html \e /* Sets file for overview text */\fP
-.fi
-.nf
-\f3 \-d /java/jdk/build/api \e /* Sets destination directory */\fP
-.fi
-.nf
-\f3 \-use \e /* Adds "Use" files */\fP
-.fi
-.nf
-\f3 \-splitIndex \e /* Splits index A\-Z */\fP
-.fi
-.nf
-\f3 \-windowtitle $(WINDOWTITLE) \e /* Adds a window title */\fP
-.fi
-.nf
-\f3 \-doctitle $(DOCTITLE) \e /* Adds a doc title */\fP
-.fi
-.nf
-\f3 \-header $(HEADER) \e /* Adds running header text */\fP
-.fi
-.nf
-\f3 \-bottom $(BOTTOM) \e /* Adds text at bottom */\fP
-.fi
-.nf
-\f3 \-group $(GROUPCORE) \e /* 1st subhead on overview page */\fP
-.fi
-.nf
-\f3 \-group $(GROUPEXT) \e /* 2nd subhead on overview page */\fP
-.fi
-.nf
-\f3 \-J\-Xmx180m \e /* Sets memory to 180MB */\fP
-.fi
-.nf
-\f3 java\&.lang java\&.lang\&.reflect \e /* Sets packages to document */\fP
-.fi
-.nf
-\f3 java\&.util java\&.io java\&.net \e\fP
-.fi
-.nf
-\f3 java\&.applet\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3WINDOWTITLE = \&'Java\(tm SE 7 API Specification\&'\fP
-.fi
-.nf
-\f3DOCTITLE = \&'Java\(tm Platform Standard Edition 7 API Specification\&'\fP
-.fi
-.nf
-\f3HEADER = \&'<b>Java\(tm SE 7</font>\&'\fP
-.fi
-.nf
-\f3BOTTOM = \&'<font size="\-1">\fP
-.fi
-.nf
-\f3 <a href="http://bugreport\&.sun\&.com/bugreport/">Submit a bug or feature</a><br/>\fP
-.fi
-.nf
-\f3 Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.<br/>\fP
-.fi
-.nf
-\f3 Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&.\fP
-.fi
-.nf
-\f3 Other names may be trademarks of their respective owners\&.</font>\&'\fP
-.fi
-.nf
-\f3GROUPCORE = \&'"Core Packages" "java\&.*:com\&.sun\&.java\&.*:org\&.omg\&.*"\&'\fP
-.fi
-.nf
-\f3GROUPEXT = \&'"Extension Packages" "javax\&.*"\&'\fP
-.fi
-.nf
-\f3SRCDIR = \&'/java/jdk/1\&.7\&.0/src/share/classes\&'\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS NOTES
-.TP 0.2i
-\(bu
-If you omit the \f3-windowtitle\fR option, then the \f3javadoc\fR command copies the document title to the window title\&. The \f3-windowtitle\fR option text is similar to the the \f3-doctitle\fR option, but without HTML tags to prevent those tags from appearing as raw text in the window title\&.
-.TP 0.2i
-\(bu
-If you omit the \f3-footer\fR option, then the \f3javadoc\fR command copies the header text to the footer\&.
-.TP 0.2i
-\(bu
-Other important options you might want to use, but were not needed in the previous example, are the \f3-classpath\fR and \f3-link\fR options\&.
-.SH GENERAL\ TROUBLESHOOTING
-.TP 0.2i
-\(bu
-The \f3javadoc\fR command reads only files that contain valid class names\&. If the \f3javadoc\fR command is not correctly reading the contents of a file, then verify that the class names are valid\&. See Process Source Files\&.
-.TP 0.2i
-\(bu
-See the Javadoc FAQ for information about common bugs and for troubleshooting tips at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137483\&.html
-.SH ERRORS\ AND\ WARNINGS
-Error and warning messages contain the file name and line number to the declaration line rather than to the particular line in the documentation comment\&.
+When the \f[CB]\-Xdoclint\f[R] is enabled, it reports issues with messages
+similar to the \f[CB]javac\f[R] command.
+The \f[CB]javadoc\f[R] tool prints a message, a copy of the source line,
+and a caret pointing at the exact position where the error was detected.
+Messages may be either warnings or errors, depending on their severity
+and the likelihood to cause an error if the generated documentation were
+run through a validator.
+For example, bad references or missing Javadoc comments don\[aq]t cause
+the \f[CB]javadoc\f[R] tool to generate invalid HTML, so these issues are
+reported as warnings.
+Syntax errors or missing HTML end tags cause the \f[CB]javadoc\f[R] tool
+to generate invalid output, so these issues are reported as errors.
+.PP
+\f[CB]\-Xdoclint\f[R] option validates input comments based upon the
+requested markup.
+.PP
+By default, the \f[CB]\-Xdoclint\f[R] option is enabled.
+Disable it with the option \f[CB]\-Xdoclint:none\f[R].
+.PP
+The following options change what the \f[CB]\-Xdoclint\f[R] option
+reports:
+.IP \[bu] 2
+\f[CB]\-Xdoclint\ none\f[R]: Disables the \f[CB]\-Xdoclint\f[R] option
+.IP \[bu] 2
+\f[CB]\-Xdoclint\f[R] \f[I]group\f[R]: Enables \f[I]group\f[R] checks
+.IP \[bu] 2
+\f[CB]\-Xdoclint\ all\f[R]: Enables all groups of checks
+.IP \[bu] 2
+\f[CB]\-Xdoclint\ all,\-\f[R]\f[I]group\f[R]: Enables all checks except
+\f[I]group\f[R] checks
.PP
-For example, this message \f3error: cannot read: Class1\&.java\fR means that the \f3javadoc\fR command is trying to load \f3Class1\&.jav\fR\f3a\fR in the current directory\&. The class name is shown with its path (absolute or relative)\&.
-.SH ENVIRONMENT
-.TP
-CLASSPATH
-\f3CLASSPATH\fR is the environment variable that provides the path that the \f3javadoc\fR command uses to find user class files\&. This environment variable is overridden by the \f3-classpath\fR option\&. Separate directories with a semicolon for Windows or a colon for Oracle Solaris\&.
-
-\fIWindows example\fR: \f3\&.;C:\eclasses;C:\ehome\ejava\eclasses\fR
-
-\fIOracle Solaris example\fR: \f3\&.:/home/classes:/usr/local/java/classes\fR\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-javac(1)
-.TP 0.2i
-\(bu
-java(1)
-.TP 0.2i
-\(bu
-jdb(1)
-.TP 0.2i
-\(bu
-javap(1)
-.SH RELATED\ DOCUMENTS
-.TP 0.2i
-\(bu
-Javadoc Technology at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/index\&.html
-.TP 0.2i
-\(bu
-How Classes Are Found http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html
-.TP 0.2i
-\(bu
-How to Write Doc Comments for the Javadoc Tool http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html
-.TP 0.2i
-\(bu
-URL Memo, Uniform Resource Locators http://www\&.ietf\&.org/rfc/rfc1738\&.txt
-.TP 0.2i
-\(bu
-HTML standard, HTML Document Representation (4197265 and 4137321) http://www\&.w3\&.org/TR/REC-html40/charset\&.html#h-5\&.2\&.2
+The \f[I]group\f[R] variable has one of the following values:
+.IP \[bu] 2
+\f[CB]accessibility\f[R]: Checks for the issues to be detected by an
+accessibility checker (for example, no caption or summary attributes
+specified in a \f[CB]<table>\f[R] tag).
+.IP \[bu] 2
+\f[CB]html\f[R]: Detects high\-level HTML issues, such as putting block
+elements inside inline elements, or not closing elements that require an
+end tag.
+The rules are derived from the \f[B]HTML 4 Specification\f[R]
+[https://www.w3.org/TR/html4/] or the \f[B]HTML 5 Specification\f[R]
+[http://www.w3.org/TR/2014/REC\-html5\-20141028/] based on the standard
+doclet \f[CB]html\f[R] output generation selected.
+This type of check enables the \f[CB]javadoc\f[R] tool to detect HTML
+issues that some browsers might not interpret as intended.
+.IP \[bu] 2
+\f[CB]missing\f[R]: Checks for missing Javadoc comments or tags (for
+example, a missing comment or class, or a missing \f[CB]\@return\f[R] tag
+or similar tag on a method).
+.IP \[bu] 2
+\f[CB]reference\f[R]: Checks for issues relating to the references to Java
+API elements from Javadoc tags (for example, item not found in
+\f[CB]\@see\f[R], or a bad name after \f[CB]\@param)\f[R].
+.IP \[bu] 2
+\f[CB]syntax\f[R]: Checks for low level issues like unescaped angle
+brackets (\f[CB]<\f[R] and \f[CB]>\f[R]) and ampersands (\f[CB]&\f[R]) and
+invalid Javadoc tags.
+.PP
+You can specify the \f[CB]\-Xdoclint\f[R] option multiple times to enable
+the option to check errors and warnings in multiple categories.
+Alternatively, you can specify multiple error and warning categories by
+using the preceding options.
+For example, use either of the following commands to check for the HTML,
+syntax, and accessibility issues in the file \f[I]filename\f[R].
+.RS
+.PP
+\f[CB]javadoc\ \-Xdoclint:html\ \-Xdoclint:syntax\ \-Xdoclint:accessibility\f[R]
+\f[I]filename\f[R]
.RE
-.br
-'pl 8.5i
-'bp
+.RS
+.PP
+\f[CB]javadoc\ \-Xdoclint:html,syntax,accessibility\f[R] \f[I]filename\f[R]
+.RE
+.PP
+\f[B]Note:\f[R]
+.PP
+The \f[CB]javadoc\f[R] tool doesn\[aq]t guarantee the completeness of
+these checks.
+In particular, it isn\[aq]t a full HTML compliance checker.
+The goal of the \-\f[CB]Xdoclint\f[R] option is to enable the
+\f[CB]javadoc\f[R] tool to report majority of common errors.
+.PP
+The \f[CB]javadoc\f[R] tool doesn\[aq]t attempt to fix invalid input, it
+just reports it.
+.RE
+.TP
+.B \f[CB]\-Xdoclint/package:\f[R][\f[CB]\-\f[R]]\f[I]packages\f[R]
+Enables or disables checks in specific packages.
+\f[I]packages\f[R] is a comma separated list of package specifiers.
+A package specifier is either a qualified name of a package or a package
+name prefix followed by \f[CB]*\f[R], which expands to all sub packages of
+the given package.
+Prefix the package specifier with \f[CB]\-\f[R] to disable checks for the
+specified packages.
+.RS
+.RE
+.TP
+.B \f[CB]\-Xdocrootparent\f[R] \f[I]url\f[R]
+Replaces all \f[CB]\@docRoot\f[R] items followed by\f[CB]/..\f[R] in Javadoc
+comments with the \f[I]url\f[R].
+.RS
+.RE
--- a/src/jdk.jcmd/share/man/jcmd.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jcmd/share/man/jcmd.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,191 +19,828 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Title: jcmd
-.\" Language: English
-.\" Date: 03 March 2015
-.\" SectDesc: Troubleshooting Tools
-.\" Software: JDK 8
-.\" Arch: generic
-.\" Part Number: E38207-04
-.\" Doc ID: JSSON
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH "jcmd" "1" "03 March 2015" "JDK 8" "Troubleshooting Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-jcmd \- Sends diagnostic command requests to a running Java Virtual Machine (JVM)\&.
-.SH "SYNOPSIS"
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjcmd\fR [\fB\-l\fR|\fB\-h\fR|\fB\-help\fR]
-.fi
-.if n \{\
+.TH "JCMD" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jcmd \- send diagnostic command requests to a running Java Virtual
+Machine (JVM)
+.SH SYNOPSIS
+.PP
+\f[CB]jcmd\f[R] [\f[I]pid\f[R] | \f[I]main\-class\f[R]] \f[I]command\f[R]...
+| \f[CB]PerfCounter.print\f[R] | \f[CB]\-f\f[R] \f[I]filename\f[R]
+.PP
+\f[CB]jcmd\f[R] [\f[CB]\-l\f[R]]
+.PP
+\f[CB]jcmd\f[R] \f[CB]\-h\f[R]
+.TP
+.B \f[I]pid\f[R]
+When used, the \f[CB]jcmd\f[R] utility sends the diagnostic command
+request to the process ID for the Java process.
+.RS
.RE
-.\}
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjcmd\fR \fIpid\fR|\fImain\-class\fR \fBPerfCounter\&.print\fR
-.fi
-.if n \{\
+.TP
+.B \f[I]main\-class\f[R]
+When used, the \f[CB]jcmd\f[R] utility sends the diagnostic command
+request to all Java processes with the specified name of the main class.
+.RS
+.RE
+.TP
+.B \f[I]command\f[R]
+The \f[CB]command\f[R] must be a valid \f[CB]jcmd\f[R] command for the
+selected JVM.
+The list of available commands for \f[CB]jcmd\f[R] is obtained by running
+the \f[CB]help\f[R] command (\f[CB]jcmd\f[R] \f[I]pid\f[R] \f[CB]help\f[R])
+where \f[I]pid\f[R] is the process ID for the running Java process.
+If the \f[I]pid\f[R] is \f[CB]0\f[R], commands will be sent to all Java
+processes.
+The main class argument will be used to match, either partially or
+fully, the class used to start Java.
+If no options are given, it lists the running Java process identifiers
+with the main class and command\-line arguments that were used to launch
+the process (the same as using \f[CB]\-l\f[R]).
+.RS
.RE
-.\}
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjcmd\fR \fIpid\fR|\fImain\-class\fR \fB\-f\fR \fIfilename\fR
-.fi
-.if n \{\
+.TP
+.B \f[CB]Perfcounter.print\f[R]
+Prints the performance counters exposed by the specified Java process.
+.RS
+.RE
+.TP
+.B \f[CB]\-f\f[R] \f[I]filename\f[R]
+Reads and executes commands from a specified file, \f[I]filename\f[R].
+.RS
.RE
-.\}
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjcmd\fR \fIpid\fR|\fImain\-class\fR \fIcommand\fR[ \fIarguments\fR]
-.fi
-.if n \{\
-.RE
-.\}
-.SH "DESCRIPTION"
+.TP
+.B \f[CB]\-l\f[R]
+Displays the list of Java Virtual Machine process identifiers that are
+not running in a separate docker process along with the main class and
+command\-line arguments that were used to launch the process.
+If the JVM is in a docker process, you must use tools such as
+\f[CB]ps\f[R] to look up the PID.
+.RS
+.PP
+\f[B]Note:\f[R]
.PP
-The
-\fBjcmd\fR
-utility is used to send diagnostic command requests to the JVM\&. It must be used on the same machine on which the JVM is running, and have the same effective user and group identifiers that were used to launch the JVM\&.
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBNote\fR
-.ps -1
-.br
-.TS
-allbox tab(:);
-l.
-T{
+Using \f[CB]jcmd\f[R] without arguments is the same as using
+\f[CB]jcmd\ \-l\f[R].
+.RE
+.TP
+.B \f[CB]\-h\f[R]
+Displays the\f[CB]jcmd\f[R] utility\[aq]s command\-line help.
+.RS
+.RE
+.SH DESCRIPTION
.PP
-To invoke diagnostic commands from a remote machine or with different identifiers, you can use the
-\fBcom\&.sun\&.management\&.DiagnosticCommandMBean\fR
-interface\&. For more information about the
-\fBDiagnosticCommandMBean\fR
-interface, see the API documentation at http://docs\&.oracle\&.com/javase/8/docs/jre/api/management/extension/com/sun/management/DiagnosticCommandMBean\&.html
-T}
-.TE
-.sp 1
-.sp .5v
+The \f[CB]jcmd\f[R] utility is used to send diagnostic command requests to
+the JVM.
+It must be used on the same machine on which the JVM is running, and
+have the same effective user and group identifiers that were used to
+launch the JVM.
+Each diagnostic command has its own set of arguments.
+To display the description, syntax, and a list of available arguments
+for a diagnostic command, use the name of the command as the argument.
+For example:
+.RS
+.PP
+\f[CB]jcmd\f[R] \f[I]pid\f[R] \f[CB]help\f[R] \f[I]command\f[R]
.RE
.PP
-If you run
-\fBjcmd\fR
-without arguments or with the
-\fB\-l\fR
-option, it prints the list of running Java process identifiers with the main class and command\-line arguments that were used to launch the process\&. Running
-\fBjcmd\fR
-with the
-\fB\-h\fR
-or
-\fB\-help\fR
-option prints the tool\(cqs help message\&.
+If arguments contain spaces, then you must surround them with single or
+double quotation marks (\f[CB]\[aq]\f[R] or \f[CB]"\f[R]).
+In addition, you must escape single or double quotation marks with a
+backslash (\f[CB]\\\f[R]) to prevent the operating system shell from
+processing quotation marks.
+Alternatively, you can surround these arguments with single quotation
+marks and then with double quotation marks (or with double quotation
+marks and then with single quotation marks).
+.PP
+If you specify the process identifier (\f[I]pid\f[R]) or the main class
+(\f[I]main\-class\f[R]) as the first argument, then the \f[CB]jcmd\f[R]
+utility sends the diagnostic command request to the Java process with
+the specified identifier or to all Java processes with the specified
+name of the main class.
+You can also send the diagnostic command request to all available Java
+processes by specifying \f[CB]0\f[R] as the process identifier.
+.SH COMMANDS FOR JCMD
+.PP
+The \f[I]command\f[R] must be a valid \f[CB]jcmd\f[R] diagnostic command
+for the selected JVM.
+The list of available commands for \f[CB]jcmd\f[R] is obtained by running
+the \f[CB]help\f[R] command (\f[CB]jcmd\f[R] \f[I]pid\f[R] \f[CB]help\f[R])
+where \f[I]pid\f[R] is the process ID for a running Java process.
+If the \f[I]pid\f[R] is \f[CB]0\f[R], commands will be sent to all Java
+processes.
+The main class argument will be used to match, either partially or
+fully, the class used to start Java.
+If no options are given, it lists the running Java process identifiers
+that are not in separate docker processes along with the main class and
+command\-line arguments that were used to launch the process (the same
+as using \f[CB]\-l\f[R]).
+.PP
+The following commands are available:
+.TP
+.B \f[CB]help\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]]
+For more information about a specific command.
+.RS
+.PP
+\f[I]arguments\f[R]:
+.IP \[bu] 2
+\f[I]command name\f[R]: The name of the command for which we want help
+(STRING, no default value)
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-all\f[R]: (Optional) Show help for all commands (BOOLEAN, false) .
+.RE
+.TP
+.B \f[CB]Compiler.codecache\f[R]
+Prints code cache layout and bounds.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]Compiler.codelist\f[R]
+Prints all compiled methods in code cache that are alive.
+.RS
+.PP
+Impact: Medium
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]Compiler.queue\f[R]
+Prints methods queued for compilation.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]Compiler.directives_add\ *filename*\ *arguments*\f[R]
+Adds compiler directives from a file.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[I]arguments\f[R]:
+.PP
+\f[I]filename\f[R]: The name of the directives file (STRING, no default
+value)
+.RE
+.TP
+.B \f[CB]Compiler.directives_clear\f[R]
+Remove all compiler directives.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]Compiler.directives_print\f[R]
+Prints all active compiler directives.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]Compiler.directives_remove\f[R]
+Remove latest added compiler directive.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]GC.class_histogram\f[R] [\f[I]options\f[R]]
+Provides statistics about the Java heap usage.
+.RS
+.PP
+Impact: High \-\-\- depends on Java heap size and content.
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The \f[I]options\f[R] must be specified using either \f[I]key\f[R] or
+\f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-all\f[R]: (Optional) Inspects all objects, including unreachable
+objects (BOOLEAN, false)
+.RE
+.TP
+.B \f[CB]GC.class_stats\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]]
+Provide statistics about Java class meta data.
+.RS
+.PP
+Impact: High \-\-\- depends on Java heap size and content.
+.PP
+\f[B]Note:\f[R]
+.PP
+The \f[I]options\f[R] must be specified using either \f[I]key\f[R] or
+\f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
.PP
-If you specify the processes identifier (\fIpid\fR) or the main class (\fImain\-class\fR) as the first argument,
-\fBjcmd\fR
-sends the diagnostic command request to the Java process with the specified identifier or to all Java processes with the specified name of the main class\&. You can also send the diagnostic command request to all available Java processes by specifying
-\fB0\fR
-as the process identifier\&. Use one of the following as the diagnostic command request:
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-all\f[R]: (Optional) Shows all columns (BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]\-csv\f[R]: (Optional) Prints in CSV (comma\-separated values)
+format for spreadsheets (BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]\-help\f[R]: (Optional) Shows the meaning of all the columns
+(BOOLEAN, false)
+.PP
+\f[I]arguments\f[R]:
+.IP \[bu] 2
+\f[I]columns\f[R]: (Optional) Comma\-separated list of all the columns to
+be shown.
+If not specified, the following columns are shown:
+.RS 2
+.IP \[bu] 2
+InstBytes
+.IP \[bu] 2
+KlassBytes
+.IP \[bu] 2
+CpAll
+.IP \[bu] 2
+annotations
+.IP \[bu] 2
+MethodCount
+.IP \[bu] 2
+Bytecodes
+.IP \[bu] 2
+MethodAll
+.IP \[bu] 2
+ROAll
+.IP \[bu] 2
+RWAll
+.IP \[bu] 2
+Total
.PP
-Perfcounter\&.print
-.RS 4
-Prints the performance counters available for the specified Java process\&. The list of performance counters might vary with the Java process\&.
+(STRING, no default value)
+.RE
+.RE
+.TP
+.B \f[CB]GC.finalizer_info\f[R]
+Provides information about the Java finalization queue.
+.RS
+.PP
+Impact: Medium
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]GC.heap_dump\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]]
+Generates a HPROF format dump of the Java heap.
+.RS
+.PP
+Impact: High \-\-\- depends on the Java heap size and content.
+Request a full GC unless the \f[CB]\-all\f[R] option is specified.
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-all\f[R]: (Optional) Dump all objects, including unreachable
+objects (BOOLEAN, false)
+.PP
+\f[I]arguments\f[R]:
+.IP \[bu] 2
+\f[I]filename\f[R]: The name of the dump file (STRING, no default value)
+.RE
+.TP
+.B \f[CB]GC.heap_info\f[R]
+Provides generic Java heap information.
+.RS
+.PP
+Impact: Medium
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
.RE
+.TP
+.B \f[CB]GC.run\f[R]
+Calls \f[CB]java.lang.System.gc()\f[R].
+.RS
.PP
-\-f \fIfilename\fR
-.RS 4
-The name of the file from which to read diagnostic commands and send them to the specified Java process\&. Used only with the
-\fB\-f\fR
-option\&. Each command in the file must be written on a single line\&. Lines starting with a number sign (\fB#\fR) are ignored\&. Processing of the file ends when all lines have been read or when a line containing the
-\fBstop\fR
-keyword is read\&.
+Impact: Medium \-\-\- depends on the Java heap size and content.
+.RE
+.TP
+.B \f[CB]GC.run_finalization\f[R]
+Calls \f[CB]java.lang.System.runFinalization()\f[R].
+.RS
+.PP
+Impact: Medium \-\-\- depends on the Java content.
+.RE
+.TP
+.B \f[CB]JFR.check\f[R] [\f[I]options\f[R]]
+See \f[B]JFR.check\f[R]
+[https://www.oracle.com/pls/topic/lookup?ctx=en/java/javase/11/tools&id=JFRCR\-GUID\-DA391CC1\-B5D8\-44F1\-AEDD\-9A534C8DD009]
+in the Java Flight Recorder Command Reference.
+.RS
+.RE
+.TP
+.B \f[CB]JFR.configure\f[R] [\f[I]options\f[R]]
+See \f[B]JFR.configure\f[R]
+[https://www.oracle.com/pls/topic/lookup?ctx=en/java/javase/11/tools&id=JFRCR\-GUID\-737D234E\-FD69\-4E8E\-A9F7\-06AE073648DD]
+in the Java Flight Recorder Command Reference.
+.RS
+.RE
+.TP
+.B \f[CB]JFR.dump\f[R] [\f[I]options\f[R]]
+See \f[B]JFR.dump\f[R]
+[https://www.oracle.com/pls/topic/lookup?ctx=en/java/javase/11/tools&id=JFRCR\-GUID\-6EB11926\-4DAF\-4B99\-AF20\-7FCD284EE6C1]
+in the Java Flight Recorder Command Reference.
+.RS
+.RE
+.TP
+.B \f[CB]JFR.start\f[R] [\f[I]options\f[R]]
+See \f[B]JFR.start\f[R]
+[https://www.oracle.com/pls/topic/lookup?ctx=en/java/javase/11/tools&id=JFRCR\-GUID\-8DC13618\-1515\-4479\-B0FC\-9F4394BE5455]
+in the Java Flight Recorder Command Reference.
+.RS
.RE
+.TP
+.B \f[CB]JFR.stop\f[R] [\f[I]options\f[R]]
+See \f[B]JFR.stop\f[R]
+[https://www.oracle.com/pls/topic/lookup?ctx=en/java/javase/11/tools&id=JFRCR\-GUID\-66CC94C8\-8EDF\-4BB6\-8E7A\-49973025D4D9]
+in the Java Flight Recorder Command Reference.
+.RS
+.RE
+.TP
+.B \f[CB]JVMTI.agent_load\f[R] [\f[I]arguments\f[R]]
+Loads JVMTI native agent.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(control)\f[R]
+.PP
+\f[I]arguments\f[R]:
+.IP \[bu] 2
+\f[I]library path\f[R]: Absolute path of the JVMTI agent to load.
+(STRING, no default value)
+.IP \[bu] 2
+\f[I]agent option\f[R]: (Optional) Option string to pass the agent.
+(STRING, no default value)
+.RE
+.TP
+.B \f[CB]JVMTI.data_dump\f[R]
+Signals the JVM to do a data\-dump request for JVMTI.
+.RS
+.PP
+Impact: High
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]ManagementAgent.start\f[R] [\f[I]options\f[R]]
+Starts remote management agent.
+.RS
+.PP
+Impact: Low \-\-\- no impact
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
.PP
-\fIcommand\fR [\fIarguments\fR]
-.RS 4
-The command to be sent to the specified Java process\&. The list of available diagnostic commands for a given process can be obtained by sending the
-\fBhelp\fR
-command to this process\&. Each diagnostic command has its own set of arguments\&. To see the description, syntax, and a list of available arguments for a command, use the name of the command as the argument for the
-\fBhelp\fR
-command\&.
-.sp
-\fBNote:\fR
-If any arguments contain spaces, you must surround them with single or double quotation marks (\fB\*(Aq\fR
-or
-\fB"\fR)\&. In addition, you must escape single or double quotation marks with a backslash (\fB\e\fR) to prevent the operating system shell from processing quotation marks\&. Alternatively, you can surround these arguments with single quotation marks and then with double quotation marks (or with double quotation marks and then with single quotation marks)\&.
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]config.file\f[R]: (Optional) Sets
+\f[CB]com.sun.management.config.file\f[R] (STRING, no default value)
+.IP \[bu] 2
+\f[CB]jmxremote.host\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.host\f[R] (STRING, no default value)
+.IP \[bu] 2
+\f[CB]jmxremote.port\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.port\f[R] (STRING, no default value)
+.IP \[bu] 2
+\f[CB]jmxremote.rmi.port\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.rmi.port\f[R] (STRING, no default
+value)
+.IP \[bu] 2
+\f[CB]jmxremote.ssl\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.ssl\f[R] (STRING, no default value)
+.IP \[bu] 2
+\f[CB]jmxremote.registry.ssl\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.registry.ssl\f[R] (STRING, no default
+value)
+.IP \[bu] 2
+\f[CB]jmxremote.authenticate\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.authenticate\f[R] (STRING, no default
+value)
+.IP \[bu] 2
+jmxremote.password.file: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.password.file\f[R] (STRING, no default
+value)
+.IP \[bu] 2
+\f[CB]jmxremote.access.file\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.acce\ ss.file\f[R] (STRING, no default
+value)
+.IP \[bu] 2
+\f[CB]jmxremote.login.config\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.log\ in.config\f[R] (STRING, no default
+value)
+.IP \[bu] 2
+\f[CB]jmxremote.ssl.enabled.cipher.suites\f[R]: (Optional) Sets
+\f[CB]com.sun.management\f[R].
+.IP \[bu] 2
+\f[CB]jmxremote.ssl.enabled.cipher.suite\f[R]: (STRING, no default value)
+.IP \[bu] 2
+\f[CB]jmxremote.ssl.enabled.protocols\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxr\ emote.ssl.enabled.protocols\f[R] (STRING,
+no default value)
+.IP \[bu] 2
+\f[CB]jmxremote.ssl.need.client.auth\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxre\ mote.need.client.auth\f[R] (STRING, no
+default value)
+.IP \[bu] 2
+\f[CB]jmxremote.ssl.config.file\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.\ ssl_config_file\f[R] (STRING, no
+default value)
+.IP \[bu] 2
+\f[CB]jmxremote.autodiscovery\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jmxremote.au\ todiscovery\f[R] (STRING, no
+default value)
+.IP \[bu] 2
+\f[CB]jdp.port\f[R]: (Optional) Sets \f[CB]com.sun.management.jdp.port\f[R]
+(INT, no default value)
+.IP \[bu] 2
+\f[CB]jdp.address\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jdp.address\f[R] (STRING, no default value)
+.IP \[bu] 2
+\f[CB]jdp.source_addr\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jdp.source_addr\f[R] (STRING, no default value)
+.IP \[bu] 2
+\f[CB]jdp.ttl\f[R]: (Optional) Sets \f[CB]com.sun.management.jdp.ttl\f[R]
+(INT, no default value)
+.IP \[bu] 2
+\f[CB]jdp.pause\f[R]: (Optional) Sets
+\f[CB]com.sun.management.jdp.pause\f[R] (INT, no default value)
+.IP \[bu] 2
+\f[CB]jdp.name\f[R]: (Optional) Sets \f[CB]com.sun.management.jdp.name\f[R]
+(STRING, no default value)
+.RE
+.TP
+.B \f[CB]ManagementAgent.start_local\f[R]
+Starts the local management agent.
+.RS
+.PP
+Impact: Low \-\-\- no impact
+.RE
+.TP
+.B \f[CB]ManagementAgent.status\f[R]
+Print the management agent status.
+.RS
+.PP
+Impact: Low \-\-\- no impact
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]ManagementAgent.stop\f[R]
+Stops the remote management agent.
+.RS
+.PP
+Impact: Low \-\-\- no impact
.RE
-.SH "OPTIONS"
+.TP
+.B \f[CB]Thread.print\f[R] [\f[I]options\f[R]]
+Prints all threads with stacktraces.
+.RS
+.PP
+Impact: Medium \-\-\- depends on the number of threads.
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
.PP
-Options are mutually exclusive\&.
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-l\f[R]: (Optional) Prints \f[CB]java.util.concurrent\f[R] locks
+(BOOLEAN, false)
+.RE
+.TP
+.B \f[CB]VM.classloader_stats\f[R]
+Prints statistics about all ClassLoaders.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]VM.class_hierarchy\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]]
+Prints a list of all loaded classes, indented to show the class
+hierarchy.
+The name of each class is followed by the ClassLoaderData* of its
+ClassLoader, or "null" if it is loaded by the bootstrap class loader.
+.RS
+.PP
+Impact: Medium \-\-\- depends on the number of loaded classes.
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
.PP
-\-f \fIfilename\fR
-.RS 4
-Reads commands from the specified file\&. This option can be used only if you specify the process identifier or the main class as the first argument\&. Each command in the file must be written on a single line\&. Lines starting with a number sign (\fB#\fR) are ignored\&. Processing of the file ends when all lines have been read or when a line containing the
-\fBstop\fR
-keyword is read\&.
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-i\f[R]: (Optional) Inherited interfaces should be printed.
+(BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]\-s\f[R]: (Optional) If a class name is specified, it prints the
+subclasses.
+If the class name is not specified, only the superclasses are printed.
+(BOOLEAN, false)
+.PP
+\f[I]arguments\f[R]:
+.IP \[bu] 2
+\f[I]classname\f[R]: (Optional) The name of the class whose hierarchy
+should be printed.
+If not specified, all class hierarchies are printed.
+(STRING, no default value)
+.RE
+.TP
+.B \f[CB]VM.command_line\f[R]
+Prints the command line used to start this VM instance.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
.RE
+.TP
+.B \f[CB]VM.dynlibs\f[R]
+Prints the loaded dynamic libraries.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]VM.info\f[R]
+Prints information about the JVM environment and status.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.RE
+.TP
+.B \f[CB]VM.log\f[R] [\f[I]options\f[R]]
+Lists current log configuration, enables/disables/configures a log
+output, or ro tates all logs.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(control)\f[R]
+.PP
+\f[I]options\f[R]:
+.PP
+\f[B]Note:\f[R]
.PP
-\-h
-.br
-\-help
-.RS 4
-Prints a help message\&.
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.IP \[bu] 2
+\f[CB]output\f[R]: (Optional) The name or index (#) of output to
+configure.
+(STRING, no default value)
+.IP \[bu] 2
+\f[CB]output_options\f[R]: (Optional) Options for the output.
+(STRING, no default value)
+.IP \[bu] 2
+\f[CB]what\f[R]: (Optional) Configures what tags to log.
+(STRING, no default value )
+.IP \[bu] 2
+\f[CB]decorators\f[R]: (Optional) Configures which decorators to use.
+Use \[aq]none\[aq] or an empty value to remove all.
+(STRING, no default value)
+.IP \[bu] 2
+\f[CB]disable\f[R]: (Optional) Turns off all logging and clears the log
+configuration.
+(BOOLEAN, no default value)
+.IP \[bu] 2
+\f[CB]list\f[R]: (Optional) Lists current log configuration.
+(BOOLEAN, no default value)
+.IP \[bu] 2
+\f[CB]rotate\f[R]: (Optional) Rotates all logs.
+(BOOLEAN, no default value)
+.RE
+.TP
+.B \f[CB]VM.flags\f[R] [\f[I]options\f[R]]
+Prints the VM flag options and their current values.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-all\f[R]: (Optional) Prints all flags supported by the VM
+(BOOLEAN, false).
.RE
+.TP
+.B \f[CB]VM.native_memory\f[R] [\f[I]options\f[R]]
+Prints native memory usage
+.RS
.PP
-\-l
-.RS 4
-Prints the list of running Java processes identifiers with the main class and command\-line arguments\&.
+Impact: Medium
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]summary\f[R]: (Optional) Requests runtime to report current memory
+summary, which includes total reserved and committed memory, along with
+memory usage summary by each subsystem.
+(BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]detail\f[R]: (Optional) Requests runtime to report memory allocation
+>= 1K by each callsite.
+(BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]baseline\f[R]: (Optional) Requests runtime to baseline current
+memory usage, so it can be compared against in later time.
+(BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]summary.diff\f[R]: (Optional) Requests runtime to report memory
+summary comparison against previous baseline.
+(BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]detail.diff\f[R]: (Optional) Requests runtime to report memory
+detail comparison against previous baseline, which shows the memory
+allocation activities at different callsites.
+(BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]shutdown\f[R]: (Optional) Requests runtime to shutdown itself and
+free the memory used by runtime.
+(BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]statistics\f[R]: (Optional) Prints tracker statistics for tuning
+purpose.
+(BOOLEAN, false)
+.IP \[bu] 2
+\f[CB]scale\f[R]: (Optional) Memory usage in which scale, KB, MB or GB
+(STRING, KB)
+.RE
+.TP
+.B \f[CB]VM.print_touched_methods\f[R]
+Prints all methods that have ever been touched during the lifetime of
+this JVM.
+.RS
+.PP
+Impact: Medium \-\-\- depends on Java content.
.RE
-.SH "SEE ALSO"
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jps(1)
+.TP
+.B \f[CB]VM.set_flag\f[R] [\f[I]arguments\f[R]]
+Sets the VM flag option by using the provided value.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(control)\f[R]
+.PP
+\f[I]arguments\f[R]:
+.IP \[bu] 2
+\f[I]flag name\f[R]: The name of the flag that you want to set (STRING,
+no default value)
+.IP \[bu] 2
+\f[I]string value\f[R]: (Optional) The value that you want to set
+(STRING, no default value)
+.RE
+.TP
+.B \f[CB]VM.stringtable\f[R] [\f[I]options\f[R]]
+Dumps the string table.
+.RS
+.PP
+Impact: Medium \-\-\- depends on the Java content.
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-verbose\f[R]: (Optional) Dumps the content of each string in the
+table (BOOLEAN, false)
+.RE
+.TP
+.B \f[CB]VM.symboltable\f[R] [\f[I]options\f[R]]
+Dumps the symbol table.
+.RS
+.PP
+Impact: Medium \-\-\- depends on the Java content.
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax).
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-verbose\f[R]: (Optional) Dumps the content of each symbol in the
+table (BOOLEAN, false)
.RE
-.br
-'pl 8.5i
-'bp
+.TP
+.B \f[CB]VM.systemdictionary\f[R]
+Prints the statistics for dictionary hashtable sizes and bucket length.
+.RS
+.PP
+Impact: Medium
+.PP
+Permission: \f[CB]java.lang.management.ManagementPermission(monitor)\f[R]
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]verbose\f[R]: (Optional) Dump the content of each dictionary entry
+for all class loaders (BOOLEAN, false) .
+.RE
+.TP
+.B \f[CB]VM.system_properties\f[R]
+Prints the system properties.
+.RS
+.PP
+Impact: Low
+.PP
+Permission: \f[CB]java.util.PropertyPermission(*,\ read)\f[R]
+.RE
+.TP
+.B \f[CB]VM.uptime\f[R] [\f[I]options\f[R]]
+Prints the VM uptime.
+.RS
+.PP
+Impact: Low
+.PP
+\f[B]Note:\f[R]
+.PP
+The following \f[I]options\f[R] must be specified using either
+\f[I]key\f[R] or \f[I]key\f[R]\f[CB]=\f[R]\f[I]value\f[R] syntax.
+.PP
+\f[I]options\f[R]:
+.IP \[bu] 2
+\f[CB]\-date\f[R]: (Optional) Adds a prefix with the current date
+(BOOLEAN, false)
+.RE
+.TP
+.B \f[CB]VM.version\f[R]
+Prints JVM version information.
+.RS
+.PP
+Impact: Low
+.PP
+Permission:
+\f[CB]java.util.PropertyPermission(java.vm.version,\ read)\f[R]
+.RE
--- a/src/jdk.jcmd/share/man/jinfo.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jcmd/share/man/jinfo.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,113 +19,95 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Troubleshooting Tools
-.\" Title: jinfo.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jinfo 1 "21 November 2013" "JDK 8" "Troubleshooting Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jinfo \- Generates configuration information\&. This command is experimental and unsupported\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjinfo\fR [ \fIoption\fR ] \fIpid\fR
-.fi
-.nf
-
-\fBjinfo\fR [ \fIoption \fR] \fIexecutable core\fR
-.fi
-.nf
-
-\fBjinfo\fR [ \fIoption \fR] \fI[ servier\-id ] remote\-hostname\-or\-IP\fR
-.fi
-.sp
-.TP
-\fIoption\fR
-The command-line options\&. See Options\&.
-.TP
-\fIpid\fR
-The process ID for which the configuration information is to be printed\&. The process must be a Java process\&. To get a list of Java processes running on a machine, use the jps(1) command\&.
-.TP
-\fIexecutable\fR
-The Java executable from which the core dump was produced\&.
-.TP
-\fIcore\fR
-The core file for which the configuration information is to be printed\&.
-.TP
-\fIremote-hostname-or-IP\fR
-The remote debug server \f3hostname\fR or \f3IP\fR address\&. See jsadebugd(1)\&.
-.TP
-\fIserver-id\fR
-An optional unique ID to use when multiple debug servers are running on the same remote host\&.
-.SH DESCRIPTION
-The \f3jinfo\fR command prints Java configuration information for a specified Java process or core file or a remote debug server\&. The configuration information includes Java system properties and Java Virtual Machine (JVM) command-line flags\&. If the specified process is running on a 64-bit JVM, then you might need to specify the \f3-J-d64\fR option, for example: \f3jinfo\fR\f3-J-d64 -sysprops pid\fR\&.
+.TH "JINFO" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jinfo \- generate Java configuration information for a specified Java
+process
+.SH SYNOPSIS
+.PP
+\f[B]Note:\f[R] This command is experimental\ and unsupported.
+.PP
+\f[CB]jinfo\f[R] [\f[I]option\f[R]] \f[I]pid\f[R]
+.TP
+.B \f[I]option\f[R]
+This represents the \f[CB]jinfo\f[R] command\-line options.
+See \f[B]Options for the jinfo Command\f[R].
+.RS
+.RE
+.TP
+.B \f[I]pid\f[R]
+The process ID for which the configuration information is to be printed.
+The process must be a Java process.
+To get a list of Java processes running on a machine, use either the
+\f[CB]ps\f[R] command or, if the JVM processes are not running in a
+separate docker instance, the \f[B]jps\f[R] command.
+.RS
+.PP
+\f[B]Note:\f[R] JDK 10 has added support for using the Attach API when
+attaching to Java processes running in a separate docker process.
+However, the \f[CB]jps\f[R] command will not list the JVM processes that
+are running in a separate docker instance.
+If you are trying to connect a Linux host with a Virtual Machine that is
+in a docker container, you must use tools such as \f[CB]ps\f[R] to look up
+the PID of the JVM.
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jinfo\f[R] command prints Java configuration information for a
+specified Java process.
+The configuration information includes Java system properties and JVM
+command\-line flags.
+If the specified process is running on a 64\-bit JVM, then you might
+need to specify the \f[CB]\-J\-d64\f[R] option, for example:
+.RS
.PP
-This utility is unsupported and might not be available in future releases of the JDK\&. In Windows Systems where \f3dbgeng\&.dll\fR is not present, Debugging Tools For Windows must be installed to have these tools working\&. The \f3PATH\fR environment variable should contain the location of the jvm\&.dll that is used by the target process or the location from which the crash dump file was produced\&. For example, \f3set PATH=%JDK_HOME%\ejre\ebin\eclient;%PATH%\fR \&.
-.SH OPTIONS
-.TP
-no-option
-Prints both command-line flags and system property name-value pairs\&.
-.TP
--flag \fIname\fR
-.br
-Prints the name and value of the specified command-line flag\&.
+\f[CB]jinfo\ \-J\-d64\ \-sysprops\f[R] \f[I]pid\f[R]
+.RE
+.PP
+This command is unsupported and might not be available in future
+releases of the JDK.
+In Windows Systems where \f[CB]dbgeng.dll\f[R] is not present, the
+Debugging Tools for Windows must be installed to have these tools work.
+The \f[CB]PATH\f[R] environment variable should contain the location of
+the \f[CB]jvm.dll\f[R] that\[aq]s used by the target process or the
+location from which the core dump file was produced.
+.SH OPTIONS FOR THE JINFO COMMAND
+.PP
+\f[B]Note:\f[R]
+.PP
+If none of the following options are used, both the command\-line flags
+and the system property name\-value pairs are printed.
.TP
--flag \fI[+|-]name\fR
-.br
-enables or disables the specified Boolean command-line flag\&.
-.TP
--flag \fIname=value\fR
-.br
-Sets the specified command-line flag to the specified value\&.
-.TP
--flags
-.br
-Prints command-line flags passed to the JVM\&.
+.B \f[CB]\-flag\f[R] \f[I]name\f[R]
+Prints the name and value of the specified command\-line flag.
+.RS
+.RE
.TP
--sysprops
-.br
-Prints Java system properties as name-value pairs\&.
+.B \f[CB]\-flag\f[R] [\f[CB]+\f[R]|\f[CB]\-\f[R]]\f[I]name\f[R]
+Enables or disables the specified Boolean command\-line flag.
+.RS
+.RE
.TP
--h
-.br
-Prints a help message\&.
+.B \f[CB]\-flag\f[R] \f[I]name\f[R]\f[CB]=\f[R]\f[I]value\f[R]
+Sets the specified command\-line flag to the specified value.
+.RS
+.RE
.TP
--help
-.br
-Prints a help message\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-jps(1)
-.TP 0.2i
-\(bu
-jsadebugd(1)
+.B \f[CB]\-flags\f[R]
+Prints command\-line flags passed to the JVM.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
+.TP
+.B \f[CB]\-sysprops\f[R]
+Prints Java system properties as name\-value pairs.
+.RS
+.RE
+.TP
+.B \f[CB]\-h\f[R] or \f[CB]\-help\f[R]
+Prints a help message.
+.RS
+.RE
--- a/src/jdk.jcmd/share/man/jmap.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jcmd/share/man/jmap.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,124 +19,91 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Troubleshooting Tools
-.\" Title: jmap.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jmap 1 "21 November 2013" "JDK 8" "Troubleshooting Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jmap \- Prints shared object memory maps or heap memory details for a process, core file, or remote debug server\&. This command is experimental and unsupported\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjmap\fR [ \fIoptions\fR ] \fIpid\fR
-.fi
-.nf
-
-\fBjmap\fR [ \fIoptions\fR ] \fIexecutable\fR \fIcore\fR
-.fi
-.nf
-
-\fBjmap\fR [ \fIoptions\fR ] [ \fIpid\fR ] \fIserver\-id\fR@ ] \fIremote\-hostname\-or\-IP\fR
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.TP
-\fIpid\fR
-The process ID for which the memory map is to be printed\&. The process must be a Java process\&. To get a list of Java processes running on a machine, use the jps(1) command\&.
-.TP
-\fIexecutable\fR
-The Java executable from which the core dump was produced\&.
-.TP
-\fIcore\fR
-The core file for which the memory map is to be printed\&.
-.TP
-\fIremote-hostname-or-IP\fR
-The remote debug server \f3hostname\fR or \f3IP\fR address\&. See jsadebugd(1)\&.
-.TP
-\fIserver-id\fR
-An optional unique ID to use when multiple debug servers are running on the same remote host\&.
-.SH DESCRIPTION
-The \f3jmap\fR command prints shared object memory maps or heap memory details of a specified process, core file, or remote debug server\&. If the specified process is running on a 64-bit Java Virtual Machine (JVM), then you might need to specify the \f3-J-d64\fR option, for example: \f3jmap\fR\f3-J-d64 -heap pid\fR\&.
+.TH "JMAP" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jmap \- print details of a specified process
+.SH SYNOPSIS
+.PP
+\f[B]Note:\f[R] This command is experimental\ and unsupported.
+.PP
+\f[CB]jmap\f[R] [\f[I]options\f[R]] \f[I]pid\f[R]
+.TP
+.B \f[I]options\f[R]
+This represents the \f[CB]jmap\f[R] command\-line options.
+See \f[B]Options for the jmap Command\f[R].
+.RS
+.RE
+.TP
+.B \f[I]pid\f[R]
+The process ID for which the information specified by the
+\f[I]options\f[R] is to be printed.
+The process must be a Java process.
+To get a list of Java processes running on a machine, use either the
+\f[CB]ps\f[R] command or, if the JVM processes are not running in a
+separate docker instance, the \f[B]jps\f[R] command.
+.RS
+.PP
+\f[B]Note:\f[R] JDK 10 has added support for using the Attach API when
+attaching to Java processes running in a separate docker process.
+However, the \f[CB]jps\f[R] command will not list the JVM processes that
+are running in a separate docker instance.
+If you are trying to connect a Linux host with a Virtual Machine that is
+in a docker container, you must use tools such as \f[CB]ps\f[R] to look up
+the PID of the JVM.
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jmap\f[R] command prints details of a specified running process.
+.PP
+\f[B]Note:\f[R]
.PP
-\fINote:\fR This utility is unsupported and might not be available in future releases of the JDK\&. On Windows Systems where the \f3dbgeng\&.dll\fR file is not present, Debugging Tools For Windows must be installed to make these tools work\&. The \f3PATH\fR environment variable should contain the location of the \f3jvm\&.dll\fR file that is used by the target process or the location from which the crash dump file was produced, for example: \f3set PATH=%JDK_HOME%\ejre\ebin\eclient;%PATH%\fR\&.
-.SH OPTIONS
-.TP
-<no option>
-When no option is used, the \f3jmap\fR command prints shared object mappings\&. For each shared object loaded in the target JVM, the start address, size of the mapping, and the full path of the shared object file are printed\&. This behavior is similar to the Oracle Solaris \f3pmap\fR utility\&.
-.TP
--dump:[live,] format=b, file=\fIfilename\fR
-.br
-Dumps the Java heap in \f3hprof\fR binary format to \f3filename\fR\&. The \f3live\fR suboption is optional, but when specified, only the active objects in the heap are dumped\&. To browse the heap dump, you can use the jhat(1) command to read the generated file\&.
+This command is unsupported and might not be available in future
+releases of the JDK.
+On Windows Systems where the \f[CB]dbgeng.dll\f[R] file isn\[aq]t present,
+the Debugging Tools for Windows must be installed to make these tools
+work.
+The \f[CB]PATH\f[R] environment variable should contain the location of
+the \f[CB]jvm.dll\f[R] file that\[aq]s used by the target process or the
+location from which the core dump file was produced.
+.SH OPTIONS FOR THE JMAP COMMAND
.TP
--finalizerinfo
-.br
-Prints information about objects that are awaiting finalization\&.
-.TP
--heap
-.br
-Prints a heap summary of the garbage collection used, the head configuration, and generation-wise heap usage\&. In addition, the number and size of interned Strings are printed\&.
+.B \f[CB]\-clstats\f[R] \f[I]pid\f[R]
+Connects to a running process and prints class loader statistics of Java
+heap.
+.RS
+.RE
.TP
--histo[:live]
-.br
-Prints a histogram of the heap\&. For each Java class, the number of objects, memory size in bytes, and the fully qualified class names are printed\&. The JVM internal class names are printed with an asterisk (*) prefix\&. If the \f3live\fR suboption is specified, then only active objects are counted\&.
-.TP
--clstats
-.br
-Prints class loader wise statistics of Java heap\&. For each class loader, its name, how active it is, address, parent class loader, and the number and size of classes it has loaded are printed\&.
+.B \f[CB]\-finalizerinfo\f[R] \f[I]pid\f[R]
+Connects to a running process and prints information on objects awaiting
+finalization.
+.RS
+.RE
.TP
--F
-.br
-Force\&. Use this option with the \f3jmap -dump\fR or \f3jmap -histo\fR option when the pid does not respond\&. The \f3live\fR suboption is not supported in this mode\&.
-.TP
--h
-.br
-Prints a help message\&.
-.TP
--help
-.br
-Prints a help message\&.
+.B \f[CB]\-histo\f[R][\f[CB]:live\f[R]] \f[I]pid\f[R]
+Connects to a running process and prints a histogram of the Java object
+heap.
+If the \f[CB]live\f[R] suboption is specified, it then counts only live
+objects.
+.RS
+.RE
.TP
--J\fIflag\fR
-.br
-Passes \f3flag\fR to the Java Virtual Machine where the \f3jmap\fR command is running\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-jhat(1)
-.TP 0.2i
-\(bu
-jps(1)
-.TP 0.2i
-\(bu
-jsadebugd(1)
+.B \f[CB]\-dump:\f[R]\f[I]dump_options\f[R] \f[I]pid\f[R]
+Connects to a running process and dumps the Java heap.
+The \f[I]dump_options\f[R] include:
+.RS
+.IP \[bu] 2
+\f[CB]live\f[R] \-\-\- When specified, dumps only the live objects; if not
+specified, then dumps all objects in the heap.
+.IP \[bu] 2
+\f[CB]format=b\f[R] \-\-\- Dumps the Java heap in \f[CB]hprof\f[R] binary
+format
+.IP \[bu] 2
+\f[CB]file=\f[R]\f[I]filename\f[R] \-\-\- Dumps the heap to
+\f[I]filename\f[R]
+.PP
+Example: \f[CB]jmap\ \-dump:live,format=b,file=heap.bin\f[R] \f[I]pid\f[R]
.RE
-.br
-'pl 8.5i
-'bp
--- a/src/jdk.jcmd/share/man/jps.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jcmd/share/man/jps.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,185 +19,226 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Monitoring Tools
-.\" Title: jps.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jps 1 "21 November 2013" "JDK 8" "Monitoring Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jps \- Lists the instrumented Java Virtual Machines (JVMs) on the target system\&. This command is experimental and unsupported\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjps\fR [ \fIoptions\fR ] [ \fIhostid\fR ]
-.fi
-.sp
-.TP
-\fIoptions\fR
-Command-line options\&. See Options\&.
-.TP
-\fIhostid\fR
-The identifier of the host for which the process report should be generated\&. The \f3hostid\fR can include optional components that indicate the communications protocol, port number, and other implementation specific data\&. See Host Identifier\&.
-.SH DESCRIPTION
-The \f3jps\fR command lists the instrumented Java HotSpot VMs on the target system\&. The command is limited to reporting information on JVMs for which it has the access permissions\&.
+.TH "JPS" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jps \- list the instrumented JVMs on the target system
+.SH SYNOPSIS
+.PP
+\f[B]Note:\f[R] This command is experimental\ and unsupported.
+.PP
+\f[CB]jps\f[R] [\f[CB]\-q\f[R]] [\f[CB]\-mlvV\f[R]] [\f[I]hostid\f[R]]
.PP
-If the \f3jps\fR command is run without specifying a \f3hostid\fR, then it searches for instrumented JVMs on the local host\&. If started with a \f3hostid\fR, then it searches for JVMs on the indicated host, using the specified protocol and port\&. A \f3jstatd\fR process is assumed to be running on the target host\&.
-.PP
-The \f3jps\fR command reports the local JVM identifier, or \f3lvmid\fR, for each instrumented JVM found on the target system\&. The \f3lvmid\fR is typically, but not necessarily, the operating system\&'s process identifier for the JVM process\&. With no options, \f3jps\fR lists each Java application\&'s \f3lvmid\fR followed by the short form of the application\&'s class name or jar file name\&. The short form of the class name or JAR file name omits the class\&'s package information or the JAR files path information\&.
-.PP
-The \f3jps\fR command uses the Java launcher to find the class name and arguments passed to the main method\&. If the target JVM is started with a custom launcher, then the class or JAR file name and the arguments to the \f3main\fR method are not available\&. In this case, the \f3jps\fR command outputs the string \f3Unknown\fR for the class name or JAR file name and for the arguments to the \f3main\fR method\&.
-.PP
-The list of JVMs produced by the \f3jps\fR command can be limited by the permissions granted to the principal running the command\&. The command only lists the JVMs for which the principle has access rights as determined by operating system-specific access control mechanisms\&.
-.SH OPTIONS
-The \f3jps\fR command supports a number of options that modify the output of the command\&. These options are subject to change or removal in the future\&.
+\f[CB]jps\f[R] [\f[CB]\-help\f[R]]
+.SH OPTIONS
+.TP
+.B \f[CB]\-q\f[R]
+Suppresses the output of the class name, JAR file name, and arguments
+passed to the \f[CB]main\f[R] method, producing a list of only local JVM
+identifiers.
+.RS
+.RE
+.TP
+.B \f[CB]\-mlvV\f[R]
+You can specify any combination of these options.
+.RS
+.IP \[bu] 2
+\f[CB]\-m\f[R] displays the arguments passed to the \f[CB]main\f[R] method.
+The output may be \f[CB]null\f[R] for embedded JVMs.
+.IP \[bu] 2
+\f[CB]\-l\f[R] displays the full package name for the application\[aq]s
+\f[CB]main\f[R] class or the full path name to the application\[aq]s JAR
+file.
+.IP \[bu] 2
+\f[CB]\-v\f[R] displays the arguments passed to the JVM.
+.IP \[bu] 2
+\f[CB]\-V\f[R] suppresses the output of the class name, JAR file name, and
+arguments passed to the \f[CB]main\f[R] method, producing a list of only
+local JVM identifiers.
+.RE
+.TP
+.B \f[I]hostid\f[R]
+The identifier of the host for which the process report should be
+generated.
+The \f[CB]hostid\f[R] can include optional components that indicate the
+communications protocol, port number, and other implementation specific
+data.
+See \f[B]Host Identifier\f[R].
+.RS
+.RE
.TP
--q
-.br
-Suppresses the output of the class name, JAR file name, and arguments passed to the \f3main\fR method, producing only a list of local JVM identifiers\&.
-.TP
--m
-.br
-Displays the arguments passed to the \f3main\fR method\&. The output may be \f3null\fR for embedded JVMs\&.
-.TP
--l
-.br
-Displays the full package name for the application\&'s \f3main\fR class or the full path name to the application\&'s JAR file\&.
-.TP
--v
-.br
-Displays the arguments passed to the JVM\&.
-.TP
--V
-.br
-Suppresses the output of the class name, JAR file name, and arguments passed to the main method, producing only a list of local JVM identifiers\&.
+.B \f[CB]\-help\f[R]
+Displays the help message for the \f[CB]jps\f[R] command.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jps\f[R] command lists the instrumented Java HotSpot VMs on the
+target system.
+The command is limited to reporting information on JVMs for which it has
+the access permissions.
+.PP
+\f[B]Note:\f[R]
+.PP
+JDK 10 added support for using the Attach API when attaching to Java
+processes running in a separate docker process.
+However, the \f[CB]jps\f[R] tool cannot see JVM processes running in a
+separate docker instance.
+If you are trying to connect a Linux host with a Virtual Machine within
+a docker container, you must use tools such as \f[CB]ps\f[R] to look up
+the PID of the JVM and then specify the PID on the command line of the
+tools that accept the PID.
+.PP
+If the \f[CB]jps\f[R] command is run without specifying a \f[CB]hostid\f[R],
+then it searches for instrumented JVMs on the local host.
+If started with a \f[CB]hostid\f[R], then it searches for JVMs on the
+indicated host, using the specified protocol and port.
+A \f[CB]jstatd\f[R] process is assumed to be running on the target host.
+.PP
+The \f[CB]jps\f[R] command reports the local JVM identifier, or
+\f[CB]lvmid\f[R], for each instrumented JVM found on the target system.
+The \f[CB]lvmid\f[R] is typically, but not necessarily, the operating
+system\[aq]s process identifier for the JVM process.
+With no options, the \f[CB]jps\f[R] command lists each Java
+application\[aq]s \f[CB]lvmid\f[R] followed by the short form of the
+application\[aq]s class name or jar file name.
+The short form of the class name or JAR file name omits the class\[aq]s
+package information or the JAR files path information.
+.PP
+The \f[CB]jps\f[R] command uses the Java launcher to find the class name
+and arguments passed to the main method.
+If the target JVM is started with a custom launcher, then the class or
+JAR file name, and the arguments to the \f[CB]main\f[R] method aren\[aq]t
+available.
+In this case, the \f[CB]jps\f[R] command outputs the string
+\f[CB]Unknown\f[R] for the class name, or JAR file name, and for the
+arguments to the \f[CB]main\f[R] method.
+.PP
+The list of JVMs produced by the \f[CB]jps\f[R] command can be limited by
+the permissions granted to the principal running the command.
+The command lists only the JVMs for which the principal has access
+rights as determined by operating system\-specific access control
+mechanisms.
+.SH HOST IDENTIFIER
+.PP
+The host identifier, or \f[CB]hostid\f[R], is a string that indicates the
+target system.
+The syntax of the \f[CB]hostid\f[R] string corresponds to the syntax of a
+URI:
+.RS
+.PP
+[\f[I]protocol\f[R]\f[CB]:\f[R]][[\f[CB]//\f[R]]\f[I]hostname\f[R]][\f[CB]:\f[R]\f[I]port\f[R]][\f[CB]/\f[R]\f[I]servername\f[R]]
+.RE
.TP
--J\f3option\fR
-.br
-Passes \f3option\fR to the JVM, where option is one of the \f3options\fR described on the reference page for the Java application launcher\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&. See java(1)\&.
-.SH HOST\ IDENTIFIER
-The host identifier, or \f3hostid\fR is a string that indicates the target system\&. The syntax of the \f3hostid\fR string corresponds to the syntax of a URI:
-.sp
-.nf
-\f3[protocol:][[//]hostname][:port][/servername]\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.TP
-\fIprotocol\fR
-The communications protocol\&. If the \f3protocol\fR is omitted and a \f3hostname\fR is not specified, then the default protocol is a platform-specific, optimized, local protocol\&. If the protocol is omitted and a host name is specified, then the default protocol is \f3rmi\fR\&.
-.TP
-hostname
-A hostname or IP address that indicates the target host\&. If you omit the \f3hostname\fR parameter, then the target host is the local host\&.
-.TP
-port
-The default port for communicating with the remote server\&. If the \f3hostname\fR parameter is omitted or the \f3protocol\fR parameter specifies an optimized, local protocol, then the \f3port\fR parameter is ignored\&. Otherwise, treatment of the \f3port\fR parameter is implementation specific\&. For the default \f3rmi\fR protocol, the \f3port\fR parameter indicates the port number for the rmiregistry on the remote host\&. If the \f3port\fR parameter is omitted, and the \f3protocol\fR parameter indicates \f3rmi\fR, then the default rmiregistry port (1099) is used\&.
-.TP
-servername
-The treatment of this parameter depends on the implementation\&. For the optimized, local protocol, this field is ignored\&. For the \f3rmi\fR protocol, this parameter is a string that represents the name of the RMI remote object on the remote host\&. See the \f3jstatd\fR command \f3-n\fRoption for more information\&.
-.SH OUTPUT\ FORMAT
-The output of the \f3jps\fR command follows the following pattern:
-.sp
-.nf
-\f3lvmid [ [ classname | JARfilename | "Unknown"] [ arg* ] [ jvmarg* ] ]\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-All output tokens are separated by white space\&. An \f3arg\fR value that includes embedded white space introduces ambiguity when attempting to map arguments to their actual positional parameters\&.
+.B \f[I]protocol\f[R]
+The communications protocol.
+If the \f[I]protocol\f[R] is omitted and a \f[I]hostname\f[R] isn\[aq]t
+specified, then the default protocol is a platform\-specific, optimized,
+local protocol.
+If the protocol is omitted and a host name is specified, then the
+default protocol is \f[CB]rmi\f[R].
+.RS
+.RE
+.TP
+.B \f[I]hostname\f[R]
+A host name or IP address that indicates the target host.
+If you omit the \f[I]hostname\f[R] parameter, then the target host is the
+local host.
+.RS
+.RE
+.TP
+.B \f[I]port\f[R]
+The default port for communicating with the remote server.
+If the \f[I]hostname\f[R] parameter is omitted or the \f[I]protocol\f[R]
+parameter specifies an optimized, local protocol, then the \f[I]port\f[R]
+parameter is ignored.
+Otherwise, treatment of the \f[I]port\f[R] parameter is
+implementation\-specific.
+For the default \f[CB]rmi\f[R] protocol, the \f[I]port\f[R] parameter
+indicates the port number for the \f[CB]rmiregistry\f[R] on the remote
+host.
+If the \f[I]port\f[R] parameter is omitted, and the \f[I]protocol\f[R]
+parameter indicates \f[CB]rmi\f[R], then the default \f[CB]rmiregistry\f[R]
+port (\f[CB]1099\f[R]) is used.
+.RS
+.RE
+.TP
+.B \f[I]servername\f[R]
+The treatment of this parameter depends on the implementation.
+For the optimized, local protocol, this field is ignored.
+For the \f[CB]rmi\f[R] protocol, this parameter is a string that
+represents the name of the RMI remote object on the remote host.
+See the \f[B]jstatd\f[R] command \f[CB]\-n\f[R] option.
+.RS
+.RE
+.SH OUTPUT FORMAT OF THE JPS COMMAND
.PP
-\fINote:\fR It is recommended that you do not write scripts to parse \f3jps\fR output because the format might change in future releases\&. If you write scripts that parse \f3jps\fR output, then expect to modify them for future releases of this tool\&.
-.SH EXAMPLES
-This section provides examples of the \f3jps\fR command\&.
+The output of the \f[CB]jps\f[R] command has the following pattern:
+.RS
+.PP
+\f[I]lvmid\f[R] [ [ \f[I]classname\f[R] | \f[I]JARfilename\f[R] |
+\f[CB]"Unknown"\f[R]] [ \f[I]arg\f[R]* ] [ \f[I]jvmarg\f[R]* ] ]
+.RE
+.PP
+All output tokens are separated by white space.
+An \f[CB]arg\f[R] value that includes embedded white space introduces
+ambiguity when attempting to map arguments to their actual positional
+parameters.
+.PP
+\f[B]Note:\f[R]
+.PP
+It\[aq]s recommended that you don\[aq]t write scripts to parse
+\f[CB]jps\f[R] output because the format might change in future releases.
+If you write scripts that parse \f[CB]jps\f[R] output, then expect to
+modify them for future releases of this tool.
+.SH EXAMPLES
+.PP
+This section provides examples of the \f[CB]jps\f[R] command.
.PP
List the instrumented JVMs on the local host:
-.sp
-.nf
-\f3jps\fP
-.fi
-.nf
-\f318027 Java2Demo\&.JAR\fP
-.fi
-.nf
-\f318032 jps\fP
-.fi
-.nf
-\f318005 jstat\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The following example lists the instrumented JVMs on a remote host\&. This example assumes that the \f3jstat\fR server and either the its internal RMI registry or a separate external rmiregistry process are running on the remote host on the default port (port 1099)\&. It also assumes that the local host has appropriate permissions to access the remote host\&. This example also includes the \f3-l\fR option to output the long form of the class names or JAR file names\&.
-.sp
-.nf
-\f3jps \-l remote\&.domain\fP
-.fi
-.nf
-\f33002 /opt/jdk1\&.7\&.0/demo/jfc/Java2D/Java2Demo\&.JAR\fP
-.fi
-.nf
-\f32857 sun\&.tools\&.jstatd\&.jstatd\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The following example lists the instrumented JVMs on a remote host with a non-default port for the RMI registry\&. This example assumes that the \f3jstatd\fR server, with an internal RMI registry bound to port 2002, is running on the remote host\&. This example also uses the \f3-m\fR option to include the arguments passed to the \f3main\fR method of each of the listed Java applications\&.
-.sp
-.nf
-\f3jps \-m remote\&.domain:2002\fP
-.fi
-.nf
-\f33002 /opt/jdk1\&.7\&.0/demo/jfc/Java2D/Java2Demo\&.JAR\fP
-.fi
-.nf
-\f33102 sun\&.tools\&.jstatd\&.jstatd \-p 2002\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-java(1)
-.TP 0.2i
-\(bu
-jstat(1)
-.TP 0.2i
-\(bu
-jstatd(1)
-.TP 0.2i
-\(bu
-rmiregistry(1)
-.RE
-.br
-'pl 8.5i
-'bp
+.IP
+.nf
+\f[CB]
+jps
+18027\ Java2Demo.JAR
+18032\ jps
+18005\ jstat
+\f[R]
+.fi
+.PP
+The following example lists the instrumented JVMs on a remote host.
+This example assumes that the \f[CB]jstat\f[R] server and either the its
+internal RMI registry or a separate external \f[CB]rmiregistry\f[R]
+process are running on the remote host on the default port (port
+\f[CB]1099\f[R]).
+It also assumes that the local host has appropriate permissions to
+access the remote host.
+This example includes the \f[CB]\-l\f[R] option to output the long form of
+the class names or JAR file names.
+.IP
+.nf
+\f[CB]
+jps\ \-l\ remote.domain
+3002\ /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
+2857\ sun.tools.jstatd.jstatd
+\f[R]
+.fi
+.PP
+The following example lists the instrumented JVMs on a remote host with
+a nondefault port for the RMI registry.
+This example assumes that the \f[CB]jstatd\f[R] server, with an internal
+RMI registry bound to port \f[CB]2002\f[R], is running on the remote host.
+This example also uses the \f[CB]\-m\f[R] option to include the arguments
+passed to the \f[CB]main\f[R] method of each of the listed Java
+applications.
+.IP
+.nf
+\f[CB]
+jps\ \-m\ remote.domain:2002
+3002\ /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
+3102\ sun.tools.jstatd.jstatd\ \-p\ 2002
+\f[R]
+.fi
--- a/src/jdk.jcmd/share/man/jstack.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jcmd/share/man/jstack.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,118 +19,73 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Troubleshooting Tools
-.\" Title: jstack.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jstack 1 "21 November 2013" "JDK 8" "Troubleshooting Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jstack \- Prints Java thread stack traces for a Java process, core file, or remote debug server\&. This command is experimental and unsupported\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjstack\fR [ \fIoptions\fR ] \fIpid\fR
-.fi
-.nf
-
-\fBjstack\fR [ \fIoptions\fR ] \fIexecutable\fR \fIcore\fR
-.fi
-.nf
-
-\fBjstack\fR [ \fIoptions\fR ] [ \fIserver\-id\fR@ ] \fIremote\-hostname\-or\-IP\fR
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.TP
-\fIpid\fR
-The process ID for which the stack trace is printed\&. The process must be a Java process\&. To get a list of Java processes running on a machine, use the jps(1) command\&.
-.TP
-\fIexecutable\fR
-The Java executable from which the core dump was produced\&.
-.TP
-\fIcore\fR
-The core file for which the stack trace is to be printed\&.
-.TP
-\fIremote-hostname-or-IP\fR
-The remote debug server \f3hostname\fR or \f3IP\fR address\&. See jsadebugd(1)\&.
-.TP
-\fIserver-id\fR
-An optional unique ID to use when multiple debug servers are running on the same remote host\&.
-.SH DESCRIPTION
-The \f3jstack\fR command prints Java stack traces of Java threads for a specified Java process, core file, or remote debug server\&. For each Java frame, the full class name, method name, byte code index (BCI), and line number, when available, are printed\&. With the \f3-m\fR option, the \f3jstack\fR command prints both Java and native frames of all threads with the program counter (PC)\&. For each native frame, the closest native symbol to PC, when available, is printed\&. C++ mangled names are not demangled\&. To demangle C++ names, the output of this command can be piped to \f3c++filt\fR\&. When the specified process is running on a 64-bit Java Virtual Machine, you might need to specify the \f3-J-d64\fR option, for example: \f3jstack -J-d64 -m pid\fR\&.
+.TH "JSTACK" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jstack \- print Java stack traces of Java threads for a specified Java
+process
+.SH SYNOPSIS
+.PP
+\f[B]Note:\f[R] This command is experimental\ and unsupported.
+.PP
+\f[CB]jstack\f[R] [\f[I]options\f[R]] \f[I]pid\f[R]
+.TP
+.B \f[I]options\f[R]
+This represents the \f[CB]jstack\f[R] command\-line options.
+See \f[B]Options for the jstack Command\f[R].
+.RS
+.RE
+.TP
+.B \f[I]pid\f[R]
+The process ID for which the stack trace is printed.
+The process must be a Java process.
+To get a list of Java processes running on a machine, use either the
+\f[CB]ps\f[R] command or, if the JVM processes are not running in a
+separate docker instance, the \f[B]jps\f[R] command.
+.RS
.PP
-\fINote:\fR This utility is unsupported and might not be available in future release of the JDK\&. In Windows Systems where the dbgeng\&.dll file is not present, Debugging Tools For Windows must be installed so these tools work\&. The \f3PATH\fR environment variable needs to contain the location of the jvm\&.dll that is used by the target process, or the location from which the crash dump file was produced\&. For example:
-.sp
-.nf
-\f3set PATH=<jdk>\ejre\ebin\eclient;%PATH%\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH OPTIONS
-.TP
--F
-.br
-Force a stack dump when \f3jstack\fR [\f3-l\fR] \f3pid\fR does not respond\&.
-.TP
--l
-.br
-Long listing\&. Prints additional information about locks such as a list of owned \f3java\&.util\&.concurrent\fR ownable synchronizers\&. See the \f3AbstractOwnableSynchronizer\fR class description at http://docs\&.oracle\&.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer\&.html
-.TP
--m
-.br
-Prints a mixed mode stack trace that has both Java and native C/C++ frames\&.
+\f[B]Note:\f[R] JDK 10 has added support for using the Attach API when
+attaching to Java processes running in a separate docker process.
+However, the \f[CB]jps\f[R] command will not list the JVM processes that
+are running in a separate docker instance.
+If you are trying to connect a Linux host with a Virtual Machine that is
+in a docker container, you must use tools such as \f[CB]ps\f[R] to look up
+the PID of the JVM.
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jstack\f[R] command prints Java stack traces of Java threads for
+a specified Java process.
+For each Java frame, the full class name, method name, byte code index
+(BCI), and line number, when available, are printed.
+C++ mangled names aren\[aq]t demangled.
+To demangle C++ names, the output of this command can be piped to
+\f[CB]c++filt\f[R].
+When the specified process is running on a 64\-bit JVM, you might need
+to specify the \f[CB]\-J\-d64\f[R] option, for example:
+\f[CB]jstack\ \-J\-d64\f[R] \f[I]pid\f[R].
+.PP
+\f[B]Note:\f[R]
+.PP
+This command is unsupported and might not be available in future
+releases of the JDK.
+In Windows Systems where the \f[CB]dbgeng.dll\f[R] file isn\[aq]t present,
+the Debugging Tools for Windows must be installed so that these tools
+work.
+The \f[CB]PATH\f[R] environment variable needs to contain the location of
+the \f[CB]jvm.dll\f[R] that is used by the target process, or the location
+from which the core dump file was produced.
+.SH OPTIONS FOR THE JSTACK COMMAND
.TP
--h
-.br
-Prints a help message\&.
+.B \f[CB]\-l\f[R]
+The long listing option prints additional information about locks.
+.RS
+.RE
.TP
--help
-.br
-Prints a help message\&.
-.SH KNOWN\ BUGS
-In mixed mode stack trace, the \f3-m\fR option does not work with the remote debug server\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-pstack(1)
-.TP 0.2i
-\(bu
-C++filt(1)
-.TP 0.2i
-\(bu
-jps(1)
-.TP 0.2i
-\(bu
-jsadebugd(1)
+.B \f[CB]\-h\f[R] or \f[CB]\-help\f[R]
+Prints a help message.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
--- a/src/jdk.jcmd/share/man/jstat.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jcmd/share/man/jstat.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,758 +19,692 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Title: jstat
-.\" Language: English
-.\" Date: 03 March 2015
-.\" SectDesc: Monitoring Tools
-.\" Software: JDK 8
-.\" Arch: generic
-.\" Part Number: E38207-04
-.\" Doc ID: JSSON
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH "jstat" "1" "03 March 2015" "JDK 8" "Monitoring Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-jstat \- Monitors Java Virtual Machine (JVM) statistics\&. This command is experimental and unsupported\&.
-.SH "SYNOPSIS"
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjstat\fR [ \fIgeneralOption\fR | \fIoutputOptions vmid\fR [ \fIinterval\fR[s|ms] [ \fIcount \fR] ]
-.fi
-.if n \{\
-.RE
-.\}
+.TH "JSTAT" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jstat \- monitor JVM statistics
+.SH SYNOPSIS
+.PP
+\f[B]Note:\f[R] This command is experimental\ and unsupported.
+.PP
+\f[CB]jstat\f[R] \f[I]generalOptions\f[R]
.PP
-\fIgeneralOption\fR
-.RS 4
-A single general command\-line option
-\fB\-help\fR
-or
-\fB\-options\fR\&. See General Options\&.
+\f[CB]jstat\f[R] \f[I]outputOptions\f[R] [\f[CB]\-t\f[R]] [\f[CB]\-h\f[R]
+\f[I]lines\f[R]] \f[I]vmid\f[R] [\f[I]interval\f[R] [\f[I]count\f[R]]]
+.TP
+.B \f[I]generalOptions\f[R]
+A single general command\-line option.
+See \f[B]General Options\f[R].
+.RS
+.RE
+.TP
+.B \f[I]outputOptions\f[R]
+An option reported by the \f[CB]\-options\f[R] option.
+One or more output options that consist of a single \f[CB]statOption\f[R],
+plus any of the \f[CB]\-t\f[R], \f[CB]\-h\f[R], and \f[CB]\-J\f[R] options.
+See \f[B]Output Options for the jstat Command\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-t\f[R]
+Displays a time\-stamp column as the first column of output.
+The time stamp is the time since the start time of the target JVM.
+.RS
.RE
-.PP
-\fIoutputOptions\fR
-.RS 4
-One or more output options that consist of a single
-\fBstatOption\fR, plus any of the
-\fB\-t\fR,
-\fB\-h\fR, and
-\fB\-J\fR
-options\&. See Output Options\&.
+.TP
+.B \f[CB]\-h\f[R] \f[I]n\f[R]
+Displays a column header every \f[I]n\f[R] samples (output rows), where
+\f[I]n\f[R] is a positive integer.
+The default value is \f[CB]0\f[R], which displays the column header of the
+first row of data.
+.RS
+.RE
+.TP
+.B \f[I]vmid\f[R]
+A virtual machine identifier, which is a string that indicates the
+target JVM.
+See \f[B]Virtual Machine Identifier\f[R].
+.RS
.RE
+.TP
+.B \f[I]interval\f[R]
+The sampling interval in the specified units, seconds (s) or
+milliseconds (ms).
+Default units are milliseconds.
+This must be a positive integer.
+When specified, the \f[CB]jstat\f[R] command produces its output at each
+interval.
+.RS
+.RE
+.TP
+.B \f[I]count\f[R]
+The number of samples to display.
+The default value is infinity, which causes the \f[CB]jstat\f[R] command
+to display statistics until the target JVM terminates or the
+\f[CB]jstat\f[R] command is terminated.
+This value must be a positive integer.
+.RS
+.RE
+.SH DESCRIPTION
.PP
-\fIvmid\fR
-.RS 4
-Virtual machine identifier, which is a string that indicates the target JVM\&. The general syntax is the following:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB[protocol:][//]lvmid[@hostname[:port]/servername]\fR
-
-.fi
-.if n \{\
+The \f[CB]jstat\f[R] command displays performance statistics for an
+instrumented Java HotSpot VM.
+The target JVM is identified by its virtual machine identifier, or
+\f[CB]vmid\f[R] option.
+.PP
+The \f[CB]jstat\f[R] command supports two types of options, general
+options and output options.
+General options cause the \f[CB]jstat\f[R] command to display simple usage
+and version information.
+Output options determine the content and format of the statistical
+output.
+.PP
+All options and their functionality are subject to change or removal in
+future releases.
+.SH GENERAL OPTIONS
+.PP
+If you specify one of the general options, then you can\[aq]t specify
+any other option or parameter.
+.TP
+.B \f[CB]\-help\f[R]
+Displays a help message.
+.RS
.RE
-.\}
-The syntax of the
-\fBvmid\fR
-string corresponds to the syntax of a URI\&. The
-\fBvmid\fR
-string can vary from a simple integer that represents a local JVM to a more complex construction that specifies a communications protocol, port number, and other implementation\-specific values\&. See Virtual Machine Identifier\&.
+.TP
+.B \f[CB]\-options\f[R]
+Displays a list of static options.
+See \f[B]Output Options for the jstat Command\f[R].
+.RS
.RE
+.SH OUTPUT OPTIONS FOR THE JSTAT COMMAND
.PP
-\fIinterval\fR [s|ms]
-.RS 4
-Sampling interval in the specified units, seconds (s) or milliseconds (ms)\&. Default units are milliseconds\&. Must be a positive integer\&. When specified, the
-\fBjstat\fR
-command produces its output at each interval\&.
-.RE
+If you don\[aq]t specify a general option, then you can specify output
+options.
+Output options determine the content and format of the \f[CB]jstat\f[R]
+command\[aq]s output, and consist of a single \f[CB]statOption\f[R], plus
+any of the other output options (\f[CB]\-h\f[R], \f[CB]\-t\f[R], and
+\f[CB]\-J\f[R]).
+The \f[CB]statOption\f[R] must come first.
.PP
-\fIcount\fR
-.RS 4
-Number of samples to display\&. The default value is infinity which causes the
-\fBjstat\fR
-command to display statistics until the target JVM terminates or the
-\fBjstat\fR
-command is terminated\&. This value must be a positive integer\&.
-.RE
-.SH "DESCRIPTION"
+Output is formatted as a table, with columns that are separated by
+spaces.
+A header row with titles describes the columns.
+Use the \f[CB]\-h\f[R] option to set the frequency at which the header is
+displayed.
+Column header names are consistent among the different options.
+In general, if two options provide a column with the same name, then the
+data source for the two columns is the same.
.PP
-The
-\fBjstat\fR
-command displays performance statistics for an instrumented Java HotSpot VM\&. The target JVM is identified by its virtual machine identifier, or
-\fBvmid\fR
-option\&.
-.SH "VIRTUAL MACHINE IDENTIFIER"
+Use the \f[CB]\-t\f[R] option to display a time\-stamp column, labeled
+Timestamp as the first column of output.
+The Timestamp column contains the elapsed time, in seconds, since the
+target JVM started.
+The resolution of the time stamp is dependent on various factors and is
+subject to variation due to delayed thread scheduling on heavily loaded
+systems.
+.PP
+Use the interval and count parameters to determine how frequently and
+how many times, respectively, the \f[CB]jstat\f[R] command displays its
+output.
+.PP
+\f[B]Note:\f[R]
.PP
-The syntax of the
-\fBvmid\fR
-string corresponds to the syntax of a URI:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB[protocol:][//]lvmid[@hostname[:port]/servername]\fR
-
-.fi
-.if n \{\
-.RE
-.\}
+Don\[aq]t write scripts to parse the \f[CB]jstat\f[R] command\[aq]s output
+because the format might change in future releases.
+If you write scripts that parse the \f[CB]jstat\f[R] command output, then
+expect to modify them for future releases of this tool.
+.TP
+.B \f[CB]\-statOption\f[R]
+Determines the statistics information that the \f[CB]jstat\f[R] command
+displays.
+The following lists the available options.
+Use the \f[CB]\-options\f[R] general option to display the list of options
+for a particular platform installation.
+See \f[B]Stat Options and Output\f[R].
+.RS
+.PP
+\f[CB]class\f[R]: Displays statistics about the behavior of the class
+loader.
.PP
-\fIprotocol\fR
-.RS 4
-The communications protocol\&. If the
-\fIprotocol\fR
-value is omitted and a host name is not specified, then the default protocol is a platform\-specific optimized local protocol\&. If the
-\fIprotocol\fR
-value is omitted and a host name is specified, then the default protocol is
-\fBrmi\fR\&.
-.RE
+\f[CB]compiler\f[R]: Displays statistics about the behavior of the Java
+HotSpot VM Just\-in\-Time compiler.
+.PP
+\f[CB]gc\f[R]: Displays statistics about the behavior of the garbage
+collected heap.
+.PP
+\f[CB]gccapacity\f[R]: Displays statistics about the capacities of the
+generations and their corresponding spaces.
+.PP
+\f[CB]gccause\f[R]: Displays a summary about garbage collection statistics
+(same as \f[CB]\-gcutil\f[R]), with the cause of the last and current
+(when applicable) garbage collection events.
+.PP
+\f[CB]gcnew\f[R]: Displays statistics about the behavior of the new
+generation.
+.PP
+\f[CB]gcnewcapacity\f[R]: Displays statistics about the sizes of the new
+generations and their corresponding spaces.
.PP
-\fIlvmid\fR
-.RS 4
-The local virtual machine identifier for the target JVM\&. The
-\fBlvmid\fR
-is a platform\-specific value that uniquely identifies a JVM on a system\&. The
-\fBlvmid\fR
-is the only required component of a virtual machine identifier\&. The
-\fBlvmid\fR
-is typically, but not necessarily, the operating system\*(Aqs process identifier for the target JVM process\&. You can use the
-\fBjps\fR
-command to determine the
-\fBlvmid\fR\&. Also, you can determine the
-\fBlvmid\fR
-on Solaris, Linux, and OS X platforms with the
-\fBps\fR
-command, and on Windows with the Windows Task Manager\&.
+\f[CB]gcold\f[R]: Displays statistics about the behavior of the old
+generation and metaspace statistics.
+.PP
+\f[CB]gcoldcapacity\f[R]: Displays statistics about the sizes of the old
+generation.
+.PP
+\f[CB]gcmetacapacity\f[R]: Displays statistics about the sizes of the
+metaspace.
+.PP
+\f[CB]gcutil\f[R]: Displays a summary about garbage collection statistics.
+.PP
+\f[CB]printcompilation\f[R]: Displays Java HotSpot VM compilation method
+statistics.
.RE
-.PP
-\fIhostname\fR
-.RS 4
-A hostname or IP address that indicates the target host\&. If the
-\fIhostname\fR
-value is omitted, then the target host is the local host\&.
+.TP
+.B \f[CB]\-J\f[R]\f[I]javaOption\f[R]
+Passes \f[I]javaOption\f[R] to the Java application launcher.
+For example, \f[CB]\-J\-Xms48m\f[R] sets the startup memory to 48 MB.
+For a complete list of options, see \f[B]java\f[R].
+.RS
.RE
+.SH STAT OPTIONS AND OUTPUT
.PP
-\fIport\fR
-.RS 4
-The default port for communicating with the remote server\&. If the
-\fIhostname\fR
-value is omitted or the
-\fIprotocol\fR
-value specifies an optimized, local protocol, then the
-\fIport\fR
-value is ignored\&. Otherwise, treatment of the
-\fBport\fR
-parameter is implementation\-specific\&. For the default
-\fBrmi\fR
-protocol, the port value indicates the port number for the rmiregistry on the remote host\&. If the
-\fIport\fR
-value is omitted and the
-\fIprotocol\fR
-value indicates
-\fBrmi\fR, then the default rmiregistry port (1099) is used\&.
+The following information summarizes the columns that the \f[CB]jstat\f[R]
+command outputs for each \f[I]statOption\f[R].
+.TP
+.B \f[CB]\-class\f[R] \f[I]option\f[R]
+Class loader statistics.
+.RS
+.PP
+\f[CB]Loaded\f[R]: Number of classes loaded.
+.PP
+\f[CB]Bytes\f[R]: Number of KB loaded.
+.PP
+\f[CB]Unloaded\f[R]: Number of classes unloaded.
+.PP
+\f[CB]Bytes\f[R]: Number of KB loaded.
+.PP
+\f[CB]Time\f[R]: Time spent performing class loading and unloading
+operations.
.RE
+.TP
+.B \f[CB]\-compiler\f[R] \f[I]option\f[R]
+Java HotSpot VM Just\-in\-Time compiler statistics.
+.RS
.PP
-\fIservername\fR
-.RS 4
-The treatment of the
-\fBservername\fR
-parameter depends on implementation\&. For the optimized local protocol, this field is ignored\&. For the
-\fBrmi\fR
-protocol, it represents the name of the RMI remote object on the remote host\&.
+\f[CB]Compiled\f[R]: Number of compilation tasks performed.
+.PP
+\f[CB]Failed\f[R]: Number of compilations tasks failed.
+.PP
+\f[CB]Invalid\f[R]: Number of compilation tasks that were invalidated.
+.PP
+\f[CB]Time\f[R]: Time spent performing compilation tasks.
+.PP
+\f[CB]FailedType\f[R]: Compile type of the last failed compilation.
+.PP
+\f[CB]FailedMethod\f[R]: Class name and method of the last failed
+compilation.
.RE
-.SH "OPTIONS"
+.TP
+.B \f[CB]\-gc\f[R] \f[I]option\f[R]
+Garbage collected heap statistics.
+.RS
+.PP
+\f[CB]S0C\f[R]: Current survivor space 0 capacity (KB).
.PP
-The
-\fBjstat\fR
-command supports two types of options, general options and output options\&. General options cause the
-\fBjstat\fR
-command to display simple usage and version information\&. Output options determine the content and format of the statistical output\&.
+\f[CB]S1C\f[R]: Current survivor space 1 capacity (KB).
+.PP
+\f[CB]S0U\f[R]: Survivor space 0 utilization (KB).
+.PP
+\f[CB]S1U\f[R]: Survivor space 1 utilization (KB).
+.PP
+\f[CB]EC\f[R]: Current eden space capacity (KB).
.PP
-All options and their functionality are subject to change or removal in future releases\&.
-.SS "General Options"
+\f[CB]EU\f[R]: Eden space utilization (KB).
+.PP
+\f[CB]OC\f[R]: Current old space capacity (KB).
.PP
-If you specify one of the general options, then you cannot specify any other option or parameter\&.
+\f[CB]OU\f[R]: Old space utilization (KB).
+.PP
+\f[CB]MC\f[R]: Metaspace Committed Size (KB).
.PP
-\-help
-.RS 4
-Displays a help message\&.
-.RE
+\f[CB]MU\f[R]: Metaspace utilization (KB).
+.PP
+\f[CB]CCSC\f[R]: Compressed class committed size (KB).
+.PP
+\f[CB]CCSU\f[R]: Compressed class space used (KB).
+.PP
+\f[CB]YGC\f[R]: Number of young generation garbage collection (GC) events.
+.PP
+\f[CB]YGCT\f[R]: Young generation garbage collection time.
.PP
-\-options
-.RS 4
-Displays a list of static options\&. See Output Options\&.
+\f[CB]FGC\f[R]: Number of full GC events.
+.PP
+\f[CB]FGCT\f[R]: Full garbage collection time.
+.PP
+\f[CB]GCT\f[R]: Total garbage collection time.
.RE
-.SS "Output Options"
+.TP
+.B \f[CB]\-gccapacity\f[R] \f[I]option\f[R]
+Memory pool generation and space capacities.
+.RS
+.PP
+\f[CB]NGCMN\f[R]: Minimum new generation capacity (KB).
+.PP
+\f[CB]NGCMX\f[R]: Maximum new generation capacity (KB).
+.PP
+\f[CB]NGC\f[R]: Current new generation capacity (KB).
.PP
-If you do not specify a general option, then you can specify output options\&. Output options determine the content and format of the
-\fBjstat\fR
-command\*(Aqs output, and consist of a single
-\fBstatOption\fR, plus any of the other output options (\fB\-h\fR,
-\fB\-t\fR, and
-\fB\-J\fR)\&. The
-\fBstatOption\fR
-must come first\&.
+\f[CB]S0C\f[R]: Current survivor space 0 capacity (KB).
+.PP
+\f[CB]S1C\f[R]: Current survivor space 1 capacity (KB).
+.PP
+\f[CB]EC\f[R]: Current eden space capacity (KB).
+.PP
+\f[CB]OGCMN\f[R]: Minimum old generation capacity (KB).
.PP
-Output is formatted as a table, with columns that are separated by spaces\&. A header row with titles describes the columns\&. Use the
-\fB\-h\fR
-option to set the frequency at which the header is displayed\&. Column header names are consistent among the different options\&. In general, if two options provide a column with the same name, then the data source for the two columns is the same\&.
+\f[CB]OGCMX\f[R]: Maximum old generation capacity (KB).
+.PP
+\f[CB]OGC\f[R]: Current old generation capacity (KB).
.PP
-Use the
-\fB\-t\fR
-option to display a time stamp column, labeled Timestamp as the first column of output\&. The Timestamp column contains the elapsed time, in seconds, since the target JVM started\&. The resolution of the time stamp is dependent on various factors and is subject to variation due to delayed thread scheduling on heavily loaded systems\&.
+\f[CB]OC\f[R]: Current old space capacity (KB).
+.PP
+\f[CB]MCMN\f[R]: Minimum metaspace capacity (KB).
+.PP
+\f[CB]MCMX\f[R]: Maximum metaspace capacity (KB).
.PP
-Use the interval and count parameters to determine how frequently and how many times, respectively, the
-\fBjstat\fR
-command displays its output\&.
+\f[CB]MC\f[R]: Metaspace Committed Size (KB).
+.PP
+\f[CB]CCSMN\f[R]: Compressed class space minimum capacity (KB).
+.PP
+\f[CB]CCSMX\f[R]: Compressed class space maximum capacity (KB).
+.PP
+\f[CB]CCSC\f[R]: Compressed class committed size (KB).
+.PP
+\f[CB]YGC\f[R]: Number of young generation GC events.
.PP
-\fBNote:\fR
-Do not to write scripts to parse the
-\fBjstat\fR
-command\*(Aqs output because the format might change in future releases\&. If you write scripts that parse
-\fBjstat\fR
-command output, then expect to modify them for future releases of this tool\&.
+\f[CB]FGC\f[R]: Number of full GC events.
+.RE
+.TP
+.B \f[CB]\-gccause\f[R] \f[I]option\f[R]
+This option displays the same summary of garbage collection statistics
+as the \f[CB]\-gcutil\f[R] option, but includes the causes of the last
+garbage collection event and (when applicable), the current garbage
+collection event.
+In addition to the columns listed for \f[CB]\-gcutil\f[R], this option
+adds the following columns:
+.RS
+.PP
+\f[CB]LGCC\f[R]: Cause of last garbage collection
+.PP
+\f[CB]GCC\f[R]: Cause of current garbage collection
+.RE
+.TP
+.B \f[CB]\-gcnew\f[R] \f[I]option\f[R]
+New generation statistics.
+.RS
+.PP
+\f[CB]S0C\f[R]: Current survivor space 0 capacity (KB).
+.PP
+\f[CB]S1C\f[R]: Current survivor space 1 capacity (KB).
.PP
-\-\fIstatOption\fR
-.RS 4
-Determines the statistics information the
-\fBjstat\fR
-command displays\&. The following lists the available options\&. Use the
-\fB\-options\fR
-general option to display the list of options for a particular platform installation\&. See Stat Options and Output\&.
-.sp
-\fBclass\fR: Displays statistics about the behavior of the class loader\&.
-.sp
-\fBcompiler\fR: Displays statistics about the behavior of the Java HotSpot VM Just\-in\-Time compiler\&.
-.sp
-\fBgc\fR: Displays statistics about the behavior of the garbage collected heap\&.
-.sp
-\fBgccapacity\fR: Displays statistics about the capacities of the generations and their corresponding spaces\&.
-.sp
-\fBgccause\fR: Displays a summary about garbage collection statistics (same as
-\fB\-gcutil\fR), with the cause of the last and current (when applicable) garbage collection events\&.
-.sp
-\fBgcnew\fR: Displays statistics of the behavior of the new generation\&.
-.sp
-\fBgcnewcapacity\fR: Displays statistics about the sizes of the new generations and its corresponding spaces\&.
-.sp
-\fBgcold\fR: Displays statistics about the behavior of the old generation and metaspace statistics\&.
-.sp
-\fBgcoldcapacity\fR: Displays statistics about the sizes of the old generation\&.
-.sp
-\fBgcmetacapacity\fR: Displays statistics about the sizes of the metaspace\&.
-.sp
-\fBgcutil\fR: Displays a summary about garbage collection statistics\&.
-.sp
-\fBprintcompilation\fR: Displays Java HotSpot VM compilation method statistics\&.
+\f[CB]S0U\f[R]: Survivor space 0 utilization (KB).
+.PP
+\f[CB]S1U\f[R]: Survivor space 1 utilization (KB).
+.PP
+\f[CB]TT\f[R]: Tenuring threshold.
+.PP
+\f[CB]MTT\f[R]: Maximum tenuring threshold.
+.PP
+\f[CB]DSS\f[R]: Desired survivor size (KB).
+.PP
+\f[CB]EC\f[R]: Current eden space capacity (KB).
+.PP
+\f[CB]EU\f[R]: Eden space utilization (KB).
+.PP
+\f[CB]YGC\f[R]: Number of young generation GC events.
+.PP
+\f[CB]YGCT\f[R]: Young generation garbage collection time.
.RE
+.TP
+.B \f[CB]\-gcnewcapacity\f[R] \f[I]option\f[R]
+New generation space size statistics.
+.RS
+.PP
+\f[CB]NGCMN\f[R]: Minimum new generation capacity (KB).
+.PP
+\f[CB]NGCMX\f[R]: Maximum new generation capacity (KB).
+.PP
+\f[CB]NGC\f[R]: Current new generation capacity (KB).
+.PP
+\f[CB]S0CMX\f[R]: Maximum survivor space 0 capacity (KB).
+.PP
+\f[CB]S0C\f[R]: Current survivor space 0 capacity (KB).
+.PP
+\f[CB]S1CMX\f[R]: Maximum survivor space 1 capacity (KB).
.PP
-\-h \fIn\fR
-.RS 4
-Displays a column header every
-\fIn\fR
-samples (output rows), where
-\fIn\fR
-is a positive integer\&. Default value is 0, which displays the column header the first row of data\&.
+\f[CB]S1C\f[R]: Current survivor space 1 capacity (KB).
+.PP
+\f[CB]ECMX\f[R]: Maximum eden space capacity (KB).
+.PP
+\f[CB]EC\f[R]: Current eden space capacity (KB).
+.PP
+\f[CB]YGC\f[R]: Number of young generation GC events.
+.PP
+\f[CB]FGC\f[R]: Number of full GC events.
.RE
+.TP
+.B \f[CB]\-gcold\f[R] \f[I]option\f[R]
+Old generation size statistics.
+.RS
.PP
-\-t
-.RS 4
-Displays a timestamp column as the first column of output\&. The time stamp is the time since the start time of the target JVM\&.
-.RE
+\f[CB]MC\f[R]: Metaspace Committed Size (KB).
+.PP
+\f[CB]MU\f[R]: Metaspace utilization (KB).
+.PP
+\f[CB]CCSC\f[R]: Compressed class committed size (KB).
+.PP
+\f[CB]CCSU\f[R]: Compressed class space used (KB).
+.PP
+\f[CB]OC\f[R]: Current old space capacity (KB).
+.PP
+\f[CB]OU\f[R]: Old space utilization (KB).
+.PP
+\f[CB]YGC\f[R]: Number of young generation GC events.
+.PP
+\f[CB]FGC\f[R]: Number of full GC events.
+.PP
+\f[CB]FGCT\f[R]: Full garbage collection time.
.PP
-\-J\fIjavaOption\fR
-.RS 4
-Passes
-\fBjavaOption\fR
-to the Java application launcher\&. For example,
-\fB\-J\-Xms48m\fR
-sets the startup memory to 48 MB\&. For a complete list of options, see
-java(1)\&.
+\f[CB]GCT\f[R]: Total garbage collection time.
.RE
-.SS "Stat Options and Output"
+.TP
+.B \f[CB]\-gcoldcapacity\f[R] \f[I]option\f[R]
+Old generation statistics.
+.RS
+.PP
+\f[CB]OGCMN\f[R]: Minimum old generation capacity (KB).
+.PP
+\f[CB]OGCMX\f[R]: Maximum old generation capacity (KB).
+.PP
+\f[CB]OGC\f[R]: Current old generation capacity (KB).
+.PP
+\f[CB]OC\f[R]: Current old space capacity (KB).
+.PP
+\f[CB]YGC\f[R]: Number of young generation GC events.
.PP
-The following information summarizes the columns that the
-\fBjstat\fR
-command outputs for each
-\fIstatOption\fR\&.
+\f[CB]FGC\f[R]: Number of full GC events.
+.PP
+\f[CB]FGCT\f[R]: Full garbage collection time.
.PP
-\-class \fIoption\fR
-.RS 4
-Class loader statistics\&.
-.sp
-\fBLoaded\fR: Number of classes loaded\&.
-.sp
-\fBBytes\fR: Number of kBs loaded\&.
-.sp
-\fBUnloaded\fR: Number of classes unloaded\&.
-.sp
-\fBBytes\fR: Number of Kbytes unloaded\&.
-.sp
-\fBTime\fR: Time spent performing class loading and unloading operations\&.
+\f[CB]GCT\f[R]: Total garbage collection time.
.RE
+.TP
+.B \f[CB]\-gcmetacapacity\f[R] \f[I]option\f[R]
+Metaspace size statistics.
+.RS
+.PP
+\f[CB]MCMN\f[R]: Minimum metaspace capacity (KB).
+.PP
+\f[CB]MCMX\f[R]: Maximum metaspace capacity (KB).
+.PP
+\f[CB]MC\f[R]: Metaspace Committed Size (KB).
+.PP
+\f[CB]CCSMN\f[R]: Compressed class space minimum capacity (KB).
.PP
-\-compiler \fIoption\fR
-.RS 4
-Java HotSpot VM Just\-in\-Time compiler statistics\&.
-.sp
-\fBCompiled\fR: Number of compilation tasks performed\&.
-.sp
-\fBFailed\fR: Number of compilations tasks failed\&.
-.sp
-\fBInvalid\fR: Number of compilation tasks that were invalidated\&.
-.sp
-\fBTime\fR: Time spent performing compilation tasks\&.
-.sp
-\fBFailedType\fR: Compile type of the last failed compilation\&.
-.sp
-\fBFailedMethod\fR: Class name and method of the last failed compilation\&.
+\f[CB]CCSMX\f[R]: Compressed class space maximum capacity (KB).
+.PP
+\f[CB]YGC\f[R]: Number of young generation GC events.
+.PP
+\f[CB]FGC\f[R]: Number of full GC events.
+.PP
+\f[CB]FGCT\f[R]: Full garbage collection time.
+.PP
+\f[CB]GCT\f[R]: Total garbage collection time.
.RE
+.TP
+.B \f[CB]\-gcutil\f[R] \f[I]option\f[R]
+Summary of garbage collection statistics.
+.RS
+.PP
+\f[CB]S0\f[R]: Survivor space 0 utilization as a percentage of the
+space\[aq]s current capacity.
+.PP
+\f[CB]S1\f[R]: Survivor space 1 utilization as a percentage of the
+space\[aq]s current capacity.
+.PP
+\f[CB]E\f[R]: Eden space utilization as a percentage of the space\[aq]s
+current capacity.
+.PP
+\f[CB]O\f[R]: Old space utilization as a percentage of the space\[aq]s
+current capacity.
+.PP
+\f[CB]M\f[R]: Metaspace utilization as a percentage of the space\[aq]s
+current capacity.
+.PP
+\f[CB]CCS\f[R]: Compressed class space utilization as a percentage.
+.PP
+\f[CB]YGC\f[R]: Number of young generation GC events.
.PP
-\-gc \fIoption\fR
-.RS 4
-Garbage\-collected heap statistics\&.
-.sp
-\fBS0C\fR: Current survivor space 0 capacity (kB)\&.
-.sp
-\fBS1C\fR: Current survivor space 1 capacity (kB)\&.
-.sp
-\fBS0U\fR: Survivor space 0 utilization (kB)\&.
-.sp
-\fBS1U\fR: Survivor space 1 utilization (kB)\&.
-.sp
-\fBEC\fR: Current eden space capacity (kB)\&.
-.sp
-\fBEU\fR: Eden space utilization (kB)\&.
-.sp
-\fBOC\fR: Current old space capacity (kB)\&.
-.sp
-\fBOU\fR: Old space utilization (kB)\&.
-.sp
-\fBMC\fR: Metaspace capacity (kB)\&.
-.sp
-\fBMU\fR: Metacspace utilization (kB)\&.
-.sp
-\fBCCSC\fR: Compressed class space capacity (kB)\&.
-.sp
-\fBCCSU\fR: Compressed class space used (kB)\&.
-.sp
-\fBYGC\fR: Number of young generation garbage collection events\&.
-.sp
-\fBYGCT\fR: Young generation garbage collection time\&.
-.sp
-\fBFGC\fR: Number of full GC events\&.
-.sp
-\fBFGCT\fR: Full garbage collection time\&.
-.sp
-\fBGCT\fR: Total garbage collection time\&.
+\f[CB]YGCT\f[R]: Young generation garbage collection time.
+.PP
+\f[CB]FGC\f[R]: Number of full GC events.
+.PP
+\f[CB]FGCT\f[R]: Full garbage collection time.
+.PP
+\f[CB]GCT\f[R]: Total garbage collection time.
+.RE
+.TP
+.B \f[CB]\-printcompilation\f[R] \f[I]option\f[R]
+Java HotSpot VM compiler method statistics.
+.RS
+.PP
+\f[CB]Compiled\f[R]: Number of compilation tasks performed by the most
+recently compiled method.
+.PP
+\f[CB]Size\f[R]: Number of bytes of byte code of the most recently
+compiled method.
+.PP
+\f[CB]Type\f[R]: Compilation type of the most recently compiled method.
+.PP
+\f[CB]Method\f[R]: Class name and method name identifying the most
+recently compiled method.
+Class name uses a slash (/) instead of a dot (.) as a name space
+separator.
+The method name is the method within the specified class.
+The format for these two fields is consistent with the HotSpot
+\f[CB]\-XX:+PrintCompilation\f[R] option.
+.RE
+.SH VIRTUAL MACHINE IDENTIFIER
+.PP
+The syntax of the \f[CB]vmid\f[R] string corresponds to the syntax of a
+URI:
+.RS
+.PP
+[\f[I]protocol\f[R]\f[CB]:\f[R]][\f[CB]//\f[R]]\f[I]lvmid\f[R][\f[CB]\@\f[R]\f[I]hostname\f[R][\f[CB]:\f[R]\f[I]port\f[R]][\f[CB]/\f[R]\f[I]servername\f[R]]
.RE
.PP
-\-gccapacity \fIoption\fR
-.RS 4
-Memory pool generation and space capacities\&.
-.sp
-\fBNGCMN\fR: Minimum new generation capacity (kB)\&.
-.sp
-\fBNGCMX\fR: Maximum new generation capacity (kB)\&.
-.sp
-\fBNGC\fR: Current new generation capacity (kB)\&.
-.sp
-\fBS0C\fR: Current survivor space 0 capacity (kB)\&.
-.sp
-\fBS1C\fR: Current survivor space 1 capacity (kB)\&.
-.sp
-\fBEC\fR: Current eden space capacity (kB)\&.
-.sp
-\fBOGCMN\fR: Minimum old generation capacity (kB)\&.
-.sp
-\fBOGCMX\fR: Maximum old generation capacity (kB)\&.
-.sp
-\fBOGC\fR: Current old generation capacity (kB)\&.
-.sp
-\fBOC\fR: Current old space capacity (kB)\&.
-.sp
-\fBMCMN\fR: Minimum metaspace capacity (kB)\&.
-.sp
-\fBMCMX\fR: Maximum metaspace capacity (kB)\&.
-.sp
-\fBMC\fR: Metaspace capacity (kB)\&.
-.sp
-\fBCCSMN\fR: Compressed class space minimum capacity (kB)\&.
-.sp
-\fBCCSMX\fR: Compressed class space maximum capacity (kB)\&.
-.sp
-\fBCCSC\fR: Compressed class space capacity (kB)\&.
-.sp
-\fBYGC\fR: Number of young generation GC events\&.
-.sp
-\fBFGC\fR: Number of full GC events\&.
-.RE
-.PP
-\-gccause \fIoption\fR
-.RS 4
-This option displays the same summary of garbage collection statistics as the
-\fB\-gcutil\fR
-option, but includes the causes of the last garbage collection event and (when applicable) the current garbage collection event\&. In addition to the columns listed for
-\fB\-gcutil\fR, this option adds the following columns\&.
-.sp
-\fBLGCC\fR: Cause of last garbage collection
-.sp
-\fBGCC\fR: Cause of current garbage collection
+The syntax of the \f[CB]vmid\f[R] string corresponds to the syntax of a
+URI.
+The \f[CB]vmid\f[R] string can vary from a simple integer that represents
+a local JVM to a more complex construction that specifies a
+communications protocol, port number, and other implementation\-specific
+values.
+.TP
+.B \f[I]protocol\f[R]
+The communications protocol.
+If the \f[I]protocol\f[R] value is omitted and a host name isn\[aq]t
+specified, then the default protocol is a platform\-specific optimized
+local protocol.
+If the \f[I]protocol\f[R] value is omitted and a host name is specified,
+then the default protocol is \f[CB]rmi\f[R].
+.RS
.RE
-.PP
-\-gcnew \fIoption\fR
-.RS 4
-New generation statistics\&.
-.sp
-\fBS0C\fR: Current survivor space 0 capacity (kB)\&.
-.sp
-\fBS1C\fR: Current survivor space 1 capacity (kB)\&.
-.sp
-\fBS0U\fR: Survivor space 0 utilization (kB)\&.
-.sp
-\fBS1U\fR: Survivor space 1 utilization (kB)\&.
-.sp
-\fBTT\fR: Tenuring threshold\&.
-.sp
-\fBMTT\fR: Maximum tenuring threshold\&.
-.sp
-\fBDSS\fR: Desired survivor size (kB)\&.
-.sp
-\fBEC\fR: Current eden space capacity (kB)\&.
-.sp
-\fBEU\fR: Eden space utilization (kB)\&.
-.sp
-\fBYGC\fR: Number of young generation GC events\&.
-.sp
-\fBYGCT\fR: Young generation garbage collection time\&.
-.RE
-.PP
-\-gcnewcapacity \fIoption\fR
-.RS 4
-New generation space size statistics\&.
-.sp
-\fBNGCMN\fR: Minimum new generation capacity (kB)\&.
-.sp
-\fBNGCMX\fR: Maximum new generation capacity (kB)\&.
-.sp
-\fBNGC\fR: Current new generation capacity (kB)\&.
-.sp
-\fBS0CMX\fR: Maximum survivor space 0 capacity (kB)\&.
-.sp
-\fBS0C\fR: Current survivor space 0 capacity (kB)\&.
-.sp
-\fBS1CMX\fR: Maximum survivor space 1 capacity (kB)\&.
-.sp
-\fBS1C\fR: Current survivor space 1 capacity (kB)\&.
-.sp
-\fBECMX\fR: Maximum eden space capacity (kB)\&.
-.sp
-\fBEC\fR: Current eden space capacity (kB)\&.
-.sp
-\fBYGC\fR: Number of young generation GC events\&.
-.sp
-\fBFGC\fR: Number of full GC events\&.
-.RE
+.TP
+.B \f[I]lvmid\f[R]
+The local virtual machine identifier for the target JVM.
+The \f[I]lvmid\f[R] is a platform\-specific value that uniquely
+identifies a JVM on a system.
+The \f[I]lvmid\f[R] is the only required component of a virtual machine
+identifier.
+The \f[I]lvmid\f[R] is typically, but not necessarily, the operating
+system\[aq]s process identifier for the target JVM process.
+You can use the \f[CB]jps\f[R] command to determine the \f[I]lvmid\f[R]
+provided the JVM processes is not running in a separate docker instance.
+You can also determine the \f[I]lvmid\f[R] on Oracle Solaris, Linux, and
+OS X platforms with the \f[CB]ps\f[R] command, and on Windows with the
+Windows Task Manager.
+.RS
.PP
-\-gcold \fIoption\fR
-.RS 4
-Old generation and metaspace behavior statistics\&.
-.sp
-\fBMC\fR: Metaspace capacity (kB)\&.
-.sp
-\fBMU\fR: Metaspace utilization (kB)\&.
-.sp
-\fBCCSC\fR: Compressed class space capacity (kB)\&.
-.sp
-\fBCCSU\fR: Compressed class space used (kB)\&.
-.sp
-\fBOC\fR: Current old space capacity (kB)\&.
-.sp
-\fBOU\fR: Old space utilization (kB)\&.
-.sp
-\fBYGC\fR: Number of young generation GC events\&.
-.sp
-\fBFGC\fR: Number of full GC events\&.
-.sp
-\fBFGCT\fR: Full garbage collection time\&.
-.sp
-\fBGCT\fR: Total garbage collection time\&.
+\f[B]Note:\f[R] JDK 10 has added support for using the Attach API when
+attaching to Java processes running in a separate docker process.
+However, the \f[CB]jps\f[R] command will not list the JVM processes that
+are running in a separate docker instance.
+If you are trying to connect a Linux host with a Virtual Machine that is
+in a docker container, you must use tools such as \f[CB]ps\f[R] to look up
+the PID of the JVM.
.RE
-.PP
-\-gcoldcapacity \fIoption\fR
-.RS 4
-Old generation size statistics\&.
-.sp
-\fBOGCMN\fR: Minimum old generation capacity (kB)\&.
-.sp
-\fBOGCMX\fR: Maximum old generation capacity (kB)\&.
-.sp
-\fBOGC\fR: Current old generation capacity (kB)\&.
-.sp
-\fBOC\fR: Current old space capacity (kB)\&.
-.sp
-\fBYGC\fR: Number of young generation GC events\&.
-.sp
-\fBFGC\fR: Number of full GC events\&.
-.sp
-\fBFGCT\fR: Full garbage collection time\&.
-.sp
-\fBGCT\fR: Total garbage collection time\&.
+.TP
+.B \f[I]hostname\f[R]
+A host name or IP address that indicates the target host.
+If the \f[I]hostname\f[R] value is omitted, then the target host is the
+local host.
+.RS
.RE
-.PP
-\-gcmetacapacity \fIoption\fR
-.RS 4
-Metaspace size statistics\&.
-.sp
-\fBMCMN\fR: Minimum metaspace capacity (kB)\&.
-.sp
-\fBMCMX\fR: Maximum metaspace capacity (kB)\&.
-.sp
-\fBMC\fR: Metaspace capacity (kB)\&.
-.sp
-\fBCCSMN\fR: Compressed class space minimum capacity (kB)\&.
-.sp
-\fBCCSMX\fR: Compressed class space maximum capacity (kB)\&.
-.sp
-\fBYGC\fR: Number of young generation GC events\&.
-.sp
-\fBFGC\fR: Number of full GC events\&.
-.sp
-\fBFGCT\fR: Full garbage collection time\&.
-.sp
-\fBGCT\fR: Total garbage collection time\&.
+.TP
+.B \f[I]port\f[R]
+The default port for communicating with the remote server.
+If the \f[I]hostname\f[R] value is omitted or the \f[I]protocol\f[R] value
+specifies an optimized, local protocol, then the \f[I]port\f[R] value is
+ignored.
+Otherwise, treatment of the \f[I]port\f[R] parameter is
+implementation\-specific.
+For the default \f[CB]rmi\f[R] protocol, the port value indicates the port
+number for the \f[CB]rmiregistry\f[R] on the remote host.
+If the \f[I]port\f[R] value is omitted and the \f[I]protocol\f[R] value
+indicates \f[CB]rmi\f[R], then the default rmiregistry port (1099) is
+used.
+.RS
.RE
-.PP
-\-gcutil \fIoption\fR
-.RS 4
-Summary of garbage collection statistics\&.
-.sp
-\fBS0\fR: Survivor space 0 utilization as a percentage of the space\*(Aqs current capacity\&.
-.sp
-\fBS1\fR: Survivor space 1 utilization as a percentage of the space\*(Aqs current capacity\&.
-.sp
-\fBE\fR: Eden space utilization as a percentage of the space\*(Aqs current capacity\&.
-.sp
-\fBO\fR: Old space utilization as a percentage of the space\*(Aqs current capacity\&.
-.sp
-\fBM\fR: Metaspace utilization as a percentage of the space\*(Aqs current capacity\&.
-.sp
-\fBCCS\fR: Compressed class space utilization as a percentage\&.
-.sp
-\fBYGC\fR: Number of young generation GC events\&.
-.sp
-\fBYGCT\fR: Young generation garbage collection time\&.
-.sp
-\fBFGC\fR: Number of full GC events\&.
-.sp
-\fBFGCT\fR: Full garbage collection time\&.
-.sp
-\fBGCT\fR: Total garbage collection time\&.
+.TP
+.B \f[I]servername\f[R]
+The treatment of the \f[I]servername\f[R] parameter depends on
+implementation.
+For the optimized local protocol, this field is ignored.
+For the \f[CB]rmi\f[R] protocol, it represents the name of the RMI remote
+object on the remote host.
+.RS
.RE
-.PP
-\-printcompilation \fIoption\fR
-.RS 4
-Java HotSpot VM compiler method statistics\&.
-.sp
-\fBCompiled\fR: Number of compilation tasks performed by the most recently compiled method\&.
-.sp
-\fBSize\fR: Number of bytes of byte code of the most recently compiled method\&.
-.sp
-\fBType\fR: Compilation type of the most recently compiled method\&.
-.sp
-\fBMethod\fR: Class name and method name identifying the most recently compiled method\&. Class name uses slash (/) instead of dot (\&.) as a name space separator\&. Method name is the method within the specified class\&. The format for these two fields is consistent with the HotSpot
-\fB\-XX:+PrintCompilation\fR
-option\&.
-.RE
-.SH "EXAMPLES"
+.SH EXAMPLES
.PP
This section presents some examples of monitoring a local JVM with an
-\fIlvmid\fR
-of 21891\&.
-.SS "The gcutil Option"
+\f[I]lvmid\f[R] of 21891.
+.SH THE GCUTIL OPTION
.PP
-This example attaches to lvmid 21891 and takes 7 samples at 250 millisecond intervals and displays the output as specified by the \-\fBgcutil\fR
-option\&.
+This example attaches to lvmid 21891 and takes 7 samples at 250
+millisecond intervals and displays the output as specified by the
+\f[CB]\-gcutil\f[R] option.
.PP
-The output of this example shows that a young generation collection occurred between the third and fourth sample\&. The collection took 0\&.078 seconds and promoted objects from the eden space (E) to the old space (O), resulting in an increase of old space utilization from 66\&.80% to 68\&.19%\&. Before the collection, the survivor space was 97\&.02% utilized, but after this collection it is 91\&.03% utilized\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjstat \-gcutil 21891 250 7\fR
-\fB S0 S1 E O M CCS YGC YGCT FGC FGCT GCT \fR
-\fB 0\&.00 97\&.02 70\&.31 66\&.80 95\&.52 89\&.14 7 0\&.300 0 0\&.000 0\&.300\fR
-\fB 0\&.00 97\&.02 86\&.23 66\&.80 95\&.52 89\&.14 7 0\&.300 0 0\&.000 0\&.300\fR
-\fB 0\&.00 97\&.02 96\&.53 66\&.80 95\&.52 89\&.14 7 0\&.300 0 0\&.000 0\&.300\fR
-\fB 91\&.03 0\&.00 1\&.98 68\&.19 95\&.89 91\&.24 8 0\&.378 0 0\&.000 0\&.378\fR
-\fB 91\&.03 0\&.00 15\&.82 68\&.19 95\&.89 91\&.24 8 0\&.378 0 0\&.000 0\&.378\fR
-\fB 91\&.03 0\&.00 17\&.80 68\&.19 95\&.89 91\&.24 8 0\&.378 0 0\&.000 0\&.378\fR
-\fB 91\&.03 0\&.00 17\&.80 68\&.19 95\&.89 91\&.24 8 0\&.378 0 0\&.000 0\&.378\fR
-.fi
-.if n \{\
-.RE
-.\}
-.SS "Repeat the Column Header String"
-.PP
-This example attaches to lvmid 21891 and takes samples at 250 millisecond intervals and displays the output as specified by
-\fB\-gcnew\fR
-option\&. In addition, it uses the
-\fB\-h3\fR
-option to output the column header after every 3 lines of data\&.
-.PP
-In addition to showing the repeating header string, this example shows that between the second and third samples, a young GC occurred\&. Its duration was 0\&.001 seconds\&. The collection found enough active data that the survivor space 0 utilization (S0U) would have exceeded the desired survivor Size (DSS)\&. As a result, objects were promoted to the old generation (not visible in this output), and the tenuring threshold (TT) was lowered from 31 to 2\&.
-.PP
-Another collection occurs between the fifth and sixth samples\&. This collection found very few survivors and returned the tenuring threshold to 31\&.
-.sp
-.if n \{\
-.RS 4
-.\}
+The output of this example shows that a young generation collection
+occurred between the third and fourth sample.
+The collection took 0.078 seconds and promoted objects from the eden
+space (E) to the old space (O), resulting in an increase of old space
+utilization from 66.80% to 68.19%.
+Before the collection, the survivor space was 97.02% utilized, but after
+this collection it\[aq]s 91.03% utilized.
+.IP
.nf
-\fBjstat \-gcnew \-h3 21891 250\fR
-\fB S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT\fR
-\fB 64\&.0 64\&.0 0\&.0 31\&.7 31 31 32\&.0 512\&.0 178\&.6 249 0\&.203\fR
-\fB 64\&.0 64\&.0 0\&.0 31\&.7 31 31 32\&.0 512\&.0 355\&.5 249 0\&.203\fR
-\fB 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 21\&.9 250 0\&.204\fR
-\fB S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT\fR
-\fB 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 245\&.9 250 0\&.204\fR
-\fB 64\&.0 64\&.0 35\&.4 0\&.0 2 31 32\&.0 512\&.0 421\&.1 250 0\&.204\fR
-\fB 64\&.0 64\&.0 0\&.0 19\&.0 31 31 32\&.0 512\&.0 84\&.4 251 0\&.204\fR
-\fB S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT\fR
-\fB 64\&.0 64\&.0 0\&.0 19\&.0 31 31 32\&.0 512\&.0 306\&.7 251 0\&.204\fR
-
+\f[CB]
+jstat\ \-gcutil\ 21891\ 250\ 7
+\ \ S0\ \ \ \ \ S1\ \ \ \ \ E\ \ \ \ \ \ O\ \ \ \ \ \ M\ \ \ \ \ CCS\ \ \ \ YGC\ \ \ \ \ YGCT\ \ \ \ FGC\ \ \ \ FGCT\ \ \ \ \ GCT
+\ \ 0.00\ \ 97.02\ \ 70.31\ \ 66.80\ \ 95.52\ \ 89.14\ \ \ \ \ \ 7\ \ \ \ 0.300\ \ \ \ \ 0\ \ \ \ 0.000\ \ \ \ 0.300
+\ \ 0.00\ \ 97.02\ \ 86.23\ \ 66.80\ \ 95.52\ \ 89.14\ \ \ \ \ \ 7\ \ \ \ 0.300\ \ \ \ \ 0\ \ \ \ 0.000\ \ \ \ 0.300
+\ \ 0.00\ \ 97.02\ \ 96.53\ \ 66.80\ \ 95.52\ \ 89.14\ \ \ \ \ \ 7\ \ \ \ 0.300\ \ \ \ \ 0\ \ \ \ 0.000\ \ \ \ 0.300
+\ 91.03\ \ \ 0.00\ \ \ 1.98\ \ 68.19\ \ 95.89\ \ 91.24\ \ \ \ \ \ 8\ \ \ \ 0.378\ \ \ \ \ 0\ \ \ \ 0.000\ \ \ \ 0.378
+\ 91.03\ \ \ 0.00\ \ 15.82\ \ 68.19\ \ 95.89\ \ 91.24\ \ \ \ \ \ 8\ \ \ \ 0.378\ \ \ \ \ 0\ \ \ \ 0.000\ \ \ \ 0.378
+\ 91.03\ \ \ 0.00\ \ 17.80\ \ 68.19\ \ 95.89\ \ 91.24\ \ \ \ \ \ 8\ \ \ \ 0.378\ \ \ \ \ 0\ \ \ \ 0.000\ \ \ \ 0.378
+\ 91.03\ \ \ 0.00\ \ 17.80\ \ 68.19\ \ 95.89\ \ 91.24\ \ \ \ \ \ 8\ \ \ \ 0.378\ \ \ \ \ 0\ \ \ \ 0.000\ \ \ \ 0.378
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.SS "Include a Time Stamp for Each Sample"
+.SH REPEAT THE COLUMN HEADER STRING
+.PP
+This example attaches to lvmid 21891 and takes samples at 250
+millisecond intervals and displays the output as specified by
+\f[CB]\-gcnew\f[R] option.
+In addition, it uses the \f[CB]\-h3\f[R] option to output the column
+header after every 3 lines of data.
.PP
-This example attaches to lvmid 21891 and takes 3 samples at 250 millisecond intervals\&. The
-\fB\-t\fR
-option is used to generate a time stamp for each sample in the first column\&.
+In addition to showing the repeating header string, this example shows
+that between the second and third samples, a young GC occurred.
+Its duration was 0.001 seconds.
+The collection found enough active data that the survivor space 0
+utilization (S0U) would have exceeded the desired survivor size (DSS).
+As a result, objects were promoted to the old generation (not visible in
+this output), and the tenuring threshold (TT) was lowered from 31 to 2.
.PP
-The Timestamp column reports the elapsed time in seconds since the start of the target JVM\&. In addition, the
-\fB\-gcoldcapacity\fR
-output shows the old generation capacity (OGC) and the old space capacity (OC) increasing as the heap expands to meet allocation or promotion demands\&. The old generation capacity (OGC) has grown from 11,696 kB to 13,820 kB after the eighty\-first full garbage collection (FGC)\&. The maximum capacity of the generation (and space) is 60,544 kB (OGCMX), so it still has room to expand\&.
-.sp
-.if n \{\
-.RS 4
-.\}
+Another collection occurs between the fifth and sixth samples.
+This collection found very few survivors and returned the tenuring
+threshold to 31.
+.IP
.nf
-\fBTimestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT\fR
-\fB 150\&.1 1408\&.0 60544\&.0 11696\&.0 11696\&.0 194 80 2\&.874 3\&.799\fR
-\fB 150\&.4 1408\&.0 60544\&.0 13820\&.0 13820\&.0 194 81 2\&.938 3\&.863\fR
-\fB 150\&.7 1408\&.0 60544\&.0 13820\&.0 13820\&.0 194 81 2\&.938 3\&.863\fR
-
+\f[CB]
+jstat\ \-gcnew\ \-h3\ 21891\ 250
+\ S0C\ \ \ \ S1C\ \ \ \ S0U\ \ \ \ S1U\ \ \ TT\ MTT\ \ DSS\ \ \ \ \ \ EC\ \ \ \ \ \ \ EU\ \ \ \ \ YGC\ \ \ \ \ YGCT
+\ \ 64.0\ \ \ 64.0\ \ \ \ 0.0\ \ \ 31.7\ 31\ \ 31\ \ \ 32.0\ \ \ \ 512.0\ \ \ \ 178.6\ \ \ \ 249\ \ \ \ 0.203
+\ \ 64.0\ \ \ 64.0\ \ \ \ 0.0\ \ \ 31.7\ 31\ \ 31\ \ \ 32.0\ \ \ \ 512.0\ \ \ \ 355.5\ \ \ \ 249\ \ \ \ 0.203
+\ \ 64.0\ \ \ 64.0\ \ \ 35.4\ \ \ \ 0.0\ \ 2\ \ 31\ \ \ 32.0\ \ \ \ 512.0\ \ \ \ \ 21.9\ \ \ \ 250\ \ \ \ 0.204
+\ S0C\ \ \ \ S1C\ \ \ \ S0U\ \ \ \ S1U\ \ \ TT\ MTT\ \ DSS\ \ \ \ \ \ EC\ \ \ \ \ \ \ EU\ \ \ \ \ YGC\ \ \ \ \ YGCT
+\ \ 64.0\ \ \ 64.0\ \ \ 35.4\ \ \ \ 0.0\ \ 2\ \ 31\ \ \ 32.0\ \ \ \ 512.0\ \ \ \ 245.9\ \ \ \ 250\ \ \ \ 0.204
+\ \ 64.0\ \ \ 64.0\ \ \ 35.4\ \ \ \ 0.0\ \ 2\ \ 31\ \ \ 32.0\ \ \ \ 512.0\ \ \ \ 421.1\ \ \ \ 250\ \ \ \ 0.204
+\ \ 64.0\ \ \ 64.0\ \ \ \ 0.0\ \ \ 19.0\ 31\ \ 31\ \ \ 32.0\ \ \ \ 512.0\ \ \ \ \ 84.4\ \ \ \ 251\ \ \ \ 0.204
+\ S0C\ \ \ \ S1C\ \ \ \ S0U\ \ \ \ S1U\ \ \ TT\ MTT\ \ DSS\ \ \ \ \ \ EC\ \ \ \ \ \ \ EU\ \ \ \ \ YGC\ \ \ \ \ YGCT
+\ \ 64.0\ \ \ 64.0\ \ \ \ 0.0\ \ \ 19.0\ 31\ \ 31\ \ \ 32.0\ \ \ \ 512.0\ \ \ \ 306.7\ \ \ \ 251\ \ \ \ 0.204
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.SS "Monitor Instrumentation for a Remote JVM"
+.SH INCLUDE A TIME STAMP FOR EACH SAMPLE
+.PP
+This example attaches to lvmid 21891 and takes 3 samples at 250
+millisecond intervals.
+The \f[CB]\-t\f[R] option is used to generate a time stamp for each sample
+in the first column.
.PP
-This example attaches to lvmid 40496 on the system named remote\&.domain using the
-\fB\-gcutil\fR
-option, with samples taken every second indefinitely\&.
+The Timestamp column reports the elapsed time in seconds since the start
+of the target JVM.
+In addition, the \f[CB]\-gcoldcapacity\f[R] output shows the old
+generation capacity (OGC) and the old space capacity (OC) increasing as
+the heap expands to meet allocation or promotion demands.
+The old generation capacity (OGC) has grown from 11,696 KB to 13,820 KB
+after the eighty\-first full garbage collection (FGC).
+The maximum capacity of the generation (and space) is 60,544 KB (OGCMX),
+so it still has room to expand.
+.IP
+.nf
+\f[CB]
+Timestamp\ \ \ \ \ \ OGCMN\ \ \ \ OGCMX\ \ \ \ \ OGC\ \ \ \ \ \ \ OC\ \ \ \ \ \ \ YGC\ \ \ FGC\ \ \ \ FGCT\ \ \ \ GCT
+\ \ \ \ \ \ \ \ \ \ 150.1\ \ \ 1408.0\ \ 60544.0\ \ 11696.0\ \ 11696.0\ \ \ 194\ \ \ \ 80\ \ \ \ 2.874\ \ \ 3.799
+\ \ \ \ \ \ \ \ \ \ 150.4\ \ \ 1408.0\ \ 60544.0\ \ 13820.0\ \ 13820.0\ \ \ 194\ \ \ \ 81\ \ \ \ 2.938\ \ \ 3.863
+\ \ \ \ \ \ \ \ \ \ 150.7\ \ \ 1408.0\ \ 60544.0\ \ 13820.0\ \ 13820.0\ \ \ 194\ \ \ \ 81\ \ \ \ 2.938\ \ \ 3.863
+\f[R]
+.fi
+.SH MONITOR INSTRUMENTATION FOR A REMOTE JVM
+.PP
+This example attaches to lvmid 40496 on the system named
+\f[CB]remote.domain\f[R] using the \f[CB]\-gcutil\f[R] option, with samples
+taken every second indefinitely.
.PP
The lvmid is combined with the name of the remote host to construct a
-\fIvmid\fR
-of
-\fB40496@remote\&.domain\fR\&. This vmid results in the use of the
-\fBrmi\fR
-protocol to communicate to the default
-\fBjstatd\fR
-server on the remote host\&. The
-\fBjstatd\fR
-server is located using the
-\fBrmiregistry\fR
-command on
-\fBremote\&.domain\fR
-that is bound to the default port of the
-\fBrmiregistry\fR
-command (port 1099)\&.
-.sp
-.if n \{\
-.RS 4
-.\}
+vmid of \f[CB]40496\@remote.domain\f[R].
+This vmid results in the use of the \f[CB]rmi\f[R] protocol to communicate
+to the default \f[CB]jstatd\f[R] server on the remote host.
+The \f[CB]jstatd\f[R] server is located using the \f[CB]rmiregistry\f[R]
+command on \f[CB]remote.domain\f[R] that\[aq]s bound to the default port
+of the \f[CB]rmiregistry\f[R] command (port 1099).
+.IP
.nf
-\fBjstat \-gcutil 40496@remote\&.domain 1000\fR
-\fB\fI\&.\&.\&. output omitted\fR\fR
-
+\f[CB]
+jstat\ \-gcutil\ 40496\@remote.domain\ 1000
+\&...\ output\ omitted
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.SH "SEE ALSO"
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-java(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jps(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jstatd(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-rmiregistry(1)
-.RE
-.br
-'pl 8.5i
-'bp
--- a/src/jdk.jconsole/share/man/jconsole.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jconsole/share/man/jconsole.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,93 +19,84 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Java Troubleshooting, Profiling, Monitoring and Management Tools
-.\" Title: jconsole.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jconsole 1 "21 November 2013" "JDK 8" "Java Troubleshooting, Profiling, Monitoring and Management Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jconsole \- Starts a graphical console that lets you monitor and manage Java applications\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjconsole\fR [ \fIoptions\fR ] [ connection \&.\&.\&. ]
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.TP
-connection = \fIpid\fR | \fIhost\fR:\fIport\fR | \fIjmxURL\fR
-The \f3pid\fR value is the process ID of a local Java Virtual Machine (JVM)\&. The JVM must be running with the same user ID as the user ID running the \f3jconsole\fR command\&.The \f3host:port\fR values are the name of the host system on which the JVM is running, and the port number specified by the system property \f3com\&.sun\&.management\&.jmxremote\&.port\fR when the JVM was started\&.The \f3jmxUrl\fR value is the address of the JMX agent to be connected to as described in JMXServiceURL\&.
-
-For more information about the \f3connection\fR parameter, see Monitoring and Management Using JMX Technology at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/agent\&.html
-
-See also the \f3JMXServiceURL\fR class description at http://docs\&.oracle\&.com/javase/8/docs/api/javax/management/remote/JMXServiceURL\&.html
-.SH DESCRIPTION
-The \f3jconsole\fR command starts a graphical console tool that lets you monitor and manage Java applications and virtual machines on a local or remote machine\&.
+.TH "JCONSOLE" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jconsole \- start a graphical console to monitor and manage Java
+applications
+.SH SYNOPSIS
+.PP
+\f[CB]jconsole\f[R] [\f[CB]\-interval=\f[R]\f[I]n\f[R]] [\f[CB]\-notile\f[R]]
+[\f[CB]\-plugin\f[R] \f[I]path\f[R]] [\f[CB]\-version\f[R]]
+[\f[I]connection\f[R] ...
+] [\f[CB]\-J\f[R]\f[I]input_arguments\f[R]]
.PP
-On Windows, the \f3jconsole\fR command does not associate with a console window\&. It does, however, display a dialog box with error information when the \f3jconsole\fR command fails\&.
-.SH OPTIONS
+\f[CB]jconsole\f[R] \f[CB]\-help\f[R]
+.SH OPTIONS
.TP
--interval\fI=n\fR
-.br
-Sets the update interval to \fIn\fR seconds (default is 4 seconds)\&.
+.B \f[CB]\-interval\f[R]
+Sets the update interval to \f[CB]n\f[R] seconds (default is 4 seconds).
+.RS
+.RE
+.TP
+.B \f[CB]\-notile\f[R]
+Doesn\[aq]t tile the windows for two or more connections.
+.RS
+.RE
.TP
--notile
-.br
-Does not tile windows initially (for two or more connections)\&.
+.B \f[CB]\-pluginpath\f[R] \f[I]path\f[R]
+Specifies the path that \f[CB]jconsole\f[R] uses to look up plug\-ins.
+The plug\-in \f[I]path\f[R] should contain a provider\-configuration file
+named \f[CB]META\-INF/services/com.sun.tools.jconsole.JConsolePlugin\f[R]
+that contains one line for each plug\-in.
+The line specifies the fully qualified class name of the class
+implementing the \f[CB]com.sun.tools.jconsole.JConsolePlugin\f[R] class.
+.RS
+.RE
.TP
--pluginpath \fIplugins\fR
-.br
-Specifies a list of directories or JAR files to be searched for \f3JConsole\fR plug-ins\&. The \fIplugins\fR path should contain a provider-configuration file named \f3META-INF/services/com\&.sun\&.tools\&.jconsole\&.JConsolePlugin\fR that contains one line for each plug-in\&. The line specifies the fully qualified class name of the class implementing the \f3com\&.sun\&.tools\&.jconsole\&.JConsolePlugin\fR class\&.
-.TP
--version
-.br
-Displays release information and exits\&.
+.B \f[CB]\-version\f[R]
+Prints the program version.
+.RS
+.RE
.TP
--help
-.br
-Displays a help message\&.
+.B \f[I]connection\f[R] = \f[I]pid\f[R] | \f[I]host\f[R]\f[CB]:\f[R]\f[I]port\f[R] | \f[I]jmxURL\f[R]
+A connection is described by either \f[I]pid\f[R],
+\f[I]host\f[R]\f[CB]:\f[R]\f[I]port\f[R] or \f[I]jmxURL\f[R].
+.RS
+.IP \[bu] 2
+The \f[I]pid\f[R] value is the process ID of a target process.
+The JVM must be running with the same user ID as the user ID running the
+\f[CB]jconsole\f[R] command.
+.IP \[bu] 2
+The \f[I]host\f[R]\f[CB]:\f[R]\f[I]port\f[R] values are the name of the host
+system on which the JVM is running, and the port number specified by the
+system property \f[CB]com.sun.management.jmxremote.port\f[R] when the JVM
+was started.
+.IP \[bu] 2
+The \f[I]jmxUrl\f[R] value is the address of the JMX agent to be
+connected to as described in JMXServiceURL.
+.RE
.TP
--J\fIflag\fR
-.br
-Passes \f3flag\fR to the JVM on which the \f3jconsole\fR command is run\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-Using JConsole at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/jconsole\&.html
-.TP 0.2i
-\(bu
-Monitoring and Management Using JMX Technology at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/agent\&.html
-.TP 0.2i
-\(bu
-The \f3JMXServiceURL\fR class description at http://docs\&.oracle\&.com/javase/8/docs/api/javax/management/remote/JMXServiceURL\&.html
+.B \f[CB]\-J\f[R]\f[I]input_arguments\f[R]
+Passes \f[I]input_arguments\f[R] to the JVM on which the
+\f[CB]jconsole\f[R] command is run.
+.RS
+.RE
+.TP
+.B \f[CB]\-help\f[R] or \f[CB]\-\-help\f[R]
+Displays the help message for the command.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
+.SH DESCRIPTION
+.PP
+The \f[CB]jconsole\f[R] command starts a graphical console tool that lets
+you monitor and manage Java applications and virtual machines on a local
+or remote machine.
+.PP
+On Windows, the \f[CB]jconsole\f[R] command doesn\[aq]t associate with a
+console window.
+It does, however, display a dialog box with error information when the
+\f[CB]jconsole\f[R] command fails.
--- a/src/jdk.jdeps/share/man/javap.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jdeps/share/man/javap.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1994, 2014, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,361 +19,257 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Title: javap
-.\" Language: English
-.\" Date: 8 August 2014
-.\" SectDesc: Basic Tools
-.\" Software: JDK 8
-.\" Arch: generic
-.\" Part Number: E38207-03
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH "javap" "1" "8 August 2014" "JDK 8" "Basic Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-javap \- Disassembles one or more class files\&.
-.SH "SYNOPSIS"
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjavap\fR [\fIoptions\fR] \fIclassfile\fR\&.\&.\&.
-.fi
-.if n \{\
+.TH "JAVAP" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+javap \- disassemble one or more class files
+.SH SYNOPSIS
+.PP
+\f[CB]javap\f[R] [\f[I]options\f[R]] \f[I]classes\f[R]...
+.TP
+.B \f[I]options\f[R]
+Specifies the command\-line options.
+See \f[B]Options for javap\f[R].
+.RS
.RE
-.\}
+.TP
+.B \f[I]classes\f[R]
+Specifies one or more classes separated by spaces to be processed for
+annotations.
+You can specify a class that can be found in the class path by its file
+name, URL, or by its fully qualified class name.
+.RS
+.PP
+Examples:
+.RS
.PP
-\fIoptions\fR
-.RS 4
-The command\-line options\&. See Options\&.
+\f[CB]path/to/MyClass.class\f[R]
.RE
+.RS
.PP
-\fIclassfile\fR
-.RS 4
-One or more classes separated by spaces to be processed for annotations such as DocFooter\&.class\&. You can specify a class that can be found in the class path, by its file name or with a URL such as
-\fBfile:///home/user/myproject/src/DocFooter\&.class\fR\&.
+\f[CB]jar:file:///path/to/MyJar.jar!/mypkg/MyClass.class\f[R]
.RE
-.SH "DESCRIPTION"
+.RS
+.PP
+\f[CB]java.lang.Object\f[R]
+.RE
+.RE
+.SH DESCRIPTION
.PP
-The
-\fBjavap\fR
-command disassembles one or more class files\&. The output depends on the options used\&. When no options are used, then the
-\fBjavap\fR
-command prints the package, protected and public fields, and methods of the classes passed to it\&. The
-\fBjavap\fR
-command prints its output to
-\fBstdout\fR\&.
-.SH "OPTIONS"
+The \f[CB]javap\f[R] command disassembles one or more class files.
+The output depends on the options used.
+When no options are used, the \f[CB]javap\f[R] command prints the
+protected and public fields, and methods of the classes passed to it.
.PP
-\-help
-.br
-\-\-help
-.br
-\-?
-.RS 4
-Prints a help message for the
-\fBjavap\fR
-command\&.
-.RE
+The \f[CB]javap\f[R] command isn\[aq]t multirelease JAR aware.
+Using the class path form of the command results in viewing the base
+entry in all JAR files, multirelease or not.
+Using the URL form, you can use the URL form of an argument to specify a
+specific version of a class to be disassembled.
.PP
-\-version
-.RS 4
-Prints release information\&.
-.RE
+The \f[CB]javap\f[R] command prints its output to \f[CB]stdout\f[R].
.PP
-\-l
-.RS 4
-Prints line and local variable tables\&.
-.RE
+\f[B]Note:\f[R]
.PP
-\-public
-.RS 4
-Shows only public classes and members\&.
+In tools that support \f[CB]\-\-\f[R] style options, the GNU\-style
+options can use the equal sign (\f[CB]=\f[R]) instead of a white space to
+separate the name of an option from its value.
+.SH OPTIONS FOR JAVAP
+.TP
+.B \f[CB]\-help\f[R], \f[CB]\-\-help\f[R] , or \f[CB]\-?\f[R]
+Prints a help message for the \f[CB]javap\f[R] command.
+.RS
.RE
-.PP
-\-protected
-.RS 4
-Shows only protected and public classes and members\&.
+.TP
+.B \f[CB]\-version\f[R]
+Prints release information.
+.RS
.RE
-.PP
-\-private
-.br
-\-p
-.RS 4
-Shows all classes and members\&.
+.TP
+.B \f[CB]\-verbose\f[R] or \f[CB]\-v\f[R]
+Prints additional information about the selected class.
+.RS
+.RE
+.TP
+.B \f[CB]\-l\f[R]
+Prints line and local variable tables.
+.RS
.RE
-.PP
-\-J\fIoption\fR
-.RS 4
-Passes the specified option to the JVM\&. For example:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fBjavap \-J\-version\fR
-\fBjavap \-J\-Djava\&.security\&.manager \-J\-Djava\&.security\&.policy=MyPolicy MyClassName\fR
-
-.fi
-.if n \{\
+.TP
+.B \f[CB]\-public\f[R]
+Shows only public classes and members.
+.RS
+.RE
+.TP
+.B \f[CB]\-protected\f[R]
+Shows only protected and public classes and members.
+.RS
.RE
-.\}
-For more information about JVM options, see the command documentation\&.
+.TP
+.B \f[CB]\-package\f[R]
+Shows package/protected/public classes and members (default).
+.RS
.RE
-.PP
-\-s
-.RS 4
-Prints internal type signatures\&.
+.TP
+.B \f[CB]\-private\f[R] or \f[CB]\-p\f[R]
+Shows all classes and members.
+.RS
.RE
-.PP
-\-sysinfo
-.RS 4
-Shows system information (path, size, date, MD5 hash) of the class being processed\&.
+.TP
+.B \f[CB]\-c\f[R]
+Prints disassembled code, for example, the instructions that comprise
+the Java bytecodes, for each of the methods in the class.
+.RS
.RE
-.PP
-\-constants
-.RS 4
-Shows
-\fBstatic final\fR
-constants\&.
+.TP
+.B \f[CB]\-s\f[R]
+Prints internal type signatures.
+.RS
.RE
-.PP
-\-c
-.RS 4
-Prints disassembled code, for example, the instructions that comprise the Java bytecodes, for each of the methods in the class\&.
+.TP
+.B \f[CB]\-sysinfo\f[R]
+Shows system information (path, size, date, MD5 hash) of the class being
+processed.
+.RS
.RE
-.PP
-\-verbose
-.RS 4
-Prints stack size, number of locals and arguments for methods\&.
+.TP
+.B \f[CB]\-constants\f[R]
+Shows \f[CB]static\ final\f[R] constants.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\f[R] \f[I]module\f[R] or \f[CB]\-m\f[R] \f[I]module\f[R]
+Specifies the module containing classes to be disassembled.
+.RS
.RE
-.PP
-\-classpath \fIpath\fR
-.RS 4
-Specifies the path the
-\fBjavap\fR
-command uses to look up classes\&. Overrides the default or the
-\fBCLASSPATH\fR
-environment variable when it is set\&.
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]path\f[R]
+Specifies where to find application modules.
+.RS
.RE
-.PP
-\-bootclasspath \fIpath\fR
-.RS 4
-Specifies the path from which to load bootstrap classes\&. By default, the bootstrap classes are the classes that implement the core Java platform located in
-\fBjre/lib/rt\&.jar\fR
-and several other JAR files\&.
+.TP
+.B \f[CB]\-\-system\f[R] \f[I]jdk\f[R]
+Specifies where to find system modules.
+.RS
.RE
-.PP
-\-extdir \fIdirs\fR
-.RS 4
-Overrides the location at which installed extensions are searched for\&. The default location for extensions is the value of
-\fBjava\&.ext\&.dirs\fR\&.
+.TP
+.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R], \f[CB]\-classpath\f[R] \f[I]path\f[R], or \f[CB]\-cp\f[R] \f[I]path\f[R]
+Specifies the path that the \f[CB]javap\f[R] command uses to find user
+class files.
+It overrides the default or the \f[CB]CLASSPATH\f[R] environment variable
+when it\[aq]s set.
+.RS
.RE
-.SH "EXAMPLE"
-.PP
-Compile the following
-\fBDocFooter\fR
-class:
-.sp
-.if n \{\
-.RS 4
-.\}
+.TP
+.B \f[CB]\-bootclasspath\f[R] \f[I]path\f[R]
+Overrides the location of bootstrap class files.
+.RS
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+Passes the specified option to the JVM.
+For example:
+.RS
+.IP
.nf
-\fBimport java\&.awt\&.*;\fR
-\fBimport java\&.applet\&.*;\fR
-\fB \fR
-\fBpublic class DocFooter extends Applet {\fR
-\fB String date;\fR
-\fB String email;\fR
-\fB \fR
-\fB public void init() {\fR
-\fB resize(500,100);\fR
-\fB date = getParameter("LAST_UPDATED");\fR
-\fB email = getParameter("EMAIL");\fR
-\fB }\fR
-\fB \fR
-\fB public void paint(Graphics g) {\fR
-\fB g\&.drawString(date + " by ",100, 15);\fR
-\fB g\&.drawString(email,290,15);\fR
-\fB }\fR
-\fB}\fR
-
+\f[CB]
+javap\ \-J\-version
+
+javap\ \-J\-Djava.security.manager\ \-J\-Djava.security.policy=MyPolicy\ MyClassName
+\f[R]
.fi
-.if n \{\
+.PP
+See \f[I]Overview of Java Options\f[R] in \f[B]java\f[R].
.RE
-.\}
+.SH JAVAP EXAMPLE
.PP
-The output from the
-\fBjavap DocFooter\&.class\fR
-command yields the following:
-.sp
-.if n \{\
-.RS 4
-.\}
+Compile the following \f[CB]HelloWorldFrame\f[R] class:
+.IP
.nf
-\fBCompiled from "DocFooter\&.java"\fR
-\fBpublic class DocFooter extends java\&.applet\&.Applet {\fR
-\fB java\&.lang\&.String date;\fR
-\fB java\&.lang\&.String email;\fR
-\fB public DocFooter();\fR
-\fB public void init();\fR
-\fB public void paint(java\&.awt\&.Graphics);\fR
-\fB}\fR
-
+\f[CB]
+import\ java.awt.Graphics;
+
+import\ javax.swing.JFrame;
+import\ javax.swing.JPanel;
+
+public\ class\ HelloWorldFrame\ extends\ JFrame\ {
+
+\ \ \ String\ message\ =\ "Hello\ World!";
+
+\ \ \ public\ HelloWorldFrame(){
+\ \ \ \ \ \ \ \ setContentPane(new\ JPanel(){
+\ \ \ \ \ \ \ \ \ \ \ \ \@Override
+\ \ \ \ \ \ \ \ \ \ \ \ protected\ void\ paintComponent(Graphics\ g)\ {
+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ g.drawString(message,\ 15,\ 30);
+\ \ \ \ \ \ \ \ \ \ \ \ }
+\ \ \ \ \ \ \ \ });
+\ \ \ \ \ \ \ \ setSize(100,\ 100);
+\ \ \ \ }
+\ \ \ \ public\ static\ void\ main(String[]\ args)\ {
+\ \ \ \ \ \ \ \ HelloWorldFrame\ frame\ =\ new\ HelloWorldFrame();
+\ \ \ \ \ \ \ \ frame.setVisible(true);
+
+\ \ \ \ }
+
+}
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
.PP
-The output from
-\fBjavap \-c DocFooter\&.class\fR
-command yields the following:
-.sp
-.if n \{\
-.RS 4
-.\}
+The output from the \f[CB]javap\ HelloWorldFrame.class\f[R] command yields
+the following:
+.IP
.nf
-\fBCompiled from "DocFooter\&.java"\fR
-\fBpublic class DocFooter extends java\&.applet\&.Applet {\fR
-\fB java\&.lang\&.String date;\fR
-\fB java\&.lang\&.String email;\fR
-
-\fB public DocFooter();\fR
-\fB Code:\fR
-\fB 0: aload_0 \fR
-\fB 1: invokespecial #1 // Method\fR
-\fBjava/applet/Applet\&."<init>":()V\fR
-\fB 4: return \fR
-
-\fB public void init();\fR
-\fB Code:\fR
-\fB 0: aload_0 \fR
-\fB 1: sipush 500\fR
-\fB 4: bipush 100\fR
-\fB 6: invokevirtual #2 // Method resize:(II)V\fR
-\fB 9: aload_0 \fR
-\fB 10: aload_0 \fR
-\fB 11: ldc #3 // String LAST_UPDATED\fR
-\fB 13: invokevirtual #4 // Method\fR
-\fB getParameter:(Ljava/lang/String;)Ljava/lang/String;\fR
-\fB 16: putfield #5 // Field date:Ljava/lang/String;\fR
-\fB 19: aload_0 \fR
-\fB 20: aload_0 \fR
-\fB 21: ldc #6 // String EMAIL\fR
-\fB 23: invokevirtual #4 // Method\fR
-\fB getParameter:(Ljava/lang/String;)Ljava/lang/String;\fR
-\fB 26: putfield #7 // Field email:Ljava/lang/String;\fR
-\fB 29: return \fR
-
-\fB public void paint(java\&.awt\&.Graphics);\fR
-\fB Code:\fR
-\fB 0: aload_1 \fR
-\fB 1: new #8 // class java/lang/StringBuilder\fR
-\fB 4: dup \fR
-\fB 5: invokespecial #9 // Method\fR
-\fB java/lang/StringBuilder\&."<init>":()V\fR
-\fB 8: aload_0 \fR
-\fB 9: getfield #5 // Field date:Ljava/lang/String;\fR
-\fB 12: invokevirtual #10 // Method\fR
-\fB java/lang/StringBuilder\&.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;\fR
-\fB 15: ldc #11 // String by \fR
-\fB 17: invokevirtual #10 // Method\fR
-\fB java/lang/StringBuilder\&.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;\fR
-\fB 20: invokevirtual #12 // Method\fR
-\fB java/lang/StringBuilder\&.toString:()Ljava/lang/String;\fR
-\fB 23: bipush 100\fR
-\fB 25: bipush 15\fR
-\fB 27: invokevirtual #13 // Method\fR
-\fB java/awt/Graphics\&.drawString:(Ljava/lang/String;II)V\fR
-\fB 30: aload_1 \fR
-\fB 31: aload_0 \fR
-\fB 32: getfield #7 // Field email:Ljava/lang/String;\fR
-\fB 35: sipush 290\fR
-\fB 38: bipush 15\fR
-\fB 40: invokevirtual #13 // Method\fR
-\fBjava/awt/Graphics\&.drawString:(Ljava/lang/String;II)V\fR
-\fB 43: return \fR
-\fB}\fR
-
+\f[CB]
+Compiled\ from\ "HelloWorldFrame.java"
+public\ class\ HelloWorldFrame\ extends\ javax.swing.JFrame\ {
+\ \ java.lang.String\ message;
+\ \ public\ HelloWorldFrame();
+\ \ public\ static\ void\ main(java.lang.String[]);
+}
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.SH "SEE ALSO"
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-java(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-javac(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-javadoc(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jdb(1)
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-jdeps(1)
-.RE
-.br
-'pl 8.5i
-'bp
+.PP
+The output from the \f[CB]javap\ \-c\ HelloWorldFrame.class\f[R] command
+yields the following:
+.IP
+.nf
+\f[CB]
+Compiled\ from\ "HelloWorldFrame.java"
+public\ class\ HelloWorldFrame\ extends\ javax.swing.JFrame\ {
+\ \ java.lang.String\ message;
+
+\ \ public\ HelloWorldFrame();
+\ \ \ \ Code:
+\ \ \ \ \ \ \ 0:\ aload_0
+\ \ \ \ \ \ \ 1:\ invokespecial\ #1\ \ \ \ \ \ \ \ //\ Method\ javax/swing/JFrame."<init>":()V
+\ \ \ \ \ \ \ 4:\ aload_0
+\ \ \ \ \ \ \ 5:\ ldc\ \ \ \ \ \ \ \ \ \ \ #2\ \ \ \ \ \ \ \ //\ String\ Hello\ World!
+\ \ \ \ \ \ \ 7:\ putfield\ \ \ \ \ \ #3\ \ \ \ \ \ \ \ //\ Field\ message:Ljava/lang/String;
+\ \ \ \ \ \ 10:\ aload_0
+\ \ \ \ \ \ 11:\ new\ \ \ \ \ \ \ \ \ \ \ #4\ \ \ \ \ \ \ \ //\ class\ HelloWorldFrame$1
+\ \ \ \ \ \ 14:\ dup
+\ \ \ \ \ \ 15:\ aload_0
+\ \ \ \ \ \ 16:\ invokespecial\ #5\ \ \ \ \ \ \ \ //\ Method\ HelloWorldFrame$1."<init>":(LHelloWorldFrame;)V
+\ \ \ \ \ \ 19:\ invokevirtual\ #6\ \ \ \ \ \ \ \ //\ Method\ setContentPane:(Ljava/awt/Container;)V
+\ \ \ \ \ \ 22:\ aload_0
+\ \ \ \ \ \ 23:\ bipush\ \ \ \ \ \ \ \ 100
+\ \ \ \ \ \ 25:\ bipush\ \ \ \ \ \ \ \ 100
+\ \ \ \ \ \ 27:\ invokevirtual\ #7\ \ \ \ \ \ \ \ //\ Method\ setSize:(II)V
+\ \ \ \ \ \ 30:\ return
+
+\ \ public\ static\ void\ main(java.lang.String[]);
+\ \ \ \ Code:
+\ \ \ \ \ \ \ 0:\ new\ \ \ \ \ \ \ \ \ \ \ #8\ \ \ \ \ \ \ \ //\ class\ HelloWorldFrame
+\ \ \ \ \ \ \ 3:\ dup
+\ \ \ \ \ \ \ 4:\ invokespecial\ #9\ \ \ \ \ \ \ \ //\ Method\ "<init>":()V
+\ \ \ \ \ \ \ 7:\ astore_1
+\ \ \ \ \ \ \ 8:\ aload_1
+\ \ \ \ \ \ \ 9:\ iconst_1
+\ \ \ \ \ \ 10:\ invokevirtual\ #10\ \ \ \ \ \ \ //\ Method\ setVisible:(Z)V
+\ \ \ \ \ \ 13:\ return
+}
+\f[R]
+.fi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jdeps/share/man/jdeprscan.1 Fri May 31 17:27:28 2019 -0700
@@ -0,0 +1,273 @@
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
+.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+.\"
+.\" This code is free software; you can redistribute it and/or modify it
+.\" under the terms of the GNU General Public License version 2 only, as
+.\" published by the Free Software Foundation.
+.\"
+.\" This code is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" version 2 for more details (a copy is included in the LICENSE file that
+.\" accompanied this code).
+.\"
+.\" You should have received a copy of the GNU General Public License version
+.\" 2 along with this work; if not, write to the Free Software Foundation,
+.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+.\"
+.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+.\" or visit www.oracle.com if you need additional information or have any
+.\" questions.
+.\"
+.\" Automatically generated by Pandoc 2.3.1
+.\"
+.TH "JDEPRSCAN" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jdeprscan \- static analysis tool that scans a jar file (or some other
+aggregation of class files) for uses of deprecated API elements
+.SH SYNOPSIS
+.PP
+\f[CB]jdeprscan\f[R] [\f[I]options\f[R]]
+{\f[I]dir\f[R]|\f[I]jar\f[R]|\f[I]class\f[R]}
+.TP
+.B \f[I]options\f[R]
+See \f[B]Options for the jdeprscan Command\f[R]
+.RS
+.RE
+.TP
+.B \f[I]dir\f[R]|\f[I]jar\f[R]|\f[I]class\f[R]
+\f[CB]jdeprscan\f[R] command scans each argument for usages of deprecated
+APIs.
+The arguments can be a:
+.RS
+.IP \[bu] 2
+\f[I]dir\f[R]: Directory
+.IP \[bu] 2
+\f[I]jar\f[R]: JAR file
+.IP \[bu] 2
+\f[I]class\f[R]: Class name or class file
+.PP
+The class name should use a dot (\f[CB]\&.\f[R]) as a separator.
+For example:
+.PP
+\f[CB]java.lang.Thread\f[R]
+.PP
+For nested classes, the dollar sign \f[CB]$\f[R] separator character
+should be used.
+For example:
+.PP
+\f[CB]java.lang.Thread$State\f[R]
+.PP
+A class file can also be named.
+For example:
+.PP
+\f[CB]build/classes/java/lang/Thread$State.class\f[R]
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jdeprscan\f[R] tool is a static analysis tool provided by the
+JDK that scans a JAR file or some other aggregation of class files for
+uses of deprecated API elements.
+The deprecated APIs identified by the \f[CB]jdeprscan\f[R] tool are only
+those that are defined by Java SE.
+Deprecated APIs defined by third\-party libraries aren\[aq]t reported.
+.PP
+To scan a JAR file or a set of class files, you must first ensure that
+all of the classes that the scanned classes depend upon are present in
+the class path.
+Set the class path using the \f[CB]\-\-class\-path\f[R] option described
+in \f[B]Options for the jdeprscan Command\f[R].
+Typically, you would use the same class path as the one that you use
+when invoking your application.
+.PP
+If the \f[CB]jdeprscan\f[R] can\[aq]t find all the dependent classes, it
+will generate an error message for each class that\[aq]s missing.
+These error messages are typically of the form:
+.RS
+.PP
+\f[CB]error:\ cannot\ find\ class\ ...\f[R]
+.RE
+.PP
+If these errors occur, then you must adjust the class path so that it
+includes all dependent classes.
+.SH OPTIONS FOR THE JDEPRSCAN COMMAND
+.PP
+The following options are available:
+.TP
+.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
+Provides a search path for resolution of dependent classes.
+.RS
+.PP
+\f[I]path\f[R] can be a search path that consists of one or more
+directories separated by the system\-specific path separator.
+For example:
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.RS 2
+.RS
+.PP
+\f[CB]\-\-class\-path\ /some/directory:/another/different/dir\f[R]
+.RE
+.RE
+.PP
+\f[B]Note:\f[R]
+.PP
+On Windows, use a semicolon (\f[CB];\f[R]) as the separator instead of a
+colon (\f[CB]:\f[R]).
+.IP \[bu] 2
+\f[B]Windows:\f[R]
+.RS 2
+.RS
+.PP
+\f[CB]\-\-class\-path\ \\some\\directory;\\another\\different\\dir\f[R]
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]\-\-for\-removal\f[R]
+Limits scanning or listing to APIs that are deprecated for removal.
+Can\[aq]t be used with a release value of 6, 7, or 8.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-full\-version\f[R]
+Prints out the full version string of the tool.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\f[R] or \f[CB]\-h\f[R]
+Prints out a full help message.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-list\f[R] or \f[CB]\-l\f[R]
+Prints the set of deprecated APIs.
+No scanning is done, so no directory, jar, or class arguments should be
+provided.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-release\f[R] \f[CB]6\f[R]|\f[CB]7\f[R]|\f[CB]8\f[R]|\f[CB]9\f[R]
+Specifies the Java SE release that provides the set of deprecated APIs
+for scanning.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-verbose\f[R] or \f[CB]\-v\f[R]
+Enables additional message output during processing.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-version\f[R]
+Prints out the abbreviated version string of the tool.
+.RS
+.RE
+.SH EXAMPLE OF JDEPRSCAN OUTPUT
+.PP
+The JAR file for this library will be named something similar to
+\f[CB]commons\-math3\-3.6.1.jar\f[R].
+To scan this JAR file for the use of deprecated APIs, run the following
+command:
+.RS
+.PP
+\f[CB]jdeprscan\ commons\-math3\-3.6.1.jar\f[R]
+.RE
+.PP
+This command produces several lines of output.
+For example, one line of output might be:
+.IP
+.nf
+\f[CB]
+class\ org/apache/commons/math3/util/MathUtils\ uses\ deprecated\ method\ java/lang/Double::<init>(D)V
+\f[R]
+.fi
+.PP
+\f[B]Note:\f[R]
+.PP
+The class name is specified using the slash\-separated binary name as
+described in JVMS 4.2.1.
+This is the form used internally in class files.
+.PP
+The deprecated API it uses is a method on the \f[CB]java.lang.Double\f[R]
+class.
+.PP
+The name of the deprecated method is \f[CB]<init>\f[R], which is a special
+name that means that the method is actually a constructor.
+Another special name is \f[CB]<clinit>\f[R], which indicates a class
+static initializer.
+.PP
+Other methods are listed just by their method name.
+Following the method name is the argument list and return type:
+.RS
+.PP
+\f[CB](D)V\f[R]
+.RE
+.PP
+This indicates that it takes just one double value (a primitive) and
+returns void.
+The argument and return types can become cryptic.
+For example, another line of output might be:
+.IP
+.nf
+\f[CB]
+class\ org/apache/commons/math3/util/Precision\ uses\ deprecated\ method\ java/math/BigDecimal::setScale(II)Ljava/math/BigDecimal;
+\f[R]
+.fi
+.PP
+In this line of output, the deprecated method is on class
+\f[CB]java.math.BigDecimal\f[R], and the method is \f[CB]setScale()\f[R].
+In this case, the \f[CB](II)\f[R] means that it takes two \f[CB]int\f[R]
+arguments.
+The \f[CB]Ljava/math/BigDecimal;\f[R] after the parentheses means that it
+returns a reference to \f[CB]java.math.BigDecimal\f[R].
+.SH JDEPRSCAN ANALYSIS CAN BE VERSION\-SPECIFIC
+.PP
+You can use \f[CB]jdeprscan\f[R] relative to the previous three JDK
+releases.
+For example, if you are running JDK 9, then you can check against JDK 8,
+7, and 6.
+.PP
+As an example, look at this code snippet:
+.IP
+.nf
+\f[CB]
+public\ class\ Deprecations\ {
+\ \ \ SecurityManager\ sm\ =\ new\ RMISecurityManager();\ \ \ \ //\ deprecated\ in\ 8
+\ \ \ Boolean\ b2\ =\ new\ Boolean(true);\ \ \ \ \ \ \ \ \ \ //\ deprecated\ in\ 9
+}
+\f[R]
+.fi
+.PP
+The complete class compiles without warnings in JDK 7.
+.PP
+If you run \f[CB]jdeprscan\f[R] on a system with JDK 9, then you see:
+.IP
+.nf
+\f[CB]
+$\ jdeprscan\ \-\-class\-path\ classes\ \-\-release\ 7\ example.Deprecations
+(no\ output)
+\f[R]
+.fi
+.PP
+Run \f[CB]jdeprscan\f[R] with a release value of 8:
+.IP
+.nf
+\f[CB]
+$\ jdeprscan\ \-\-class\-path\ classes\ \-\-release\ 8\ example.Deprecations
+class\ example/Deprecations\ uses\ type\ java/rmi/RMISecurityManager\ deprecated
+class\ example/Deprecations\ uses\ method\ in\ type\ java/rmi/RMISecurityManager\ deprecated
+\f[R]
+.fi
+.PP
+Run \f[CB]jdeprscan\f[R] on JDK 9:
+.IP
+.nf
+\f[CB]
+$\ jdeprscan\ \-\-class\-path\ classes\ example.Deprecations
+class\ example/Deprecations\ uses\ type\ java/rmi/RMISecurityManager\ deprecated
+class\ example/Deprecations\ uses\ method\ in\ type\ java/rmi/RMISecurityManager\ deprecated
+class\ example/Deprecations\ uses\ method\ java/lang/Boolean\ <init>\ (Z)V\ deprecated
+\f[R]
+.fi
--- a/src/jdk.jdeps/share/man/jdeps.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jdeps/share/man/jdeps.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,518 +19,380 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Basic Tools
-.\" Title: jdeps.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jdeps 1 "21 November 2013" "JDK 8" "Basic Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jdeps \- Java class dependency analyzer\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjdeps\fR [\fIoptions\fR] \fIclasses\fR \&.\&.\&.
-.fi
-.sp
-.TP
-\fIoptions\fR
-Command-line options\&. See Options\&.
-.TP
-\fIclasses\fR
-Name of the classes to analyze\&. You can specify a class that can be found in the class path, by its file name, a directory, or a JAR file\&.
-.SH DESCRIPTION
-The \fI\fR\f3jdeps\fR command shows the package-level or class-level dependencies of Java class files\&. The input class can be a path name to a \f3\&.class\fR file, a directory, a JAR file, or it can be a fully qualified class name to analyze all class files\&. The options determine the output\&. By default, \f3jdeps\fR outputs the dependencies to the system output\&. It can generate the dependencies in DOT language (see the \f3-dotoutput\fR option)\&.
-.SH OPTIONS
+.TH "JDEPS" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jdeps \- launch the Java class dependency analyzer
+.SH SYNOPSIS
+.PP
+\f[CB]jdeps\f[R] [\f[I]options\f[R]] \f[I]path\f[R] ...
+.TP
+.B \f[I]options\f[R]
+Command\-line options.
+For detailed descriptions of the options that can be used, see
+.RS
+.IP \[bu] 2
+\f[B]Possible Options\f[R]
+.IP \[bu] 2
+\f[B]Module Dependence Analysis Options\f[R]
+.IP \[bu] 2
+\f[B]Options to Filter Dependences\f[R]
+.IP \[bu] 2
+\f[B]Options to Filter Classes to be Analyzed\f[R]
+.RE
+.TP
+.B \f[I]path\f[R]
+A pathname to the \f[CB]\&.class\f[R] file, directory, or JAR file to
+analyze.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jdeps\f[R] command shows the package\-level or class\-level
+dependencies of Java class files.
+The input class can be a path name to a \f[CB]\&.class\f[R] file, a
+directory, a JAR file, or it can be a fully qualified class name to
+analyze all class files.
+The options determine the output.
+By default, the \f[CB]jdeps\f[R] command writes the dependencies to the
+system output.
+The command can generate the dependencies in DOT language (see the
+\f[CB]\-dotoutput\f[R] option).
+.SH POSSIBLE OPTIONS
.TP
--dotoutput <\fIdir\fR>
-.br
-Destination directory for DOT file output\&. If specified, \f3jdeps\fR will generate one dot file per each analyzed archive named <\fIarchive-file-name\fR>\&.dot listing the dependencies, and also a summary file named summary\&.dot listing the dependencies among the archives\&.
+.B \f[CB]\-dotoutput\f[R] \f[I]dir\f[R] or \f[CB]\-\-dot\-output\f[R] \f[I]dir\f[R]
+Specifies the destination directory for DOT file output.
+If this option is specified, then the \f[CB]jdeps\f[R]command generates
+one \f[CB]\&.dot\f[R] file for each analyzed archive named
+\f[CB]archive\-file\-name.dot\f[R] that lists the dependencies, and also a
+summary file named \f[CB]summary.dot\f[R] that lists the dependencies
+among the archive files.
+.RS
+.RE
+.TP
+.B \f[CB]\-s\f[R] or \f[CB]\-summary\f[R]
+Prints a dependency summary only.
+.RS
+.RE
+.TP
+.B \f[CB]\-v\f[R] or \f[CB]\-verbose\f[R]
+Prints all class\-level dependencies.
+This is equivalent to
+.RS
+.RS
+.PP
+\f[CB]\-verbose:class\ \-filter:none\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-verbose:package\f[R]
+Prints package\-level dependencies excluding, by default, dependences
+within the same package.
+.RS
+.RE
+.TP
+.B \f[CB]\-verbose:class\f[R]
+Prints class\-level dependencies excluding, by default, dependencies
+within the same archive.
+.RS
+.RE
+.TP
+.B \f[CB]\-apionly\f[R] or \f[CB]\-\-api\-only\f[R]
+Restricts the analysis to APIs, for example, dependences from the
+signature of \f[CB]public\f[R] and \f[CB]protected\f[R] members of public
+classes including field type, method parameter types, returned type, and
+checked exception types.
+.RS
+.RE
.TP
--s, -summary
-.br
-Prints dependency summary only\&.
+.B \f[CB]\-jdkinternals\f[R] or \f[CB]\-\-jdk\-internals\f[R]
+Finds class\-level dependences in the JDK internal APIs.
+By default, this option analyzes all classes specified in the
+\f[CB]\-\-classpath\f[R] option and input files unless you specified the
+\f[CB]\-include\f[R] option.
+You can\[aq]t use this option with the \f[CB]\-p\f[R], \f[CB]\-e\f[R], and
+\f[CB]\-s\f[R] options.
+.RS
+.PP
+\f[B]Warning\f[R]: The JDK internal APIs are inaccessible.
+.RE
.TP
--v, -verbose
-.br
-Prints all class-level dependencies\&.
-.TP
--verbose:package
-.br
-Prints package-level dependencies excluding dependencies within the same archive\&.
+.B \f[CB]\-cp\f[R] \f[I]path\f[R], \f[CB]\-classpath\f[R] \f[I]path\f[R], or \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
+Specifies where to find class files.
+.RS
+.RE
.TP
--verbose:class
-.br
-Prints class-level dependencies excluding dependencies within the same archive\&.
+.B \f[CB]\-\-module\-path\f[R] \f[I]module\-path\f[R]
+Specifies the module path.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-upgrade\-module\-path\f[R] \f[I]module\-path\f[R]
+Specifies the upgrade module path.
+.RS
+.RE
.TP
--cp <\fIpath\fR>, -classpath <\fIpath\fR>
-.br
-Specifies where to find class files\&.
-
-See also Setting the Class Path\&.
+.B \f[CB]\-\-system\f[R] \f[I]java\-home\f[R]
+Specifies an alternate system module path.
+.RS
+.RE
.TP
--p <\fIpkg name\fR>, -package <\fIpkg name\fR>
-.br
-Finds dependencies in the specified package\&. You can specify this option multiple times for different packages\&. The \f3-p\fR and \f3-e\fR options are mutually exclusive\&.
+.B \f[CB]\-\-add\-modules\f[R] \f[I]module\-name\f[R][\f[CB],\f[R] \f[I]module\-name\f[R]...]
+Adds modules to the root set for analysis.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-multi\-release\f[R] \f[I]version\f[R]
+Specifies the version when processing multi\-release JAR files.
+\f[I]version\f[R] should be an integer >=9 or base.
+.RS
+.RE
.TP
--e <\fIregex\fR>, -regex <\fIregex\fR>
-.br
-Finds dependencies in packages matching the specified regular expression pattern\&. The \f3-p\fR and \f3-e\fR options are mutually exclusive\&.
+.B \f[CB]\-q\f[R] or \f[CB]\-quiet\f[R]
+Doesn\[aq]t show missing dependencies from
+\f[CB]\-generate\-module\-info\f[R] output.
+.RS
+.RE
+.TP
+.B \f[CB]\-version\f[R] or \f[CB]\-\-version\f[R]
+Prints version information.
+.RS
+.RE
+.SH MODULE DEPENDENCE ANALYSIS OPTIONS
.TP
--include <\fIregex\fR>
-.br
-Restricts analysis to classes matching pattern\&. This option filters the list of classes to be analyzed\&. It can be used together with \f3-p\fR and \f3-e\fR which apply pattern to the dependencies\&.
+.B \f[CB]\-m\f[R] \f[I]module\-name\f[R] or \f[CB]\-\-module\f[R] \f[I]module\-name\f[R]
+Specifies the root module for analysis.
+.RS
+.RE
.TP
--jdkinternals
-.br
-Finds class-level dependences in JDK internal APIs\&. By default, it analyzes all classes specified in the \f3-classpath\fR option and in input files unless you specified the \f3-include\fR option\&. You cannot use this option with the \f3-p\fR, \f3-e\fR, and \f3-s\fR options\&.
-
-\fIWarning\fR: JDK internal APIs may not be accessible in upcoming releases\&.
+.B \f[CB]\-\-generate\-module\-info\f[R] \f[I]dir\f[R]
+Generates \f[CB]module\-info.java\f[R] under the specified directory.
+The specified JAR files will be analyzed.
+This option cannot be used with \f[CB]\-\-dot\-output\f[R] or
+\f[CB]\-\-class\-path\f[R] options.
+Use the \f[CB]\-\-generate\-open\-module\f[R] option for open modules.
+.RS
+.RE
.TP
--P, -profile
-.br
-Shows profile or the file containing a package\&.
-.TP
--apionly
-.br
-Restricts analysis to APIs, for example, dependences from the signature of \f3public\fR and \f3protected\fR members of public classes including field type, method parameter types, returned type, and checked exception types\&.
+.B \f[CB]\-\-generate\-open\-module\f[R] \f[I]dir\f[R]
+Generates \f[CB]module\-info.java\f[R] for the specified JAR files under
+the specified directory as open modules.
+This option cannot be used with the \f[CB]\-\-dot\-output\f[R] or
+\f[CB]\-\-class\-path\f[R] options.
+.RS
+.RE
.TP
--R, -recursive
-.br
-Recursively traverses all dependencies\&.
+.B \f[CB]\-\-check\f[R] \f[I]module\-name\f[R] [\f[CB],\f[R] \f[I]module\-name\f[R]...]
+Analyzes the dependence of the specified modules.
+It prints the module descriptor, the resulting module dependences after
+analysis and the graph after transition reduction.
+It also identifies any unused qualified exports.
+.RS
+.RE
.TP
--version
-.br
-Prints version information\&.
+.B \f[CB]\-\-list\-deps\f[R]
+Lists the module dependences and also the package names of JDK internal
+APIs (if referenced).
+This option transitively analyzes libraries on class path and module
+path if referenced.
+Use \f[CB]\-\-no\-recursive\f[R] option for non\-transitive dependency
+analysis.
+.RS
+.RE
.TP
--h, -?, -help
-.br
-Prints help message for \f3jdeps\fR\&.
-.SH EXAMPLES
-Analyzing the dependencies of Notepad\&.jar\&.
-.sp
-.nf
-\f3$ jdeps demo/jfc/Notepad/Notepad\&.jar\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
-.fi
-.nf
-\f3 <unnamed> (Notepad\&.jar)\fP
-.fi
-.nf
-\f3 \-> java\&.awt \fP
-.fi
-.nf
-\f3 \-> java\&.awt\&.event \fP
-.fi
-.nf
-\f3 \-> java\&.beans \fP
-.fi
-.nf
-\f3 \-> java\&.io \fP
-.fi
-.nf
-\f3 \-> java\&.lang \fP
-.fi
-.nf
-\f3 \-> java\&.net \fP
-.fi
-.nf
-\f3 \-> java\&.util \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.logging \fP
-.fi
-.nf
-\f3 \-> javax\&.swing \fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.border \fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.event \fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.text \fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.tree \fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.undo \fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Use -P or -profile option to show on which profile that Notepad depends\&.
-.sp
-.nf
-\f3$ jdeps \-profile demo/jfc/Notepad/Notepad\&.jar \fP
-.fi
-.nf
-\f3demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar (Full JRE)\fP
-.fi
-.nf
-\f3 <unnamed> (Notepad\&.jar)\fP
-.fi
-.nf
-\f3 \-> java\&.awt Full JRE\fP
-.fi
-.nf
-\f3 \-> java\&.awt\&.event Full JRE\fP
-.fi
-.nf
-\f3 \-> java\&.beans Full JRE\fP
-.fi
-.nf
-\f3 \-> java\&.io compact1\fP
-.fi
-.nf
-\f3 \-> java\&.lang compact1\fP
-.fi
-.nf
-\f3 \-> java\&.net compact1\fP
-.fi
-.nf
-\f3 \-> java\&.util compact1\fP
-.fi
-.nf
-\f3 \-> java\&.util\&.logging compact1\fP
-.fi
-.nf
-\f3 \-> javax\&.swing Full JRE\fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.border Full JRE\fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.event Full JRE\fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.text Full JRE\fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.tree Full JRE\fP
-.fi
-.nf
-\f3 \-> javax\&.swing\&.undo Full JRE\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Analyzing the immediate dependencies of a specific class in a given classpath, for example the \f3com\&.sun\&.tools\&.jdeps\&.Main\fR class in the tools\&.jar file\&.
-.sp
-.nf
-\f3$ jdeps \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP
-.fi
-.nf
-\f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
-.fi
-.nf
-\f3 com\&.sun\&.tools\&.jdeps (tools\&.jar)\fP
-.fi
-.nf
-\f3 \-> java\&.io \fP
-.fi
-.nf
-\f3 \-> java\&.lang \fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Use the \f3-verbose:class\fR option to find class-level dependencies or use the \f3-v\fR or \f3-verbose\fR option to include dependencies from the same JAR file\&.
-.sp
-.nf
-\f3$ jdeps \-verbose:class \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
-.fi
-.nf
-\f3 com\&.sun\&.tools\&.jdeps\&.Main (tools\&.jar)\fP
-.fi
-.nf
-\f3 \-> java\&.io\&.PrintWriter \fP
-.fi
-.nf
-\f3 \-> java\&.lang\&.Exception \fP
-.fi
-.nf
-\f3 \-> java\&.lang\&.Object \fP
-.fi
-.nf
-\f3 \-> java\&.lang\&.String \fP
-.fi
-.nf
-\f3 \-> java\&.lang\&.System \fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Use the \f3-R\fR or \f3-recursive\fR option to analyze the transitive dependencies of the \f3com\&.sun\&.tools\&.jdeps\&.Main\fR class\&.
-.sp
-.nf
-\f3$ jdeps \-R \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP
-.fi
-.nf
-\f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
-.fi
-.nf
-\f3 com\&.sun\&.tools\&.classfile (tools\&.jar)\fP
-.fi
-.nf
-\f3 \-> java\&.io \fP
-.fi
-.nf
-\f3 \-> java\&.lang \fP
-.fi
-.nf
-\f3 \-> java\&.lang\&.reflect \fP
-.fi
-.nf
-\f3 \-> java\&.nio\&.charset \fP
-.fi
-.nf
-\f3 \-> java\&.nio\&.file \fP
-.fi
-.nf
-\f3 \-> java\&.util \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.regex \fP
-.fi
-.nf
-\f3 com\&.sun\&.tools\&.jdeps (tools\&.jar)\fP
-.fi
-.nf
-\f3 \-> java\&.io \fP
-.fi
-.nf
-\f3 \-> java\&.lang \fP
-.fi
-.nf
-\f3 \-> java\&.nio\&.file \fP
-.fi
-.nf
-\f3 \-> java\&.nio\&.file\&.attribute \fP
-.fi
-.nf
-\f3 \-> java\&.text \fP
-.fi
-.nf
-\f3 \-> java\&.util \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.jar \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.regex \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.zip \fP
-.fi
-.nf
-\f3/usr/java/jre/lib/jce\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP
-.fi
-.nf
-\f3 javax\&.crypto (jce\&.jar)\fP
-.fi
-.nf
-\f3 \-> java\&.io \fP
-.fi
-.nf
-\f3 \-> java\&.lang \fP
-.fi
-.nf
-\f3 \-> java\&.lang\&.reflect \fP
-.fi
-.nf
-\f3 \-> java\&.net \fP
-.fi
-.nf
-\f3 \-> java\&.nio \fP
-.fi
-.nf
-\f3 \-> java\&.security \fP
-.fi
-.nf
-\f3 \-> java\&.security\&.cert \fP
-.fi
-.nf
-\f3 \-> java\&.security\&.spec \fP
-.fi
-.nf
-\f3 \-> java\&.util \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.concurrent \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.jar \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.regex \fP
-.fi
-.nf
-\f3 \-> java\&.util\&.zip \fP
-.fi
-.nf
-\f3 \-> javax\&.security\&.auth \fP
-.fi
-.nf
-\f3 \-> sun\&.security\&.jca JDK internal API (rt\&.jar)\fP
-.fi
-.nf
-\f3 \-> sun\&.security\&.util JDK internal API (rt\&.jar)\fP
-.fi
-.nf
-\f3 javax\&.crypto\&.spec (jce\&.jar)\fP
-.fi
-.nf
-\f3 \-> java\&.lang \fP
-.fi
-.nf
-\f3 \-> java\&.security\&.spec \fP
-.fi
-.nf
-\f3 \-> java\&.util \fP
-.fi
-.nf
-\f3/usr/java/jre/lib/rt\&.jar \-> /usr/java/jre/lib/jce\&.jar\fP
-.fi
-.nf
-\f3 java\&.security (rt\&.jar)\fP
-.fi
-.nf
-\f3 \-> javax\&.crypto\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-Generate dot files of the dependencies of Notepad demo\&.
-.sp
-.nf
-\f3$ jdeps \-dotoutput dot demo/jfc/Notepad/Notepad\&.jar\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-\f3jdeps\fR will create one dot file for each given JAR file named <\fIfilename\fR>\&.dot in the dot directory specified in the \f3-dotoutput\fR option, and also a summary file named summary\&.dot that will list the dependencies among the JAR files
-.sp
-.nf
-\f3$ cat dot/Notepad\&.jar\&.dot \fP
-.fi
-.nf
-\f3digraph "Notepad\&.jar" {\fP
-.fi
-.nf
-\f3 // Path: demo/jfc/Notepad/Notepad\&.jar\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "java\&.awt";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "java\&.awt\&.event";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "java\&.beans";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "java\&.io";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "java\&.lang";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "java\&.net";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "java\&.util";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "java\&.util\&.logging";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "javax\&.swing";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "javax\&.swing\&.border";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "javax\&.swing\&.event";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "javax\&.swing\&.text";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "javax\&.swing\&.tree";\fP
-.fi
-.nf
-\f3 "<unnamed>" \-> "javax\&.swing\&.undo";\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.nf
-\f3$ cat dot/summary\&.dot\fP
-.fi
-.nf
-\f3digraph "summary" {\fP
-.fi
-.nf
-\f3 "Notepad\&.jar" \-> "rt\&.jar";\fP
-.fi
-.nf
-\f3}\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-javap(1)
+.B \f[CB]\-\-list\-reduced\-deps\f[R]
+Same as \f[CB]\-\-list\-deps\f[R] without listing the implied reads edges
+from the module graph.
+If module M1 reads M2, and M2 requires transitive on M3, then M1 reading
+M3 is implied and is not shown in the graph.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-print\-module\-deps\f[R]
+Same as \f[CB]\-\-list\-reduced\-deps\f[R] with printing a
+comma\-separated list of module dependences.
+The output can be used by \f[CB]jlink\ \-\-add\-modules\f[R] to create a
+custom image that contains those modules and their transitive
+dependences.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-ignore\-missing\-deps\f[R]
+Ignore missing dependences.
+.RS
+.RE
+.SH OPTIONS TO FILTER DEPENDENCES
+.TP
+.B \f[CB]\-p\f[R] \f[I]pkg_name\f[R], \f[CB]\-package\f[R] \f[I]pkg_name\f[R], or \f[CB]\-\-package\f[R] \f[I]pkg_name\f[R]
+Finds dependences matching the specified package name.
+You can specify this option multiple times for different packages.
+The \f[CB]\-p\f[R] and \f[CB]\-e\f[R] options are mutually exclusive.
+.RS
+.RE
+.TP
+.B \f[CB]\-e\f[R] \f[I]regex\f[R], \f[CB]\-regex\f[R] \f[I]regex\f[R], or \f[CB]\-\-regex\f[R] \f[I]regex\f[R]
+Finds dependences matching the specified pattern.
+The \f[CB]\-p\f[R] and \f[CB]\-e\f[R] options are mutually exclusive.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-require\f[R] \f[I]module\-name\f[R]
+Finds dependences matching the given module name (may be given multiple
+times).
+The \f[CB]\-\-package\f[R], \f[CB]\-\-regex\f[R], and \f[CB]\-\-require\f[R]
+options are mutually exclusive.
+.RS
+.RE
+.TP
+.B \f[CB]\-f\f[R] \f[I]regex\f[R] or \f[CB]\-filter\f[R] \f[I]regex\f[R]
+Filters dependences matching the given pattern.
+If give multiple times, the last one will be selected.
+.RS
+.RE
+.TP
+.B \f[CB]\-filter:package\f[R]
+Filters dependences within the same package.
+This is the default.
+.RS
+.RE
+.TP
+.B \f[CB]\-filter:archive\f[R]
+Filters dependences within the same archive.
+.RS
+.RE
+.TP
+.B \f[CB]\-filter:module\f[R]
+Filters dependences within the same module.
+.RS
+.RE
+.TP
+.B \f[CB]\-filter:none\f[R]
+No \f[CB]\-filter:package\f[R] and \f[CB]\-filter:archive\f[R] filtering.
+Filtering specified via the \f[CB]\-filter\f[R] option still applies.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-missing\-deps\f[R]
+Finds missing dependences.
+This option cannot be used with \f[CB]\-p\f[R], \f[CB]\-e\f[R] and
+\f[CB]\-s\f[R] options.
+.RS
+.RE
+.SH OPTIONS TO FILTER CLASSES TO BE ANALYZED
+.TP
+.B \f[CB]\-include\f[R] \f[I]regex\f[R]
+Restricts analysis to the classes matching pattern.
+This option filters the list of classes to be analyzed.
+It can be used together with \f[CB]\-p\f[R] and \f[CB]\-e\f[R], which apply
+the pattern to the dependencies.
+.RS
+.RE
+.TP
+.B \f[CB]\-P\f[R] or \f[CB]\-profile\f[R]
+Shows the profile containing a package.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
+.TP
+.B \f[CB]\-R\f[R] or \f[CB]\-recursive\f[R]
+Recursively traverses all run\-time dependences.
+The \f[CB]\-R\f[R] option implies \f[CB]\-filter:none\f[R].
+If \f[CB]\-p\f[R], \f[CB]\-e\f[R], or \f[CB]\-f\f[R] options are specified,
+only the matching dependences are analyzed.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-no\-recursive\f[R]
+Do not recursively traverse dependences.
+.RS
+.RE
+.TP
+.B \f[CB]\-I\f[R] or \f[CB]\-inverse\f[R]
+Analyzes the dependences per other given options and then finds all
+artifacts that directly and indirectly depend on the matching nodes.
+This is equivalent to the inverse of the compile\-time view analysis and
+the print dependency summary.
+This option must be used with the \f[CB]\-\-require\f[R],
+\f[CB]\-\-package\f[R], or \f[CB]\-\-regex\f[R] options.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-compile\-time\f[R]
+Analyzes the compile\-time view of transitive dependencies, such as the
+compile\-time view of the \f[CB]\-R\f[R] option.
+Analyzes the dependences per other specified options.
+If a dependency is found from a directory, a JAR file or a module, all
+classes in that containing archive are analyzed.
+.RS
+.RE
+.SH EXAMPLE OF ANALYZING DEPENDENCIES
+.PP
+The following example demonstrates analyzing the dependencies of the
+\f[CB]Notepad.jar\f[R] file.
+.PP
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.IP
+.nf
+\f[CB]
+$\ jdeps\ demo/jfc/Notepad/Notepad.jar
+Notepad.jar\ \->\ java.base
+Notepad.jar\ \->\ java.desktop
+Notepad.jar\ \->\ java.logging
+\ \ \ <unnamed>\ (Notepad.jar)
+\ \ \ \ \ \ \->\ java.awt
+\ \ \ \ \ \ \->\ java.awt.event
+\ \ \ \ \ \ \->\ java.beans
+\ \ \ \ \ \ \->\ java.io
+\ \ \ \ \ \ \->\ java.lang
+\ \ \ \ \ \ \->\ java.net
+\ \ \ \ \ \ \->\ java.util
+\ \ \ \ \ \ \->\ java.util.logging
+\ \ \ \ \ \ \->\ javax.swing
+\ \ \ \ \ \ \->\ javax.swing.border
+\ \ \ \ \ \ \->\ javax.swing.event
+\ \ \ \ \ \ \->\ javax.swing.text
+\ \ \ \ \ \ \->\ javax.swing.tree
+\ \ \ \ \ \ \->\ javax.swing.undo
+\f[R]
+.fi
+.PP
+\f[B]Windows:\f[R]
+.IP
+.nf
+\f[CB]
+C:\\Java\\jdk1.9.0>jdeps\ demo\\jfc\\Notepad\\Notepad.jar
+Notepad.jar\ \->\ java.base
+Notepad.jar\ \->\ java.desktop
+Notepad.jar\ \->\ java.logging
+\ \ \ <unnamed>\ (Notepad.jar)
+\ \ \ \ \ \ \->\ java.awt
+\ \ \ \ \ \ \->\ java.awt.event
+\ \ \ \ \ \ \->\ java.beans
+\ \ \ \ \ \ \->\ java.io
+\ \ \ \ \ \ \->\ java.lang
+\ \ \ \ \ \ \->\ java.net
+\ \ \ \ \ \ \->\ java.util
+\ \ \ \ \ \ \->\ java.util.logging
+\ \ \ \ \ \ \->\ javax.swing
+\ \ \ \ \ \ \->\ javax.swing.border
+\ \ \ \ \ \ \->\ javax.swing.event
+\ \ \ \ \ \ \->\ javax.swing.text
+\ \ \ \ \ \ \->\ javax.swing.tree
+\ \ \ \ \ \ \->\ javax.swing.undo
+\f[R]
+.fi
+.SH EXAMPLE USING THE \-\-INVERSE OPTION
+.IP
+.nf
+\f[CB]
+\ $\ jdeps\ \-\-inverse\ \-\-require\ java.xml.bind
+Inverse\ transitive\ dependences\ on\ [java.xml.bind]
+java.xml.bind\ <\-\ java.se.ee
+java.xml.bind\ <\-\ jdk.xml.ws
+java.xml.bind\ <\-\ java.xml.ws\ <\-\ java.se.ee
+java.xml.bind\ <\-\ java.xml.ws\ <\-\ jdk.xml.ws
+java.xml.bind\ <\-\ jdk.xml.bind\ <\-\ jdk.xml.ws
+\f[R]
+.fi
--- a/src/jdk.jdi/share/man/jdb.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jdi/share/man/jdb.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,248 +19,245 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Basic Tools
-.\" Title: jdb.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jdb 1 "21 November 2013" "JDK 8" "Basic Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jdb \- Finds and fixes bugs in Java platform programs\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjdb\fR [\fIoptions\fR] [\fIclassname\fR] [\fIarguments\fR]
-.fi
-.sp
-.TP
-\fIoptions\fR
-Command-line options\&. See Options\&.
-.TP
-\fIclass\fRname
-Name of the main class to debug\&.
-.TP
-\fIarguments\fR
-Arguments passed to the \f3main()\fR method of the class\&.
-.SH DESCRIPTION
-The Java Debugger (JDB) is a simple command-line debugger for Java classes\&. The \f3jdb\fR command and its options call the JDB\&. The \f3jdb\fR command demonstrates the Java Platform Debugger Architecture (JDBA) and provides inspection and debugging of a local or remote Java Virtual Machine (JVM)\&. See Java Platform Debugger Architecture (JDBA) at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html
-.SS START\ A\ JDB\ SESSION
-There are many ways to start a JDB session\&. The most frequently used way is to have JDB launch a new JVM with the main class of the application to be debugged\&. Do this by substituting the \f3jdb\fR command for the \f3java\fR command in the command line\&. For example, if your application\&'s main class is \f3MyClass\fR, then use the following command to debug it under JDB:
-.sp
-.nf
-\f3jdb MyClass\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-When started this way, the \f3jdb\fR command calls a second JVM with the specified parameters, loads the specified class, and stops the JVM before executing that class\&'s first instruction\&.
+.TH "JDB" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jdb \- find and fix bugs in Java platform programs
+.SH SYNOPSIS
+.PP
+\f[CB]jdb\f[R] [\f[I]options\f[R]] [\f[I]classname\f[R]]
+[\f[I]arguments\f[R]]
+.TP
+.B \f[I]options\f[R]
+This represents the \f[CB]jdb\f[R] command\-line options.
+See \f[B]Options for the jdb command\f[R].
+.RS
+.RE
+.TP
+.B \f[I]classname\f[R]
+This represents the name of the main class to debug.
+.RS
+.RE
+.TP
+.B \f[I]arguments\f[R]
+This represents the arguments that are passed to the \f[CB]main()\f[R]
+method of the class.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The Java Debugger (JDB) is a simple command\-line debugger for Java
+classes.
+The \f[CB]jdb\f[R] command and its options call the JDB.
+The \f[CB]jdb\f[R] command demonstrates the Java Platform Debugger
+Architecture and provides inspection and debugging of a local or remote
+JVM.
+.SH START A JDB SESSION
+.PP
+There are many ways to start a JDB session.
+The most frequently used way is to have the JDB launch a new JVM with
+the main class of the application to be debugged.
+Do this by substituting the \f[CB]jdb\f[R] command for the \f[CB]java\f[R]
+command in the command line.
+For example, if your application\[aq]s main class is \f[CB]MyClass\f[R],
+then use the following command to debug it under the JDB:
+.RS
+.PP
+\f[CB]jdb\ MyClass\f[R]
+.RE
+.PP
+When started this way, the \f[CB]jdb\f[R] command calls a second JVM with
+the specified parameters, loads the specified class, and stops the JVM
+before executing that class\[aq]s first instruction.
.PP
-Another way to use the \f3jdb\fR command is by attaching it to a JVM that is already running\&. Syntax for starting a JVM to which the \f3jdb\fR command attaches when the JVM is running is as follows\&. This loads in-process debugging libraries and specifies the kind of connection to be made\&.
-.sp
-.nf
-\f3java \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n MyClass\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-You can then attach the \f3jdb\fR command to the JVM with the following command:
-.sp
-.nf
-\f3jdb \-attach 8000\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-The \f3MyClass\fR argument is not specified in the \f3jdb\fR command line in this case because the \f3jdb\fR command is connecting to an existing JVM instead of launching a new JVM\&.
+Another way to use the \f[CB]jdb\f[R] command is by attaching it to a JVM
+that\[aq]s already running.
+Syntax for starting a JVM to which the \f[CB]jdb\f[R] command attaches
+when the JVM is running is as follows.
+This loads in\-process debugging libraries and specifies the kind of
+connection to be made.
+.RS
+.PP
+\f[CB]java\ \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n\ MyClass\f[R]
+.RE
+.PP
+You can then attach the \f[CB]jdb\f[R] command to the JVM with the
+following command:
+.RS
+.PP
+\f[CB]jdb\ \-attach\ 8000\f[R]
+.RE
+.PP
+8000 is the address of the running JVM.
+.PP
+The \f[CB]MyClass\f[R] argument isn\[aq]t specified in the \f[CB]jdb\f[R]
+command line in this case because the \f[CB]jdb\f[R] command is connecting
+to an existing JVM instead of launching a new JVM.
+.PP
+There are many other ways to connect the debugger to a JVM, and all of
+them are supported by the \f[CB]jdb\f[R] command.
+The Java Platform Debugger Architecture has additional documentation on
+these connection options.
+.SH BREAKPOINTS
+.PP
+Breakpoints can be set in the JDB at line numbers or at the first
+instruction of a method, for example:
+.IP \[bu] 2
+The command \f[CB]stop\ at\ MyClass:22\f[R] sets a breakpoint at the first
+instruction for line 22 of the source file containing \f[CB]MyClass\f[R].
+.IP \[bu] 2
+The command \f[CB]stop\ in\ java.lang.String.length\f[R] sets a breakpoint
+at the beginning of the method \f[CB]java.lang.String.length\f[R].
+.IP \[bu] 2
+The command \f[CB]stop\ in\ MyClass.<clinit>\f[R] uses \f[CB]<clinit>\f[R]
+to identify the static initialization code for \f[CB]MyClass\f[R].
+.PP
+When a method is overloaded, you must also specify its argument types so
+that the proper method can be selected for a breakpoint.
+For example, \f[CB]MyClass.myMethod(int,java.lang.String)\f[R] or
+\f[CB]MyClass.myMethod()\f[R].
+.PP
+The \f[CB]clear\f[R] command removes breakpoints using the following
+syntax: \f[CB]clear\ MyClass:45\f[R].
+Using the \f[CB]clear\f[R] or \f[CB]stop\f[R] command with no argument
+displays a list of all breakpoints currently set.
+The \f[CB]cont\f[R] command continues execution.
+.SH STEPPING
+.PP
+The \f[CB]step\f[R] command advances execution to the next line whether
+it\[aq]s in the current stack frame or a called method.
+The \f[CB]next\f[R] command advances execution to the next line in the
+current stack frame.
+.SH EXCEPTIONS
.PP
-There are many other ways to connect the debugger to a JVM, and all of them are supported by the \f3jdb\fR command\&. The Java Platform Debugger Architecture has additional documentation on these connection options\&.
-.SS BASIC\ JDB\ COMMANDS
-The following is a list of the basic \f3jdb\fR commands\&. The JDB supports other commands that you can list with the \f3-help\fR option\&.
-.TP
-help or ?
-The \f3help\fR or \f3?\fR commands display the list of recognized commands with a brief description\&.
-.TP
-run
-After you start JDB and set breakpoints, you can use the \f3run\fR command to execute the debugged application\&. The \f3run\fR command is available only when the \f3jdb\fR command starts the debugged application as opposed to attaching to an existing JVM\&.
-.TP
-cont
-Continues execution of the debugged application after a breakpoint, exception, or step\&.
-.TP
-print
-Displays Java objects and primitive values\&. For variables or fields of primitive types, the actual value is printed\&. For objects, a short description is printed\&. See the dump command to find out how to get more information about an object\&.
-
-\fINote:\fR To display local variables, the containing class must have been compiled with the \f3javac -g\fR option\&.
-
-The \f3print\fR command supports many simple Java expressions including those with method invocations, for example:
-.sp
-.nf
-\f3print MyClass\&.myStaticField\fP
-.fi
-.nf
-\f3print myObj\&.myInstanceField\fP
-.fi
-.nf
-\f3print i + j + k (i, j, k are primities and either fields or local variables)\fP
-.fi
-.nf
-\f3print myObj\&.myMethod() (if myMethod returns a non\-null)\fP
-.fi
-.nf
-\f3print new java\&.lang\&.String("Hello")\&.length()\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-dump
-For primitive values, the \f3dump\fR command is identical to the \f3print\fR command\&. For objects, the \f3dump\fR command prints the current value of each field defined in the object\&. Static and instance fields are included\&. The \f3dump\fR command supports the same set of expressions as the \f3print\fR command\&.
-.TP
-threads
-List the threads that are currently running\&. For each thread, its name and current status are printed and an index that can be used in other commands\&. In this example, the thread index is 4, the thread is an instance of \f3java\&.lang\&.Thread\fR, the thread name is \f3main\fR, and it is currently running\&.
-.sp
-.nf
-\f34\&. (java\&.lang\&.Thread)0x1 main running\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-.TP
-thread
-Select a thread to be the current thread\&. Many \f3jdb\fR commands are based on the setting of the current thread\&. The thread is specified with the thread index described in the threads command\&.
-.TP
-where
-The \f3where\fR command with no arguments dumps the stack of the current thread\&. The \f3where\fR\f3all\fR command dumps the stack of all threads in the current thread group\&. The \f3where\fR\f3threadindex\fR command dumps the stack of the specified thread\&.
-
-If the current thread is suspended either through an event such as a breakpoint or through the \f3suspend\fR command, then local variables and fields can be displayed with the \f3print\fR and \f3dump\fR commands\&. The \f3up\fR and \f3down\fR commands select which stack frame is the current stack frame\&.
-.SS BREAKPOINTS
-Breakpoints can be set in JDB at line numbers or at the first instruction of a method, for example:
-.TP 0.2i
-\(bu
-The command \f3stop at MyClass:22\fR sets a breakpoint at the first instruction for line 22 of the source file containing \f3MyClass\fR\&.
-.TP 0.2i
-\(bu
-The command \f3stop in java\&.lang\&.String\&.length\fR sets a breakpoint at the beginning of the method \f3java\&.lang\&.String\&.length\fR\&.
-.TP 0.2i
-\(bu
-The command \f3stop in MyClass\&.<clinit>\fR uses \f3<clinit>\fR to identify the static initialization code for \f3MyClass\fR\&.
+When an exception occurs for which there isn\[aq]t a \f[CB]catch\f[R]
+statement anywhere in the throwing thread\[aq]s call stack, the JVM
+typically prints an exception trace and exits.
+When running under the JDB, however, control returns to the JDB at the
+offending throw.
+You can then use the \f[CB]jdb\f[R] command to diagnose the cause of the
+exception.
.PP
-When a method is overloaded, you must also specify its argument types so that the proper method can be selected for a breakpoint\&. For example, \f3MyClass\&.myMethod(int,java\&.lang\&.String)\fR or \f3MyClass\&.myMethod()\fR\&.
+Use the \f[CB]catch\f[R] command to cause the debugged application to stop
+at other thrown exceptions, for example:
+\f[CB]catch\ java.io.FileNotFoundException\f[R] or \f[CB]catch\f[R]
+\f[CB]mypackage.BigTroubleException\f[R].
+Any exception that\[aq]s an instance of the specified class or subclass
+stops the application at the point where the exception is thrown.
.PP
-The \f3clear\fR command removes breakpoints using the following syntax: \f3clear MyClass:45\fR\&. Using the \f3clear\fR or \f3stop\fR command with no argument displays a list of all breakpoints currently set\&. The \f3cont\fR command continues execution\&.
-.SS STEPPING
-The \f3step\fR command advances execution to the next line whether it is in the current stack frame or a called method\&. The \f3next\fR command advances execution to the next line in the current stack frame\&.
-.SS EXCEPTIONS
-When an exception occurs for which there is not a \f3catch\fR statement anywhere in the throwing thread\&'s call stack, the JVM typically prints an exception trace and exits\&. When running under JDB, however, control returns to JDB at the offending throw\&. You can then use the \f3jdb\fR command to diagnose the cause of the exception\&.
+The \f[CB]ignore\f[R] command negates the effect of an earlier
+\f[CB]catch\f[R] command.
+The \f[CB]ignore\f[R] command doesn\[aq]t cause the debugged JVM to ignore
+specific exceptions, but only to ignore the debugger.
+.SH OPTIONS FOR THE JDB COMMAND
+.PP
+When you use the \f[CB]jdb\f[R] command instead of the \f[CB]java\f[R]
+command on the command line, the \f[CB]jdb\f[R] command accepts many of
+the same options as the \f[CB]java\f[R] command.
.PP
-Use the \f3catch\fR command to cause the debugged application to stop at other thrown exceptions, for example: \f3catch java\&.io\&.FileNotFoundException\fR or \f3catch\fR\f3mypackage\&.BigTroubleException\fR\&. Any exception that is an instance of the specified class or subclass stops the application at the point where it is thrown\&.
-.PP
-The \f3ignore\fR command negates the effect of an earlier \f3catch\fR command\&. The \f3ignore\fR command does not cause the debugged JVM to ignore specific exceptions, but only to ignore the debugger\&.
-.SH OPTIONS
-When you use the \f3jdb\fR command instead of the \f3java\fR command on the command line, the \f3jdb\fR command accepts many of the same options as the \f3java\fR command, including \f3-D\fR, \f3-classpath\fR, and \f3-X\fR options\&. The following list contains additional options that are accepted by the \f3jdb\fR command\&.
-.PP
-Other options are supported to provide alternate mechanisms for connecting the debugger to the JVM it is to debug\&. For additional documentation about these connection alternatives, see Java Platform Debugger Architecture (JPDA) at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html
+The following options are accepted by the \f[CB]jdb\f[R] command:
+.TP
+.B \f[CB]\-help\f[R]
+Displays a help message.
+.RS
+.RE
.TP
--help
-.br
-Displays a help message\&.
+.B \f[CB]\-sourcepath\f[R] \f[I]dir1\f[R]\f[CB]:\f[R]\f[I]dir2\f[R]\f[CB]:\f[R]...
+Uses the specified path to search for source files in the specified
+path.
+If this option is not specified, then use the default path of dot
+(\f[CB]\&.\f[R]).
+.RS
+.RE
.TP
--sourcepath \fIdir1:dir2: \&. \&. \&.\fR
-.br
-Uses the specified path to search for source files in the specified path\&. If this option is not specified, then use the default path of dot (\&.)\&.
-.TP
--attach \fIaddress\fR
-.br
-Attaches the debugger to a running JVM with the default connection mechanism\&.
+.B \f[CB]\-attach\f[R] \f[I]address\f[R]
+Attaches the debugger to a running JVM with the default connection
+mechanism.
+.RS
+.RE
.TP
--listen \fIaddress\fR
-.br
-Waits for a running JVM to connect to the specified address with a standard connector\&.
+.B \f[CB]\-listen\f[R] \f[I]address\f[R]
+Waits for a running JVM to connect to the specified address with a
+standard connector.
+.RS
+.RE
.TP
--launch
-.br
-Starts the debugged application immediately upon startup of JDB\&. The \f3-launch\fR option removes the need for the \f3run\fR command\&. The debugged application is launched and then stopped just before the initial application class is loaded\&. At that point, you can set any necessary breakpoints and use the \f3cont\fR command to continue execution\&.
+.B \f[CB]\-listenany\f[R]
+Waits for a running JVM to connect at any available address using a
+standard connector.
+.RS
+.RE
.TP
--listconnectors
-.br
-List the connectors available in this JVM\&.
+.B \f[CB]\-launch\f[R]
+Starts the debugged application immediately upon startup of the
+\f[CB]jdb\f[R] command.
+The \f[CB]\-launch\f[R] option removes the need for the \f[CB]run\f[R]
+command.
+The debugged application is launched and then stopped just before the
+initial application class is loaded.
+At that point, you can set any necessary breakpoints and use the
+\f[CB]cont\f[R] command to continue execution.
+.RS
+.RE
.TP
--connect connector-name:\fIname1=value1\fR
-.br
-Connects to the target JVM with the named connector and listed argument values\&.
-.TP
--dbgtrace [\fIflags\fR]
-.br
-Prints information for debugging the \f3jdb\fR command\&.
+.B \f[CB]\-listconnectors\f[R]
+Lists the connectors available in this JVM.
+.RS
+.RE
.TP
--tclient
-.br
-Runs the application in the Java HotSpot VM client\&.
-.TP
--tserver
-.br
-Runs the application in the Java HotSpot VM server\&.
+.B \f[CB]\-connect\f[R] \f[I]connector\-name\f[R]\f[CB]:\f[R]\f[I]name1\f[R]\f[CB]=\f[R]\f[I]value1\f[R]....
+Connects to the target JVM with the named connector and listed argument
+values.
+.RS
+.RE
.TP
--J\fIoption\fR
-.br
-Passes \f3option\fR to the JVM, where option is one of the options described on the reference page for the Java application launcher\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&. See java(1)\&.
-.SH OPTIONS\ FORWARDED\ TO\ THE\ DEBUGGER\ PROCESS
+.B \f[CB]\-dbgtrace\f[R] [\f[I]flags\f[R]]
+Prints information for debugging the \f[CB]jdb\f[R] command.
+.RS
+.RE
.TP
--v -verbose[:\fIclass\fR|gc|jni]
-.br
-Turns on verbose mode\&.
+.B \f[CB]\-tclient\f[R]
+Runs the application in the Java HotSpot VM client.
+.RS
+.RE
.TP
--D\fIname\fR=\fIvalue\fR
-.br
-Sets a system property\&.
+.B \f[CB]\-tserver\f[R]
+Runs the application in the Java HotSpot VM server.
+.RS
+.RE
.TP
--classpath \fIdir\fR
-.br
-Lists directories separated by colons in which to look for classes\&.
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+Passes \f[I]option\f[R] to the JVM, where option is one of the options
+described on the reference page for the Java application launcher.
+For example, \f[CB]\-J\-Xms48m\f[R] sets the startup memory to 48 MB.
+See \f[I]Overview of Java Options\f[R] in \f[B]java\f[R].
+.RS
+.RE
+.PP
+The following options are forwarded to the debuggee process:
+.TP
+.B \f[CB]\-v\f[R] or \f[CB]\-verbose\f[R][\f[CB]:\f[R]\f[I]class\f[R]|\f[CB]gc\f[R]|\f[CB]jni\f[R]]
+Turns on the verbose mode.
+.RS
+.RE
.TP
--X\fIoption\fR
-.br
-Nonstandard target JVM option\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-javac(1)
-.TP 0.2i
-\(bu
-java(1)
-.TP 0.2i
-\(bu
-javap(1)
+.B \f[CB]\-D\f[R]\f[I]name\f[R]\f[CB]=\f[R]\f[I]value\f[R]
+Sets a system property.
+.RS
+.RE
+.TP
+.B \f[CB]\-classpath\f[R] \f[I]dir\f[R]
+Lists directories separated by colons in which to look for classes.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
+.TP
+.B \f[CB]\-X\f[R] \f[I]option\f[R]
+A nonstandard target JVM option.
+.RS
+.RE
+.PP
+Other options are supported to provide alternate mechanisms for
+connecting the debugger to the JVM that it\[aq]s to debug.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jlink/share/man/jlink.1 Fri May 31 17:27:28 2019 -0700
@@ -0,0 +1,436 @@
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
+.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+.\"
+.\" This code is free software; you can redistribute it and/or modify it
+.\" under the terms of the GNU General Public License version 2 only, as
+.\" published by the Free Software Foundation.
+.\"
+.\" This code is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" version 2 for more details (a copy is included in the LICENSE file that
+.\" accompanied this code).
+.\"
+.\" You should have received a copy of the GNU General Public License version
+.\" 2 along with this work; if not, write to the Free Software Foundation,
+.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+.\"
+.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+.\" or visit www.oracle.com if you need additional information or have any
+.\" questions.
+.\"
+.\" Automatically generated by Pandoc 2.3.1
+.\"
+.TH "JLINK" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jlink \- assemble and optimize a set of modules and their dependencies
+into a custom runtime image
+.SH SYNOPSIS
+.PP
+\f[CB]jlink\f[R] [\f[I]options\f[R]] \f[CB]\-\-module\-path\f[R]
+\f[I]modulepath\f[R] \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R] [,
+\f[I]module\f[R]...]
+.TP
+.B \f[I]options\f[R]
+Command\-line options separated by spaces.
+See \f[B]jlink Options\f[R].
+.RS
+.RE
+.TP
+.B \f[I]modulepath\f[R]
+The path where the \f[CB]jlink\f[R] tool discovers observable modules.
+These modules can be modular JAR files, JMOD files, or exploded modules.
+.RS
+.RE
+.TP
+.B \f[I]module\f[R]
+The names of the modules to add to the runtime image.
+The \f[CB]jlink\f[R] tool adds these modules and their transitive
+dependencies.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jlink\f[R] tool links a set of modules, along with their
+transitive dependences, to create a custom runtime image.
+.PP
+\f[B]Note:\f[R]
+.PP
+Developers are responsible for updating their custom runtime images.
+.SH JLINK OPTIONS
+.TP
+.B \f[CB]\-\-add\-modules\f[R] \f[I]mod\f[R] [\f[CB],\f[R] \f[I]mod\f[R]...]
+Adds the named modules, \f[I]mod\f[R], to the default set of root
+modules.
+The default set of root modules is empty.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-bind\-services\f[R]
+Link service provider modules and their dependencies.
+.RS
+.RE
+.TP
+.B \f[CB]\-c\ ={0|1|2}\f[R] or \f[CB]\-\-compress={0|1|2}\f[R]
+Enable compression of resources:
+.RS
+.IP \[bu] 2
+\f[CB]0\f[R]: No compression
+.IP \[bu] 2
+\f[CB]1\f[R]: Constant string sharing
+.IP \[bu] 2
+\f[CB]2\f[R]: ZIP
+.RE
+.TP
+.B \f[CB]\-\-disable\-plugin\f[R] \f[I]pluginname\f[R]
+Disables the specified plug\-in.
+See \f[B]jlink Plug\-ins\f[R] for the list of supported plug\-ins.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-endian\f[R] {\f[CB]little\f[R]|\f[CB]big\f[R]}
+Specifies the byte order of the generated image.
+The default value is the format of your system\[aq]s architecture.
+.RS
+.RE
+.TP
+.B \f[CB]\-h\f[R] or \f[CB]\-\-help\f[R]
+Prints the help message.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-ignore\-signing\-information\f[R]
+Suppresses a fatal error when signed modular JARs are linked in the
+runtime image.
+The signature\-related files of the signed modular JARs aren\[aq]t
+copied to the runtime image.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-launcher\f[R] \f[I]command\f[R]\f[CB]=\f[R]\f[I]module\f[R] or \f[CB]\-\-launcher\f[R] \f[I]command\f[R]\f[CB]=\f[R]\f[I]module\f[R]\f[CB]/\f[R]\f[I]main\f[R]
+Specifies the launcher command name for the module or the command name
+for the module and main class (the module and the main class names are
+separated by a slash (\f[CB]/\f[R])).
+.RS
+.RE
+.TP
+.B \f[CB]\-\-limit\-modules\f[R] \f[I]mod\f[R] [\f[CB],\f[R] \f[I]mod\f[R]...]
+Limits the universe of observable modules to those in the transitive
+closure of the named modules, \f[CB]mod\f[R], plus the main module, if
+any, plus any further modules specified in the \f[CB]\-\-add\-modules\f[R]
+option.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-list\-plugins\f[R]
+Lists available plug\-ins, which you can access through command\-line
+options; see \f[B]jlink Plug\-ins\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-p\f[R] or \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
+Specifies the module path.
+.RS
+.PP
+If this option is not specified, then the default module path is
+\f[CB]$JAVA_HOME/jmods\f[R].
+This directory contains the \f[CB]java.base\f[R] module and the other
+standard and JDK modules.
+If this option is specified but the \f[CB]java.base\f[R] module cannot be
+resolved from it, then the \f[CB]jlink\f[R] command appends
+\f[CB]$JAVA_HOME/jmods\f[R] to the module path.
+.RE
+.TP
+.B \f[CB]\-\-no\-header\-files\f[R]
+Excludes header files.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-no\-man\-pages\f[R]
+Excludes man pages.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-output\f[R] \f[I]path\f[R]
+Specifies the location of the generated runtime image.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-save\-opts\f[R] \f[I]filename\f[R]
+Saves \f[CB]jlink\f[R] options in the specified file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-suggest\-providers\f[R] [\f[I]name\f[R]\f[CB],\f[R] ...]
+Suggest providers that implement the given service types from the module
+path.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-version\f[R]
+Prints version information.
+.RS
+.RE
+.TP
+.B \f[CB]\@\f[R]\f[I]filename\f[R]
+Reads options from the specified file.
+.RS
+.PP
+An options file is a text file that contains the options and values that
+you would typically enter in a command prompt.
+Options may appear on one line or on several lines.
+You may not specify environment variables for path names.
+You may comment out lines by prefixing a hash symbol (\f[CB]#\f[R]) to the
+beginning of the line.
+.PP
+The following is an example of an options file for the \f[CB]jlink\f[R]
+command:
+.IP
+.nf
+\f[CB]
+#Wed\ Dec\ 07\ 00:40:19\ EST\ 2016
+\-\-module\-path\ mlib
+\-\-add\-modules\ com.greetings
+\-\-output\ greetingsapp
+\f[R]
+.fi
+.RE
+.SH JLINK PLUG\-INS
+.PP
+\f[B]Note:\f[R]
+.PP
+Plug\-ins not listed in this section aren\[aq]t supported and are
+subject to change.
+.PP
+For plug\-in options that require a \f[I]pattern\-list\f[R], the value is
+a comma\-separated list of elements, with each element using one the
+following forms:
+.IP \[bu] 2
+\f[I]glob\-pattern\f[R]
+.IP \[bu] 2
+\f[CB]glob:\f[R]\f[I]glob\-pattern\f[R]
+.IP \[bu] 2
+\f[CB]regex:\f[R]\f[I]regex\-pattern\f[R]
+.IP \[bu] 2
+\f[CB]\@\f[R]\f[I]filename\f[R]
+.RS 2
+.IP \[bu] 2
+\f[I]filename\f[R] is the name of a file that contains patterns to be
+used, one pattern per line.
+.RE
+.PP
+For a complete list of all available plug\-ins, run the command
+\f[CB]jlink\ \-\-list\-plugins\f[R].
+.SS Plugin \f[CB]compress\f[R]
+.TP
+.B Options
+\f[CB]\-\-compress=\f[R]{\f[CB]0\f[R]|\f[CB]1\f[R]|\f[CB]2\f[R]}[\f[CB]:filter=\f[R]\f[I]pattern\-list\f[R]]
+.RS
+.RE
+.TP
+.B Description
+Compresses all resources in the output image.
+.RS
+.IP \[bu] 2
+Level 0: No compression
+.IP \[bu] 2
+Level 1: Constant string sharing
+.IP \[bu] 2
+Level 2: ZIP
+.PP
+An optional \f[I]pattern\-list\f[R] filter can be specified to list the
+pattern of files to include.
+.RE
+.SS Plugin \f[CB]include\-locales\f[R]
+.TP
+.B Options
+\f[CB]\-\-include\-locales=\f[R]\f[I]langtag\f[R][\f[CB],\f[R]\f[I]langtag\f[R]]*
+.RS
+.RE
+.TP
+.B Description
+Includes the list of locales where \f[I]langtag\f[R] is a BCP 47 language
+tag.
+This option supports locale matching as defined in RFC 4647.
+Ensure that you add the module jdk.localedata when using this option.
+.RS
+.PP
+Example:
+.RS
+.PP
+\f[CB]\-\-add\-modules\ jdk.localedata\ \-\-include\-locales=en,ja,*\-IN\f[R]
+.RE
+.RE
+.SS Plugin \f[CB]order\-resources\f[R]
+.TP
+.B Options
+\f[CB]\-\-order\-resources=\f[R]\f[I]pattern\-list\f[R]
+.RS
+.RE
+.TP
+.B Description
+Orders the specified paths in priority order.
+If \f[CB]\@\f[R]\f[I]filename\f[R] is specified, then each line in
+\f[I]pattern\-list\f[R] must be an exact match for the paths to be
+ordered.
+.RS
+.PP
+Example:
+.RS
+.PP
+\f[CB]\-\-order\-resources=/module\-info.class,\@classlist,/java.base/java/lang/\f[R]
+.RE
+.RE
+.SS Plugin \f[CB]strip\-debug\f[R]
+.TP
+.B Options
+\f[CB]\-\-strip\-debug\f[R]
+.RS
+.RE
+.TP
+.B Description
+Strips debug information from the output image.
+.RS
+.RE
+.SH JLINK EXAMPLES
+.PP
+The following command creates a runtime image in the directory
+\f[CB]greetingsapp\f[R].
+This command links the module \f[CB]com.greetings\f[R], whose module
+definition is contained in the directory \f[CB]mlib\f[R].
+.IP
+.nf
+\f[CB]
+jlink\ \-\-module\-path\ mlib\ \-\-add\-modules\ com.greetings\ \-\-output\ greetingsapp
+\f[R]
+.fi
+.PP
+The following command lists the modules in the runtime image
+\f[CB]greetingsapp\f[R]:
+.IP
+.nf
+\f[CB]
+greetingsapp/bin/java\ \-\-list\-modules
+com.greetings
+java.base\@11
+java.logging\@11
+org.astro\@1.0
+\f[R]
+.fi
+.PP
+The following command creates a runtime image in the directory
+compressedrt that\[aq]s stripped of debug symbols, uses compression to
+reduce space, and includes French language locale information:
+.IP
+.nf
+\f[CB]
+jlink\ \-\-add\-modules\ jdk.localedata\ \-\-strip\-debug\ \-\-compress=2\ \-\-include\-locales=fr\ \-\-output\ compressedrt
+\f[R]
+.fi
+.PP
+The following example compares the size of the runtime image
+\f[CB]compressedrt\f[R] with \f[CB]fr_rt\f[R], which isn\[aq]t stripped of
+debug symbols and doesn\[aq]t use compression:
+.IP
+.nf
+\f[CB]
+jlink\ \-\-add\-modules\ jdk.localedata\ \-\-include\-locales=fr\ \-\-output\ fr_rt
+
+du\ \-sh\ ./compressedrt\ ./fr_rt
+23M\ \ \ \ \ ./compressedrt
+36M\ \ \ \ \ ./fr_rt
+\f[R]
+.fi
+.PP
+The following example lists the providers that implement
+\f[CB]java.security.Provider\f[R]:
+.IP
+.nf
+\f[CB]
+jlink\ \-\-suggest\-providers\ java.security.Provider
+
+Suggested\ providers:
+\ \ java.naming\ provides\ java.security.Provider\ used\ by\ java.base
+\ \ java.security.jgss\ provides\ java.security.Provider\ used\ by\ java.base
+\ \ java.security.sasl\ provides\ java.security.Provider\ used\ by\ java.base
+\ \ java.smartcardio\ provides\ java.security.Provider\ used\ by\ java.base
+\ \ java.xml.crypto\ provides\ java.security.Provider\ used\ by\ java.base
+\ \ jdk.crypto.cryptoki\ provides\ java.security.Provider\ used\ by\ java.base
+\ \ jdk.crypto.ec\ provides\ java.security.Provider\ used\ by\ java.base
+\ \ jdk.crypto.mscapi\ provides\ java.security.Provider\ used\ by\ java.base
+\ \ jdk.security.jgss\ provides\ java.security.Provider\ used\ by\ java.base
+\f[R]
+.fi
+.PP
+The following example creates a custom runtime image named
+\f[CB]mybuild\f[R] that includes only \f[CB]java.naming\f[R] and
+\f[CB]jdk.crypto.cryptoki\f[R] and their dependencies but no other
+providers.
+Note that these dependencies must exist in the module path:
+.IP
+.nf
+\f[CB]
+jlink\ \-\-add\-modules\ java.naming,jdk.crypto.cryptoki\ \-\-output\ mybuild
+\f[R]
+.fi
+.PP
+The following command is similar to the one that creates a runtime image
+named \f[CB]greetingsapp\f[R], except that it will link the modules
+resolved from root modules with service binding; see the
+\f[B]\f[BC]Configuration.resolveAndBind\f[B]\f[R]
+[https://docs.oracle.com/javase/10/docs/api/java/lang/module/Configuration.html#resolveAndBind\-java.lang.module.ModuleFinder\-java.util.List\-java.lang.module.ModuleFinder\-java.util.Collection\-]
+method.
+.IP
+.nf
+\f[CB]
+jlink\ \-\-module\-path\ mlib\ \-\-add\-modules\ com.greetings\ \-\-output\ greetingsapp\ \-\-bind\-services
+\f[R]
+.fi
+.PP
+The following command lists the modules in the runtime image
+greetingsapp created by this command:
+.IP
+.nf
+\f[CB]
+greetingsapp/bin/java\ \-\-list\-modules
+com.greetings
+java.base\@11
+java.compiler\@11
+java.datatransfer\@11
+java.desktop\@11
+java.logging\@11
+java.management\@11
+java.management.rmi\@11
+java.naming\@11
+java.prefs\@11
+java.rmi\@11
+java.security.jgss\@11
+java.security.sasl\@11
+java.smartcardio\@11
+java.xml\@11
+java.xml.crypto\@11
+jdk.accessibility\@11
+jdk.charsets\@11
+jdk.compiler\@11
+jdk.crypto.cryptoki\@11
+jdk.crypto.ec\@11
+jdk.crypto.mscapi\@11
+jdk.internal.opt\@11
+jdk.jartool\@11
+jdk.javadoc\@11
+jdk.jdeps\@11
+jdk.jfr\@11
+jdk.jlink\@11
+jdk.localedata\@11
+jdk.management\@11
+jdk.management.jfr\@11
+jdk.naming.dns\@11
+jdk.naming.rmi\@11
+jdk.security.auth\@11
+jdk.security.jgss\@11
+jdk.zipfs\@11
+org.astro\@1.0
+\f[R]
+.fi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jlink/share/man/jmod.1 Fri May 31 17:27:28 2019 -0700
@@ -0,0 +1,442 @@
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
+.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+.\"
+.\" This code is free software; you can redistribute it and/or modify it
+.\" under the terms of the GNU General Public License version 2 only, as
+.\" published by the Free Software Foundation.
+.\"
+.\" This code is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" version 2 for more details (a copy is included in the LICENSE file that
+.\" accompanied this code).
+.\"
+.\" You should have received a copy of the GNU General Public License version
+.\" 2 along with this work; if not, write to the Free Software Foundation,
+.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+.\"
+.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+.\" or visit www.oracle.com if you need additional information or have any
+.\" questions.
+.\"
+.\" Automatically generated by Pandoc 2.3.1
+.\"
+.TH "JMOD" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jmod \- create JMOD files and list the content of existing JMOD files
+.SH SYNOPSIS
+.PP
+\f[CB]jmod\f[R]
+(\f[CB]create\f[R]|\f[CB]extract\f[R]|\f[CB]list\f[R]|\f[CB]describe\f[R]|\f[CB]hash\f[R])
+[\f[I]options\f[R]] \f[I]jmod\-file\f[R]
+.PP
+Includes the following:
+.PP
+\f[B]Main operation modes\f[R]
+.TP
+.B \f[CB]create\f[R]
+Creates a new JMOD archive file.
+.RS
+.RE
+.TP
+.B \f[CB]extract\f[R]
+Extracts all the files from the JMOD archive file.
+.RS
+.RE
+.TP
+.B \f[CB]list\f[R]
+Prints the names of all the entries.
+.RS
+.RE
+.TP
+.B \f[CB]describe\f[R]
+Prints the module details.
+.RS
+.RE
+.TP
+.B \f[CB]hash\f[R]
+Determines leaf modules and records the hashes of the dependencies that
+directly and indirectly require them.
+.RS
+.RE
+.PP
+\f[B]Options\f[R]
+.TP
+.B \f[I]options\f[R]
+See \f[B]Options for jmod\f[R].
+.RS
+.RE
+.PP
+\f[B]Required\f[R]
+.TP
+.B \f[I]jmod\-file\f[R]
+Specifies the name of the JMOD file to create or from which to retrieve
+information.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+\f[B]Note:\f[R] For most development tasks, including deploying modules
+on the module path or publishing them to a Maven repository, continue to
+package modules in modular JAR files.
+The \f[CB]jmod\f[R] tool is intended for modules that have native
+libraries or other configuration files or for modules that you intend to
+link, with the \f[B]jlink\f[R] tool, to a runtime image.
+.PP
+The JMOD file format lets you aggregate files other than
+\f[CB]\&.class\f[R] files, metadata, and resources.
+This format is transportable but not executable, which means that you
+can use it during compile time or link time but not at run time.
+.PP
+Many \f[CB]jmod\f[R] options involve specifying a path whose contents are
+copied into the resulting JMOD files.
+These options copy all the contents of the specified path, including
+subdirectories and their contents, but exclude files whose names match
+the pattern specified by the \f[CB]\-\-exclude\f[R] option.
+.PP
+With the \f[CB]\-\-hash\-modules\f[R] option or the \f[CB]jmod\ hash\f[R]
+command, you can, in each module\[aq]s descriptor, record hashes of the
+content of the modules that are allowed to depend upon it, thus "tying"
+together these modules.
+This enables a package to be exported to one or more specifically\-named
+modules and to no others through qualified exports.
+The runtime verifies if the recorded hash of a module matches the one
+resolved at run time; if not, the runtime returns an error.
+.SH OPTIONS FOR JMOD
+.TP
+.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
+Specifies the location of application JAR files or a directory
+containing classes to copy into the resulting JMOD file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-cmds\f[R] \f[I]path\f[R]
+Specifies the location of native commands to copy into the resulting
+JMOD file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-config\f[R] \f[I]path\f[R]
+Specifies the location of user\-editable configuration files to copy
+into the resulting JMOD file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-dir\f[R] \f[I]path\f[R]
+Specifies the location where \f[CB]jmod\f[R] puts extracted files from the
+specified JMOD archive.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-dry\-run\f[R]
+Performs a dry run of hash mode.
+It identifies leaf modules and their required modules without recording
+any hash values.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-exclude\f[R] \f[I]pattern\-list\f[R]
+Excludes files matching the supplied comma\-separated pattern list, each
+element using one the following forms:
+.RS
+.IP \[bu] 2
+\f[I]glob\-pattern\f[R]
+.IP \[bu] 2
+\f[CB]glob:\f[R]\f[I]glob\-pattern\f[R]
+.IP \[bu] 2
+\f[CB]regex:\f[R]\f[I]regex\-pattern\f[R]
+.PP
+See the \f[B]\f[BC]FileSystem.getPathMatcher\f[B]\f[R]
+[https://docs.oracle.com/javase/10/docs/api/java/nio/file/FileSystem.html#getPathMatcher\-java.lang.String\-]
+method for the syntax of \f[I]glob\-pattern\f[R].
+See the \f[B]\f[BC]Pattern\f[B]\f[R]
+[https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html]
+class for the syntax of \f[I]regex\-pattern\f[R], which represents a
+regular expression.
+.RE
+.TP
+.B \f[CB]\-\-hash\-modules\f[R] \f[I]regex\-pattern\f[R]
+Determines the leaf modules and records the hashes of the dependencies
+directly and indirectly requiring them, based on the module graph of the
+modules matching the given \f[I]regex\-pattern\f[R].
+The hashes are recorded in the JMOD archive file being created, or a
+JMOD archive or modular JAR on the module path specified by the
+\f[CB]jmod\ hash\f[R] command.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-header\-files\f[R] \f[I]path\f[R]
+Specifies the location of header files to copy into the resulting JMOD
+file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\f[R] or \f[CB]\-h\f[R]
+Prints a usage message.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\-extra\f[R]
+Prints help for extra options.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-legal\-notices\f[R] \f[I]path\f[R]
+Specifies the location of legal notices to copy into the resulting JMOD
+file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-libs\f[R] \f[I]path\f[R]
+Specifies location of native libraries to copy into the resulting JMOD
+file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-main\-class\f[R] \f[I]class\-name\f[R]
+Specifies main class to record in the module\-info.class file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-man\-pages\f[R] \f[I]path\f[R]
+Specifies the location of man pages to copy into the resulting JMOD
+file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-version\f[R] \f[I]module\-version\f[R]
+Specifies the module version to record in the module\-info.class file.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]path\f[R] or \f[CB]\-p\f[R] \f[I]path\f[R]
+Specifies the module path.
+This option is required if you also specify \f[CB]\-\-hash\-modules\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-target\-platform\f[R] \f[I]platform\f[R]
+Specifies the target platform.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-version\f[R]
+Prints version information of the \f[CB]jmod\f[R] tool.
+.RS
+.RE
+.TP
+.B \f[CB]\@\f[R]\f[I]filename\f[R]
+Reads options from the specified file.
+.RS
+.PP
+An options file is a text file that contains the options and values that
+you would ordinarily enter in a command prompt.
+Options may appear on one line or on several lines.
+You may not specify environment variables for path names.
+You may comment out lines by prefixinga hash symbol (\f[CB]#\f[R]) to the
+beginning of the line.
+.PP
+The following is an example of an options file for the \f[CB]jmod\f[R]
+command:
+.IP
+.nf
+\f[CB]
+#Wed\ Dec\ 07\ 00:40:19\ EST\ 2016
+create\ \-\-class\-path\ mods/com.greetings\ \-\-module\-path\ mlib
+\ \ \-\-cmds\ commands\ \-\-config\ configfiles\ \-\-header\-files\ src/h
+\ \ \-\-libs\ lib\ \-\-main\-class\ com.greetings.Main
+\ \ \-\-man\-pages\ man\ \-\-module\-version\ 1.0
+\ \ \-\-os\-arch\ "x86_x64"\ \-\-os\-name\ "Mac\ OS\ X"
+\ \ \-\-os\-version\ "10.10.5"\ greetingsmod
+\f[R]
+.fi
+.RE
+.SH EXTRA OPTIONS FOR JMOD
+.PP
+In addition to the options described in \f[B]Options for jmod\f[R], the
+following are extra options that can be used with the command.
+.TP
+.B \f[CB]\-\-do\-not\-resolve\-by\-default\f[R]
+Exclude from the default root set of modules
+.RS
+.RE
+.TP
+.B \f[CB]\-\-warn\-if\-resolved\f[R]
+Hint for a tool to issue a warning if the module is resolved.
+One of deprecated, deprecated\-for\-removal, or incubating.
+.RS
+.RE
+.SH JMOD CREATE EXAMPLE
+.PP
+The following is an example of creating a JMOD file:
+.IP
+.nf
+\f[CB]
+jmod\ create\ \-\-class\-path\ mods/com.greetings\ \-\-cmds\ commands
+\ \ \-\-config\ configfiles\ \-\-header\-files\ src/h\ \-\-libs\ lib
+\ \ \-\-main\-class\ com.greetings.Main\ \-\-man\-pages\ man\ \-\-module\-version\ 1.0
+\ \ \-\-os\-arch\ "x86_x64"\ \-\-os\-name\ "Mac\ OS\ X"
+\ \ \-\-os\-version\ "10.10.5"\ greetingsmod
+\f[R]
+.fi
+.SH JMOD HASH EXAMPLE
+.PP
+The following example demonstrates what happens when you try to link a
+leaf module (in this example, \f[CB]ma\f[R]) with a required module
+(\f[CB]mb\f[R]), and the hash value recorded in the required module
+doesn\[aq]t match that of the leaf module.
+.IP "1." 3
+Create and compile the following \f[CB]\&.java\f[R] files:
+.RS 4
+.IP \[bu] 2
+\f[CB]jmodhashex/src/ma/module\-info.java\f[R]
+.RS 2
+.IP
+.nf
+\f[CB]
+module\ ma\ {
+\ \ requires\ mb;
+}
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+\f[CB]jmodhashex/src/mb/module\-info.java\f[R]
+.RS 2
+.IP
+.nf
+\f[CB]
+module\ mb\ {
+}
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+\f[CB]jmodhashex2/src/ma/module\-info.java\f[R]
+.RS 2
+.IP
+.nf
+\f[CB]
+module\ ma\ {
+\ \ requires\ mb;
+}
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+\f[CB]jmodhashex2/src/mb/module\-info.java\f[R]
+.RS 2
+.IP
+.nf
+\f[CB]
+module\ mb\ {
+}
+\f[R]
+.fi
+.RE
+.RE
+.IP "2." 3
+Create a JMOD archive for each module.
+Create the directories \f[CB]jmodhashex/jmods\f[R] and
+\f[CB]jmodhashex2/jmods\f[R], and then run the following commands from the
+\f[CB]jmodhashex\f[R] directory, then from the \f[CB]jmodhashex2\f[R]
+directory:
+.RS 4
+.IP \[bu] 2
+\f[CB]jmod\ create\ \-\-class\-path\ mods/ma\ jmods/ma.jmod\f[R]
+.IP \[bu] 2
+\f[CB]jmod\ create\ \-\-class\-path\ mods/mb\ jmods/mb.jmod\f[R]
+.RE
+.IP "3." 3
+Optionally preview the \f[CB]jmod\ hash\f[R] command.
+Run the following command from the \f[CB]jmodhashex\f[R] directory:
+.RS 4
+.PP
+\f[CB]jmod\ hash\ \-\-dry\-run\ \-module\-path\ jmods\ \-\-hash\-modules\ .*\f[R]
+.PP
+The command prints the following:
+.IP
+.nf
+\f[CB]
+Dry\ run:
+mb
+\ \ hashes\ ma\ SHA\-256\ 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a
+\f[R]
+.fi
+.PP
+This indicates that the \f[CB]jmod\ hash\f[R] command (without the
+\f[CB]\-\-dry\-run\f[R] option) will record the hash value of the leaf
+module \f[CB]ma\f[R] in the module \f[CB]mb\f[R].
+.RE
+.IP "4." 3
+Record hash values in the JMOD archive files contained in the
+\f[CB]jmodhashex\f[R] directory.
+Run the following command from the \f[CB]jmodhashex\f[R] directory:
+.RS 4
+.RS
+.PP
+\f[CB]jmod\ hash\ \-\-module\-path\ jmods\ \-\-hash\-modules\ .*\f[R]
+.RE
+.PP
+The command prints the following:
+.RS
+.PP
+\f[CB]Hashes\ are\ recorded\ in\ module\ mb\f[R]
+.RE
+.RE
+.IP "5." 3
+Print information about each JMOD archive contained in the
+\f[CB]jmodhashex\f[R] directory.
+Run the highlighted commands from the \f[CB]jmodhashex\f[R] directory:
+.RS 4
+.IP
+.nf
+\f[CB]
+jmod\ describe\ jmods/ma.jmod
+
+ma
+\ \ requires\ mandated\ java.base
+\ \ requires\ mb
+
+jmod\ describe\ jmods/mb.jmod
+
+mb
+\ \ requires\ mandated\ java.base
+\ \ hashes\ ma\ SHA\-256\ 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a
+\f[R]
+.fi
+.RE
+.IP "6." 3
+Attempt to create a runtime image that contains the module \f[CB]ma\f[R]
+from the directory \f[CB]jmodhashex2\f[R] but the module \f[CB]mb\f[R] from
+the directory \f[CB]jmodhashex\f[R].
+Run the following command from the \f[CB]jmodhashex2\f[R] directory:
+.RS 4
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+.RS 2
+.RS
+.PP
+\f[CB]jlink\ \-\-module\-path\ $JAVA_HOME/jmods:jmods/ma.jmod:../jmodhashex/jmods/mb.jmod\ \-\-add\-modules\ ma\ \-\-output\ ma\-app\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R]
+.RS 2
+.RS
+.PP
+\f[CB]jlink\ \-\-module\-path\ %JAVA_HOME%/jmods;jmods/ma.jmod;../jmodhashex/jmods/mb.jmod\ \-\-add\-modules\ ma\ \-\-output\ ma\-app\f[R]
+.RE
+.RE
+.PP
+The command prints an error message similar to the following:
+.IP
+.nf
+\f[CB]
+Error:\ Hash\ of\ ma\ (a2d77889b0cb067df02a3abc39b01ac1151966157a68dc4241562c60499150d2)\ differs\ to
+expected\ hash\ (07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a)\ recorded\ in\ mb
+\f[R]
+.fi
+.RE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jshell/share/man/jshell.1 Fri May 31 17:27:28 2019 -0700
@@ -0,0 +1,1432 @@
+.\"t
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
+.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+.\"
+.\" This code is free software; you can redistribute it and/or modify it
+.\" under the terms of the GNU General Public License version 2 only, as
+.\" published by the Free Software Foundation.
+.\"
+.\" This code is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" version 2 for more details (a copy is included in the LICENSE file that
+.\" accompanied this code).
+.\"
+.\" You should have received a copy of the GNU General Public License version
+.\" 2 along with this work; if not, write to the Free Software Foundation,
+.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+.\"
+.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+.\" or visit www.oracle.com if you need additional information or have any
+.\" questions.
+.\"
+.\" Automatically generated by Pandoc 2.3.1
+.\"
+.TH "JSHELL" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jshell \- interactively evaluate declarations, statements, and
+expressions of the Java programming language in a read\-eval\-print loop
+(REPL)
+.SH SYNOPSIS
+.PP
+\f[CB]jshell\f[R] [\f[I]options\f[R]] [\f[I]load\-files\f[R]]
+.TP
+.B \f[I]options\f[R]
+Command\-line options, separated by spaces.
+See \f[B]Options for jshell\f[R].
+.RS
+.RE
+.TP
+.B \f[I]load\-files\f[R]
+One or more scripts to run when the tool is started.
+Scripts can contain any valid code snippets or JShell commands.
+.RS
+.PP
+The script can be a local file or one of following predefined scripts:
+.TP
+.B \f[CB]DEFAULT\f[R]
+Loads the default entries, which are commonly used as imports.
+.RS
+.RE
+.TP
+.B \f[CB]JAVASE\f[R]
+Imports all Java SE packages.
+.RS
+.RE
+.TP
+.B \f[CB]PRINTING\f[R]
+Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as
+\f[CB]jshell\f[R] methods for use within the tool.
+.RS
+.RE
+.PP
+For more than one script, use a space to separate the names.
+Scripts are run in the order in which they\[aq]re entered on the command
+line.
+Command\-line scripts are run after startup scripts.
+To run a script after JShell is started, use the \f[CB]/open\f[R] command.
+.PP
+To accept input from standard input and suppress the interactive I/O,
+enter a hyphen (\-) for \f[I]load\-files\f[R].
+This option enables the use of the \f[CB]jshell\f[R] tool in pipe chains.
+.RE
+.SH DESCRIPTION
+.PP
+JShell provides a way to interactively evaluate declarations,
+statements, and expressions of the Java programming language, making it
+easier to learn the language, explore unfamiliar code and APIs, and
+prototype complex code.
+Java statements, variable definitions, method definitions, class
+definitions, import statements, and expressions are accepted.
+The bits of code entered are called snippets.
+.PP
+As snippets are entered, they\[aq]re evaluated, and feedback is
+provided.
+Feedback varies from the results and explanations of actions to nothing,
+depending on the snippet entered and the feedback mode chosen.
+Errors are described regardless of the feedback mode.
+Start with the verbose mode to get the most feedback while learning the
+tool.
+.PP
+Command\-line options are available for configuring the initial
+environment when JShell is started.
+Within JShell, commands are available for modifying the environment as
+needed.
+.PP
+Existing snippets can be loaded from a file to initialize a JShell
+session, or at any time within a session.
+Snippets can be modified within the session to try out different
+variations and make corrections.
+To keep snippets for later use, save them to a file.
+.SH OPTIONS FOR JSHELL
+.TP
+.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
+Specifies the root modules to resolve in addition to the initial module.
+.RS
+.RE
+.TP
+.B \f[CB]\-C\f[R]\f[I]flag\f[R]
+Provides a flag to pass to the compiler.
+To pass more than one flag, provide an instance of this option for each
+flag or flag argument needed.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
+Specifies the directories and archives that are searched to locate class
+files.
+This option overrides the path in the \f[CB]CLASSPATH\f[R] environment
+variable.
+If the environment variable isn\[aq]t set and this option isn\[aq]t
+used, then the current directory is searched.
+For Oracle Solaris, Linux, and macOS, use a colon (:) to separate items
+in the path.
+For Windows, use a semicolon (;) to separate items.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-feedback\f[R] \f[I]mode\f[R]
+Sets the initial level of feedback provided in response to what\[aq]s
+entered.
+The initial level can be overridden within a session by using the
+\f[CB]/set\ feedback\f[R] \f[I]mode\f[R] command.
+The default is \f[CB]normal\f[R].
+.RS
+.PP
+The following values are valid for \f[I]mode\f[R]:
+.TP
+.B \f[CB]verbose\f[R]
+Provides detailed feedback for entries.
+Additional information about the action performed is displayed after the
+result of the action.
+The next prompt is separated from the feedback by a blank line.
+.RS
+.RE
+.TP
+.B \f[CB]normal\f[R]
+Provides an average amount of feedback.
+The next prompt is separated from the feedback by a blank line.
+.RS
+.RE
+.TP
+.B \f[CB]concise\f[R]
+Provides minimal feedback.
+The next prompt immediately follows the code snippet or feedback.
+.RS
+.RE
+.TP
+.B \f[CB]silent\f[R]
+Provides no feedback.
+The next prompt immediately follows the code snippet.
+.RS
+.RE
+.TP
+.B \f[I]custom\f[R]
+Provides custom feedback based on how the mode is defined.
+Custom feedback modes are created within JShell by using the
+\f[CB]/set\ mode\f[R] command.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]\-\-help\f[R] or \f[CB]\-h\f[R] or \f[CB]\-?\f[R]
+Prints a summary of standard options and exits the tool.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-help\-extra\f[R] or \f[CB]\-X\f[R]
+Prints a summary of nonstandard options and exits the tool.
+Nonstandard options are subject to change without notice.
+.RS
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]flag\f[R]
+Provides a flag to pass to the runtime system.
+To pass more than one flag, provide an instance of this option for each
+flag or flag argument needed.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
+Specifies where to find application modules.
+For Oracle Solaris, Linux, and macOS, use a colon (:) to separate items
+in the path.
+For Windows, use a semicolon (;) to separate items.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-no\-startup\f[R]
+Prevents startup scripts from running when JShell starts.
+Use this option to run only the scripts entered on the command line when
+JShell is started, or to start JShell without any preloaded information
+if no scripts are entered.
+This option can\[aq]t be used if the \f[CB]\-\-startup\f[R] option is
+used.
+.RS
+.RE
+.TP
+.B \f[CB]\-q\f[R]
+Sets the feedback mode to \f[CB]concise\f[R], which is the same as
+entering \f[CB]\-\-feedback\ concise\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-R\f[R]\f[I]flag\f[R]
+Provides a flag to pass to the remote runtime system.
+To pass more than one flag, provide an instance of this option for each
+flag or flag argument to pass.
+.RS
+.RE
+.TP
+.B \f[CB]\-s\f[R]
+Sets the feedback mode to \f[CB]silent\f[R], which is the same as entering
+\f[CB]\-\-feedback\ silent\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-show\-version\f[R]
+Prints version information and enters the tool.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-startup\f[R] \f[I]file\f[R]
+Overrides the default startup script for this session.
+The script can contain any valid code snippets or commands.
+.RS
+.PP
+The script can be a local file or one of the following predefined
+scripts:
+.TP
+.B \f[CB]DEFAULT\f[R]
+Loads the default entries, which are commonly used as imports.
+.RS
+.RE
+.TP
+.B \f[CB]JAVASE\f[R]
+Imports all Java SE packages.
+.RS
+.RE
+.TP
+.B \f[CB]PRINTING\f[R]
+Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as
+\f[CB]jshell\f[R] methods for use within the tool.
+.RS
+.RE
+.PP
+For more than one script, provide a separate instance of this option for
+each script.
+Startup scripts are run when JShell is first started and when the
+session is restarted with the \f[CB]/reset\f[R], \f[CB]/reload\f[R], or
+\f[CB]/env\f[R] command.
+Startup scripts are run in the order in which they\[aq]re entered on the
+command line.
+.PP
+This option can\[aq]t be used if the \f[CB]\-\-no\-startup\f[R] option is
+used.
+.RE
+.TP
+.B \f[CB]\-v\f[R]
+Sets the feedback mode to \f[CB]verbose\f[R], which is the same as
+entering \f[CB]\-\-feedback\ verbose\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-version\f[R]
+Prints version information and exits the tool.
+.RS
+.RE
+.SH JSHELL COMMANDS
+.PP
+Within the \f[CB]jshell\f[R] tool, commands are used to modify the
+environment and manage code snippets.
+.TP
+.B \f[CB]/drop\f[R] {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
+Drops snippets identified by name, ID, or ID range, making them
+inactive.
+For a range of IDs, provide the starting ID and ending ID separated with
+a hyphen.
+To provide a list, separate the items in the list with a space.
+Use the \f[CB]/list\f[R] command to see the IDs of code snippets.
+.RS
+.RE
+.TP
+.B \f[CB]/edit\f[R] [\f[I]option\f[R]]
+Opens an editor.
+If no option is entered, then the editor opens with the active snippets.
+.RS
+.PP
+The following options are valid:
+.TP
+.B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
+Opens the editor with the snippets identified by name, ID, or ID range.
+For a range of IDs, provide the starting ID and ending ID separated with
+a hyphen.
+To provide a list, separate the items in the list with a space.
+Use the \f[CB]/list\f[R] command to see the IDs of code snippets.
+.RS
+.RE
+.TP
+.B \f[CB]\-all\f[R]
+Opens the editor with all snippets, including startup snippets and
+snippets that failed, were overwritten, or were dropped.
+.RS
+.RE
+.TP
+.B \f[CB]\-start\f[R]
+Opens the editor with startup snippets that were evaluated when JShell
+was started.
+.RS
+.RE
+.PP
+To exit edit mode, close the editor window, or respond to the prompt
+provided if the \f[CB]\-wait\f[R] option was used when the editor was set.
+.PP
+Use the \f[CB]/set\ editor\f[R] command to specify the editor to use.
+If no editor is set, then the following environment variables are
+checked in order: \f[CB]JSHELLEDITOR\f[R], \f[CB]VISUAL\f[R], and
+\f[CB]EDITOR\f[R].
+If no editor is set in JShell and none of the editor environment
+variables is set, then a simple default editor is used.
+.RE
+.TP
+.B \f[CB]/env\f[R] [\f[I]options\f[R]]
+Displays the environment settings, or updates the environment settings
+and restarts the session.
+If no option is entered, then the current environment settings are
+displayed.
+If one or more options are entered, then the session is restarted as
+follows:
+.RS
+.IP \[bu] 2
+Updates the environment settings with the provided options.
+.IP \[bu] 2
+Resets the execution state.
+.IP \[bu] 2
+Runs the startup scripts.
+.IP \[bu] 2
+Silently replays the history in the order entered.
+The history includes all valid snippets or \f[CB]/drop\f[R] commands
+entered at the \f[CB]jshell\f[R] prompt, in scripts entered on the command
+line, or scripts entered with the \f[CB]/open\f[R] command.
+.PP
+Environment settings entered on the command line or provided with a
+previous \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command are
+maintained unless an \f[I]option\f[R] is entered that overwrites the
+setting.
+.PP
+The following options are valid:
+.TP
+.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
+Specifies the root modules to resolve in addition to the initial module.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-add\-exports\f[R] \f[I]source\-module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R][\f[CB],\f[R]\f[I]target\-module\f[R]]*
+Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to
+\f[I]target\-module\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
+Specifies the directories and archives that are searched to locate class
+files.
+This option overrides the path in the \f[CB]CLASSPATH\f[R] environment
+variable.
+If the environment variable isn\[aq]t set and this option isn\[aq]t
+used, then the current directory is searched.
+For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
+separate items in the path.
+For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
+Specifies where to find application modules.
+For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
+separate items in the path.
+For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/exit\f[R] [\f[I]integer\-expression\-snippet\f[R]]
+Exits the tool.
+If no snippet is entered, the exit status is zero.
+If a snippet is entered and the result of the snippet is an integer, the
+result is used as the exit status.
+If an error occurs, or the result of the snippet is not an integer, an
+error is displayed and the tool remains active.
+.RS
+.RE
+.TP
+.B \f[CB]/history\f[R]
+Displays what was entered in this session.
+.RS
+.RE
+.TP
+.B \f[CB]/help\f[R] [\f[I]command\f[R]|\f[I]subject\f[R]]
+Displays information about commands and subjects.
+If no options are entered, then a summary of information for all
+commands and a list of available subjects are displayed.
+If a valid command is provided, then expanded information for that
+command is displayed.
+If a valid subject is entered, then information about that subject is
+displayed.
+.RS
+.PP
+The following values for \f[I]subject\f[R] are valid:
+.TP
+.B \f[CB]context\f[R]
+Describes the options that are available for configuring the
+environment.
+.RS
+.RE
+.TP
+.B \f[CB]intro\f[R]
+Provides an introduction to the tool.
+.RS
+.RE
+.TP
+.B \f[CB]shortcuts\f[R]
+Describes keystrokes for completing commands and snippets.
+See \f[B]Input Shortcuts\f[R].
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/imports\f[R]
+Displays the current active imports, including those from the startup
+scripts and scripts that were entered on the command line when JShell
+was started.
+.RS
+.RE
+.TP
+.B \f[CB]/list\f[R] [\f[I]option\f[R]]
+Displays a list of snippets and their IDs.
+If no option is entered, then all active snippets are displayed, but
+startup snippets aren\[aq]t.
+.RS
+.PP
+The following options are valid:
+.TP
+.B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
+Displays the snippets identified by name, ID, or ID range.
+For a range of IDs, provide the starting ID and ending ID separated with
+a hyphen.
+To provide a list, separate the items in the list with a space.
+.RS
+.RE
+.TP
+.B \f[CB]\-all\f[R]
+Displays all snippets, including startup snippets and snippets that
+failed, were overwritten, or were dropped.
+IDs that begin with \f[CB]s\f[R] are startup snippets.
+IDs that begin with \f[CB]e\f[R] are snippets that failed.
+.RS
+.RE
+.TP
+.B \f[CB]\-start\f[R]
+Displays startup snippets that were evaluated when JShell was started.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/methods\f[R] [\f[I]option\f[R]]
+Displays information about the methods that were entered.
+If no option is entered, then the name, parameter types, and return type
+of all active methods are displayed.
+.RS
+.PP
+The following options are valid:
+.TP
+.B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
+Displays information for methods identified by name, ID, or ID range.
+For a range of IDs, provide the starting ID and ending ID separated with
+a hyphen.
+To provide a list, separate the items in the list with a space.
+Use the \f[CB]/list\f[R] command to see the IDs of code snippets.
+.RS
+.RE
+.TP
+.B \f[CB]\-all\f[R]
+Displays information for all methods, including those added when JShell
+was started, and methods that failed, were overwritten, or were dropped.
+.RS
+.RE
+.TP
+.B \f[CB]\-start\f[R]
+Displays information for startup methods that were added when JShell was
+started.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/open\f[R] \f[I]file\f[R]
+Opens the script specified and reads the snippets into the tool.
+The script can be a local file or one of the following predefined
+scripts:
+.RS
+.TP
+.B \f[CB]DEFAULT\f[R]
+Loads the default entries, which are commonly used as imports.
+.RS
+.RE
+.TP
+.B \f[CB]JAVASE\f[R]
+Imports all Java SE packages.
+.RS
+.RE
+.TP
+.B \f[CB]PRINTING\f[R]
+Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as
+\f[CB]jshell\f[R] methods for use within the tool.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/reload\f[R] [\f[I]options\f[R]]
+Restarts the session as follows:
+.RS
+.IP \[bu] 2
+Updates the environment settings with the provided options, if any.
+.IP \[bu] 2
+Resets the execution state.
+.IP \[bu] 2
+Runs the startup scripts.
+.IP \[bu] 2
+Replays the history in the order entered.
+The history includes all valid snippets or \f[CB]/drop\f[R] commands
+entered at the \f[CB]jshell\f[R] prompt, in scripts entered on the command
+line, or scripts entered with the \f[CB]/open\f[R] command.
+.PP
+Environment settings entered on the command line or provided with a
+previous \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command are
+maintained unless an \f[I]option\f[R] is entered that overwrites the
+setting.
+.PP
+The following options are valid:
+.TP
+.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
+Specifies the root modules to resolve in addition to the initial module.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-add\-exports\f[R] \f[I]source\-module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R][\f[CB],\f[R]\f[I]target\-module\f[R]]*
+Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to
+\f[I]target\-module\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
+Specifies the directories and archives that are searched to locate class
+files.
+This option overrides the path in the \f[CB]CLASSPATH\f[R] environment
+variable.
+If the environment variable isn\[aq]t set and this option isn\[aq]t
+used, then the current directory is searched.
+For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
+separate items in the path.
+For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
+Specifies where to find application modules.
+For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
+separate items in the path.
+For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
+.RS
+.RE
+.TP
+.B \f[CB]\-quiet\f[R]
+Replays the valid history without displaying it.
+Errors are displayed.
+.RS
+.RE
+.TP
+.B \f[CB]\-restore\f[R]
+Resets the environment to the state at the start of the previous run of
+the tool or to the last time a \f[CB]/reset\f[R], \f[CB]/reload\f[R], or
+\f[CB]/env\f[R] command was executed in the previous run.
+The valid history since that point is replayed.
+Use this option to restore a previous JShell session.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/reset\f[R] [\f[I]options\f[R]]
+Discards all entered snippets and restarts the session as follows:
+.RS
+.IP \[bu] 2
+Updates the environment settings with the provided options, if any.
+.IP \[bu] 2
+Resets the execution state.
+.IP \[bu] 2
+Runs the startup scripts.
+.PP
+History is not replayed.
+All code that was entered is lost.
+.PP
+Environment settings entered on the command line or provided with a
+previous \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command are
+maintained unless an \f[I]option\f[R] is entered that overwrites the
+setting.
+.PP
+The following options are valid:
+.TP
+.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
+Specifies the root modules to resolve in addition to the initial module.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-add\-exports\f[R] \f[I]source\-module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R][\f[CB],\f[R]\f[I]target\-module\f[R]]*
+Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to
+\f[I]target\-module\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
+Specifies the directories and archives that are searched to locate class
+files.
+This option overrides the path in the \f[CB]CLASSPATH\f[R] environment
+variable.
+If the environment variable isn\[aq]t set and this option isn\[aq]t
+used, then the current directory is searched.
+For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
+separate items in the path.
+For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
+Specifies where to find application modules.
+For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
+separate items in the path.
+For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/save\f[R] [\f[I]options\f[R]] \f[I]file\f[R]
+Saves snippets and commands to the file specified.
+If no options are entered, then active snippets are saved.
+.RS
+.PP
+The following options are valid:
+.TP
+.B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
+Saves the snippets and commands identified by name, ID, or ID range.
+For a range of IDs, provide the starting ID and ending ID separated with
+a hyphen.
+To provide a list, separate the items in the list with a space.
+Use the \f[CB]/list\f[R] command to see the IDs of the code snippets.
+.RS
+.RE
+.TP
+.B \f[CB]\-all\f[R]
+Saves all snippets, including startup snippets and snippets that were
+overwritten or failed.
+.RS
+.RE
+.TP
+.B \f[CB]\-history\f[R]
+Saves the sequential history of all commands and snippets entered in the
+current session.
+.RS
+.RE
+.TP
+.B \f[CB]\-start\f[R]
+Saves the current startup settings.
+If no startup scripts were provided, then an empty file is saved.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/set\f[R] [\f[I]setting\f[R]]
+Sets configuration information, including the external editor, startup
+settings, and feedback mode.
+This command is also used to create a custom feedback mode with
+customized prompt, format, and truncation values.
+If no setting is entered, then the current setting for the editor,
+startup settings, and feedback mode are displayed.
+.RS
+.PP
+The following values are valid for \f[CB]setting\f[R]:
+.TP
+.B \f[CB]editor\f[R] [\f[I]options\f[R]] [\f[I]command\f[R]]
+Sets the command used to start an external editor when the
+\f[CB]/edit\f[R] command is entered.
+The command can include command arguments separated by spaces.
+If no command or options are entered, then the current setting is
+displayed.
+.RS
+.PP
+The following options are valid:
+.TP
+.B \f[CB]\-default\f[R]
+Sets the editor to the default editor provided with JShell.
+This option can\[aq]t be used if a command for starting an editor is
+entered.
+.RS
+.RE
+.TP
+.B \f[CB]\-delete\f[R]
+Sets the editor to the one in effect when the session started.
+If used with the \f[CB]\-retain\f[R] option, then the retained editor
+setting is deleted and the editor is set to the first of the following
+environment variables found: \f[CB]JSHELLEDITOR\f[R], \f[CB]VISUAL\f[R], or
+\f[CB]EDITOR\f[R].
+If none of the editor environment variables are set, then this option
+sets the editor to the default editor.
+.RS
+.PP
+This option can\[aq]t be used if a command for starting an editor is
+entered.
+.RE
+.TP
+.B \f[CB]\-retain\f[R]
+Saves the editor setting across sessions.
+If no other option or a command is entered, then the current setting is
+saved.
+.RS
+.RE
+.TP
+.B \f[CB]\-wait\f[R]
+Prompts the user to indicate when editing is complete.
+Otherwise control returns to JShell when the editor exits.
+Use this option if the editor being used exits immediately, for example,
+when an edit window already exists.
+This option is valid only when a command for starting an editor is
+entered.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]feedback\f[R] [\f[I]mode\f[R]]
+Sets the feedback mode used to respond to input.
+If no mode is entered, then the current mode is displayed.
+.RS
+.PP
+The following modes are valid: \f[CB]concise\f[R], \f[CB]normal\f[R],
+\f[CB]silent\f[R], \f[CB]verbose\f[R], and any custom mode created with the
+\f[CB]/set\ mode\f[R] command.
+.RE
+.TP
+.B \f[CB]format\f[R] \f[I]mode\f[R] \f[I]field\f[R] \f[CB]"\f[R]\f[I]format\-string\f[R]\f[CB]"\f[R] \f[I]selector\f[R]
+Sets the format of the feedback provided in response to input.
+If no mode is entered, then the current formats for all fields for all
+feedback modes are displayed.
+If only a mode is entered, then the current formats for that mode are
+displayed.
+If only a mode and field are entered, then the current formats for that
+field are displayed.
+.RS
+.PP
+To define a format, the following arguments are required:
+.TP
+.B \f[I]mode\f[R]
+Specifies a feedback mode to which the response format is applied.
+Only custom modes created with the \f[CB]/set\ mode\f[R] command can be
+modified.
+.RS
+.RE
+.TP
+.B \f[I]field\f[R]
+Specifies a context\-specific field to which the response format is
+applied.
+The fields are described in the online help, which is accessed from
+JShell using the \f[CB]/help\ /set\ format\f[R] command.
+.RS
+.RE
+.TP
+.B \f[CB]"\f[R]\f[I]format\-string\f[R]\f[CB]"\f[R]
+Specifies the string to use as the response format for the specified
+field and selector.
+The structure of the format string is described in the online help,
+which is accessed from JShell using the \f[CB]/help\ /set\ format\f[R]
+command.
+.RS
+.RE
+.TP
+.B \f[I]selector\f[R]
+Specifies the context in which the response format is applied.
+The selectors are described in the online help, which is accessed from
+JShell using the \f[CB]/help\ /set\ format\f[R] command.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]mode\f[R] [\f[I]mode\-name\f[R]] [\f[I]existing\-mode\f[R]] [\f[I]options\f[R]]
+Creates a custom feedback mode with the mode name provided.
+If no mode name is entered, then the settings for all modes are
+displayed, which includes the mode, prompt, format, and truncation
+settings.
+If the name of an existing mode is provided, then the settings from the
+existing mode are copied to the mode being created.
+.RS
+.PP
+The following options are valid:
+.TP
+.B \f[CB]\-command\f[R]|\f[CB]\-quiet\f[R]
+Specifies the level of feedback displayed for commands when using the
+mode.
+This option is required when creating a feedback mode.
+Use \f[CB]\-command\f[R] to show information and verification feedback for
+commands.
+Use \f[CB]\-quiet\f[R] to show only essential feedback for commands, such
+as error messages.
+.RS
+.RE
+.TP
+.B \f[CB]\-delete\f[R]
+Deletes the named feedback mode for this session.
+The name of the mode to delete is required.
+To permanently delete a retained mode, use the \f[CB]\-retain\f[R] option
+with this option.
+Predefined modes can\[aq]t be deleted.
+.RS
+.RE
+.TP
+.B \f[CB]\-retain\f[R]
+Saves the named feedback mode across sessions.
+The name of the mode to retain is required.
+.RS
+.RE
+.PP
+Configure the new feedback mode using the \f[CB]/set\ prompt\f[R],
+\f[CB]/set\ format\f[R], and \f[CB]/set\ truncation\f[R] commands.
+.PP
+To start using the new mode, use the \f[CB]/set\ feedback\f[R] command.
+.RE
+.TP
+.B \f[CB]prompt\f[R] \f[I]mode\f[R] \f[CB]"\f[R]\f[I]prompt\-string\f[R]\f[CB]"\f[R] \f[CB]"\f[R]\f[I]continuation\-prompt\-string\f[R]\f[CB]"\f[R]
+Sets the prompts for input within JShell.
+If no mode is entered, then the current prompts for all feedback modes
+are displayed.
+If only a mode is entered, then the current prompts for that mode are
+displayed.
+.RS
+.PP
+To define a prompt, the following arguments are required:
+.TP
+.B \f[I]mode\f[R]
+Specifies the feedback mode to which the prompts are applied.
+Only custom modes created with the \f[CB]/set\ mode\f[R] command can be
+modified.
+.RS
+.RE
+.TP
+.B \f[CB]"\f[R]\f[I]prompt\-string\f[R]\f[CB]"\f[R]
+Specifies the string to use as the prompt for the first line of input.
+.RS
+.RE
+.TP
+.B \f[CB]"\f[R]\f[I]continuation\-prompt\-string\f[R]\f[CB]"\f[R]
+Specifies the string to use as the prompt for the additional input lines
+needed to complete a snippet.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]start\f[R] [\f[CB]\-retain\f[R]] [\f[I]file\f[R] [\f[I]file\f[R]...]|\f[I]option\f[R]]
+Sets the names of the startup scripts used when the next
+\f[CB]/reset\f[R], \f[CB]/reload\f[R], or \f[CB]/env\f[R] command is entered.
+If more than one script is entered, then the scripts are run in the
+order entered.
+If no scripts or options are entered, then the current startup settings
+are displayed.
+.RS
+.PP
+The scripts can be local files or one of the following predefined
+scripts:
+.TP
+.B \f[CB]DEFAULT\f[R]
+Loads the default entries, which are commonly used as imports.
+.RS
+.RE
+.TP
+.B \f[CB]JAVASE\f[R]
+Imports all Java SE packages.
+.RS
+.RE
+.TP
+.B \f[CB]PRINTING\f[R]
+Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as
+\f[CB]jshell\f[R] methods for use within the tool.
+.RS
+.RE
+.PP
+The following options are valid:
+.TP
+.B \f[CB]\-default\f[R]
+Sets the startup settings to the default settings.
+.RS
+.RE
+.TP
+.B \f[CB]\-none\f[R]
+Specifies that no startup settings are used.
+.RS
+.RE
+.PP
+Use the \f[CB]\-retain\f[R] option to save the start setting across
+sessions.
+.RE
+.TP
+.B \f[CB]truncation\f[R] \f[I]mode\f[R] \f[I]length\f[R] \f[I]selector\f[R]
+Sets the maximum length of a displayed value.
+If no mode is entered, then the current truncation values for all
+feedback modes are displayed.
+If only a mode is entered, then the current truncation values for that
+mode are displayed.
+.RS
+.PP
+To define truncation values, the following arguments are required:
+.TP
+.B \f[I]mode\f[R]
+Specifies the feedback mode to which the truncation value is applied.
+Only custom modes created with the \f[CB]/set\ mode\f[R] command can be
+modified.
+.RS
+.RE
+.TP
+.B \f[I]length\f[R]
+Specifies the unsigned integer to use as the maximum length for the
+specified selector.
+.RS
+.RE
+.TP
+.B \f[I]selector\f[R]
+Specifies the context in which the truncation value is applied.
+The selectors are described in the online help, which is accessed from
+JShell using the \f[CB]/help\ /set\ truncation\f[R] command.
+.RS
+.RE
+.RE
+.RE
+.TP
+.B \f[CB]/types\f[R] [\f[I]option\f[R]]
+Displays classes, interfaces, and enums that were entered.
+If no option is entered, then all current active classes, interfaces,
+and enums are displayed.
+.RS
+.PP
+The following options are valid:
+.TP
+.B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
+Displays information for classes, interfaces, and enums identified by
+name, ID, or ID range.
+For a range of IDs, provide the starting ID and ending ID separated with
+a hyphen.
+To provide a list, separate the items in the list with a space.
+Use the \f[CB]/list\f[R] command to see the IDs of the code snippets.
+.RS
+.RE
+.TP
+.B \f[CB]\-all\f[R]
+Displays information for all classes, interfaces, and enums, including
+those added when JShell was started, and classes, interfaces, and enums
+that failed, were overwritten, or were dropped.
+.RS
+.RE
+.TP
+.B \f[CB]\-start\f[R]
+Displays information for startup classes, interfaces, and enums that
+were added when JShell was started.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/vars\f[R] [\f[I]option\f[R]]
+Displays the name, type, and value of variables that were entered.
+If no option is entered, then all current active variables are
+displayed.
+.RS
+.PP
+The following options are valid:
+.TP
+.B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
+Displays information for variables identified by name, ID, or ID range.
+For a range of IDs, provide the starting ID and ending ID separated with
+a hyphen.
+To provide a list, separate the items in the list with a space.
+Use the \f[CB]/list\f[R] command to see the IDs of the code snippets.
+.RS
+.RE
+.TP
+.B \f[CB]\-all\f[R]
+Displays information for all variables, including those added when
+JShell was started, and variables that failed, were overwritten, or were
+dropped.
+.RS
+.RE
+.TP
+.B \f[CB]\-start\f[R]
+Displays information for startup variables that were added when JShell
+was started.
+.RS
+.RE
+.RE
+.TP
+.B \f[CB]/?\f[R]
+Same as the \f[CB]/help\f[R] command.
+.RS
+.RE
+.TP
+.B \f[CB]/!\f[R]
+Reruns the last snippet.
+.RS
+.RE
+.TP
+.B \f[CB]/\f[R]{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
+Reruns the snippets identified by ID, range of IDs, or name.
+For a range of IDs, provide the starting ID and ending ID separated with
+a hyphen.
+To provide a list, separate the items in the list with a space.
+The first item in the list must be an ID or ID range.
+Use the \f[CB]/list\f[R] command to see the IDs of the code snippets.
+.RS
+.RE
+.TP
+.B \f[CB]/\-\f[R]\f[I]n\f[R]
+Reruns the \-\f[I]n\f[R]th previous snippet.
+For example, if 15 code snippets were entered, then \f[CB]/\-4\f[R] runs
+the 11th snippet.
+Commands aren\[aq]t included in the count.
+.RS
+.RE
+.SH INPUT SHORTCUTS
+.PP
+The following shortcuts are available for entering commands and snippets
+in JShell.
+.SS Tab completion
+.TP
+.B \f[B]<tab>\f[R]
+When entering snippets, commands, subcommands, command arguments, or
+command options, use the Tab key to automatically complete the item.
+If the item can\[aq]t be determined from what was entered, then possible
+options are provided.
+.RS
+.PP
+When entering a method call, use the Tab key after the method call\[aq]s
+opening parenthesis to see the parameters for the method.
+If the method has more than one signature, then all signatures are
+displayed.
+Pressing the Tab key a second time displays the description of the
+method and the parameters for the first signature.
+Continue pressing the Tab key for a description of any additional
+signatures.
+.RE
+.TP
+.B \f[B]Shift+<Tab> V\f[R]
+After entering a complete expression, use this key sequence to convert
+the expression to a variable declaration of a type determined by the
+type of the expression.
+.RS
+.RE
+.TP
+.B \f[B]Shift+<Tab> M\f[R]
+After entering a complete expression or statement, use this key sequence
+to convert the expression or statement to a method declaration.
+If an expression is entered, the return type is based on the type of the
+expression.
+.RS
+.RE
+.TP
+.B \f[B]Shift+<Tab> I\f[R]
+When an identifier is entered that can\[aq]t be resolved, use this key
+sequence to show possible imports that resolve the identifier based on
+the content of the specified class path.
+.RS
+.RE
+.SS Command abbreviations
+.PP
+An abbreviation of a command is accepted if the abbreviation uniquely
+identifies a command.
+For example, \f[CB]/l\f[R] is recognized as the \f[CB]/list\f[R] command.
+However, \f[CB]/s\f[R] isn\[aq]t a valid abbreviation because it can\[aq]t
+be determined if the \f[CB]/set\f[R] or \f[CB]/save\f[R] command is meant.
+Use \f[CB]/se\f[R] for the \f[CB]/set\f[R] command or \f[CB]/sa\f[R] for the
+\f[CB]/save\f[R] command.
+.PP
+Abbreviations are also accepted for subcommands, command arguments, and
+command options.
+For example, use \f[CB]/m\ \-a\f[R] to display all methods.
+.SS History navigation
+.PP
+A history of what was entered is maintained across sessions.
+Use the up and down arrows to scroll through commands and snippets from
+the current and past sessions.
+Use the Ctrl key with the up and down arrows to skip all but the first
+line of multiline snippets.
+.SS History search
+.PP
+Use the Ctrl+R key combination to search the history for the string
+entered.
+The prompt changes to show the string and the match.
+Ctrl+R searches backwards from the current location in the history
+through earlier entries.
+Ctrl+S searches forward from the current location in the history though
+later entries.
+.SH INPUT EDITING
+.PP
+The editing capabilities of JShell are similar to that of other common
+shells.
+Keyboard keys and key combinations provide line editing shortcuts.
+The Ctrl key and Meta key are used in key combinations.
+If your keyboard doesn\[aq]t have a Meta key, then the Alt key is often
+mapped to provide Meta key functionality.
+.PP
+.TS
+tab(@);
+l l.
+T{
+Key or Key Combination
+T}@T{
+Action
+T}
+_
+T{
+Return
+T}@T{
+Enter the current line.
+T}
+T{
+Left arrow
+T}@T{
+Move the cursor to the left one character.
+T}
+T{
+Right arrow
+T}@T{
+Move the cursor to the right one character.
+T}
+T{
+Ctrl+A
+T}@T{
+Move the cursor to the beginning of the line.
+T}
+T{
+Ctrl+E
+T}@T{
+Move the cursor to the end of the line.
+T}
+T{
+Meta+B
+T}@T{
+Move the cursor to the left one word.
+T}
+T{
+Meta+F
+T}@T{
+Move the cursor to the right one word.
+T}
+T{
+Delete
+T}@T{
+Delete the character under the cursor.
+T}
+T{
+Backspace
+T}@T{
+Delete the character before the cursor.
+T}
+T{
+Ctrl+K
+T}@T{
+Delete the text from the cursor to the end of the line.
+T}
+T{
+Meta+D
+T}@T{
+Delete the text from the cursor to the end of the word.
+T}
+T{
+Ctrl+W
+T}@T{
+Delete the text from the cursor to the previous white space.
+T}
+T{
+Ctrl+Y
+T}@T{
+Paste the most recently deleted text into the line.
+T}
+T{
+Meta+Y
+T}@T{
+After Ctrl+Y, press to cycle through the previously deleted text.
+T}
+.TE
+.SH EXAMPLE OF STARTING AND STOPPING A JSHELL SESSION
+.PP
+JShell is provided with the JDK.
+To start a session, enter \f[CB]jshell\f[R] on the command line.
+A welcome message is printed, and a prompt for entering commands and
+snippets is provided.
+.IP
+.nf
+\f[CB]
+%\ jshell
+|\ \ Welcome\ to\ JShell\ \-\-\ Version\ 9
+|\ \ For\ an\ introduction\ type:\ /help\ intro
+
+jshell>
+\f[R]
+.fi
+.PP
+To see which snippets were automatically loaded when JShell started, use
+the \f[CB]/list\ \-start\f[R] command.
+The default startup snippets are import statements for common packages.
+The ID for each snippet begins with the letter \f[I]s\f[R], which
+indicates it\[aq]s a startup snippet.
+.IP
+.nf
+\f[CB]
+jshell>\ /list\ \-start
+
+\ \ s1\ :\ import\ java.io.*;
+\ \ s2\ :\ import\ java.math.*;
+\ \ s3\ :\ import\ java.net.*;
+\ \ s4\ :\ import\ java.nio.file.*;
+\ \ s5\ :\ import\ java.util.*;
+\ \ s6\ :\ import\ java.util.concurrent.*;
+\ \ s7\ :\ import\ java.util.function.*;
+\ \ s8\ :\ import\ java.util.prefs.*;
+\ \ s9\ :\ import\ java.util.regex.*;
+\ s10\ :\ import\ java.util.stream.*;
+
+jshell>
+\f[R]
+.fi
+.PP
+To end the session, use the \f[CB]/exit\f[R] command.
+.IP
+.nf
+\f[CB]
+jshell>\ /exit
+|\ \ Goodbye
+
+%
+\f[R]
+.fi
+.SH EXAMPLE OF ENTERING SNIPPETS
+.PP
+Snippets are Java statements, variable definitions, method definitions,
+class definitions, import statements, and expressions.
+Terminating semicolons are automatically added to the end of a completed
+snippet if they\[aq]re missing.
+.PP
+The following example shows two variables and a method being defined,
+and the method being run.
+Note that a scratch variable is automatically created to hold the result
+because no variable was provided.
+.IP
+.nf
+\f[CB]
+jshell>\ int\ a=4
+a\ ==>\ 4
+
+jshell>\ int\ b=8
+b\ ==>\ 8
+
+jshell>\ int\ square(int\ i1)\ {
+\ \ \ ...>\ return\ i1\ *\ i1;
+\ \ \ ...>\ }
+|\ \ created\ method\ square(int)
+
+jshell>\ square(b)
+$5\ ==>\ 64
+\f[R]
+.fi
+.SH EXAMPLE OF CHANGING SNIPPETS
+.PP
+Change the definition of a variable, method, or class by entering it
+again.
+.PP
+The following examples shows a method being defined and the method run:
+.IP
+.nf
+\f[CB]
+jshell>\ String\ grade(int\ testScore)\ {
+\ \ \ ...>\ \ \ \ \ if\ (testScore\ >=\ 90)\ {
+\ \ \ ...>\ \ \ \ \ \ \ \ \ return\ "Pass";
+\ \ \ ...>\ \ \ \ \ }
+\ \ \ ...>\ \ \ \ \ return\ "Fail";
+\ \ \ ...>\ }
+|\ \ created\ method\ grade(int)
+
+jshell>\ grade(88)
+$3\ ==>\ "Fail"
+\f[R]
+.fi
+.PP
+To change the method \f[CB]grade\f[R] to allow more students to pass,
+enter the method definition again and change the pass score to
+\f[CB]80\f[R].
+Use the up arrow key to retrieve the previous entries to avoid having to
+reenter them and make the change in the \f[CB]if\f[R] statement.
+The following example shows the new definition and reruns the method to
+show the new result:
+.IP
+.nf
+\f[CB]
+jshell>\ String\ grade(int\ testScore)\ {
+\ \ \ ...>\ \ \ \ \ if\ (testScore\ >=\ 80)\ {
+\ \ \ ...>\ \ \ \ \ \ \ \ \ return\ "Pass";
+\ \ \ ...>\ \ \ \ \ }
+\ \ \ ...>\ \ \ \ \ return\ "Fail";
+\ \ \ ...>\ }
+|\ \ modified\ method\ grade(int)
+
+jshell>\ grade(88)
+$5\ ==>\ "Pass"
+\f[R]
+.fi
+.PP
+For snippets that are more than a few lines long, or to make more than a
+few changes, use the \f[CB]/edit\f[R] command to open the snippet in an
+editor.
+After the changes are complete, close the edit window to return control
+to the JShell session.
+The following example shows the command and the feedback provided when
+the edit window is closed.
+The \f[CB]/list\f[R] command is used to show that the pass score was
+changed to \f[CB]85\f[R].
+.IP
+.nf
+\f[CB]
+jshell>\ /edit\ grade
+|\ \ modified\ method\ grade(int)
+jshell>\ /list\ grade
+
+\ \ \ 6\ :\ String\ grade(int\ testScore)\ {
+\ \ \ \ \ \ \ \ \ \ \ if\ (testScore\ >=\ 85)\ {
+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return\ "Pass";
+\ \ \ \ \ \ \ \ \ \ \ }
+\ \ \ \ \ \ \ \ \ \ \ return\ "Fail";
+\ \ \ \ \ \ \ }
+\f[R]
+.fi
+.SH EXAMPLE OF CREATING A CUSTOM FEEDBACK MODE
+.PP
+The feedback mode determines the prompt that\[aq]s displayed, the
+feedback messages that are provided as snippets are entered, and the
+maximum length of a displayed value.
+Predefined feedback modes are provided.
+Commands for creating custom feedback modes are also provided.
+.PP
+Use the \f[CB]/set\ mode\f[R] command to create a new feedback mode.
+In the following example, the new mode \f[CB]mymode\f[R], is based on the
+predefined feedback mode, \f[CB]normal\f[R], and verifying command
+feedback is displayed:
+.IP
+.nf
+\f[CB]
+jshell>\ /set\ mode\ mymode\ normal\ \-command
+|\ \ Created\ new\ feedback\ mode:\ mymode
+\f[R]
+.fi
+.PP
+Because the new mode is based on the \f[CB]normal\f[R] mode, the prompts
+are the same.
+The following example shows how to see what prompts are used and then
+changes the prompts to custom strings.
+The first string represents the standard JShell prompt.
+The second string represents the prompt for additional lines in
+multiline snippets.
+.IP
+.nf
+\f[CB]
+jshell>\ /set\ prompt\ mymode
+|\ \ /set\ prompt\ mymode\ "\\njshell>\ "\ "\ \ \ ...>\ "
+
+jshell>\ /set\ prompt\ mymode\ "\\nprompt$\ "\ "\ \ \ continue$\ "
+\f[R]
+.fi
+.PP
+The maximum length of a displayed value is controlled by the truncation
+setting.
+Different types of values can have different lengths.
+The following example sets an overall truncation value of 72, and a
+truncation value of 500 for variable value expressions:
+.IP
+.nf
+\f[CB]
+jshell>\ /set\ truncation\ mymode\ 72
+
+jshell>\ /set\ truncation\ mymode\ 500\ varvalue
+\f[R]
+.fi
+.PP
+The feedback displayed after snippets are entered is controlled by the
+format setting and is based on the type of snippet entered and the
+action taken for that snippet.
+In the predefined mode \f[CB]normal\f[R], the string \f[CB]created\f[R] is
+displayed when a method is created.
+The following example shows how to change that string to
+\f[CB]defined\f[R]:
+.IP
+.nf
+\f[CB]
+jshell>\ /set\ format\ mymode\ action\ "defined"\ added\-primary
+\f[R]
+.fi
+.PP
+Use the \f[CB]/set\ feedback\f[R] command to start using the feedback mode
+that was just created.
+The following example shows the custom mode in use:
+.IP
+.nf
+\f[CB]
+jshell>\ /set\ feedback\ mymode
+|\ \ Feedback\ mode:\ mymode
+
+prompt$\ int\ square\ (int\ num1){
+\ \ \ continue$\ return\ num1*num1;
+\ \ \ continue$\ }
+|\ \ defined\ method\ square(int)
+
+prompt$
+\f[R]
+.fi
--- a/src/jdk.jstatd/share/man/jstatd.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.jstatd/share/man/jstatd.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,190 +19,182 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Monitoring Tools
-.\" Title: jstatd.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH jstatd 1 "21 November 2013" "JDK 8" "Monitoring Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-jstatd \- Monitors Java Virtual Machines (JVMs) and enables remote monitoring tools to attach to JVMs\&. This command is experimental and unsupported\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBjstatd\fR [ \fIoptions\fR ]
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.SH DESCRIPTION
-The \f3jstatd\fR command is an RMI server application that monitors for the creation and termination of instrumented Java HotSpot VMs and provides an interface to enable remote monitoring tools to attach to JVMs that are running on the local host\&.
+.TH "JSTATD" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jstatd \- monitor the creation and termination of instrumented Java
+HotSpot VMs
+.SH SYNOPSIS
+.PP
+\f[B]Note:\f[R] This command is experimental\ and unsupported.
+.PP
+\f[CB]jstatd\f[R] [\f[I]options\f[R]]
+.TP
+.B \f[I]options\f[R]
+This represents the \f[CB]jstatd\f[R] command\-line options.
+See \f[B]Options for the jstatd Command\f[R].
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]jstatd\f[R] command is an RMI server application that monitors
+for the creation and termination of instrumented Java HotSpot VMs and
+provides an interface to enable remote monitoring tools, \f[CB]jstat\f[R]
+and \f[CB]jps\f[R], to attach to JVMs that are running on the local host
+and collect information about the JVM process.
.PP
-The \f3jstatd\fR server requires an RMI registry on the local host\&. The \f3jstatd\fR server attempts to attach to the RMI registry on the default port, or on the port you specify with the \f3-p\fR\f3port\fR option\&. If an RMI registry is not found, then one is created within the \f3jstatd\fR application that is bound to the port that is indicated by the \f3-p\fR\f3port\fR option or to the default RMI registry port when the \f3-p\fR\f3port\fR option is omitted\&. You can stop the creation of an internal RMI registry by specifying the \f3-nr\fR option\&.
-.SH OPTIONS
+The \f[CB]jstatd\f[R] server requires an RMI registry on the local host.
+The \f[CB]jstatd\f[R] server attempts to attach to the RMI registry on the
+default port, or on the port you specify with the \f[CB]\-p\f[R]
+\f[CB]port\f[R] option.
+If an RMI registry is not found, then one is created within the
+\f[CB]jstatd\f[R] application that\[aq]s bound to the port that\[aq]s
+indicated by the \f[CB]\-p\f[R] \f[CB]port\f[R] option or to the default RMI
+registry port when the \f[CB]\-p\f[R] \f[CB]port\f[R] option is omitted.
+You can stop the creation of an internal RMI registry by specifying the
+\f[CB]\-nr\f[R] option.
+.SH OPTIONS FOR THE JSTATD COMMAND
.TP
--nr
-.br
-Does not attempt to create an internal RMI registry within the \f3jstatd\fR process when an existing RMI registry is not found\&.
+.B \f[CB]\-nr\f[R]
+This option does not attempt to create an internal RMI registry within
+the \f[CB]jstatd\f[R] process when an existing RMI registry isn\[aq]t
+found.
+.RS
+.RE
.TP
--p \fIport\fR
-.br
-The port number where the RMI registry is expected to be found, or when not found, created if the \f3-nr\fR option is not specified\&.
+.B \f[CB]\-p\f[R] \f[I]port\f[R]
+This option sets the port number where the RMI registry is expected to
+be found, or when not found, created if the \f[CB]\-nr\f[R] option
+isn\[aq]t specified.
+.RS
+.RE
.TP
--n \fIrminame\fR
-.br
-Name to which the remote RMI object is bound in the RMI registry\&. The default name is \f3JStatRemoteHost\fR\&. If multiple \f3jstatd\fR servers are started on the same host, then the name of the exported RMI object for each server can be made unique by specifying this option\&. However, doing so requires that the unique server name be included in the monitoring client\&'s \f3hostid\fR and \f3vmid\fR strings\&.
+.B \f[CB]\-n\f[R] \f[I]rminame\f[R]
+This option sets the name to which the remote RMI object is bound in the
+RMI registry.
+The default name is \f[CB]JStatRemoteHost\f[R].
+If multiple \f[CB]jstatd\f[R] servers are started on the same host, then
+the name of the exported RMI object for each server can be made unique
+by specifying this option.
+However, doing so requires that the unique server name be included in
+the monitoring client\[aq]s \f[CB]hostid\f[R] and \f[CB]vmid\f[R] strings.
+.RS
+.RE
.TP
--J\fIoption\fR
-.br
-Passes \f3option\fR to the JVM, where option is one of the \f3options\fR described on the reference page for the Java application launcher\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&. See java(1)\&.
-.SH SECURITY
-The \f3jstatd\fR server can only monitor JVMs for which it has the appropriate native access permissions\&. Therefore, the \f3jstatd\fR process must be running with the same user credentials as the target JVMs\&. Some user credentials, such as the root user in UNIX-based systems, have permission to access the instrumentation exported by any JVM on the system\&. A \f3jstatd\fR process running with such credentials can monitor any JVM on the system, but introduces additional security concerns\&.
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+This option passes a Java \f[CB]option\f[R] to the JVM, where the option
+is one of those described on the reference page for the Java application
+launcher.
+For example, \f[CB]\-J\-Xms48m\f[R] sets the startup memory to 48 MB.
+See \f[B]java\f[R].
+.RS
+.RE
+.SH SECURITY
.PP
-The \f3jstatd\fR server does not provide any authentication of remote clients\&. Therefore, running a \f3jstatd\fR server process exposes the instrumentation export by all JVMs for which the \f3jstatd\fR process has access permissions to any user on the network\&. This exposure might be undesirable in your environment, and therefore, local security policies should be considered before you start the \f3jstatd\fR process, particularly in production environments or on networks that are not secure\&.
-.PP
-The \f3jstatd\fR server installs an instance of \f3RMISecurityPolicy\fR when no other security manager is installed, and therefore, requires a security policy file to be specified\&. The policy file must conform to Default Policy Implementation and Policy File Syntax at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/PolicyFiles\&.html
+The \f[CB]jstatd\f[R] server can monitor only JVMs for which it has the
+appropriate native access permissions.
+Therefore, the \f[CB]jstatd\f[R] process must be running with the same
+user credentials as the target JVMs.
+Some user credentials, such as the root user in Oracle Solaris, Linux,
+and OS X operating systems, have permission to access the
+instrumentation exported by any JVM on the system.
+A \f[CB]jstatd\f[R] process running with such credentials can monitor any
+JVM on the system, but introduces additional security concerns.
.PP
-The following policy file allows the \f3jstatd\fR server to run without any security exceptions\&. This policy is less liberal than granting all permissions to all code bases, but is more liberal than a policy that grants the minimal permissions to run the \f3jstatd\fR server\&.
-.sp
-.nf
-\f3grant codebase "file:${java\&.home}/\&.\&./lib/tools\&.jar" { \fP
-.fi
-.nf
-\f3 permission java\&.security\&.AllPermission;\fP
-.fi
-.nf
-\f3};\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-To use this policy setting, copy the text into a file called \f3jstatd\&.all\&.policy\fR and run the \f3jstatd\fR server as follows:
-.sp
-.nf
-\f3jstatd \-J\-Djava\&.security\&.policy=jstatd\&.all\&.policy\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-For sites with more restrictive security practices, it is possible to use a custom policy file to limit access to specific trusted hosts or networks, though such techniques are subject to IP address spoofing attacks\&. If your security concerns cannot be addressed with a customized policy file, then the safest action is to not run the \f3jstatd\fR server and use the \f3jstat\fR and \f3jps\fR tools locally\&.
-.SH REMOTE\ INTERFACE
-The interface exported by the \f3jstatd\fR process is proprietary and guaranteed to change\&. Users and developers are discouraged from writing to this interface\&.
-.SH EXAMPLES
-The following are examples of the \f3jstatd\fR command\&. The \f3jstatd\fR scripts automatically start the server in the background
-.SS INTERNAL\ RMI\ REGISTRY
-This example shows hos to start a \f3jstatd\fR session with an internal RMI registry\&. This example assumes that no other server is bound to the default RMI registry port (port 1099)\&.
-.sp
-.nf
-\f3jstatd \-J\-Djava\&.security\&.policy=all\&.policy\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS EXTERNAL\ RMI\ REGISTRY
-This example starts a \f3jstatd\fR session with a external RMI registry\&.
-.sp
-.nf
-\f3rmiregistry&\fP
-.fi
-.nf
-\f3jstatd \-J\-Djava\&.security\&.policy=all\&.policy\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-This example starts a \f3jstatd\fR session with an external RMI registry server on port 2020\&.
-.sp
-.nf
-\f3jrmiregistry 2020&\fP
-.fi
-.nf
-\f3jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-p 2020\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-This example starts a \f3jstatd\fR session with an external RMI registry on port 2020 that is bound to \f3AlternateJstatdServerName\fR\&.
-.sp
-.nf
-\f3rmiregistry 2020&\fP
-.fi
-.nf
-\f3jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-p 2020\fP
-.fi
-.nf
-\f3 \-n AlternateJstatdServerName\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS STOP\ THE\ CREATION\ OF\ AN\ IN-PROCESS\ RMI\ REGISTRY
-This example starts a \f3jstatd\fR session that does not create an RMI registry when one is not found\&. This example assumes an RMI registry is already running\&. If an RMI registry is not running, then an error message is displayed\&.
-.sp
-.nf
-\f3jstatd \-J\-Djava\&.security\&.policy=all\&.policy \-nr\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SS ENABLE\ RMI\ LOGGING
-This example starts a \f3jstatd\fR session with RMI logging capabilities enabled\&. This technique is useful as a troubleshooting aid or for monitoring server activities\&.
-.sp
-.nf
-\f3jstatd \-J\-Djava\&.security\&.policy=all\&.policy\fP
-.fi
-.nf
-\f3 \-J\-Djava\&.rmi\&.server\&.logCalls=true\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-java(1)
-.TP 0.2i
-\(bu
-jps(1)
-.TP 0.2i
-\(bu
-jstat(1)
-.TP 0.2i
-\(bu
-rmiregistry(1)
+The \f[CB]jstatd\f[R] server doesn\[aq]t provide any authentication of
+remote clients.
+Therefore, running a \f[CB]jstatd\f[R] server process exposes the
+instrumentation export by all JVMs for which the \f[CB]jstatd\f[R] process
+has access permissions to any user on the network.
+This exposure might be undesirable in your environment, and therefore,
+local security policies should be considered before you start the
+\f[CB]jstatd\f[R] process, particularly in production environments or on
+networks that aren\[aq]t secure.
+.PP
+The \f[CB]jstatd\f[R] server installs an instance of
+\f[CB]RMISecurityPolicy\f[R] when no other security manager is installed,
+and therefore, requires a security policy file to be specified.
+The policy file must conform to Default Policy Implementation and Policy
+File Syntax.
+.PP
+If your security concerns can\[aq]t be addressed with a customized
+policy file, then the safest action is to not run the \f[CB]jstatd\f[R]
+server and use the \f[CB]jstat\f[R] and \f[CB]jps\f[R] tools locally.
+However, when using \f[CB]jps\f[R] to get a list of instrumented JVMs, the
+list will not include any JVMs running in docker containers.
+.SH REMOTE INTERFACE
+.PP
+The interface exported by the \f[CB]jstatd\f[R] process is proprietary and
+guaranteed to change.
+Users and developers are discouraged from writing to this interface.
+.SH EXAMPLES
+.PP
+The following are examples of the \f[CB]jstatd\f[R] command.
+The \f[CB]jstatd\f[R] scripts automatically start the server in the
+background.
+.SH INTERNAL RMI REGISTRY
+.PP
+This example shows how to start a \f[CB]jstatd\f[R] session with an
+internal RMI registry.
+This example assumes that no other server is bound to the default RMI
+registry port (port \f[CB]1099\f[R]).
+.RS
+.PP
+\f[CB]jstatd\ \-J\-Djava.security.policy=all.policy\f[R]
.RE
-.br
-'pl 8.5i
-'bp
+.SH EXTERNAL RMI REGISTRY
+.PP
+This example starts a \f[CB]jstatd\f[R] session with an external RMI
+registry.
+.IP
+.nf
+\f[CB]
+rmiregistry&
+jstatd\ \-J\-Djava.security.policy=all.policy
+\f[R]
+.fi
+.PP
+This example starts a \f[CB]jstatd\f[R] session with an external RMI
+registry server on port \f[CB]2020\f[R].
+.IP
+.nf
+\f[CB]
+jrmiregistry\ 2020&
+jstatd\ \-J\-Djava.security.policy=all.policy\ \-p\ 2020
+\f[R]
+.fi
+.PP
+This example starts a \f[CB]jstatd\f[R] session with an external RMI
+registry on port 2020 that\[aq]s bound to
+\f[CB]AlternateJstatdServerName\f[R].
+.IP
+.nf
+\f[CB]
+rmiregistry\ 2020&
+jstatd\ \-J\-Djava.security.policy=all.policy\ \-p\ 2020\ \-n\ AlternateJstatdServerName
+\f[R]
+.fi
+.SH STOP THE CREATION OF AN IN\-PROCESS RMI REGISTRY
+.PP
+This example starts a \f[CB]jstatd\f[R] session that doesn\[aq]t create an
+RMI registry when one isn\[aq]t found.
+This example assumes an RMI registry is already running.
+If an RMI registry isn\[aq]t running, then an error message is
+displayed.
+.RS
+.PP
+\f[CB]jstatd\ \-J\-Djava.security.policy=all.policy\ \-nr\f[R]
+.RE
+.SH ENABLE RMI LOGGING
+.PP
+This example starts a \f[CB]jstatd\f[R] session with RMI logging
+capabilities enabled.
+This technique is useful as a troubleshooting aid or for monitoring
+server activities.
+.RS
+.PP
+\f[CB]jstatd\ \-J\-Djava.security.policy=all.policy\ \-J\-Djava.rmi.server.logCalls=true\f[R]
+.RE
--- a/src/jdk.pack/share/man/pack200.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.pack/share/man/pack200.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,271 +19,339 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Java Deployment Tools
-.\" Title: pack200.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH pack200 1 "21 November 2013" "JDK 8" "Java Deployment Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-pack200 \- Packages a JAR file into a compressed pack200 file for web deployment\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBpack200\fR [\fIoptions\fR] \fIoutput\-file\fR \fIJAR\-file\fR
-.fi
-.sp
-Options can be in any order\&. The last option on the command line or in a properties file supersedes all previously specified options\&.
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.TP
-\fIoutput-file\fR
-Name of the output file\&.
-.TP
-\fIJAR-file\fR
-Name of the input file\&.
-.SH DESCRIPTION
-The \f3pack200\fR command is a Java application that transforms a JAR file into a compressed pack200 file with the Java gzip compressor\&. The pack200 files are highly compressed files that can be directly deployed to save bandwidth and reduce download time\&.
+.TH "PACK200" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+pack200 \- transform a Java Archive (JAR) file into a compressed pack200
+file with the Java gzip compressor
+.SH SYNOPSIS
+.PP
+\f[CB]pack200\f[R] [\f[I]\-opt...\f[R] | \f[I]\-\-option=value\f[R]]
+\f[I]x.pack[.gz]\f[R] \f[I]JAR\-file\f[R]
+.TP
+.B \f[I]\-opt...\f[R] | \f[I]\-\-option=value\f[R]
+Options can be in any order.
+The last option on the command line or in a properties file supersedes
+all previously specified options.
+See \f[B]Options for the pack200 Command\f[R].
+.RS
+.RE
+.TP
+.B \f[I]x.pack[.gz]\f[R]
+Name of the output file.
+.RS
+.RE
+.TP
+.B \f[I]JAR\-file\f[R]
+Name of the input file.
+.RS
+.RE
+.SH DESCRIPTION
.PP
-The \f3pack200\fR command has several options to fine-tune and set the compression engine\&. The typical usage is shown in the following example, where \f3myarchive\&.pack\&.gz\fR is produced with the default \f3pack200\fR command settings:
-.sp
-.nf
-\f3pack200 myarchive\&.pack\&.gz myarchive\&.jar\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH OPTIONS
+The \f[CB]pack200\f[R] command is a Java application that transforms a JAR
+file into a compressed \f[CB]pack200\f[R] file with the Java gzip
+compressor.
+This command packages a JAR file into a compressed \f[CB]pack200\f[R] file
+for web deployment.
+The \f[CB]pack200\f[R] files are highly compressed files that can be
+directly deployed to save bandwidth and reduce download time.
+.PP
+Typical usage is shown in the following example, where
+\f[CB]myarchive.pack.gz\f[R] is produced with the default \f[CB]pack200\f[R]
+command settings:
+.RS
+.PP
+\f[CB]pack200\ myarchive.pack.gz\ myarchive.jar\f[R]
+.RE
+.PP
+\f[B]Note:\f[R]
+.PP
+This command shouldn\[aq]t be confused with \f[CB]pack\f[R].
+The \f[CB]pack\f[R] and \f[CB]pack200\f[R] commands are separate products.
+The Java SE API Specification provided with the JDK is the superseding
+authority, when there are discrepancies.
+.SH EXIT STATUS
+.PP
+The following exit values are returned: 0 for successful completion and
+a number greater than 0 when an error occurs.
+.SH OPTIONS FOR THE PACK200 COMMAND
+.PP
+The \f[CB]pack200\f[R] command has several options to fine\-tune and set
+the compression engine.
+The typical usage is shown in the following example, where
+\f[CB]myarchive.pack.gz\f[R] is produced with the default \f[CB]pack200\f[R]
+command settings:
+.RS
+.PP
+\f[CB]pack200\ myarchive.pack.gz\ myarchive.jar\f[R]
+.RE
.TP
--r, --repack
-.br
-Produces a JAR file by packing and unpacking a JAR file\&. The resulting file can be used as an input to the \f3jarsigner\fR(1) tool\&. The following example packs and unpacks the myarchive\&.jar file:
-.sp
-.nf
-\f3pack200 \-\-repack myarchive\-packer\&.jar myarchive\&.jar\fP
-.fi
-.nf
-\f3pack200 \-\-repack myarchive\&.jar\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-The following example preserves the order of files in the input file\&.
+.B \f[CB]\-r\f[R] or \f[CB]\-\-repack\f[R]
+Produces a JAR file by packing and unpacking a JAR file.
+The resulting file can be used as an input to the \f[CB]jarsigner\f[R]
+tool.
+The following example packs and unpacks the myarchive.jar file:
+.RS
+.RS
+.PP
+\f[CB]pack200\ \-\-repack\ myarchive\-packer.jar\ myarchive.jar\f[R]
+.RE
+.RS
+.PP
+\f[CB]pack200\ \-\-repack\ myarchive.jar\f[R]
+.RE
+.RE
.TP
--g, --no-gzip
-.br
-Produces a \f3pack200\fR file\&. With this option, a suitable compressor must be used, and the target system must use a corresponding decompresser\&.
-.sp
-.nf
-\f3pack200 \-\-no\-gzip myarchive\&.pack myarchive\&.jar\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+.B \f[CB]\-g\f[R] or\f[CB]\-\-no\-gzip\f[R]
+Produces a \f[CB]pack200\f[R] file.
+With this option, a suitable compressor must be used, and the target
+system must use a corresponding decompresser.
+.RS
+.RS
+.PP
+\f[CB]pack200\ \-\-no\-gzip\ myarchive.pack\ myarchive.jar\f[R]
+.RE
+.RE
+.TP
+.B \f[CB]\-\-gzip\f[R]
+(Default) Post\-compresses the pack output with \f[CB]gzip\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-G\f[R] or \f[CB]\-\-strip\-debug\f[R]
+Strips debugging attributes from the output.
+These include \f[CB]SourceFile\f[R], \f[CB]LineNumberTable\f[R],
+\f[CB]LocalVariableTable\f[R] and \f[CB]LocalVariableTypeTable\f[R].
+Removing these attributes reduces the size of both downloads and
+installations, also reduces the usefulness of debuggers.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-keep\-file\-order\f[R]
+Preserves the order of files in the input file.
+This is the default behavior.
+.RS
+.RE
.TP
--G, --strip-debug
-.br
-Strips debugging attributes from the output\&. These include \f3SourceFile\fR, \f3LineNumberTable\fR, \f3LocalVariableTable\fR and \f3LocalVariableTypeTable\fR\&. Removing these attributes reduces the size of both downloads and installations, but reduces the usefulness of debuggers\&.
-.TP
---keep-file-order
-.br
-Preserve the order of files in the input file\&. This is the default behavior\&.
-.TP
--O, --no-keep-file-order
-.br
-The packer reorders and transmits all elements\&. The packer can also remove JAR directory names to reduce the download size\&. However, certain JAR file optimizations, such as indexing, might not work correctly\&.
+.B \f[CB]\-O\f[R] or\f[CB]\-\-no\-keep\-file\-order\f[R]
+Reorders and transmits all elements.
+The packer can also remove JAR directory names to reduce the download
+size.
+However, certain JAR file optimizations, such as indexing, might not
+work correctly.
+.RS
+.RE
.TP
--S\fIvalue\fR , --segment-limit=\fIvalue\fR
-.br
-The value is the estimated target size \fIN\fR (in bytes) of each archive segment\&. If a single input file requires more than \fIN\fR bytes, then its own archive segment is provided\&. As a special case, a value of \f3-1\fR produces a single large segment with all input files, while a value of 0 produces one segment for each class\&. Larger archive segments result in less fragmentation and better compression, but processing them requires more memory\&.
-
-The size of each segment is estimated by counting the size of each input file to be transmitted in the segment with the size of its name and other transmitted properties\&.
-
-The default is -1, which means that the packer creates a single segment output file\&. In cases where extremely large output files are generated, users are strongly encouraged to use segmenting or break up the input file into smaller JARs\&.
-
-A 10 MB JAR packed without this limit typically packs about 10 percent smaller, but the packer might require a larger Java heap (about 10 times the segment limit)\&.
+.B \f[CB]\-S\f[R]\f[I]N\f[R] or \f[CB]\-\-segment\-limit=\f[R]\f[I]N\f[R]
+The value is the estimated target size \f[I]N\f[R] (in bytes) of each
+archive segment.
+If a single input file requires more than \f[I]N\f[R] bytes, then its own
+archive segment is provided.
+As a special case, a value of \f[CB]\-1\f[R] produces a single large
+segment with all input files, while a value of 0 produces one segment
+for each class.
+Larger archive segments result in less fragmentation and better
+compression, but processing them requires more memory.
+.RS
+.PP
+The size of each segment is estimated by counting the size of each input
+file to be transmitted in the segment with the size of its name and
+other transmitted properties.
+.PP
+The default is \f[CB]\-1\f[R], which means that the packer creates a
+single segment output file.
+In cases where extremely large output files are generated, users are
+strongly encouraged to use segmenting or break up the input file into
+smaller JAR file.
+.PP
+A 10 MB JAR packed without this limit typically packs about 10 percent
+smaller, but the packer might require a larger Java heap (about 10 times
+the segment limit).
+.RE
.TP
--E\fIvalue\fR , --effort=\fIvalue\fR
-.br
-If the value is set to a single decimal digit, then the packer uses the indicated amount of effort in compressing the archive\&. Level 1 might produce somewhat larger size and faster compression speed, while level 9 takes much longer, but can produce better compression\&. The special value 0 instructs the \f3pack200\fR command to copy through the original JAR file directly with no compression\&. The JSR 200 standard requires any unpacker to understand this special case as a pass-through of the entire archive\&.
-
-The default is 5, to invest a modest amount of time to produce reasonable compression\&.
-.TP
--H\fIvalue\fR , --deflate-hint=\fIvalue\fR
-.br
-Overrides the default, which preserves the input information, but can cause the transmitted archive to be larger\&. The possible values are: \f3true\fR, \f3false\fR, or \f3keep\fR\&.
-
-If the \f3value\fR is \f3true\fR or false, then the \f3packer200\fR command sets the deflation hint accordingly in the output archive and does not transmit the individual deflation hints of archive elements\&.
-
-The \f3keep\fR value preserves deflation hints observed in the input JAR\&. This is the default\&.
+.B \f[CB]\-E\f[R]\f[I]value\f[R] or \f[CB]\-\-effort=\f[R]\f[I]value\f[R]
+If the value is set to a single decimal digit, then the packer uses the
+indicated amount of effort in compressing the archive.
+Level 1 might produce somewhat larger size and faster compression speed,
+while level 9 takes much longer, but can produce better compression.
+The special value 0 instructs the \f[CB]pack200\f[R] command to copy
+through the original JAR file directly with no compression.
+The JSR 200 standard requires any unpacker to understand this special
+case as a pass\-through of the entire archive.
+.RS
+.PP
+The default is 5, to invest a modest amount of time to produce
+reasonable compression.
+.RE
.TP
--m\fIvalue\fR , --modification-time=\fIvalue\fR
-.br
-The possible values are \f3latest\fR and \f3keep\fR\&.
-
-If the value is latest, then the packer attempts to determine the latest modification time, among all the available entries in the original archive, or the latest modification time of all the available entries in that segment\&. This single value is transmitted as part of the segment and applied to all the entries in each segment\&. This can marginally decrease the transmitted size of the archive at the expense of setting all installed files to a single date\&.
-
-If the value is \f3keep\fR, then modification times observed in the input JAR are preserved\&. This is the default\&.
+.B \f[CB]\-H\f[R]\f[I]value\f[R] or \f[CB]\-\-deflate\-hint=\f[R]\f[I]value\f[R]
+Overrides the default, which preserves the input information, but can
+cause the transmitted archive to be larger.
+The possible values are: \f[CB]true\f[R], \f[CB]false\f[R], or
+\f[CB]keep\f[R].
+.RS
+.PP
+If the \f[CB]value\f[R] is \f[CB]true\f[R] or false, then the
+\f[CB]packer200\f[R] command sets the deflation hint accordingly in the
+output archive and doesn\[aq]t transmit the individual deflation hints
+of archive elements.
+.PP
+The \f[CB]keep\f[R] value preserves deflation hints observed in the input
+JAR.
+This is the default.
+.RE
.TP
--P\fIfile\fR , --pass-file=\fIfile\fR
-.br
-Indicates that a file should be passed through bytewise with no compression\&. By repeating the option, multiple files can be specified\&. There is no pathname transformation, except that the system file separator is replaced by the JAR file separator forward slash (/)\&. The resulting file names must match exactly as strings with their occurrences in the JAR file\&. If \f3file\fR is a directory name, then all files under that directory are passed\&.
-.TP
--U\fIaction\fR , --unknown-attribute=\fIaction\fR
-.br
-Overrides the default behavior, which means that the class file that contains the unknown attribute is passed through with the specified \f3action\fR\&. The possible values for actions are \f3error\fR, \f3strip\fR, or \f3pass\fR\&.
-
-If the value is \f3error\fR, then the entire \f3pack200\fR command operation fails with a suitable explanation\&.
-
-If the value is \f3strip\fR, then the attribute is dropped\&. Removing the required Java Virtual Machine (JVM) attributes can cause class loader failures\&.
-
-If the value is \f3pass\fR, then the entire class is transmitted as though it is a resource\&.
+.B \f[CB]\-m\f[R]\f[I]value\f[R] or \f[CB]\-\-modification\-time=\f[R]\f[I]value\f[R]
+The possible values are \f[CB]latest\f[R] and \f[CB]keep\f[R].
+.RS
+.PP
+If the value is \f[CB]latest\f[R], then the packer attempts to determine
+the latest modification time, among all the available entries in the
+original archive, or the latest modification time of all the available
+entries in that segment.
+This single value is transmitted as part of the segment and applied to
+all the entries in each segment.
+This can marginally decrease the transmitted size of the archive at the
+expense of setting all installed files to a single date.
+.PP
+If the value is \f[CB]keep\f[R], then modification times observed in the
+input JAR are preserved.
+This is the default.
+.RE
.TP
-.nf
--C\fIattribute-name\fR=\fIlayout\fR , --class-attribute=\fIattribute-name\fR=\fIaction\fR
-.br
-.fi
-See next option\&.
-.TP
-.nf
--F\fIattribute-name\fR=\fIlayout\fR , --field-attribute=\fIattribute-name\fR=\fIaction\fR
-.br
-.fi
-See next option\&.
+.B \f[CB]\-P\f[R]\f[I]file\f[R] or \f[CB]\-\-pass\-file=\f[R]\f[I]file\f[R]
+Indicates that a file should be passed through bytewise with no
+compression.
+By repeating the option, multiple files can be specified.
+There is no path name transformation, except that the system file
+separator is replaced by the JAR file separator forward slash (/).
+The resulting file names must match exactly as strings with their
+occurrences in the JAR file.
+If \f[I]file\f[R] is a directory name, then all files under that
+directory are passed.
+.RS
+.RE
.TP
-.nf
--M\fIattribute-name\fR=\fIlayout\fR , --method-attribute=\fIattribute-name\fR=\fIaction\fR
-.br
-.fi
-See next option\&.
+.B \f[CB]\-U\f[R]\f[I]action\f[R] or \f[CB]\-\-unknown\-attribute=\f[R]\f[I]action\f[R]
+Overrides the default behavior, which means that the class file that
+contains the unknown attribute is passed through with the specified
+\f[I]action\f[R].
+The possible values for actions are \f[CB]error\f[R], \f[CB]strip\f[R], or
+\f[CB]pass\f[R].
+.RS
+.PP
+If the value is \f[CB]error\f[R], then the entire \f[CB]pack200\f[R] command
+operation fails with a suitable explanation.
+.PP
+If the value is \f[CB]strip\f[R], then the attribute is dropped.
+Removing the required Java Virtual Machine (JVM) attributes can cause
+class loader failures.
+.PP
+If the value is \f[CB]pass\f[R], then the entire class is transmitted as
+though it is a resource.
+.RE
.TP
-.nf
--D\fIattribute-name\fR=\fIlayout\fR , --code-attribute=\fIattribute-name\fR=\fIaction\fR
-.br
-.fi
-With the previous four options, the attribute layout can be specified for a class entity, such as \f3class-attribute\fR, \f3field-attribute\fR, \f3method-attribute\fR, and \f3code-attribute\fR\&. The \fIattribute-name\fR is the name of the attribute for which the layout or action is being defined\&. The possible values for \fIaction\fR are \f3some-layout-string\fR, \f3error\fR, \f3strip\fR, \f3pass\fR\&.
-
-\f3some-layout-string\fR: The layout language is defined in the JSR 200 specification, for example: \f3--class-attribute=SourceFile=RUH\fR\&.
-
-If the value is \f3error\fR, then the \f3pack200\fR operation fails with an explanation\&.
-
-If the value is \f3strip\fR, then the attribute is removed from the output\&. Removing JVM-required attributes can cause class loader failures\&. For example, \f3--class-attribute=CompilationID=pass\fR causes the class file that contains this attribute to be passed through without further action by the packer\&.
-
-If the value is \f3pass\fR, then the entire class is transmitted as though it is a resource\&.
+.B \f[CB]\-C\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R] or \f[CB]\-\-class\-attribute=\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R]
+(user\-defined attribute) See the description for
+\f[CB]\-D\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-F\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R] or \f[CB]\-\-field\-attribute=\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R]
+(user\-defined attribute) See the description for
+\f[CB]\-D\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R].
+.RS
+.RE
.TP
--f \fIpack\&.properties\fR , --config-file=\fIpack\&.properties\fR
-.br
-A configuration file, containing Java properties to initialize the packer, can be specified on the command line\&.
-.sp
-.nf
-\f3pack200 \-f pack\&.properties myarchive\&.pack\&.gz myarchive\&.jar\fP
-.fi
-.nf
-\f3more pack\&.properties\fP
-.fi
-.nf
-\f3# Generic properties for the packer\&.\fP
-.fi
-.nf
-\f3modification\&.time=latest\fP
-.fi
-.nf
-\f3deflate\&.hint=false\fP
-.fi
-.nf
-\f3keep\&.file\&.order=false\fP
-.fi
-.nf
-\f3# This option will cause the files bearing new attributes to\fP
-.fi
-.nf
-\f3# be reported as an error rather than passed uncompressed\&.\fP
-.fi
-.nf
-\f3unknown\&.attribute=error\fP
-.fi
-.nf
-\f3# Change the segment limit to be unlimited\&.\fP
-.fi
-.nf
-\f3segment\&.limit=\-1\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
+.B \f[CB]\-M\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R] or \f[CB]\-\-method\-attribute=\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R]
+(user\-defined attribute) See the description for
+\f[CB]\-D\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-D\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R] or \f[CB]\-\-code\-attribute=\f[R]\f[I]attribute\-name\f[R]\f[CB]=\f[R]\f[I]layout\f[R]
+(user\-defined attribute) The attribute layout can be specified for a
+class entity, such as \f[CB]class\-attribute\f[R],
+\f[CB]field\-attribute\f[R], \f[CB]method\-attribute\f[R], and
+\f[CB]code\-attribute\f[R].
+The \f[I]attribute\-name\f[R] is the name of the attribute for which the
+layout or action is being defined.
+The possible values for \f[I]action\f[R] are
+\f[I]some\-layout\-string\f[R], \f[CB]error\f[R], \f[CB]strip\f[R],
+\f[CB]pass\f[R].
+.RS
+.PP
+\f[I]some\-layout\-string\f[R]: The layout language is defined in the JSR
+200 specification, for example:
+\f[CB]\-\-class\-attribute=SourceFile=RUH\f[R].
+.PP
+If the value is \f[CB]error\f[R], then the \f[CB]pack200\f[R] operation
+fails with an explanation.
+.PP
+If the value is \f[CB]strip\f[R], then the attribute is removed from the
+output.
+Removing JVM\-required attributes can cause class loader failures.
+For example, \f[CB]\-\-class\-attribute=CompilationID=pass\f[R] causes the
+class file that contains this attribute to be passed through without
+further action by the packer.
+.PP
+If the value is \f[CB]pass\f[R], then the entire class is transmitted as
+though it\[aq]s a resource.
+.RE
.TP
--v, --verbose
-.br
-Outputs minimal messages\&. Multiple specification of this option will create more verbose messages\&.
-.TP
--q, --quiet
-.br
-Specifies quiet operation with no messages\&.
-.TP
--l\fIfilename\fR , --log-file=\fIfilename\fR
-.br
-Specifies a log file to output messages\&.
-.TP
--?, -h, --help
-.br
-Prints help information about this command\&.
-.TP
--V, --version
-.br
-Prints version information about this command\&.
+.B \f[CB]\-f\f[R]\f[I]pack.properties\f[R] or \f[CB]\-\-config\-file=\f[R]\f[I]pack.properties\f[R]
+Indicates a configuration file, containing Java properties to initialize
+the packer, can be specified on the command line.
+.RS
+.IP
+.nf
+\f[CB]
+pack200\ \-f\ pack.properties\ myarchive.pack.gz\ myarchive.jar
+more\ pack.properties
+#\ Generic\ properties\ for\ the\ packer.
+modification.time=latest
+deflate.hint=false
+keep.file.order=false
+#\ This\ option\ will\ cause\ the\ files\ bearing\ new\ attributes\ to
+#\ be\ reported\ as\ an\ error\ rather\ than\ passed\ uncompressed.
+unknown.attribute=error
+#\ Change\ the\ segment\ limit\ to\ be\ unlimited.
+segment.limit=\-1
+\f[R]
+.fi
+.RE
.TP
--J\fIoption\fR
-.br
-Passes the specified option to the Java Virtual Machine\&. For more information, see the reference page for the java(1) command\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&.
-.SH EXIT\ STATUS
-The following exit values are returned: 0 for successful completion and a number greater than 0 when an error occurs\&.
-.SH NOTES
-This command should not be confused with \f3pack\fR(1)\&. The \f3pack\fR and \f3pack200\fR commands are separate products\&.
-.PP
-The Java SE API Specification provided with the JDK is the superseding authority, when there are discrepancies\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-unpack200(1)
-.TP 0.2i
-\(bu
-jar(1)
-.TP 0.2i
-\(bu
-jarsigner(1)
+.B \f[CB]\-v\f[R] or \f[CB]\-\-verbose\f[R]
+Outputs minimal messages.
+Multiple specification of this option will create more verbose messages.
+.RS
+.RE
+.TP
+.B \f[CB]\-q\f[R] or \f[CB]\-\-quiet\f[R]
+Specifies quiet operation with no messages.
+.RS
+.RE
+.TP
+.B \f[CB]\-l\f[R]\f[I]filename\f[R] or \f[CB]\-\-log\-file=\f[R]\f[I]filename\f[R]
+Specifies a log file to output messages.
+.RS
.RE
-.br
-'pl 8.5i
-'bp
+.TP
+.B \f[CB]\-?\f[R], \f[CB]\-h\f[R], or\f[CB]\-\-help\f[R]
+Prints help information about this command.
+.RS
+.RE
+.TP
+.B \f[CB]\-V\f[R] or \f[CB]\-\-version\f[R]
+Prints version information about this command.
+.RS
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+Passes the specified \f[I]option\f[R] to the Java Virtual Machine.
+For example, \f[CB]\-J\-Xms48m\f[R] sets the startup memory to 48 MB.
+.RS
+.RE
--- a/src/jdk.pack/share/man/unpack200.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.pack/share/man/unpack200.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,118 +19,108 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Java Deployment Tools
-.\" Title: unpack200.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH unpack200 1 "21 November 2013" "JDK 8" "Java Deployment Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-unpack200 \- Transforms a packed file produced by pack200(1) into a JAR file for web deployment\&.
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBunpack200\fR [ \fIoptions\fR ] input\-file \fIJAR\-file\fR
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line options\&. See Options\&.
-.TP
-\fIinput-file\fR
-Name of the input file, which can be a pack200 gzip file or a pack200 file\&. The input can also be JAR file produced by \f3pack200\fR(1) with an effort of \f30\fR, in which case the contents of the input file are copied to the output JAR file with the Pack200 marker\&.
-.TP
-\fIJAR-file\fR
-Name of the output JAR file\&.
-.SH DESCRIPTION
-The \f3unpack200\fR command is a native implementation that transforms a packed file produced by \f3pack200\fR\f3(1)\fR into a JAR file\&. A typical usage follows\&. In the following example, the \f3myarchive\&.jar\fR file is produced from \f3myarchive\&.pack\&.gz\fR with the default \f3unpack200\fR command settings\&.
-.sp
-.nf
-\f3unpack200 myarchive\&.pack\&.gz myarchive\&.jar\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.SH OPTIONS
+.TH "UNPACK200" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+unpack200 \- transform a packed file into a JAR file for web deployment
+.SH SYNOPSIS
+.PP
+\f[CB]unpack200\f[R] [\f[I]options\f[R]] \f[I]input\-file\f[R]
+\f[I]JAR\-file\f[R]
+.TP
+.B \f[I]options\f[R]
+The command\-line options.
+See \f[B]Options for the unpack200 Command\f[R].
+.RS
+.RE
+.TP
+.B \f[I]input\-file\f[R]
+Name of the input file, which can be a \f[CB]pack200\ gzip\f[R] file or a
+\f[CB]pack200\f[R] file.
+The input can also be a JAR file produced by \f[CB]pack200\f[R] with an
+effort of \f[CB]0\f[R], in which case the contents of the input file are
+copied to the output JAR file with the \f[CB]pack200\f[R] marker.
+.RS
+.RE
+.TP
+.B \f[I]JAR\-file\f[R]
+Name of the output JAR file.
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+The \f[CB]unpack200\f[R] command is a native implementation that
+transforms a packed file produced by the \f[CB]pack200\f[R] into a JAR
+file for web deployment.
+An example of typical usage follows.
+In the following example, the \f[CB]myarchive.jar\f[R] file is produced
+from \f[CB]myarchive.pack.gz\f[R] with the default \f[CB]unpack200\f[R]
+command settings.
+.RS
+.PP
+\f[CB]unpack200\ myarchive.pack.gz\ myarchive.jar\f[R]
+.RE
+.SH OPTIONS FOR THE UNPACK200 COMMAND
.TP
--Hvalue --deflate-hint=\fIvalue\fR
-.br
-Sets the deflation to be \f3true\fR, \f3false\fR, or \f3keep\fR on all entries within a JAR file\&. The default mode is \f3keep\fR\&. If the value is \f3true\fR or \f3false\fR, then the \f3--deflate=hint\fR option overrides the default behavior and sets the deflation mode on all entries within the output JAR file\&.
-.TP
--r --remove-pack-file
-.br
-Removes the input pack file\&.
-.TP
--v --verbose
-.br
-Displays minimal messages\&. Multiple specifications of this option displays more verbose messages\&.
+.B \f[CB]\-H\f[R]\f[I]value\f[R] or \f[CB]\-\-deflate\-hint=\f[R]\f[I]value\f[R]
+Sets the deflation to be \f[CB]true\f[R], \f[CB]false\f[R], or \f[CB]keep\f[R]
+on all entries within a JAR file.
+The default mode is \f[CB]keep\f[R].
+If the value is \f[CB]true\f[R] or \f[CB]false\f[R], then the
+\f[CB]\-\-deflate=hint\f[R] option overrides the default behavior and sets
+the deflation mode on all entries within the output JAR file.
+.RS
+.RE
.TP
--q --quiet
-.br
-Specifies quiet operation with no messages\&.
-.TP
--lfilename --log-file=\fIfilename\fR
-.br
-Specifies a log file where output messages are logged\&.
+.B \f[CB]\-r\f[R] or \f[CB]\-\-remove\-pack\-file\f[R]
+Removes the input pack file.
+.RS
+.RE
.TP
--? -h --help
-.br
-Prints help information about the \f3unpack200\fR command\&.
+.B \f[CB]\-v\f[R] or \f[CB]\-\-verbose\f[R]
+Displays minimal messages.
+Multiple specifications of this option displays more verbose messages.
+.RS
+.RE
.TP
--V --version
-.br
-Prints version information about the \f3unpack200\fR command\&.
+.B \f[CB]\-q\f[R] or \f[CB]\-\-quiet\f[R]
+Specifies quiet operation with no messages.
+.RS
+.RE
.TP
--J\fIoption\fR
-.br
-Passes option to the Java Virtual Machine, where \f3option\fR is one of the options described on the reference page for the Java application launcher\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&. See java(1)\&.
-.SH NOTES
-This command should not be confused with the \f3unpack\fR command\&. They are distinctly separate products\&.
+.B \f[CB]\-l\f[R] \f[I]filename\f[R] or \f[CB]\-\-log\-file=\f[R]\f[I]filename\f[R]
+Specifies a log file where output messages are logged.
+.RS
+.RE
+.TP
+.B \f[CB]\-?\f[R] or \f[CB]\-h\f[R] or \f[CB]\-\-help\f[R]
+Prints help information about the \f[CB]unpack200\f[R] command.
+.RS
+.RE
+.TP
+.B \f[CB]\-V\f[R] or \f[CB]\-\-version\f[R]
+Prints version information about the \f[CB]unpack200\f[R] command.
+.RS
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]option\f[R]
+Passes \f[I]option\f[R] to the Java Virtual Machine, where
+\f[CB]option\f[R] is one of the options described on the reference page
+for the Java application launcher.
+For example, \f[CB]\-J\-Xms48m\f[R] sets the startup memory to 48 MB.
+.RS
+.RE
+.SH NOTES
.PP
-The Java SE API Specification provided with the JDK is the superseding authority in case of discrepancies\&.
-.SH EXIT\ STATUS
-The following exit values are returned: 0 for successful completion, and a value that is greater than 0 when an error occurred\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-pack200(1)
-.TP 0.2i
-\(bu
-jar(1)
-.TP 0.2i
-\(bu
-jarsigner(1)
-.TP 0.2i
-\(bu
-Pack200 and Compression at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/deployment/deployment-guide/pack200\&.html
-.TP 0.2i
-\(bu
-The Java SE Technical Documentation page at http://docs\&.oracle\&.com/javase/
-.RE
-.br
-'pl 8.5i
-'bp
+This command shouldn\[aq]t be confused with the \f[CB]unpack\f[R] command.
+They\[aq]re distinctly separate products.
+.PP
+The Java SE API Specification provided with the JDK is the superseding
+authority in case of discrepancies.
+.SH EXIT STATUS
+.PP
+The following exit values are returned: 0 for successful completion, and
+a value that is greater than 0 when an error occurred.
--- a/src/jdk.rmic/share/man/rmic.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.rmic/share/man/rmic.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,204 +19,243 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Arch: generic
-.\" Software: JDK 8
-.\" Date: 21 November 2013
-.\" SectDesc: Remote Method Invocation (RMI) Tools
-.\" Title: rmic.1
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH rmic 1 "21 November 2013" "JDK 8" "Remote Method Invocation (RMI) Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-
-.SH NAME
-rmic \- Generates stub, skeleton, and tie classes for remote objects that use the Java Remote Method Protocol (JRMP) or Internet Inter-Orb protocol (IIOP)\&. Also generates Object Management Group (OMG) Interface Definition Language (IDL)
-.SH SYNOPSIS
-.sp
-.nf
-
-\fBrmic\fR [ \fIoptions\fR ] \fIpackage\-qualified\-class\-names\fR
-.fi
-.sp
-.TP
-\fIoptions\fR
-The command-line \f3options\fR\&. See Options\&.
-.TP
-\fIpackage-qualified-class-names\fR
-Class names that include their packages, for example, \f3java\&.awt\&.Color\fR\&.
-.SH DESCRIPTION
-\fIDeprecation Note:\fR Support for static generation of Java Remote Method Protocol (JRMP) stubs and skeletons has been deprecated\&. Oracle recommends that you use dynamically generated JRMP stubs instead, eliminating the need to use this tool for JRMP-based applications\&. See the \f3java\&.rmi\&.server\&.UnicastRemoteObject\fR specification at http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/server/UnicastRemoteObject\&.html for further information\&.
+.TH "RMIC" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+rmic \- generate stub and skeleton class files using the Java Remote
+Method Protocol (JRMP)
+.SH SYNOPSIS
+.PP
+\f[CB]rmic\f[R] [\f[I]options\f[R]]
+\f[I]package\-qualified\-class\-names\f[R]
+.TP
+.B \f[I]options\f[R]
+This represent the command\-line \f[CB]options\f[R] for the\f[CB]rmic\f[R]
+compiler.
+See \f[B]Options for the rmic Compiler\f[R].
+.RS
+.RE
+.TP
+.B \f[I]package\-qualified\-class\-names\f[R]
+Class names that include their packages, for example,
+\f[CB]java.awt.Color\f[R].
+.RS
+.RE
+.SH DESCRIPTION
+.PP
+\f[B]Deprecation Note:\f[R] Support for static generation of Java Remote
+Method Protocol (JRMP) stubs and skeletons has been deprecated.
+Oracle recommends that you use dynamically generated JRMP stubs instead,
+eliminating the need to use this tool for JRMP\-based applications.
+.PP
+The \f[CB]rmic\f[R] compiler generates stub and skeleton class files using
+the JRMP.
+.PP
+\f[B]Note:\f[R]
+.PP
+The rmic compiler has been updated to remove the \f[CB]\-idl\f[R] and
+\f[CB]\-iiop\f[R] options and can no longer generate IDL or IIOP stubs and
+tie classes.
+.PP
+JRMP class files are generated from compiled Java programming language
+classes that are remote object implementation classes.
+A remote implementation class is a class that implements the interface
+\f[CB]java.rmi.Remote\f[R].
+The class names in the \f[CB]rmic\f[R] command must be for classes that
+were compiled successfully with the \f[CB]javac\f[R] command and must be
+fully package qualified.
+For example, running the \f[CB]rmic\f[R] command on the class file name
+\f[CB]HelloImpl\f[R] as shown here creates the
+\f[CB]HelloImpl_Stub.class\f[R] file in the \f[CB]hello\f[R] subdirectory
+(named for the class\[aq]s package):
+.RS
.PP
-The \f3rmic\fR compiler generates stub and skeleton class files using the Java Remote Method Protocol (JRMP) and stub and tie class files (IIOP protocol) for remote objects\&. These class files are generated from compiled Java programming language classes that are remote object implementation classes\&. A remote implementation class is a class that implements the interface \f3java\&.rmi\&.Remote\fR\&. The class names in the \f3rmic\fR command must be for classes that were compiled successfully with the \f3javac\fR command and must be fully package qualified\&. For example, running the \f3rmic\fR command on the class file name \f3HelloImpl\fR as shown here creates the \f3HelloImpl_Stub\&.class\fRfile in the hello subdirectory (named for the class\&'s package):
-.sp
-.nf
-\f3rmic hello\&.HelloImpl\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-A skeleton for a remote object is a JRMP protocol server-side entity that has a method that dispatches calls to the remote object implementation\&.
+\f[CB]rmic\ hello.HelloImpl\f[R]
+.RE
+.PP
+A skeleton for a remote object is a JRMP protocol server\-side entity
+that has a method that dispatches calls to the remote object
+implementation.
+.PP
+A stub is a client\-side proxy for a remote object that\[aq]s
+responsible for communicating method invocations on remote objects to
+the server where the actual remote object implementation resides.
+A client\[aq]s reference to a remote object, therefore, is actually a
+reference to a local stub.
.PP
-A tie for a remote object is a server-side entity similar to a skeleton, but communicates with the client with the IIOP protocol\&.
-.PP
-A stub is a client-side proxy for a remote object that is responsible for communicating method invocations on remote objects to the server where the actual remote object implementation resides\&. A client\&'s reference to a remote object, therefore, is actually a reference to a local stub\&.
-.PP
-By default, the \f3rmic\fR command generates stub classes that use the 1\&.2 JRMP stub protocol version only, as though the \f3-v1\&.2\fR option was specified\&. The \f3-vcompat\fR option was the default in releases before 5\&.0\&. Use the \f3-iiop\fR option to generate stub and tie classes for the IIOP protocol\&. See Options\&.
+By default, the \f[CB]rmic\f[R] command generates stub classes that use
+the 1.2 JRMP stub protocol version only, as though the \f[CB]\-v1.2\f[R]
+option were specified.
+See \f[B]Options for the rmic Compiler\f[R].
.PP
-A stub implements only the remote interfaces, and not any local interfaces that the remote object also implements\&. Because a JRMP stub implements the same set of remote interfaces as the remote object, a client can use the Java programming language built-in operators for casting and type checking\&. For IIOP, the \f3PortableRemoteObject\&.narrow\fR method must be used\&.
-.SH OPTIONS
-.TP
--bootclasspath \fIpath\fR
-.br
-Overrides the location of bootstrap class files\&.
+A stub implements only the remote interfaces, and not local interfaces
+that the remote object also implements.
+Because a JRMP stub implements the same set of remote interfaces as the
+remote object, a client can use the Java programming language built\-in
+operators for casting and type checking.
+.PP
+\f[B]Note:\f[R]
+.PP
+The rmic compiler does not support reading of class files that have been
+compiled with the \f[CB]\-\-enable\-preview\f[R] option, nor does it
+support generation of stub or skeleton classes that have preview
+features enabled.
+.SH OPTIONS FOR THE RMIC COMPILER
.TP
--classpath path
-.br
-Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/java/classes\fR\&.
+.B \f[CB]\-bootclasspath\f[R] \f[I]path\f[R]
+Overrides the location of bootstrap class files.
+.RS
+.RE
.TP
--d \fIdirectory\fR
-.br
-Specifies the root destination directory for the generated class hierarchy\&. You can use this option to specify a destination directory for the stub, skeleton, and tie files\&. For example, the following command places the stub and skeleton classes derived from MyClass into the directory /java/classes/exampleclass\&.
-.sp
-.nf
-\f3rmic \-d /java/classes exampleclass\&.MyClass\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-
-
-If the \f3-d\fR option is not specified, then the default behavior is as if \f3-d \&.\fR was specified\&. The package hierarchy of the target class is created in the current directory, and stub/tie/skeleton files are placed within it\&. In some earlier releases of the \f3rmic\fR command, if the \f3-d\fR option was not specified, then the package hierarchy was not created, and all of the output files were placed directly in the current directory\&.
-.TP
--extdirs \fIpath\fR
-.br
-Overrides the location of installed extensions\&.
-.TP
--g
-.br
-Enables the generation of all debugging information, including local variables\&. By default, only line number information is generated\&.
+.B \f[CB]\-classpath\f[R] \f[I]path\f[R]
+Specifies the path the \f[CB]rmic\f[R] command uses to look up classes.
+This option overrides the default or the \f[CB]CLASSPATH\f[R] environment
+variable when it is set.
+Directories are separated by colons or semicolons, depending on your
+operating system.
+The following is the general format for \f[I]path\f[R]:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R]
+\f[CB]\&.:\f[R]\f[I]your_path\f[R], for example:
+\f[CB]\&.:/usr/local/java/classes\f[R]
+.IP \[bu] 2
+\f[B]Windows:\f[R] \f[CB]\&.;\f[R]\f[I]your_path\f[R], for example:
+\f[CB]\&.;/usr/local/java/classes\f[R]
+.RE
.TP
--idl
-.br
-Causes the \f3rmic\fR command to generate OMG IDL for the classes specified and any classes referenced\&. IDL provides a purely declarative, programming language-independent way to specify an API for an object\&. The IDL is used as a specification for methods and data that can be written in and called from any language that provides CORBA bindings\&. This includes Java and C++ among others\&. See Java IDL: IDL to Java Language Mapping at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/mapping/jidlMapping\&.html
-
-When the \f3-idl\fR option is used, other options also include:
-.RS
-.TP 0.2i
-\(bu
-The \f3-always\fR or \f3-alwaysgenerate\fR options force regeneration even when existing stubs/ties/IDL are newer than the input class\&.
-.TP 0.2i
-\(bu
-The \f3-factory\fR option uses the \f3factory\fR keyword in generated IDL\&.
-.TP 0.2i
-\(bu
-The \f3-idlModule\fR from J\f3avaPackage[\&.class]\fR\f3toIDLModule\fR specifies \f3IDLEntity\fR package mapping, for example: \f3-idlModule\fR\f3my\&.module my::real::idlmod\fR\&.
-.TP 0.2i
-\(bu
-\f3-idlFile\fR\f3fromJavaPackage[\&.class] toIDLFile\fR specifies \f3IDLEntity\fR file mapping, for example: \f3-idlFile test\&.pkg\&.X TEST16\&.idl\fR\&.
-.RE
-
+.B \f[CB]\-d\f[R] \f[I]directory\f[R]
+Specifies the root destination directory for the generated class
+hierarchy.
+You can use this option to specify a destination directory for the stub,
+skeleton, and tie files.
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] For example, the following
+command places the stub and skeleton classes derived from
+\f[CB]MyClass\f[R] into the directory \f[CB]/java/classes/exampleclass\f[R]:
+.RS 2
+.RS
+.PP
+\f[CB]rmic\ \-d\ /java/classes\ exampleclass.MyClass\f[R]
+.RE
+.RE
+.IP \[bu] 2
+\f[B]Windows:\f[R] For example, the following command places the stub and
+skeleton classes derived from \f[CB]MyClass\f[R] into the directory
+\f[CB]C:\\java\\classes\\exampleclass\f[R]:
+.RS 2
+.RS
+.PP
+\f[CB]rmic\ \-d\ C:\\java\\classes\ exampleclass.MyClass\f[R]
+.RE
+.RE
+.PP
+If the \f[CB]\-d\f[R] option isn\[aq]t specified, then the default
+behavior is as though \f[CB]\-d\f[R] was specified.
+The package hierarchy of the target class is created in the current
+directory, and stub/tie/skeleton files are placed within it.
+.RE
+.TP
+.B \f[CB]\-g\f[R]
+Enables the generation of all debugging information, including local
+variables.
+By default, only line number information is generated.
+.RS
+.RE
+.TP
+.B \f[CB]\-J\f[R]\f[I]argument\f[R]
+Used with any Java command, the \f[CB]\-J\f[R] option passes the
+\f[I]argument\f[R] that follows it (no spaces between the \f[CB]\-J\f[R]
+and the argument) to the Java interpreter.
+.RS
+.RE
+.TP
+.B \f[CB]\-keep\f[R] or \f[CB]\-keepgenerated\f[R]
+Retains the generated \f[CB]\&.java\f[R] source files for the stub,
+skeleton, and tie classes and writes them to the same directory as
+the\f[CB]\&.class\f[R] files.
+.RS
+.RE
+.TP
+.B \f[CB]\-nowarn\f[R]
+Turns off warnings.
+When the \f[CB]\-nowarn\f[R] options is used, the compiler doesn\[aq]t
+print warnings.
+.RS
+.RE
+.TP
+.B \f[CB]\-nowrite\f[R]
+Doesn\[aq]t write compiled classes to the file system.
+.RS
+.RE
.TP
--iiop
-.br
-Causes the \f3rmic\fR command to generate IIOP stub and tie classes, rather than JRMP stub and skeleton classes\&. A stub class is a local proxy for a remote object and is used by clients to send calls to a server\&. Each remote interface requires a stub class, which implements that remote interface\&. A client reference to a remote object is a reference to a stub\&. Tie classes are used on the server side to process incoming calls, and dispatch the calls to the proper implementation class\&. Each implementation class requires a tie class\&.
-
-If you call the \f3rmic\fR command with the \f3-iiop\fR, then it generates stubs and ties that conform to this naming convention:
-.sp
-.nf
-\f3_<implementationName>_stub\&.class\fP
-.fi
-.nf
-\f3_<interfaceName>_tie\&.class\fP
-.fi
-.nf
-\f3\fP
-.fi
-.sp
-.RS
-.TP 0.2i
-\(bu
-When you use the \f3-iiop\fR option, other options also include:
-.TP 0.2i
-\(bu
-The \f3-always\fR or \f3-alwaysgenerate\fR options force regeneration even when existing stubs/ties/IDL are newer than the input class\&.
-.TP 0.2i
-\(bu
-The \f3-nolocalstubs\fR option means do not create stubs optimized for same-process clients and servers\&.
-.TP 0.2i
-\(bu
-The \f3-noValueMethods\fR option must be used with the \f3-idl\fR option\&. The \f3-noValueMethods\fR option prevents the addition of \f3valuetype\fR methods and initializers to emitted IDL\&. These methods and initializers are optional for valuetypes, and are generated unless the \f3-noValueMethods\fR option is specified with the \f3-idl\fR option\&.
-.TP 0.2i
-\(bu
-The \f3-poa\fR option changes the inheritance from \f3org\&.omg\&.CORBA_2_3\&.portable\&.ObjectImpl\fR to \f3org\&.omg\&.PortableServer\&.Servant\fR\&. The \f3PortableServer\fR module for the Portable Object Adapter (POA) defines the native \f3Servant\fR type\&. In the Java programming language, the \f3Servant\fR type is mapped to the \f3Java org\&.omg\&.PortableServer\&.Servant\fR class\&. It serves as the base class for all POA servant implementations and provides a number of methods that can be called by the application programmer, and methods that are called by the POA and that can be overridden by the user to control aspects of servant behavior\&. Based on the OMG IDL to Java Language Mapping Specification, CORBA V 2\&.3\&.1 ptc/00-01-08\&.pdf\&..RE
-
+.B \f[CB]\-vcompat\f[R] (deprecated)
+Generates stub and skeleton classes that are compatible with both the
+1.1 and 1.2 JRMP stub protocol versions.
+This option was the default in releases before 5.0.
+The generated stub classes use the 1.1 stub protocol version when loaded
+in a JDK 1.1 virtual machine and use the 1.2 stub protocol version when
+loaded into a 1.2 (or later) virtual machine.
+The generated skeleton classes support both 1.1 and 1.2 stub protocol
+versions.
+The generated classes are relatively large to support both modes of
+operation.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This option has been deprecated.
+See \f[B]Description\f[R].
+.RE
.TP
--J
-.br
-Used with any Java command, the \f3-J\fR option passes the argument that follows the \f3-J\fR (no spaces between the \f3-J\fRand the argument) to the Java interpreter
-.TP
--keep or -keepgenerated
-.br
-Retains the generated \f3\&.java\fR source files for the stub, skeleton, and tie classes and writes them to the same directory as the\f3\&.class\fR files\&.
+.B \f[CB]\-verbose\f[R]
+Causes the compiler and linker to print messages about what classes are
+being compiled and what class files are being loaded.
+.RS
+.RE
.TP
--nowarn
-.br
-Turns off warnings\&. When the \f3-nowarn\fR options is used\&. The compiler does not print out any warnings\&.
-.TP
--nowrite
-.br
-Does not write compiled classes to the file system\&.
-.TP
--vcompat (deprecated)
-.br
-Generates stub and skeleton classes that are compatible with both the 1\&.1 and 1\&.2 JRMP stub protocol versions\&. This option was the default in releases before 5\&.0\&. The generated stub classes use the 1\&.1 stub protocol version when loaded in a JDK 1\&.1 virtual machine and use the 1\&.2 stub protocol version when loaded into a 1\&.2 (or later) virtual machine\&. The generated skeleton classes support both 1\&.1 and 1\&.2 stub protocol versions\&. The generated classes are relatively large to support both modes of operation\&. Note: This option has been deprecated\&. See Description\&.
-.TP
--verbose
-.br
-Causes the compiler and linker to print out messages about what classes are being compiled and what class files are being loaded\&.
-.TP
--v1\&.1 (deprecated)
-.br
-Generates stub and skeleton classes for the 1\&.1 JRMP stub protocol version only\&. The \f3-v1\&.1\fR option is only useful for generating stub classes that are serialization-compatible with preexisting, statically deployed stub classes that were generated by the \f3rmic\fR command from JDK 1\&.1 and that cannot be upgraded (and dynamic class loading is not being used)\&. Note: This option has been deprecated\&. See Description\&.
+.B \f[CB]\-v1.1\f[R] (deprecated)
+Generates stub and skeleton classes for the 1.1 JRMP stub protocol
+version only.
+The \f[CB]\-v1.1\f[R] option is useful only for generating stub classes
+that are serialization\-compatible with existing, statically deployed
+stub classes generated by the \f[CB]rmic\f[R] command from JDK 1.1 that
+can\[aq]t be upgraded (and dynamic class loading isn\[aq]t being used).
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This option has been deprecated.
+See \f[B]Description\f[R].
+.RE
.TP
--v1\&.2 (deprecated)
-.br
-(Default) Generates stub classes for the 1\&.2 JRMP stub protocol version only\&. No skeleton classes are generated because skeleton classes are not used with the 1\&.2 stub protocol version\&. The generated stub classes do not work when they are loaded into a JDK 1\&.1 virtual machine\&. Note: This option has been deprecated\&. See Description\&.
-.SH ENVIRONMENT\ VARIABLES
-.TP
-CLASSPATH
-Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&.
-.SH SEE\ ALSO
-.TP 0.2i
-\(bu
-javac(1)
-.TP 0.2i
-\(bu
-java(1)
-.TP 0.2i
-\(bu
-Setting the Class Path
+.B \f[CB]\-v1.2\f[R] (deprecated)
+(Default) Generates stub classes for the 1.2 JRMP stub protocol version
+only.
+No skeleton classes are generated because skeleton classes aren\[aq]t
+used with the 1.2 stub protocol version.
+The generated stub classes don\[aq]t work when they\[aq]re loaded into a
+JDK 1.1 virtual machine.
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+This option has been deprecated.
+See \f[B]Description\f[R].
.RE
-.br
-'pl 8.5i
-'bp
+.SH ENVIRONMENT VARIABLES
+.TP
+.B \f[CB]CLASSPATH\f[R]
+Used to provide the system a path to user\-defined classes.
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] Directories are separated by
+colons, for example: \f[CB]\&.:/usr/local/java/classes\f[R].
+.IP \[bu] 2
+\f[B]Windows:\f[R] Directories are separated by colons, for example:
+\f[CB]\&.;C:\\usr\\local\\java\\classes\f[R].
+.RE
--- a/src/jdk.scripting.nashorn.shell/share/man/jjs.1 Fri May 31 15:49:12 2019 -0700
+++ b/src/jdk.scripting.nashorn.shell/share/man/jjs.1 Fri May 31 17:27:28 2019 -0700
@@ -1,5 +1,4 @@
-'\" t
-.\" Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
+.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
@@ -20,228 +19,229 @@
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
-.\" Title: jjs
-.\" Language: English
-.\" Date: 03 March 2015
-.\" SectDesc: Basic Tools
-.\" Software: JDK 8
-.\" Arch: generic
-.\" Part Number: E38207-04
-.\" Doc ID: JSSON
+.\" Automatically generated by Pandoc 2.3.1
.\"
-.if n .pl 99999
-.TH "jjs" "1" "03 March 2015" "JDK 8" "Basic Tools"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-jjs \- Invokes the Nashorn engine\&.
-.SH "SYNOPSIS"
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB\fBjjs\fR\fR\fB [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIscript\-files\fR\fR\fB] [\-\- \fR\fB\fIarguments\fR\fR\fB]\fR
-.fi
-.if n \{\
+.TH "JJS" "1" "2018" "JDK 13" "JDK Commands"
+.hy
+.SH NAME
+.PP
+jjs \- command\-line tool to invoke the Nashorn engine
+.SH SYNOPSIS
+.PP
+\f[B]Note:\f[R] The \f[CB]jjs\f[R] tool and the Nashorn engine are
+deprecated in JDK 11 in preparation for removal in a future release.
+.PP
+\f[CB]jjs\f[R] [\f[I]options\f[R]] \f[I]script\-files\f[R] [\f[CB]\-\-\f[R]
+\f[I]arguments\f[R]]
+.TP
+.B \f[I]options\f[R]
+This represents one or more options of the \f[CB]jjs\f[R] command,
+separated by spaces.
+See \f[B]Options for the jjs Command\f[R].
+.RS
.RE
-.\}
-.PP
-\fIoptions\fR
-.RS 4
-One or more options of the
-\fBjjs\fR
-command, separated by spaces\&. For more information, see Options\&.
+.TP
+.B \f[I]script\-files\f[R]
+This represents one or more script files that you want to interpret
+using the Nashorn engine, separated by spaces.
+If no files are specified, then an interactive shell is started.
+.RS
.RE
-.PP
-\fIscript\-files\fR
-.RS 4
-One or more script files which you want to interpret using Nashorn, separated by spaces\&. If no files are specified, an interactive shell is started\&.
+.TP
+.B \f[I]arguments\f[R]
+All values after the double hyphen marker (\f[CB]\-\-\f[R]) are passed
+through to the script or the interactive shell as arguments.
+These values can be accessed by using the \f[CB]arguments\f[R] property.
+.RS
.RE
+.SH DESCRIPTION
.PP
-\fIarguments\fR
-.RS 4
-All values after the double hyphen marker (\fB\-\-\fR) are passed through to the script or the interactive shell as arguments\&. These values can be accessed by using the
-\fBarguments\fR
-property (see Example 3)\&.
-.RE
-.SH "DESCRIPTION"
+The \f[CB]jjs\f[R] command\-line tool is used to invoke the Nashorn
+engine.
+You can use it to interpret one or several script files, or to run an
+interactive shell.
+.SH OPTIONS FOR THE JJS COMMAND
.PP
-The
-\fBjjs\fR
-command\-line tool is used to invoke the Nashorn engine\&. You can use it to interpret one or several script files, or to run an interactive shell\&.
-.SH "OPTIONS"
-.PP
-The options of the
-\fBjjs\fR
-command control the conditions under which scripts are interpreted by Nashorn\&.
-.PP
-\-cp \fIpath\fR
-.br
-\-classpath \fIpath\fR
-.RS 4
-Specifies the path to the supporting class files To set multiple paths, the option can be repeated, or you can separate each path with a colon (:)\&.
-.RE
+The options of the \f[CB]jjs\f[R] command control the conditions under
+which scripts are interpreted by Nashorn engine.
+.TP
+.B \f[CB]\-D\f[R]\f[I]name\f[R]\f[CB]=\f[R]\f[I]value\f[R]
+Sets a system property to be passed to the script by assigning a value
+to a property name.
+The following example shows how to invoke Nashorn engine in interactive
+mode and assign \f[CB]myValue\f[R] to the property named \f[CB]myKey\f[R]:
+.RS
+.IP
+.nf
+\f[CB]
+>>\ jjs\ \-DmyKey=myValue
+jjs>\ java.lang.System.getProperty("myKey")
+myValue
+jjs>
+\f[R]
+.fi
.PP
-\-D\fIname\fR=\fIvalue\fR
-.RS 4
-Sets a system property to be passed to the script by assigning a value to a property name\&. The following example shows how to invoke Nashorn in interactive mode and assign
-\fBmyValue\fR
-to the property named
-\fBmyKey\fR:
-.sp
-.if n \{\
-.RS 4
-.\}
+This option can be repeated to set multiple properties.
+.RE
+.TP
+.B \f[CB]\-\-add\-modules\f[R] \f[I]modules\f[R]
+Specifies the root user Java modules.
+.RS
+.RE
+.TP
+.B \f[CB]\-cp\f[R] \f[I]path\f[R] or \f[CB]\-classpath\f[R] \f[I]path\f[R]
+Specifies the path to the supporting class files.
+To set multiple paths, the option can be repeated, or you can separate
+each path with the following character:
+.RS
+.IP \[bu] 2
+\f[B]Oracle Solaris, Linux, and OS X:\f[R] Colon (\f[CB]:\f[R])
+.IP \[bu] 2
+\f[B]Windows:\f[R] Semicolon (\f[CB];\f[R])
+.RE
+.TP
+.B \f[CB]\-doe=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]] or \f[CB]\-dump\-on\-error=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]]
+Provides a full stack trace when an error occurs.
+By default, only a brief error message is printed.
+The default parameter is \f[CB]false\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-fv=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]] or \f[CB]\-fullversion=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]]
+Prints the full Nashorn version string.
+The default parameter is \f[CB]false\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-fx=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]]
+Launches the script as a JavaFX application.
+The default parameter is \f[CB]false\f[R].
+.RS
+.PP
+\f[B]Note:\f[R]
+.PP
+You must explicitly add the JavaFX modules to launch the script as a
+JavaFX application.
+The following example specifies the location of the JavaFX modules and
+adds them with the \f[CB]\-\-module\-path\f[R] and
+\f[CB]\-\-add\-modules\f[R] options:
+.IP
.nf
-\fB>> \fR\fB\fBjjs \-DmyKey=myValue\fR\fR
-\fBjjs> \fR\fB\fBjava\&.lang\&.System\&.getProperty("myKey")\fR\fR
-\fBmyValue\fR
-\fBjjs>\fR
-
+\f[CB]
+jjs\ \-fx\ \-\-module\-path\ /SOMEDIR/javafx\-sdk\-11/lib\ \-\-add\-modules\ javafx.controls\ HelloWorld.js
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-This option can be repeated to set multiple properties\&.
-.RE
-.PP
-\-doe
-.br
-\-\-dump\-on\-error
-.RS 4
-Provides a full stack trace when an error occurs\&. By default, only a brief error message is printed\&.
-.RE
.PP
-\-fv
-.br
-\-\-fullversion
-.RS 4
-Prints the full Nashorn version string\&.
-.RE
-.PP
-\-fx
-.RS 4
-Launches the script as a JavaFX application\&.
-.RE
-.PP
-\-h
-.br
-\-help
-.RS 4
-Prints the list of options and their descriptions\&.
-.RE
-.PP
-\-\-language=[es5]
-.RS 4
-Specifies the ECMAScript language version\&. The default version is ES5\&.
-.RE
-.PP
-\-ot
-.br
-\-\-optimistic\-types=[true|false]
-.RS 4
-Enables or disables optimistic type assumptions with deoptimizing recompilation\&. Running with optimistic types will yield higher final speed, but may increase warmup time\&.
-.RE
-.PP
-\-scripting
-.RS 4
-Enables shell scripting features\&.
-.RE
-.PP
-\-strict
-.RS 4
-Enables strict mode, which enforces stronger adherence to the standard (ECMAScript Edition 5\&.1), making it easier to detect common coding errors\&.
-.RE
-.PP
-\-t=\fIzone\fR
-.br
-\-timezone=\fIzone\fR
-.RS 4
-Sets the specified time zone for script execution\&. It overrides the time zone set in the OS and used by the
-\fBDate\fR
-object\&.
-.RE
-.PP
-\-v
-.br
-\-version
-.RS 4
-Prints the Nashorn version string\&.
-.RE
-.SH "EXAMPLES"
+The following example uses the \f[CB]jlink\f[R] command to create a custom
+runtime image that contains the JavaFX modules.
+The example then launches a script as a JavaFX application without
+specifying the JavaFX modules in the \f[CB]jjs\f[R] command:
+.IP
+.nf
+\f[CB]
+jlink\ \-\-module\-path\ /SOMEDIR/javafx\-jmods\-11\ \-\-add\-modules\ jdk.scripting.nashorn,jdk.scripting.nashorn.shell,javafx.controls\ \-\-output\ /SOMEDIR/myjdk
+
+/SOMEDIR/myjdk/bin/jjs\ \-fx\ HelloWorld.js
+\f[R]
+.fi
.PP
-\fBExample 1 \fRRunning a Script with Nashorn
-.RS 4
-.sp
-.if n \{\
-.RS 4
-.\}
+If you don\[aq]t explicitly specify the JavaFX modules, then the
+\f[CB]jjs\f[R] command prints a message and exits:
+.IP
.nf
-\fBjjs script\&.js\fR
-
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.PP
-\fBExample 2 \fRRunning Nashorn in Interactive Mode
-.RS 4
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\fB>> \fR\fB\fBjjs\fR\fR
-\fBjjs> \fR\fB\fBprintln("Hello, World!")\fR\fR
-\fBHello, World!\fR
-\fBjjs> \fR\fB\fBquit()\fR\fR
-\fB>>\fR
-
+\f[CB]
+jjs\ \-fx\ HelloWorld.js
+
+JavaFX\ is\ not\ available.
+\f[R]
.fi
-.if n \{\
+.RE
+.TP
+.B \f[CB]\-h\f[R] or \f[CB]\-help\f[R]
+Prints the list of options and their descriptions.
+.RS
.RE
-.\}
+.TP
+.B \f[CB]\-\-language=\f[R][\f[CB]es5\f[R]|\f[CB]es6\f[R]]
+Specifies the ECMAScript language version.
+The default version is ES5.
+.RS
+.RE
+.TP
+.B \f[CB]\-\-module\-path\f[R] \f[I]path\f[R]
+Specifies where to find user Java modules.
+.RS
.RE
-.PP
-\fBExample 3 \fRPassing Arguments to Nashorn
-.RS 4
-.sp
-.if n \{\
-.RS 4
-.\}
+.TP
+.B \f[CB]\-ot=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]] or \f[CB]\-optimistic\-types=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]]
+Enables or disables optimistic type assumptions with deoptimizing
+recompilation.
+This makes the compiler try, for any program symbol whose type can\[aq]t
+be proven at compile time, to type it as narrowly and primitively as
+possible.
+If the runtime encounters an error because the symbol type is too
+narrow, then a wider method is generated until a steady stage is
+reached.
+While this produces as optimal Java bytecode as possible, erroneous type
+guesses will lead to longer warmup.
+Optimistic typing is currently enabled by default, but it can be
+disabled for faster startup performance.
+The default parameter is \f[CB]true\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-scripting=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]]
+Enables a shell scripting features.
+The default parameter is \f[CB]true\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-strict=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]]
+Enables a strict mode, which enforces stronger adherence to the standard
+(ECMAScript Edition 5.1), making it easier to detect common coding
+errors.
+The default parameter is \f[CB]false\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-t=\f[R]\f[I]zone\f[R] or \f[CB]\-timezone=\f[R]\f[I]zone\f[R]
+Sets the specified time zone for script execution.
+It overrides the time zone set in the OS and used by the \f[CB]Date\f[R]
+object.
+The default \f[I]zone\f[R] is \f[CB]America/Los_Angeles\f[R].
+.RS
+.RE
+.TP
+.B \f[CB]\-v=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]] or\f[CB]\-version=\f[R][\f[CB]true\f[R]|\f[CB]false\f[R]]
+Prints the Nashorn version string.
+The default parameter is \f[CB]false\f[R].
+.RS
+.RE
+.SH EXAMPLE OF RUNNING A SCRIPT WITH NASHORN
+.IP
.nf
-\fB>> \fR\fB\fBjjs \-\- a b c\fR\fR
-\fBjjs> \fR\fB\fBarguments\&.join(", ")\fR\fR
-\fBa, b, c\fR
-\fBjjs>\fR
-
+\f[CB]
+jjs\ script.js
+\f[R]
.fi
-.if n \{\
-.RE
-.\}
-.RE
-.SH "SEE ALSO"
-.PP
-\fBjrunscript\fR
-.br
-'pl 8.5i
-'bp
+.SH EXAMPLE OF RUNNING NASHORN IN INTERACTIVE MODE
+.IP
+.nf
+\f[CB]
+>>\ jjs
+jjs>\ println("Hello,\ World!")
+Hello,\ World!
+jjs>\ quit()
+>>
+\f[R]
+.fi
+.SH EXAMPLE OF PASSING ARGUMENTS TO NASHORN
+.IP
+.nf
+\f[CB]
+>>\ jjs\ \-\-\ a\ b\ c
+jjs>\ arguments.join(",\ ")
+a,\ b,\ c
+jjs>
+\f[R]
+.fi