1 Tools and Commands Reference
The JDK tools and their commands enable developers to handle development tasks such as compiling and running a program, packaging source files into a Java Archive (JAR) file, applying security policies to a JAR file, and more.
The tools and commands reference topic lists and describes the Java Development Kit (JDK) tools. They’re grouped into the following sections based on the related functions that they perform. Details about the tools and the commands that you use to run them are contained in the corresponding sections of this guide.
Main Tools
The following foundation tools and commands let you create and build applications:
- 
                        javac: You can use the javactool and its options to read Java class and interface definitions and compile them into bytecode and class files.
- 
                        javap: You use the javapcommand to disassemble one or more class files.
- 
                        javadoc: You use the javadoctool and its options to generate HTML pages of API documentation from Java source files.
- 
                        java: You can use the javacommand to launch a Java application.
- 
                        jar: You can use the jarcommand to create an archive for classes and resources, and to manipulate or restore individual classes or resources from an archive.
- 
                        jlink: You can use the jlinktool to assemble and optimize a set of modules and their dependencies into a custom runtime image.
- 
                        jmod: You use the jmodtool to create JMOD files and list the content of existing JMOD files.
- 
                        jdeps: You use the jdepscommand to launch the Java class dependency analyzer.
- 
                        jdeprscan: You use the jdeprscantool as a static analysis tool that scans a jar file (or some other aggregation of class files) for uses of deprecated API elements.
Language Shell
The following tool gives you an interactive environment for trying out the Java language:
- 
                        jshell: You use the jshelltool to interactively evaluate declarations, statements, and expressions of the Java programming language in a read-eval-print loop (REPL).
Security Tools
The following security tools set security policies on your system and create applications that can work within the scope of security policies set at remote sites:
- 
                        keytool: You use the keytoolcommand and options to manage a keystore (database) of cryptographic keys, X.509 certificate chains, and trusted certificates.
- 
                        jarsigner: You use the jarsignertool to sign and verify Java Archive (JAR) files.
The following tools obtain, list, and manage Kerberos tickets on Windows:
- 
                        kinit: You use the kinittool and its options to obtain and cache Kerberos ticket-granting tickets.
- 
                        klist: You use the klisttool to display the entries in the local credentials cache and key table.
- 
                        ktab: You use the ktabtool to manage the principal names and service keys stored in a local key table.
Remote Method Invocation (RMI) Tools
The following tools enable creating applications that interact over the Web or other network:
- 
                        rmic: You use the rmiccompiler to generate stub and skeleton class files using the Java Remote Method Protocol (JRMP).
- 
                        rmiregistry: You use the rmiregistrycommand on UNIX-based systems to create and start a remote object registry on the specified port on the current host.
- 
                        rmid: You use the rmidcommand to start the activation system daemon that enables objects to be registered and activated in a Java Virtual Machine (JVM).
- 
                        serialver: You use the serialvercommand to return theserialVersionUIDfor one or more classes in a form suitable for copying into an evolving class.
Java Deployment Tools
The following utilities let you deploy Java applications:
Note:
pack 200 and unpack200 have been deprecated and might be removed in a future JDK release.
Monitoring Tools
The following tools let you monitor performance statistics:
- 
                        jconsole: You use the jconsolecommand to start a graphical console to monitor and manage Java applications.
Note:
The following experimental tools are unsupported and should be used with that understanding. They may not be available in future JDK versions.
Java Accessibility Utilities
The following utilities let you check the accessibility of Java objects:
- 
                        jaccessinspector: You use jaccessinspectorto examine accessible information about objects in the Java Virtual Machine that use the Java Accessibility Utilities API.
- 
                        jaccesswalker: You use jaccesswalkerto navigate through the component trees in a particular Java Virtual Machine and presents the hierarchy in a tree view.
Troubleshooting Tools
The following tools let you perform specific troubleshooting tasks:
- 
                        jcmd: You use the jcmdutility to send diagnostic command requests to a running Java Virtual Machine (JVM).
- 
                        jdb: You use the jdbcommand and its options to find and fix bugs in Java platform programs.
- 
                        jhsdb: You use the jhsdbtool to attach to a Java process or to a core dump from a crashed Java Virtual Machine (JVM).
Note:
The following experimental tools are unsupported and should be used with that understanding. They may not be available in future JDK versions. Some of these tools aren’t currently available on Windows platforms.
- 
                        jinfo: Experimental You use the jinfocommand to generate Java configuration information for a specified Java process. This command is experimental and unsupported. For core files usejhsdbjinfo.
- 
                        jmap: Experimental You use the jmapcommand to print details of a specified process. This command is experimental and unsupported. For core files usejhsdbjmap.
- 
                        jstack: Experimental You use the jstackcommand to print Java stack traces of Java threads for a specified Java process. This command is experimental and unsupported. For core files usejhsdbjstack.
Scripting Tools
The following tools let you run scripts that interact with the Java platform:
Note:
The Nashorn JavaScript script engine, APIs, and the jjs tool have been deprecated and might be removed in a future JDK release.
- 
                        jjs: You use the jjscommand-line tool to invoke the Nashorn engine.
Note:
The following experimental tool is unsupported and should be used with that understanding. It may not be available in future JDK versions.
- 
                        jrunscript: Experimental You use the jrunscriptcommand to run a command-line script shell that supports interactive and batch modes.