免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1273 | 回复: 0
打印 上一主题 下一主题

介绍JDK [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-02 16:12 |只看该作者 |倒序浏览

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 虚拟机都不推荐、不支持也不提供这些接口。
(原文地址:http://202.102.240.73/java/javaweb/linuxjava/cjdk1_2-doc-zh/jdk1.2/zh/docs/tooldocs/win32/jdkfiles.html)
二、JDK1.5新特性介绍
       “JDK1.5”(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-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 = (MyClass)i.next();
        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.
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 write(
Object
... objs) {
   for (Object obj: objs)
      System.out.println(obj);
}
  在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0])),现在我们可以这样写了c.getMethod("test").invoke(c.newInstance()),这样的代码比原来清楚了很多。 
  6.静态导入(Static Imports)
  要使用用静态成员(方法和变量)我们必须给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。
import static java.lang.Math.*;
…….
r = sin(PI * 2); //无需再写r = Math.sin(Math.PI);
  不过,过度使用这个特性也会一定程度上降低代码地可读性。
  JDK1.5 正式版即将发布,让我们共同期待吧。我们可以去http://java.sun.com/j2se/1.5.0/download.jsp,先下载一个beta爽一把。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/2898/showart_332521.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP