您好,欢迎访问三七文档
JDK(JavaDevelopmentKit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK(Softwaredevelopmentkit)。JDK包含的基本组件包括:·javac–编译器,将源程序转成字节码·jar–打包工具,将相关的类文件打包成一个文件·javadoc–文档生成器,从源码注释中提取文档·jdb–debugger,查错工具JDK中还包括完整的JRE(JavaRuntimeEnvironment,Java运行环境),也被称为privateruntime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。JDK中还包括各种例子程序,用以展示JavaAPI中的各部分。从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java(J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。JDK一般有三种版本:SE(J2SE),standardedition,标准版,是我们通常用的一个版本EE(J2EE),enterpsiseedtion,企业版,使用这种JDK开发J2EE应用程序,ME(J2ME),microedtion,主要用于移动设备、嵌入式设备上的java应用程序Java开发工具(JDK)是许多Java专家最初使用的开发环境。尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。JavaAPI包括一些重要的语言结构以及基本图形,网络和文件I/O。一般来说,JavaAPI的非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___________|____________________|||binlibjre||__________|___________java.exetools.jar||javac.exedt.jarbinlibjavap.exe_____|____________|________javah.exe|||||javadoc.exejava.execlassicrt.jarextsecurityjava.dll|i18n.jar|awt.dlljvm.dlliiimp.jar假定JDK软件安装在c:\jdk1.2目录中,下面列出的是那些关键目录及它们之所以重要的原因:c:\jdk1.2JDK软件安装的根目录。包含版权、许可及README文件。还包括:src.jar--构成Java平台核心API的所有类的源文件的归档。c:\jdk1.2\binJava开发工具包(JDK)中所包含的开发工具的可执行文件。PATH环境变量应该包含一个指示此目录的项。有关工具的详细信息,参见JDK工具。c:\jdk1.2\lib开发工具使用的文件。这些文件包括tools.jar,它包含支持JDK的工具和实用程序的非核心类。还包括dt.jar,它是BeanInfo文件的DesignTime归档,BeanInfo文件用来告诉交互开发环境(IDE)如何显示Java组件以及如何让开发人员根据应用程序自定义它们。c:\jdk1.2\jreJDK开发工具所使用的Java运行时环境的根目录。运行时环境是Java1.2平台的实现。除了文档外,它与可部署的JRE完全相同。c:\jdk1.2\jre\binJava平台使用的工具和库的可执行文件及DLL。可执行文件与/jdk1.2/bin中的文件相同。java启动器工具担当应用程序启动器的角色,它替代了与1.1版的JDK软件一同发行的旧jre工具。不必将该目录放在PATH环境变量中。c:\jdk1.2\jre\bin\classic包含经典虚拟机使用的WindowsDLL文件。经典虚拟机是Java虚拟机的语言解释器版本。当新的虚拟机可用时,它们的DLL将被安装在jre/bin的某个新子目录中。c:\jdk1.2\jre\libJava运行时环境使用的代码库、属性设置和资源文件。包括:rt.jar--自举类(构成Java平台核心API的RunTime类)。i18n.jar--字符转换类及其它与国际化和本地化有关的类。除(下面将要阐述的)ext子目录以外,还有几个资源子目录不在此处说明。c:\jdk1.2\jre\lib\extJava平台扩展的缺省安装目录。例如,这是安装时JavaHelpjar文件的安装目录。包括:iiimp.jar--实现Internet-Intranet输入方法协议的类,供从使用国际字符集的设备上接收输入的应用程序来使用。c:\jdk1.2\jre\lib\security包含用于安全管理的文件。这些文件包括安全策略(java.policy)和安全属性(java.security)文件。附加文件和目录本节说明演示程序、Java源代码和C头文件的目录结构。下面是目录结构:jdk1.2_______________|__________________||||src.jardemoincludeinclude-old___|___||appletsjfc|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使用新Java2D图形的示例。c:\jdk1.2\includeC语言头文件,它支持使用Java本地接口[web]和Java虚拟机调试程序接口[web]的本地代码编程技术。c:\jdk1.2\include-old头文件,支持使用旧接口的本地代码编程技术。提供这些头文件只是为了向后兼容。所有Java虚拟机都不推荐、不支持也不提供这些接口。(原文地址:)二、JDK1.5新特性介绍“JDK1.5”(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each循环,自动装包/拆包,枚举,可变参数,静态导入。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。下面我们简单介绍一下这些新特性。1.泛型(Generic)C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。Collectionc=newArrayList();c.add(newDate());编译器会给出一个错误:add(java.lang.String)injava.util.Collectioncannotbeappliedto(java.util.Date)2.For-Each循环For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为:voidprocessAll(Collectionc){for(Iteratori=c.iterator();i.hasNext();){MyClassmyObject=(MyClass)i.next();myObject.process();}}使用For-Each循环,我们可以把代码改写成:voidprocessAll(Collectionc){for(MyClassmyObject:c)myObject.process();}这段代码要比上面清晰许多,并且避免了强制类型转换。3.自动装包/拆包(Autoboxing/unboxing)自动装包/拆包大大方便了基本类型数据和它们包装类地使用。自动装包:基本类型自动转为包装类.(intInteger)自动拆包:包装类自动转为基本类型.(Integerint)在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。inta=3;Collectionc=newArrayList();c.add(a);//自动转换成Integer.Integerb=newInteger(2);c.add(b+2);这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.4.枚举(Enums)JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu.我们可以这样来定义一个枚举类型。publicenumColor{Red,White,Blue}然后可以这样来使用ColormyColor=Color.Red.枚举类型还提供了两个有用的静态方法values()和valueOf().我们可以很方便地使用它们,例如for(Colorc:Color.values())System.out.println(c);5.可变参数(Varargs)可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象,util.write(obj1);util.write(obj1,obj2);util.write(obj1,obj2,obj3);…在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使用可变参数的话我们只需要一个函数就行了publicvoidwrite(Object...objs){for(Objectobj:objs)System.out.println(obj);}在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod(test,newObject[0]).invoke(c.newInstance(),newObject[0])),现在我们可以这样写了c.getMethod(test).invoke(c.newInstance()
本文标题:JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java
链接地址:https://www.777doc.com/doc-3207467 .html