jdk目录详解及其使用方法

时间:2023-03-09 17:53:50
jdk目录详解及其使用方法

jdk目录详解

JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者 编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。 

      JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。 

      JDK包含的基本组件包括: 

      ·javac – 编译器,将源程序转成字节码 

      ·jar – 打包工具,将相关的类文件打包成一个文件 

      ·javadoc – 文档生成器,从源码注释中提取文档 

      ·jdb – debugger,查错工具 

      JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为private runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。 

      JDK中还包括各种例子程序,用以展示Java API中的各部分。 

      从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显著特点 是随着Java (J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java 软件开发,也不利于团体协同开发。 

      JDK一般有三种版本: 

      SE(J2SE),standard edition,标准版,是我们通常用的一个版本 

      EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序, 

      ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序 

      Java开发工具(JDK)是许多Java专家最初使用的开发环境。尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。 

   JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java 

   API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O。一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。 

   作为JDK实用程序,工具库中有七种主要程序。 

   Javac:Java编译器,将Java源代码转换成字节码。 

   Java:Java解释器,直接从类文件执行Java应用程序字节代码。 

   appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 

   Javadoc:根据Java源码及说明语句生成HTML文档。 

   Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。 

   Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 

   Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 

一、JDK文件结构 

      本文档给出 JDK 目录及其所包含的文件的概述。 

      开发文件和目录 

      本节对开发 Java 平台应用程序所要求的文件和目录进行说明。(不要求的目录有:演示程序、Java 源代码和 C 头文件。下一节附加文件和目录将对它们进行论述。) 下图列出的是最重要的目录: 

                 jdk1.2 

        ___________|____________________ 

       |           |                    | 

      bin         lib                  jre 

       |           |          __________|___________ 

   java.exe    tools.jar     |                      | 

   javac.exe   dt.jar       bin                    lib 

   javap.exe            _____|____          ________|________ 

   javah.exe           |          |        |        |        | 

   javadoc.exe     java.exe    classic   rt.jar    ext    

security 

                   java.dll       |      i18n.jar   | 

                   awt.dll     jvm.dll            iiimp.jar    

      假定 JDK 软件安装在 c:\jdk1.2 目录中,下面列出的是那些关键目录及它们之所以重要的原因: 

      c:\jdk1.2 

      JDK 软件安装的根目录。包含版权、许可及 README 文件。还包括: 

      src.jar -- 构成 Java 平台核心 API 的所有类的源文件的归档。 

      c:\jdk1.2\bin 

      Java 开发工具包 (JDK) 中所包含的开发工具的可执行文件。PATH 环境变量应该包含一个指示此目录的项。有关工具的详细信息,参见 JDK 工具。 

      c:\jdk1.2\lib 

      开发工具使用的文件。这些文件包括 tools.jar,它包含支持 JDK 的工具和实用程序的非核心类。还包括 dt.jar,它是 BeanInfo 文件的 DesignTime 归档,BeanInfo 文件用来告诉交互开发环境 (IDE) 如何显示 Java 组件以及如何让开发人员根据应用程序自定义它们。 

      c:\jdk1.2\jre 

      JDK 开发工具所使用的 Java 运行时环境的根目录。运行时环境是 Java 1.2 平台的实现。除了文档外,它与可部署的 JRE 完全相同。 

      c:\jdk1.2\jre\bin 

      Java 平台使用的工具和库的可执行文件及 DLL。可执行文件与 /jdk1.2/bin 中的文件相同。java 启动器工具担当应用程序启动器的角色,它替代了与 1.1 版的 JDK 软件一同发行的旧 jre 工具。不必将该目录放在 PATH 环境变量中。 

      c:\jdk1.2\jre\bin\classic 

      包含经典虚拟机使用的 Windows DLL 文件。经典虚拟机是 Java 虚拟机的语言解释器版本。当新的虚拟机可用时,它们的 DLL 将被安装在 jre/bin 的某个新子目录中。 

      c:\jdk1.2\jre\lib 

      Java 运行时环境使用的代码库、属性设置和资源文件。包括: 

      rt.jar -- 自举类(构成 Java 平台核心 API 的 RunTime 类)。 

      i18n.jar -- 字符转换类及其它与国际化和本地化有关的类。 

      除(下面将要阐述的) ext 子目录以外,还有几个资源子目录不在此处说明。 

      c:\jdk1.2\jre\lib\ext 

      Java 平台扩展的缺省安装目录。例如,这是安装时 JavaHelp jar 文件的安装目录。包括: 

iiimp.jar -- 实现 Internet-Intranet 输入方法协议的类,供从使用国际字符集的设备上接收输入的应用程序来使用。 

      c:\jdk1.2\jre\lib\security 

      包含用于安全管理的文件。这些文件包括安全策略 (java.policy) 和安全属性 (java.security) 文件。 

      附加文件和目录 

      本节说明演示程序、Java 源代码和 C 头文件的目录结构。下面是目录结构: 

                   jdk1.2 

      __________ _____|_____ _____________ 

     |          |           |             | 

   src.jar    demo       include     include-old 

             ___|___ 

            |       | 

          applets  jfc 

                    | 

                  Java2D     

  

      以上所显示的附加目录为: 

      c:\jdk1.2\demo 

      含有源代码的程序示例,用于显示如何为 Java 平台编程。 

      c:\jdk1.2\demo\applets 

      可用在网页上的 applet。 

      c:\jdk1.2\demo\jfc 

      使用新 JFC\Swing 组件的示例。 

      c:\jdk1.2\demo\jfc\Java2D 

      使用新 Java 2D 图形的示例。 

      c:\jdk1.2\include 

      C 语言头文件,它支持使用 Java 本地接口 [ web]和 Java 虚拟机调试程序接口 [ web] 的本地代码编程技术。 

      c:\jdk1.2\include-old

头文件,支持使用旧接口的本地代码编程技术。提供这些头文件只是为了向后兼容。所有 Java 虚拟机都不推荐、不支持也不提供这些接口。

JDK中bin目录下常用命令注释

HtmlConverter.exe
用法:HtmlConverter [-option1 value1 [-option2 value2 [...]]] [-simulate]  [filespecs]
其中,选项包括:
   -source:    获取源文件的路径。 缺省值: <userdir>

   -dest:      写入已转换文件的路径。 缺省值: <userdir>

   -backup:    写备份文件的路径。 缺省值: <dirname>_BAK

   -f:         强制覆写备份文件。

   -subdirs:   应处理子目录中的文件。

   -template:  模板文件的路径。 如果不确定,请使用缺省值。

   -log:       写日志的路径。 如果没有提供,则不会写入任何日志。

   -progress:  转换时显示进度。 缺省值: true

   -simulate:  在没有进行转换时显示特定于转换的信息。

   -latest:    使用最新的 JRE 支持发行版 mimetype。

   -gui:       显示转换程序的图形用户界面。
   filespecs:  用空格分开的文件说明列表。  缺省值: "*.html *.htm" (需要引号)

javap

rmic

功能说明:为远程对象生成 stub 和 skeleton。

语法:rmic [ options ] package-qualified-class-name(s)

rmid

功能说明:启动激活系统守护进程,以便能够在 Java 虚拟机上注册和激活对象。

语法:rmid [-port port] [-log dir]

用法:rmid <option>

rmiregistry

功能说明:命令可在当前主机的指定端口上启动远程对象注册服务程序。

用法: rmiregistry <选项> <端口>

serialver

功能说明:命令返回 serialVersionUID。

语法:serialver [ 命令选项 ]

jarsigner

功能说明:为Java归档 (JAR) 文件产生签名,并校验已签名的 JAR 文件的签名。

用法:jarsigner [options] jar-file alias

     jarsigner -verify [options] jar-file

 [-keystore <url>]           keystore location
 [-storepass <password>]     password for keystore integrity
 [-storetype <type>]         keystore type
 [-keypass <password>]       password for private key (if different)
 [-sigfile <file>]           name of .SF/.DSA file
 [-signedjar <file>]         name of signed JAR file
 [-verify]                   verify a signed JAR file
 [-verbose]                  verbose output when signing/verifying
 [-certs]                    display certificates when verbose and verifying
 [-internalsf]               include the .SF file inside the signature block
 [-sectionsonly]             don't compute hash of entire manifest
 [-provider]                 name of cryptographic service provider's master class file

 ...

keytool

功能说明:管理由私钥和认证相关公钥的 X.509 证书链组成的密钥仓库(数据库),还管理来自可信任实体的证书

keytool 用法:

-certreq     [-v] [-alias <alias>] [-sigalg <sigalg>]

    [-file <csr_file>] [-keypass <keypass>]

    [-keystore <keystore>] [-storepass <storepass>]

    [-storetype <storetype>] [-provider <provider_class_name>] ...
-delete      [-v] -alias <alias>

    [-keystore <keystore>] [-storepass <storepass>]

    [-storetype <storetype>] [-provider <provider_class_name>] ...
-export      [-v] [-rfc] [-alias <alias>] [-file <cert_file>]

    [-keystore <keystore>] [-storepass <storepass>]

    [-storetype <storetype>] [-provider <provider_class_name>] ...
-genkey      [-v] [-alias <alias>] [-keyalg <keyalg>]

    [-keysize <keysize>] [-sigalg <sigalg>]

    [-dname <dname>] [-validity <valDays>]

    [-keypass <keypass>] [-keystore <keystore>]

    [-storepass <storepass>] [-storetype <storetype>]

    [-provider <provider_class_name>] ...
-help
-identitydb  [-v] [-file <idb_file>] [-keystore <keystore>]

    [-storepass <storepass>] [-storetype <storetype>]
-import      [-v] [-noprompt] [-trustcacerts] [-alias <alias>]

    [-file <cert_file>] [-keypass <keypass>]

    [-keystore <keystore>] [-storepass <storepass>]

    [-storetype <storetype>] [-provider <provider_class_name>] ...
-keyclone    [-v] [-alias <alias>] -dest <dest_alias>

    [-keypass <keypass>] [-new <new_keypass>]

    [-keystore <keystore>] [-storepass <storepass>]

    [-storetype <storetype>] [-provider <provider_class_name>] ...
-keypasswd   [-v] [-alias <alias>]

    [-keypass <old_keypass>] [-new <new_keypass>]

    [-keystore <keystore>] [-storepass <storepass>]

    [-storetype <storetype>] [-provider <provider_class_name>] ...
-list        [-v | -rfc] [-alias <alias>]

    [-keystore <keystore>] [-storepass <storepass>]

    [-storetype <storetype>] [-provider <provider_class_name>] ...
-printcert   [-v] [-file <cert_file>]
-selfcert    [-v] [-alias <alias>] [-sigalg <sigalg>]

    [-dname <dname>] [-validity <valDays>]

    [-keypass <keypass>] [-keystore <keystore>]

    [-storepass <storepass>] [-storetype <storetype>]

    [-provider <provider_class_name>] ...

-storepasswd [-v] [-new <new_storepass>]

    [-keystore <keystore>] [-storepass <storepass>]

    [-storetype <storetype>] [-provider <provider_class_name>] ...

native2ascii

功能说明:将含有本地编码字符(既非 Latin1 又非 Unicode 字符)的文件转换为 Unicode 编码字符的文件。

语法:native2ascii [options] [inputfile [outputfile]]

範例

aaa.txt文件內容包括:中國

native2ascii aaa.txt bbb.txt

執行後變為:/u4e2d/u56fd

aaa.txt文件內容包括:/u4e2d/u56fd

native2ascii -reverse aaa.txt bbb.txt

執行後變為:中國

appletviewer

功能说明:Java applet 浏览器。appletviewer 命令可在脱离万维网浏览器环境的情况下运行 applet

语法:appletviewer [ threads flag ] [ 命令选项 ] urls ...

extcheck

功能说明:extcheck 检测目标 jar 文件与当前安装方式扩展 jar 文件间的版本冲突

语法:extcheck [ -verbose ] targetfile.jar

压缩程序Jar.exe

    压缩程序jar.exe的功能是把多个文件以zip格式压缩到一个扩展名为jar的文件中,这样可以保持程序的完整性并便于使用。它也可以用来解压缩jar文件中的文件,但是好象不如用压缩工具Winzip
WinRAR来得方便。

    jar文件主要有以下三个用途:

    1. 一个应用程序包含许多类文件,压缩到一个jar文件中,运行时用java -jar XXX.jar命令。避免文件一多互相混杂不容易管理。 

    2. 一个Applet程序包含许多类文件,压缩到一个jar文件中,运行时一次装载,避免多次装载提高运行效率。 

    3. 把类库压缩到jar文件中,使用起来更方便。例如java 2的类库都在tools.jar文件中,该文件在jdk/lib目录中。swing类在dt.jar文件中。但是需要把tools.jar和dt.jar加入到类库路径CLASSPATH中。 

    使用命令C:/javacode/zcb>jar 可在DOS屏幕上输出jar.exe的用法和选项如下:

    用法:jar {ctxu}[vfm0M] [jar-文件] [manifest-文件]
[-C 目录] 文件名 ...

    命令中的文件名可以是用空格分隔的多个文件。选项:

-c 创建新的归档

-t 列出归档内容的列表

-x 展开归档中的命名的(或所有的)文件

-u 更新已存在的归档

-v 生成详细输出到标准输出上

-f 指定归档文件名

-m 包含来自指定的清单(manifest)文件的清单(manifest)信息

-0 只存储方式;未用ZIP压缩格式

-M 不产生所有项的清单(manifest)文件

-i 为指定的jar文件产生索引信息

-C 改变到指定的目录,并且包含下列文件:

    如果一个文件名是一个目录,它将被递归处理。

    清单(manifest)文件名和归档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。
:将两个class文件归档到一个名为 'classes.jar' 的归档文件中:

    jar cvf classes.jar Foo.class Bar.class

    :用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有文件归档到一个名为 'classes.jar' 的归档文件中:

    jar cvfm classes.jar mymanifest -C foo/ 

    :从classes.jar文件中还原文件Foo.class

    jar xf classes.jar Foo.class

    :还原classes.jar文件中的所有文件

    jar xf classes.jar 

    注意,用jar xf classes.jar *.*(or *.class. xxx.* etc.) 都是错误的。但压缩时可以使用通配符,下类命令是正确的:

    jar cf classes.jar -C foo/ *.*

    它把目录foo中的所有文件都压缩到classes.jar中。

运行程序java.exe

    运行程序java.exe解释性地把字节码文件*.class翻译成所在机器的可执行代码并执行之。它的最简单的用法是:java
<类文件名> <CR>

    运行当前目录中的类文件XXX.class,扩展名不能加。如果不是当前目录中而是带路径的文件名,那么在程序包含多个类时会发生“某某类找不到”的异常。运行程序java.exe的一般使用格式为:

    java [选项] <类文件名> [命令行参数] 〈CR>

    包含多个类的程序也可以把多个文件压缩到一个jar文件中,那么运行命令如下:

    java -jar [选项] <JAR文件名> [命令行参数] 〈CR>

文档生成器javadoc

    参考文档生成器javadoc.exe的用途是从java源程序中提取信息生成html格式的软件参考文档。它最简单的用法是:

    javadoc FileDownload.java

    运行后生成文件FileDownload.html和其他相关文件。

    点击这里观看这个文件的内容。

    java.doc的用法和选项列表如下。

    用法:javadoc [options] [packagenames] [sourcefiles] [@files]

-overview <file>    读取 HTML 格式的概述文档

-public    仅显示 public 类和成员

-protected   显示 protected/public 类和成员(缺省)

-package     显示 package/protected/public 类和成员

-private     显示所有类和成员

-help        显示命令行选项

-doclet <class>     通过候选 doclet 生成输出

-docletpath <path>     指定 doclet 类文件的查找位置

-1.1    利用 JDK 1.1 模仿 doclet 生成输出

-sourcepath <pathlist>    指定源文件的查找位置

-classpath <pathlist>     指定用户类文件的查找位置

-bootclass path <pathlist>     覆盖自举类加载器所加载的类文件的位置

-extdirs <dirlist> 覆盖已安装的扩展的位置

-verbose     有关 Javadoc 所做工作的输出信息

-locale <name>     所用的 Locale,例如 en_US 或 en_US_WIN

-encoding <name> 源文件编码名称

-J<flag>     将 <flag> 直接传给运行时系统

    由标准 doclet 提供:

-d <directory> 输出文件的目标目录

-use    创建类和包的用法页

-version 包含 @version 段

-author  包含 @author 段

-splitindex 将索引分为每个字母对应一个文件 

-windowtitle <text> 文档的浏览器窗口标题

-doctitle <html-code>    包含包索引页(首页)的标题

-header <html-code> 包含每一页的页眉文本

-footer <html-code> 包含每一页的页脚文本

-bottom <html-code> 包含每一页的页底文本

-link <url> 创建到 javadoc 输出的链接(位于 <url>)

-linkoffline <url> <url2> 利用位于 <url2> 的包列表链接到位于 <url> 的文档

-group <name> <p1>:<p2>.. 将概览页中指定的包分组

-nodeprecated 不包含 @deprecated 信息

-nodeprecatedlist 不生成不鼓励使用的列表

-notree 不生成类层次

-noindex 不生成索引

-nohelp 不生成帮助链接

-nonavbar 不生成导航栏

-helpfile <file> 包含帮助链接功能链接到目标的文件

-stylesheetfile <path> 改变所生成文档的样式的文件

-docencoding <name> 输出编码名称

    示例下列命令生成的就是从上面的超链中看到的文件。

    javadoc -private -d F:/SHPS3688/webSchool/JavaTouturial -author -splitindex -windowtitle FileDownload.java程序的参考文档FileDownload.java
    请读者自行解释这个命令的完整含义。

    javadoc能够提取有/** ... */括起来的注释文本作为HTML文档的正文内容。因此java有/**和/*两种注释标记。值得一提的是,在/**
... */中的注释内容可以包含HTML标记文本,javadoc提取HTML标记送到生成的文档中。用这种方法可以控制生成文档的正文的显示格式。例如下面这一段:

/**

* 您可以插入一个<b>项目列表</b>:

* <ol>

* <li> 项目一

* <li> 项目二

* <li> 项目三

* </ol>

*/

    可以生成一个项目列表。注意在文档注释中,位于一行最开头的星号会被javadoc丢弃。同时丢弃的还有前导空格。javadoc会对所有内容进行格式化,使其与标准的文档外观相符。不要将<h1>或<hr>这样的标题当作嵌入HTML使用,因为javadoc会插入自己的标题,我们给出的标题会与之冲突。所有类型的注释文档——类、变量和方法——都支持嵌入HTML。

    javadoc还会提取一些以“@”开头的“文档标记”(Doc
tags),置于注释行的起始处(但前导的“*”会被忽略)。比如您需要提取@authod标记,在命令行选项中需要加入-authod选项。下面给出各种@标记和它的含义。

@see 引用其他类

    类、方法和变量三种类型的注释文档都可包含@see标记,它允许我们引用其他类里的文档。对于这个标记,javadoc会生成相应的HTML,将其直接链接到其他文档。格式如下:

@see 类名

@see 完整类名

@see 完整类名#方法名

    每一格式都会在生成的文档里自动加入一个超链接的“See Also”条目。注意javadoc不会检查我们指定的超链接是否有效。
    类文档标记

    随同嵌入HTML和@see引用,类文档还可以包括用于版本信息以及作者姓名的标记。类文档亦可用于“接口”目的。

    1. @version

    格式如下:

    @version 版本信息

    其中,“版本信息”代表任何适合作为版本说明的资料。若在javadoc命令行使用了“-version”标记,就会从生成的HTML文档里提取出版本信息。

    2. @author

    格式如下:

    @author 作者信息

    其中,“作者信息”包括您的姓名、电子函件地址或者其他任何适宜的资料。若在javadoc命令行使用了“-author”标记,就会专门从生成的HTML文档里提取出作者信息。

    可为一系列作者使用多个这样的标记,但它们必须连续放置。全部作者信息会一起存入最终HTML代码的单独一个段落里。

    变量文档标记 

    变量文档只能包括嵌入的HTML以及@see引用。

    方法文档标记除嵌入HTML和@see引用之外,方法还允许使用针对参数、返回值以及违例的文档标记。

    1. @param

    格式如下:

    @param 参数名说明

    其中,“参数名”是指参数列表内的标识符,而“说明”代表一些可延续到后续行内的说明文字。一旦遇到一个新文档标记,就认为前一个说明结束。可使用任意数量的说明,每个参数一个。

    2. @return

    格式如下:

    @return 说明

    其中,“说明”是指返回值的含义。它可延续到后面的行内。

    3. @exception

    章讲述。简言之,它们是一些特殊的对象,若某个方法失败,就可将它们“扔出”对象。调用一个方法时,尽管只有一个违例对象出现,但一些特殊的方法也许能产生任意数量的、不同类型的违例。所有这些违例都需要说明。所以,违例标记的格式如下:

    @exception 完整类名说明
其中,“完整类名”明确指定了一个违例类的名字,它是在其他某个地方定义好的。而“说明”(同样可以延续到下面的行)告诉我们为什么这种特殊类型的违例会在方法调用中出现。

    4. @deprecated (“不提倡使用的方法”警告)

    这是Java 1.1的新特性。该标记用于指出一些旧功能已由改进过的新功能取代。该标记的作用是建议用户不必再使用一种特定的功能,因为未来改版时可能摒弃这一功能。若将一个方法标记为@deprecated,则使用该方法时会收到编译器的警告
注意,对于类文档标记@version和@authod需要使用命令行选项才提取,而其他@标记是默认提取的,而用-nodeprecated选项禁止提取。

Applet观看程序appletviewer.exe

    appletviewer.exe用来不凯浏览器就观看小程序片。它的简单用法是

    appletviewer XXX.html

    其中XXX.html是嵌入了Applet的HTML文档,扩展名不能省略。运行后会打开一个大小等于Applet设定的宽和高的窗口,用来显示这个Applet。appletviewer的用法的一般格式和选项如下:

    appletviewer [-debug] [-J<javaflag>] [-encoding <编码类型>] url|file ...

    其中文件必须是html文件,不能是class文件。javah

功能说明:C 头文件和 Stub 文件生成器;javah 从 Java 类生成 C 头文件和 C 源文件;这些文件提供了连接胶合,使 Java 和 C 代码可进行交互

语法:javah [ 命令选项 ] fully-qualified-classname. . .

javah_g [ 命令选项 ] fully-qualified-classname. . .

查看程序javap.exe

    程序 javap.exe的功能是查看知道类文件中的所有声明——类名、构建器和方法名、字段(变量)。最简单的用法是javap
<类文件名> <CR>

    执行后显示类文件中的包和类的所有声明,但不包含方法体。不带选项的命令不显示用private修饰的声明。javap命令的一般格式为:javap
[选项] <类文件名>〈CR>

    文件名中不能加扩展名。可能的选项及其意义如下。

-b Backward compatibility with javap in JDK 1.1

-c Disassemble the code

-classpath <pathlist> Specify where to find user class files

-extdirs <dirs> Override location of installed extensions

-help Print this usage message

-J<flag> Pass <flag> directly to the runtime system

-l Print line number and local variable tables

-public Show only public classes and members

-protected Show protected/public classes and members

-package Show package/protected/public classes and members (default)

-private Show all classes and members

-s Print internal type signatures(签名)

-bootclasspath <pathlist> Override location of class files loaded by the bootstrap class loader

-verbose Print stack size, number of locals and args for met hods If verifying, print reasons for failure

    选项-package是默认的,它显示package/protected/public的类,不显示private的,用-private选项可显示所有的。

使用下列命令

    C:/javacode/zcb/ch15>javap FileDownload

    输出结果如下:

Compiled from FileDownload.java

public class FileDownload extends javax.swing.JFrame implements java.awt.event.A

ctionListener {

 java.lang.String url;

 javax.swing.JTextField tUrl;

 MyPanel mp;

 javax.swing.JButton bt;

 public FileDownload();

 public void actionPerformed(java.awt.event.ActionEvent);

 static void getDown(java.lang.String);

 public static void main(java.lang.String[]);

}javap FileDownload

    上述命令这显示public类,不显示处在同一文件中的非public类。如果要求一起查看,可在命令行中加入多个文件名。如:javap
FileDownload MyPanel <CR>

jdb

jdb 是一个简单的命令行的错误调试程序,用于Java class文件

用法:jdb <options> <class> <arguments>

orbd

orbd 用在 CORBA 环境中,使客户端能透明地定位和调用服务器的永久对象

用法:orbd <选项>

tnameserv

tnameserv 启动 Java IDL 名称服务器

servertool

servertool 为应用程序注册,取消注册, 启动和停止服务器提供了方便的接口

idlj

idlj 从已给的IDL文件中生成Java的联编文件

policytool

policytool 图形化的建立和管理策略(policy)文件

javah.exe

用法:javah [options] <classes>
其中 [options] 包括:
-help                 打印该帮助信息

-classpath <path>     类的加载路径

-bootclasspath <path> 自举类的加载路径

-d <dir>              输出目录

-o <file>             输出文件(仅能使用 -d 或 -o 之一)

-jni                  生成 JNI 风格的头文件(缺省)

-old                  生成 JDK1.0 风格的头文件

-stubs                生成 stubs 文件

-version              打印版本信息

-verbose              输出有关本命令所做工作的信息

-force             始终写输出文件

指定 <classes> 时必须使用全名(例如 java.lang.Object)

idlj.exe
com.sun.tools.corba.se.idl.InvalidArgument: No IDL file was specified.
Compiler Usage:
   java com.sun.tools.corba.se.idl.toJavaPortable.Compile [options] <idl file>
where <idl file> is the name of a file containing IDL definitions, and

[options] is any combination of the options listed below.  The options

are optional and may appear in any order; <idl file> is required and

must appear last.
Options:

-d <symbol>               This is equivalent to the following line in an

                         IDL  #define <symbol>

-emitAll                  Emit all types, including those found in #included files.

-f<side>                  Define what bindings to emit.  <side> is one of client,

                         server, all, serverTIE, allTIE.  serverTIE and allTIE

                         cause delegate model skeletons to be emitted.  If this

                         flag is not used, -fclient is assumed.

-i <include path>         By default, the current directory is scanned for

                         included files.  This option adds another directory.

-keep                     If a file to be generated already exists, do not

                         overwrite it.  By default it is overwritten.

-noWarn                   Suppress warnings.

-oldImplBase              Generate skeletons compatible with old (pre-1.4) JDK ORBs.

-pkgPrefix <t> <prefix>   When the type or module name <t> is encountered at

                         file scope, begin the Java package name for all files

                         generated for <t> with <prefix>.

-pkgTranslate <t> <pkg>   When the type or module name <t> in encountered, replace

                         it with <pkg> in the generated java package.  Note that

                         pkgPrefix changes are made first.  <t> must match the

                         full package name exactly.  Also, <t> must not be

                         org, org.omg, or any subpackage of org.omg.

-skeletonName <xxx%yyy>   Name the skeleton according to the pattern.

                         The defaults are:

                         %POA for the POA base class (-fserver or -fall)

                         _%ImplBase for the oldImplBase base class

                         (-oldImplBase and (-fserver or -fall)).

-td <dir>                 use <dir> for the output directory instead of

                         the current directory.

-tieName <xxx%yyy>        Name the tie according to the pattern.  The defaults are:

                         %POATie for the POA tie (-fserverTie or -fallTie)

                         %_Tie for the oldImplBase tie

                         (-oldImplBase and (-fserverTie or -fallTie)).

-v, -verbose              Verbose mode.

-version                  Display the version number and quit.
欢迎使用 Java IDL 服务器工具

请在提示处输入命令
servertool > help
可用命令:

-------------------
register     - 注册一个可激活的服务器

unregister   - 取消服务器注册

getserverid  - 返回应用程序名称的服务器标识符

list         - 列举所有已注册服务器

listappnames - 列举当前定义的应用程序名称

listactive   - 列举当前活动的服务器

locate       - 将已注册服务器定位在特定类型的端口

locateperorb - 为已注册服务器的特定对象请求代理程序定位端口。

orblist      - 对象请求代理程序 (orb) 名称及其映射列表

shutdown     - 关闭一个已注册服务器

startup      - 启动一个已注册服务器

help         - 取得帮助

quit         - 退出此工具
servertool > quit
其中,<选项> 包括:

 -port                  启动 ORBD 的激活端口,缺省值为 1049 (可选)

 -defaultdb             ORBD 文件的目录,缺省值为 "./orb.db" (可选)

 -serverid              ORBD 的服务器标识符,缺省值为 1 (可选)

 -ORBInitialPort        初始端口(必需)

 -ORBInitialHost        初始主机名称(必需)
where options include:

   -help             print out this message and exit

   -sourcepath <directories separated by ";">

                     directories in which to look for source files

   -attach <address>

                     attach to a running VM at the specified address using standard connector

   -listen <address>

                     wait for a running VM to connect at the specified address using standard connector

   -listenany

                     wait for a running VM to connect at any available address using standard connector

   -launch

                     launch VM immediately instead of waiting for 'run' command

   -connect <connector-name>:<name1>=<value1>,...

                     connect to target VM using named connector with listed argument values

   -dbgtrace [flags] print info for debugging jdb

   -tclient          run the application in the Hotspot(tm) Performance Engine (Client)

   -tserver          run the application in the Hotspot(tm) Performance Engine (Server)
options forwarded to debuggee process:

   -v -verbose[:class|gc|jni]

                     turn on verbose mode

   -D<name>=<value>  set a system property

   -classpath <directories separated by ";">

                     list directories in which to look for classes

   -X<option>        non-standard target VM option
<class> is the name of the class to begin debugging

<arguments> are the arguments passed to the main() method of <class>
For command help type 'help' at jdb prompt
    java.exe可用的选项及其意义如下:

-cp -classpath <directories and zip/jar files separated by ;>    set search path for application classes and resources

-D<name>=<value>     set a system property

-verbose[:class|gc|jni]     enable verbose output

-version     print product version and exit

-showversion     print product version and continue

-? -help     print this help message

-X         print help on non-standard options
    例如命令

    c:/myjava>java  -classpath d:/mytools;  myclass

    表示运行当前目录中的myclass.class文件,除了默认的类路径以外,可以到d:/mytools目录中查找,然后到c:/tools/dt.jar文件中查找使用到的类。

编译程序javac.exe

    编译程序javac.exe的作用是java源文件编译生成类文件(*.class)。最简单的用法是

    javac <XXX.java> <CR>

    执行后将在当前目录中生成XXX.class文件。扩展名java不可省。javac.exe的一般使用格式

    用法:javac <选项> <源文件>
    可能的选项及其意义如下:

-g     生成所有调试信息

-g:none     生成无调试信息

-g:{lines,vars,source}     生成只有部分调试信息

-O     优化;可能妨碍调试或者增大类文件

-nowarn     生成无警告

-verbose     输出关于编译器正在做的信息

-deprecation     输出使用了不鼓励使用的API的源程序位置

-classpath <路径>     指定用户类文件的位置

-sourcepath <路径>     指定输入源文件的位置

-bootclasspath <路径>     覆盖自举类文件的位置

-extdirs <目录(多个)>     覆盖安装的扩展类的位置

-d <目录>     指定输出类文件的位置

-encoding <编码>     指定源文件中所用的字符集编码

-target <版本>     生成指定虚拟机版本的类文件
    例如:

    javac -source d:/java/ch15/ -d c:/java/ch15 -classpath c:/mytools test.java 

    把:/java/ch15/test.java文件编译,类文件输出到c:/java/ch15目录中,可能使用到的个人类库在c:/mytools中。
其中,<选项> 包括:

 -J<runtime 标记> 将参数传递到 java 解释程序
其中,<option> 包括:

 -port <option>        指定供 rmid 使用的端口

 -log <directory>    指定 rmid 将日志写入的目录

 -stop               停止当前的 rmid 调用(对指定端口)

 -C<runtime 标记>    向每个子进程传递参数(激活组)

 -J<runtime 标记>    向 java 解释程序传递参数
用法:rmic <选项> <类名>
其中 <选项> 包括:

 -keep          不删除中间生成的源文件

 -keepgenerated (同 "-keep")

 -v1.1          为 1.1 stub 协议版本创建 stubs/skeleton

 -vcompat       (缺省)创建与 1.1 和

                          1.2 stub 协议版本兼容的 stubs/skeleton

 -v1.2          仅为 1.2 stub 协议版本创建 stubs

 -iiop          为 IIOP 创建 stubs。当使用该选项时,<选项>还应包括:
                  -always           总创建 stubs (即使在它们同时出现时〕

                  -alwaysgenerate   (同 "-always")

                  -nolocalstubs     不创建为同一进程优化的 stubs
 -idl           创建 IDL。当使用该选项时,<选项>还应包括:
                  -noValueMethods   不生成值类型的方法

                  -always           总创建 IDL (即使在它们同时出现时〕

                  -alwaysgenerate   (同 "-always")
 -g             一般调试信息

 -depend        以递归方式重编译过期的文件

 -nowarn        不警告

 -nowrite       不将编译过的类写入到文件系统

 -verbose       输出有关编译器所做工作的信息

 -classpath <path>     指定输入源和类文件的查找位置

 -sourcepath <path>    指定用户源文件的查找位置

 -bootclasspath <path> 覆盖自举类文件的位置

 -extdirs <path>       覆盖安装扩展类的位置

 -d <directory>        指定所生成类文件的放置位置

 -J<runtime flag>      将参数传给 java 解释程序
用法:javap <options> <classes>...
where options include:

  -b                        Backward compatibility with javap in JDK 1.1

  -c                        Disassemble the code

  -classpath <pathlist>     Specify where to find user class files

  -extdirs <dirs>           Override location of installed extensions

  -help                     Print this usage message

  -J<flag>                  Pass <flag> directly to the runtime system

  -l                        Print line number and local variable tables

  -public                   Show only public classes and members

  -protected                Show protected/public classes and members

  -package                  Show package/protected/public classes

                            and members (default)

  -private                  Show all classes and members

  -s                        Print internal type signatures

  -bootclasspath <pathlist> Override location of class files loaded

                            by the bootstrap class loader

  -verbose                  Print stack size, number of locals and args for methods

                            If verifying, print reasons for failure


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Javac.exe: Java编译器, 将Java源代码转换成字节码。 

Java.exe: Java解释器, 直接从类文件执行Java应用程序字节代码。

Jre.exe: 类似于Java解释器, 但是并不需要Java.exe所有与Java开发相关的选项。

appletviewer.exe: 小程序浏览器, 一种执行HTML文件上的Java小程序的Java浏览器。 

Javadoc.exe: 根据Java源码及说明语句生成HTML文档。 

Jdb.exe:Java调试器,可以逐行执行程序,设置断点和检查变量。 

Javah.exe:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 

Javap.exe:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。

Jar.exe:将Java类文件和其他资源文件捆绑成一个一的jar文件

其他程序

apt.exe :SolarisTM 操作系统和 Linux上用于处理注释的工具

extcheck.exe: extcheck 检测目标 jar 文件与当前安装方式扩展 jar 文件间的版本冲突。

HtmlConverter.exe : Java™ 插件 HTML 转换器是一种实用程序,可用于将任一包含小程序的 HTML 页面,转换为使用 Java™插件的格式。

idlj.exe : 对idl文件进行解析,生成所需的java文件

jarsigner.exe: 为 Java 归档 (JAR) 文件产生签名,并校验已签名的 JAR 文件的签名

java-rmi: Java远程方法调用。即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。

javaws:用于启动和控制Web上的java是程序

JConsole:是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。

jhat:是一个Java堆复制浏览器。这个工具分析Java堆复制文件(例如,由上面的"jmap -dump"所产生的)。Jhat启动一个允许堆中的对象在web浏览器中进行分析的web服务器。这个工具并不是想用于应用系统中而是用于"离线"分 析。"jhat工具是平*立的",其意思是,它可以被用来观察在任何平台上所产生的堆复制。例如,我们有可能在Linux系统上使用jhat来观察一个 在Solaris OS上所产生的堆复制。

jinfo:打印一个给定的Java进程或核心文件或一个远程调试服务器的Java配置信息。配置信息包括Java系统属性和JVM命令行标志

jps:相当于Solaris进程工具ps。不象"pgrep java"或"ps -ef grep java",jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进程。

jrunscript:一个JS解释器

jstack:等价于Solaris的pstack工具。jstack打印所有的Java线程的堆栈跟踪信息(可选地包括本机帧信息)

jstat :显示一个测量(instrumented)Java HotSpot虚拟机的性能统计信息

jstatd是一个Java远程方法调用 (RMI)服务器应用程序-它监控测量Java HotSpot虚拟机的创建和终止并且提供一个接口来允许远程监控工具依附到运行于本地主机的JVM

Keytool:是安全钥匙与证书的管理工具,它管理一个存储了私有钥匙和验证相应公共钥匙的与它们相关联的X.509 证书链的keystore

kint,klist,ktab:实现Kerberos用到的一些工具

native2ascii:用于转换字符或者文件的编码格式

orbd:用于实现corba接口(分布式应用)

pack200:对jar文件进行高效的压缩

packager: 将Jar文件包装成其他格式的文件

policytool:java中的策略管理

rmic:为远程调用编译生成远程调用时所需的文件

rmid:用于启动激活系统守护进程,以便远程对象可以在JVM中注册和激活

rmiregistry:启动一个远程对象注册表中指定的端口

schemagen: 命令行工具,可以根据表示 Java 应用程序的数据元素的现有 Java 应用程序来创建 XML 模式文档

serialver:用于返回一个类的serialverUID

servertools:为程序员提供了一个命令行接口,用于注册,取消注册,启动,关闭一个服务

tnameserv:

unpack200:对pack200进行压缩的jar文件进行解压

wsgen:是一个命令行功能用来生成合适的JAX-WS。它读取WebService的终端类文件,同时生成所有用于WebService发布的源代码文件和经过编译过的二进制类文件。它还随意生成WSDL和符合规范的HelloServer类WebService。wsgen从资源文件生成一个完整的操作列表是合法的。

wsimport:这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方法了