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 ⽬录及其所包含的⽂件的概述。
开发⽂件和⽬录
freesea.iteye/blog/160124
本节对开发 Java 平台应⽤程序所要求的⽂件和⽬录进⾏说明。(不要求的⽬录有:演⽰程序、Java 源代码和 C 头⽂件。下⼀节附加⽂件和⽬录将对它们进⾏论述。)下图列出的是最重要的⽬录:
jdk1.2
___________|____________________
|          |                    |
bin        lib                  jre
|          |          __________|___________
<    tools.jar    |                      |
<  dt.jar      bin                    lib
<            _____|____          ________|________
<          |          |        |        |        |
<        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 虚拟机都不推荐、不⽀持也不提供这些接⼝。
(原⽂地址:202.102.240.73/java/javaweb/linuxjava/cjdk1_2-doc-zh/jdk1.2/zh/docs/tooldocs/win32/jdkfiles.html)
⼆、JDK1.5新特性介绍
“JDK1.5”(开发代号猛虎)的⼀个重要主题就是通过新增⼀些特性来简化开发,这些特性包括泛型,f
or-each 循环,⾃动装包/拆包,枚举,可变参数, 静态导⼊ 。使⽤这些特性有助于我们编写更加清晰,精悍,安全的代码。
  下⾯我们简单介绍⼀下这些新特性。
  1.泛型(Generic)
  C++通过模板技术可以指定集合的元素类型,⽽Java在1.5之前⼀直没有相对应的功能。⼀个集合可以放任何类型的对象,相应地从集合⾥⾯拿对象的时候我们也不得不对他们进⾏强制得类型转换。猛虎引⼊了泛型,它允许指定集合⾥元素的类型,这样你可以得到强类型在编译时刻进⾏类型检查的好处。
Collection c = new ArrayList();
c.add(new Date());
  编译器会给出⼀个错误:
add(java.lang.String) in java.util.Collection cannot be applied to (java.util.Date)
  2.For-Each循环
  For-Each循环得加⼊简化了集合的遍历。假设我们要遍历⼀个集合对其中的元素进⾏⼀些处理。典型的代码为:
void processAll(Collection c){
    for(Iterator i=c.iterator(); i.hasNext();){
        MyClass myObject = (();
        myObject.process();
    }
}
  使⽤For-Each循环,我们可以把代码改写成:
void processAll(Collection c){
    for (MyClass  myObject :c)
        myObject.process();
}
  这段代码要⽐上⾯清晰许多,并且避免了强制类型转换。
  3.⾃动装包/拆包(Autoboxing/unboxing)
  ⾃动装包/拆包⼤⼤⽅便了基本类型数据和它们包装类地使⽤。
  ⾃动装包:基本类型⾃动转为包装类.(int >> Integer)
  ⾃动拆包:包装类⾃动转为基本类型.(Integer >> int)
  在JDK1.5之前,我们总是对集合不能存放基本类型⽽耿耿于怀,现在⾃动转换机制解决了我们的问题。
int a = 3;
Collection c = new ArrayList();
c.add(a);//⾃动转换成Integer.java编译器ide最新版下载
Integer b = new Integer(2);
c.add(b + 2);
  这⾥Integer先⾃动转换为int进⾏加法运算,然后int再次转换为Integer.
  4.枚举(Enums)
  JDK1.5加⼊了⼀个全新类型的“类”-枚举类型。为此JDK1.5引⼊了⼀个新关键字enmu. 我们可以这样来定义⼀个枚举类型。
public enum Color
{
   Red,
   White,
   Blue
}
  然后可以这样来使⽤Color myColor = Color.Red.
  枚举类型还提供了两个有⽤的静态⽅法values()和valueOf(). 我们可以很⽅便地使⽤它们,例如
for (Color c : Color.values())
            System.out.println(c);
  5.可变参数(Varargs)
  可变参数使程序员可以声明⼀个接受可变数⽬参数的⽅法。注意,可变参数必须是函数声明中的最后⼀个参数。假设我们要写⼀个简单的⽅法打印⼀些对象,
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);
  在JDK1.5之前,我们可以⽤重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使⽤可变参数的话我们只需要⼀个函数就⾏了
public void  objs) {
   for (Object obj: objs)
      System.out.println(obj);
}
  在引⼊可变参数以后,Java的反射包也更加⽅便使⽤了。对于c.getMethod("test", new Object[0]).wInstance(), new Object[0])),现在我们可以这样写了c.getMethod("test").wInstance()),这样的代码⽐原来清楚了很多。 
  6.静态导⼊(Static Imports)
  要使⽤⽤静态成员(⽅法和变量)我们必须给出提供这个⽅法的类。使⽤静态导⼊可以使被导⼊类的所有静态变量和静态⽅法在当前类直接可见,使⽤这些静态成员⽆需再给出他们的类名。
import static java.lang.Math.*;
…….
r = sin(PI * 2); //⽆需再写r = Math.sin(Math.PI);
  不过,过度使⽤这个特性也会⼀定程度上降低代码地可读性。
  JDK1.5 正式版即将发布,让我们共同期待吧。我们可以去java.sun/j2se/1.5.0/download.jsp,先下载⼀个beta爽⼀把。
三、JDK的命令详解(来源视点在线)
rmic
功能说明:
  rmic 为远程对象⽣成 stub 和 skeleton。
语法:
  rmic [ options ] package-qualified-class-name(s)
补充说明:
  rmic 编译器根据编译后的 Java 类(含有远程对象实现)名,为远程对象⽣成 stub 和 skeleton(远程对象是指实现 i.Remote 接⼝的对象)。在rmic 命令中所给的类必须是经 javac 命令成功编译且是完全包限定的类。
命令选项
  -classpath[路径] 指定 rmic ⽤于查询类的路径。如果设置了该选项,它将覆盖缺省值或 CLASSPATH 环境变量。⽬录⽤冒号分隔。
  -d[⽬录] 指定类层次的根⽬录。此选项可⽤来指定 stub 和 skeleton ⽂件的⽬标⽬录。
  -depend 使编译器考虑重新编译从其它类引⽤的类。⼀般来说,它只重新编译从源代码引⽤的遗漏或过期的类。
  -g 允许⽣成调试表格。调试表格含有⾏号和局部变量的有关信息,即 Java 调试⼯具所使⽤的信息。缺省情况下,只⽣成⾏号。
  -J 与 -D 选项联⽤,它将紧跟其后的选项( -J 与 -D 之间⽆空格)传给 java 解释器。
  -keepgenerated 为 stub 和 skeleton ⽂件保留所⽣成的 .java 源⽂件,并将这些源⽂件写到与 .class ⽂件相同的⽬录中,如果要指定⽬录,则使⽤ -d 选项。
  -nowarn 关闭警告。如果使⽤该选项,则编译器不输出任何警告信息。
  -show 显⽰ rmic 编译器的 GUI(图形⽤户界⾯)。输⼊⼀个或多个包限定类名(以空格分隔),并按回车键或“显⽰”按钮,创建 stub 和 skeleton。
  -vcompat (缺省值)创建与 JDK 1.1 和 1.2 stub 协议版本都兼容的 stub 和 skeleton。
  -verbose 使编译器和链接器输出关于正在编译哪些类和正在加载哪些类⽂件的信息。
  -v1.1 创建 JDK 1.1 stub 协议版本的 stub 和 skeleton。
  -v1.2 只创建 JDK 1.2 stub 协议版本的 stub。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。