JDK详解:
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit),JDK是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者 编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
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常用命令:
JDK详细文档请参考:JDK Development Tools
1、java.exe:
运行java程序。
2、javac.exe:
编译的Java程序,生成.class文件。
3、javaw.exe:
功能:
跟java命令相对的,可以运行.class文件,主要用来执行图形界面的java程序运行java命令时,会出现并保持一个console窗口,程序中的信息可以通过System.out在console内输出,而运行javaw,开始时会出现console,当主程序调用之后,console就会消失; javaw 大多用来运行GUI程。
4、javah
功能说明:
C 头文件和 Stub 文件生成器。javah 从 Java 类生成 C 头文件和 C 源文件。这些文件提供了连接胶合,使 Java 和 C 代码可进行交互。
语法:
javah [ 命令选项 ] fully-qualified-classname. . .
javah_g [ 命令选项 ] fully-qualified-classname. . .
5、javap
功能说明:
Java 类文件解析器。
语法: javap [ 命令选项 ] class. . .
补充说明:
javap 命令用于解析类文件。其输出取决于所用的选项。若没有使用选项,javap 将输出传递给它的类的 public 域及方法。javap 将其输出到标准输出设备上。
6.jdb.exe
功能:Java的一个命令行调试环境,既可在本地,也可在与远程的解释器的一次对话中执行。
用法:
jdb于本地机器中可用如下的命令启动:
C:\>jdb classname
当你使用-debug选项开始一个Java例程时, 必须提供给Jdb 一个密码, 这样 Jdb才能开始运转起来。下表包含了所有jdb命令。
7、javaws.exe
功能:Java应用程序高速缓存查看器.
用法:具有图形界面,可以直接进行操作.
8、jconsole.exe
功能:
J2SE监测和管理控制台---一个同JMX兼容的监测Java虚拟机的图形工具。其能够监视当地或者远程的Java虚拟机。
Java监视和管理控制台,JConsole使用JVM的可扩展性Java管理扩展(JMX)工具来提供关于运行于Java平台的应用程序的性能和资源消耗的信息。
在J2SE 5.0软件中,你需要启动使用-Dcom.sun.management.jmxremote选项监控的应用程序。注意:在Java SE 6软件中,不再有这一要求。当启动该应用程序时,不需要特定的命令行选项。
在生产系统中的应用,JConsole启动一个在被观察的Java程序的JVM内部的JMX代理。运行另外一部分代码仅有一点极微弱的影响-但是影响很小。
另外,尽管JConsole在监视本地应用程序的开发和快速原型开发中很有用,但在实际的应用系统中不推荐使用。理由是,JConsole本身也消耗大量的系统资源。我们推荐的方法是用远程监控来把JConsole应用程序与被监控的系统加以隔离。因此,对于应用系统来说,以远程模式使用JConsole更好些。对于安全的远程监控来说,可以使用安全选项。
用法:具有图形界面,可直接操作,查看摘要、内存、线程、类、MBean,VM的信息。
9、jps.exe
功能:
java虚拟机进程状态工具---在目标系统上列出装备有HotSpot Java的虚拟机
启动了 Java 进程时,请使用 jps 工具来通过键入 jps 标识其 JVM。它向您提供一个正在运行的 Java 进程的列表,这些进程以其 JVM 作为 ID。
jps相当于Solaris进程工具ps。更多的信息,请参考《jps-Java Virtual Machine Process Status Tool》。不象"pgrep java"或"ps -ef | grep java",jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进程。
用法:
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
10、jstat.exe
功能:
JVM监控工具,java虚拟机统计监视工具---附加到一个装备了HotSpot的java虚拟机上来采集并且记录性能统计情况
jstat显示一个测量(instrumented)Java HotSpot虚拟机的性能统计信息(请参考《jstat-Java Virtual Machine Statistics Monitoring Tool》)。有关于性能计数器的更详细的信息请参考《Code sample-jvmstat 3.0》。
11、jstatd.exe
功能:
java虚拟机的jstat守护程序---启动一个RMI服务器程序来监视各个HotSpot java虚拟机的创建和中止。并且提供了一个访问远程监视工具接入的接口。
jstatd是一个Java远程方法调用(RMI)服务器应用程序-它监控测量Java HotSpot虚拟机的创建和终止并且提供一个接口来允许远程监控工具依附到运行于本地主机的JVM(请参考《jstatd-Virtual Machine jstat Daemon》)。
在应用系统中的使用
jps及其它jvmstat实用程序都使用极为轻量级的观察机制。由JVM分配一小部分共享内存,而性能计数器也是从这部分内存中分配的。JVM子系统基于其感兴趣的事件更新性能计数器。客户端工具仅仅负责异步地从共享内存段中进行读取。因此,总的来说,使用jvmstat进行监控的效果是很小的。
12-14、kinit.exe,klist.exe,ktab.exe
功能:Java安全管理工具
15、native2ascii.exe
功能说明:
将含有本地编码字符(既非 Latin1 又非 Unicode 字符)的文件转换为 Unicode 编码字符的文件。
语法:
native2ascii [options] [inputfile [outputfile]]
补充说明:
Java 编译器和其它 Java 工具只能处理含有 Latin-1 和/或 Unicode 编码(udddd 记号)字符的文件。native2ascii 将含有其它字符编码的文件转换成含 Latin-1 和/或 Unicode 编码字符的文件。若省略 outputfile,则使用标准输出设备输出。此外,如果也省略 inputfile,则使用标准输入设备输入。
命令选项
-reverse 执行相反的操作:将含 Latin-1 和/或 Unicode 编码字符的文件转换成含本地编码字符的文件。
-encoding[encoding_name] 指定转换过程使用的编码名称。缺省的编码从系统属性 file.encoding 中得到。
16、ordb.exe
用法:orbd <选项>
其中,<选项> 包括:
-port 启动 ORBD 的激活端口,缺省值为 1049 (可选)
-defaultdb ORBD 文件的目录,缺省值为 "./orb.db" (可选)
-serverid ORBD 的服务器标识符,缺省值为 1 (可选)
-ORBInitialPort 初始端口(必需)
-ORBInitialHost 初始主机名称(必需)
欢迎使用 Java IDL 服务器工具
请在提示处输入命令
17、idlj编译器用法:
java com.sun.tools.corba.se.idl.toJavaPortable.Compile [选项] <idl 文件>
其中,<idl 文件> 是包含 IDL 定义的文件的名称,而[选项] 是以下所列选项的任一组合。这些选项是可选的并且可以以任意顺序显示;<idl 文件> 是必须的并且必须显示在最后。
18、tnameserv.exe
功能:提供命名服务的接口
用法:详见:http://java.sun.com/j2se/1.5.0/docs/tooldocs/#idl
19、rmic
功能说明: rmic 为远程对象生成 stub 和 skeleton。
语法: rmic [ options ] package-qualified-class-name(s)
20、rmid
功能说明:rmid 启动激活系统守护进程,以便能够在 Java 虚拟机上注册和激活对象。
语法:rmid [-port port] [-log dir]
21、rmiregistry
功能说明: rmiregistry 命令可在当前主机的指定端口上启动远程对象注册服务程序。
语法: rmiregistry [port]
22、packager.exe
功能:对象包装程序.
用法:具有图形界面与操作菜单.