




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本资料由-大学生创业|创业|创业网/提供资料第1章 Java语言概述Java语言是一门年轻的非常有生命力的语言,也是当今应用最为广泛的一门语言之一。Java语言以其简洁、实用、“平台无关性”等优点,越来越为人们接受和使用。本章将主要介绍Java的起源、发展、开发工具JDK的安装、配置与简单使用,同时还介绍了目前Java语言在企业级开发中的主要应用。本章要点l Java语言的特点和运行机制。l Java开发运行环境。l 编写、调试简单Java应用程序的过程。本章难点l Java虚拟机。l Java语言的特点。l 面向对象的编程思路。l Java编程规范。学习目标l 了解Java语言产生的历史和工作原理。l 掌握Java语言作为一门面向对象编程语言的基本编程思路。l 了解Java语言的特点和运行机制。l 熟悉Java开发运行环境。 l 学习并掌握编写、调试简单Java应用程序的过程。l 掌握下载与安装Java开发环境和帮助文档的基本方法。l 了解Java语言的最新发展技术。1.1 Java的发展历史和语言特点1.1.1 Ja va的发展历史1991年初,美国加州的Sun Microsystem公司(以下简称Sun公司)成立了一个以James Gosling为首的研发小组。这个小组成立的目的是开发小型或便携式的消费电子产品(如PDAPersonal Digital Assistant,个人数字助理)配套的独立平台软件环境,并建立分布式的系统结构,同时将现代软件技术移植到消费型电子产品上,即随后提出的Green Project(绿色计划)的主要内容,该小组也因此被命名为Green小组。与Sun公司以往所擅长的工作站及微处理器技术不同的是,Green小组所开发的消费型电子产品技术的顾客是一般消费者。这些用户不愿意在这种产品上花太多的钱,也不愿意花很多时间来学习如何操作它,并且他们重视的是产品的稳定性,而不在意产品内部使用的是什么CPU,或者CPU的速度又多快。因此开发一种小巧、易用、安全稳定并且与平台无关的系统成为Green项目小组研究的目标。Gosling首先从改写C+语言的编译器着手。但是,他们很快便意识到C+与实现高度的简洁性和安全性的目标差距太大。因此,Gosling决定自行开发一种符合自己目标的新语言。于是,1991年Java的前身Oak诞生了。Oak这个名字的来自于Sun公司Gosling办公室外的一棵橡树,Gosling为他们的新语言起这个名字,是希望它能够像橡树一般坚强的生命力。之后,Green小组在Oak的基础上开发了“*7”系统,“*7”系统是一个集成了Oak、GreenOS(一种操作系统)、用户接口模块和硬件模块四个部分的类似于PDA的设备。在小组向Sun公司内部展示产品时,“*7”成功地表现了高效率的小程序代码技术,给公司的高层管理人员留下了深刻的印象,也增强了小组全力开拓家电市场的信心。他们认为需要一个真正的公司与电子制造商们打交道,因此,1993年5月,在原Green小组的基础上成立了FirstPerson公司。FirstPerson公司选择了一种新型的电子产品电视机机顶盒推广其技术。当时Time Warner公司正寻求开发电视机顶盒的操作系统和视频技术的合作伙伴,FirstPerson公司很希望能得到这份合同,但到最后因为商业的原因,Time Warner公司选择了另外一家公司作为合作伙伴。接着FirstPerson公司与3DO公司商谈合作事宜,同样因为商业原因,合作没有成功。FirstPerson公司以后又提出的一些产品建议,也没有得到Sun公司的批准。1994年,FirstPerson公司宣布解散,研发小组的许多人也退出了,只留下几个人。 “有心栽花花不红,无意插柳柳成荫。”有趣的是,在这段时间里,WWW的发展却如日中天。1993年7月,伊利诺斯大学的NCSA推出了一个在Internet上广为流行的WWW浏览器Mosaic 1.0版。然而,这时的WWW页面虽然内容丰富,可以实现声、图、文并茂,但它却是静态的,若想增强WWW的动感,需要通过一种机制来使它具有动态性。其解决方案显然是嵌入一种既安全可靠,又非常简练的语言。在分析了整个WWW的结构以后,研发小组认为Oak完全满足这一要求,可以把他们的技术应用在这个领域,。但是,要将它推向市场,为人们所广泛接受,还必须采用一种合适的策略。1994年,Sun公司的创始人之一Bill Joy的介入,使Oak成为Java而得以走红。Bill Joy早年曾参与过Unix的开发,深知网络对Unix的推广所起的作用。因此,他不仅指定Gosling继续完善Oak(发布时改名为Java),同时要求Naughton用Oak编写一个真正的应用程序WebRunner,也就是后来被命名为HotJava的WWW浏览器。1994年底,两人均出色地完成了各自的任务。这时,在这个产品的发布问题上,Bill Joy力排众议,采取了“让用户免费使用来占领市场份额”的策略,促成了Java与HotJava于1995年初在Internet上的免费发布。1995年5月23日,Sun公司在SunWorld上正式发布了Java与HotJava。由于Java确实是一种分布式、安全性高、包括编译器在内又非常小的适合网络开发环境的语言,因而一经发布,立即得到包括Netscape在内的各WWW厂商的广泛支持。业界一致认为:“Java是(20世纪)80年代以来计算机界的一件大事。”微软总裁Bill Gates认为“Java是长期以来最卓越的程序设计语言”。而今,Java已成为最流行的网络编程语言Java名称的由来:由于Oak这个名称与其他产品的名称类同,所以开发小组后来为这个新语言取了一个新名称-Java(爪哇),据说取这个名称的灵感来自于这样一个故事:研发小组的成员经常在公司附近的一家咖啡厅喝咖啡,而咖啡的原产地是Java, 是印度尼西亚的一个岛,中国人在古时候就叫他们爪哇国。 Sun公司于1996年发布了Java 1.02,这个版本存在着许多问题,甚至无法用它来打印。但在很短时间以后,Sun公司发布了Java 1.1,成功地解决了上一版本存在的一些问题,随后发布的一些新的版本虽然做出了改进,但总的来说改变都不大。在召开的JavaOne大会上,Java 1.2又问世了,3天后Java 1.2改成了Java 2。它增强了全新的GUI界面和图形工具包,离当初许诺的“一次编写,到处运行”的目标又前进了一大步。Java 2包括J2SE、J2EE、J2ME这3个版本,分别用于不同的领域。J2SE(Java Standard Edition)用于工作站、PC,为桌面开发和低端商务应用提供了Java标准平台。J2EE(Java Enterprise Edition)用于服务器,构建可扩展的企业级Java平台。J2ME(Java Micro Edition)嵌入式Java消费电子平台,适用于消费电子产品和嵌入式设备。 Java的发展史见表1-1。表1-1 Java的十年发展史时间事件1995年5月Java语言诞生1996年1月第一个JDKJDK1.01996年4月10个最主要的操作系统供应商申明将在其产品中嵌入Java技术 。1996年9月约8.3万个网页应用了Java技术来制作1997年2月JDK1.1发布1997年4月JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录1997年9,JavaDeveloperConnection社区成员超过十万。1998年2月JDK1.1被下载超过2,000,000次1998年12月Java2企业平台J2EE发布1999年6月SUN公司发布Java的三个版本:标准版、企业版和微型版(J2SE、J2EE、J2ME)2000年5月JDK1.3发布;2000年5月29日,JDK1.4发布 2001年6月NOKIA宣布,到2003年将出售1亿部支持Java的手机 2001年9月J2EE1.3发布2002年2月J2SE1.4发布,自此Java的计算能力有了大幅提升2004年9月J2SE1.5发布,是Java语言的发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0。2005年6月JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字“2”:J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。2006年1月Sun承诺Java开源计划1.1.2 Java的语言特点Sun公司在“Java白皮书”中对Java的定义是:“Java: A simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high-performance, multi-threaded, and dynamic language.”。按照这个定义,Java是一种具有“简单、面向对象的、分布式、解释型、健壮、安全、与体系结构无关、可移植、高性能、多线程和动态执行”等特性的语言。下面我们简要叙述Java的这些特性。1. 简单性KISS(keep it simple stupid)1) 运行系统小(Java的基本解释器只有40 KB,加上标准库和线程支持也不过215 KB) 2) c+ like(Java=c+-去掉多继承、虚继承、模板、操作符重载等)。从某种意义上讲,Java语言是C和C+语言的一个变种,因此,C+的程序员可以很快就掌握Java编程技术。3) No pointer,Java使用“引用”来代替指针,通过引用来访问申请到的内存里的数据,以确保不会访问不属于自己的内存空间,大大减少编程中出错的可能。4) 自动内存管理,Java可以自动完成“垃圾收集”工作,将不再使用的内存回收,使用户无须担心内存管理之类的事情。2. 面向对象Java语言是纯面向对象的(90%),它不像C+那样既支持面向对象的技术,又支持面向过程的程序设计技术。 Java完全具备面向对象的四大特点:1) 封装性。系统模块化的性质和信息隐藏的能力。2) 继承性。继承性定义了一种层次关系。下层对象继承上层对象的特性,可以减少程序代码的重复编写,并有效地组织整个程序。3) 多态性。不同的对象可以按照本身的性质对同一种信息进行响应。4) 动态绑定。允许在运行时而不是编译时按照具体数据类型和参数来确定选用哪个方法。3. 可移植性(平台无关性)(cross platform)Unix: 在不同的硬件操作相同的操作系统C和C+:源代码级可移植性。其源程序要想在不同平台上运行,必须重新编译。Java:二进制代码级可移植性。不仅源代码级是可移植的,甚至源代码经过编译之后形成的二进制代码字节码,也同样是可移植的。Java的设计者采用了多种机制来保证可移植性,最主要的有: 1) Java从本质上讲是解释型的,这意味着任何一台机器,只要配备了Java解释器,就可以运行Java程序。2) Java的数据类型在任何机器上都是一致的,它不支持特定硬件环境的数据类型。如int:32-bit,char: 16-bit(unicode编码),在C语言中int(Dos16位,32位Windows:32位,64位Windows:64位)4. 稳定性和安全性(stable and secure)考虑到Gosling等人组成研发小组最初开发技术需要面对的顾客是一般消费者,Java设计人员在开发这种语言的目标之一就是不管在何种情况下,都能保证编程绝对可靠。为此,Java将大量重点放在早期的潜在问题检查、以后的动态(运行时)检查,以及避免出现潜在错误的情况上面。经研发小组的努力,Java从根本上杜绝了一些错误的源头:1) Java摒弃了指针数据类型(用引用代替指针),使用户无法直接管理内存,避免了恶意使用系统资源。例:new(p); p=p+1; delete(p);经过计算后的p并不是原来申请的空间,且在多线程中不能确定是用那个线程来释放2) 异常处理是Java的另外一个特性,它可以使程序长时间地可靠运行而不容易发生致命的错误。3) Java是一种强类型的语言,即需要显式的类型声明,不支持隐式声明,以及C和C+的自动类型转换,这种严格要求保证了编译器可以捕获方法调用时的错误,从而生成更可靠的程序。4) Java提供了数组下标越界检查机制。5) Java提供了自动内存管理机制,它可以利用系统的空闲时间来执行诸如必要的垃圾清除等操作(长时间没有使用的内存被认为是垃圾)。此外,Java的运行环境还提供了下述的安全保障机制:1) 字节码校验器(Byte Code Verifier)。在Java程序执行过程中,字节码载入器要对字节码做一次安全检查,包括确定程序没有违反对象的存取权限,使用正确的参数类型来调用对象的方法,以及系统堆栈没有溢出等。2) 运行时内存布局和类装载器(Class Loader)。Java程序是在运行时分配对象内存,由类装载器负责装入运行程序需要的所有代码,包括被程序代码中的类所继承的类和调用的类。这样破坏程序就不会提前知道用到的那个类会存放到的内存位置。3) 文件访问限制。对文件的访问做出限制,也能阻止非法的访问。另外,Java程序的执行系统,也就是支持Java的WWW浏览器可以阻止Java小应用程序对系统资源的不正当应用,以及对小应用程序的处理方式,这样,本地系统就可以受到保护。最极端的情况就是完全禁止Java小应用程序的执行,在受到骚扰时,用户只要关闭浏览器就可以终止恶意程序的运行。 5. 高性能1) 高效的字节码。Java编译器生成的字节码和机器码的执行效率相差无几。据统计,Java字节码的执行效率非常接近于由C和C+生成的机器码的执行效率。2) 多线程性。Java提供的多线程功能使得在一个程序里可以同时执行多个任务,例如一个用户可以在他接收声音文件时将一个屏幕向上滚动一屏,同时浏览器在后台下载一幅图像。 Java很好地支持多线程性,在Java的基本函数库中已定义了Thread这个基本类,并内置了一组方法,使程序设计者在编写多线程程序时,只要继承这个类就可以利用已有的方法生成一个新的线程、执行一个线程、种植一个线程的任务,或者查看执行状态。 传统的语言程序中,多线程编程是相当繁琐的,因为同一时刻要发生许多事情,程序员必须考虑它们的执行顺序、同步管理、资源争用等情况。例如当使用C或C+语言开发多线程应用程序,首要的困难是要保证多个例程可被若干并发线程运行。如果一个例程改变了状态变量的值,那么一次只可能有一个线程执行。同时,它还需要程序员负责例程的锁定与释放,且非常容易形成“死锁”。Java还通过关键字synchronized来保证两个或更多的线程不会同时执行一个被声明为同步的方法,从而保证某些关键操作(如写数)顺利进行而不会被中断。 当然,Java的同步策略也有问题,当被标记为synchronized的函数执行时间较长时,就可能造成很多线程在等待该同步函数,而阻止了程序的其他非同步部分的执行,降低了执行效率。必须注意的是,Java的多线程支持在一定程度上可能会受其运行时支撑平台的限制,并且依赖于其他一些与平台相关的特性。比方说,如果操作系统本身不支持多线程,Java的多线程就可能只是“受限”的或不完全的多线程。3)JIT (just in time)装载字节码运行之前进行翻译为本地代码(机器码)再运行,运行的是本地码,并采取最近化原则。6. 动态特性(dynamic)Java程序的基本组成单元为类,这些类是在运行过程中动态装载的。这样,对于Java而言,其支持类库升级之后,相应的应用程序不必重新编译,也一样可以利用升级后类库的新增功能。使Java程序能够适应不断变化的执行环境。1) Java没有传统程序的概念(Java源程序经过编译,得到的是类描述文件(.class)而不像C再链接得到exe文件)。Java编译器不是将对实例变量和成员方法的引用编译成数值引用,而是将符号引用信息在字节码中传递给解释器,再由解释器完成动态连接类后,将符号引用信息转换为数值偏移量。2) 一个在存储器生成的对象不在编译过程中决定,而是延迟到运行时由解释器确定。这样对类中变量和方法进行更新时就不至于影响到现存的代码。Java认为全世界的类和对象是一个空间,每个人编写的程序的编译结果是这个空间的一部分。所谓运行程序就是从空间中某个类的某个特殊的方法开始启动,用到哪个类就装载哪个类。3) 解释执行字节码时,这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次,随后代码便可以全速执行。在运行时确定引用的好处是可以使用已被更新的类,而不担心会影响原有的代码。如果程序连接了网络中另一个系统的某一类,该类的所有者也可以自由的对该类进行更新,而不会使任何引用该类的程序崩溃。7. 分布式分布的概念包括数据分布和操作分布两个方面:数据分布:数据可以分散存放于网络上不同的主机中,以解决海量数据的存储问题;Java提供了一个URL对象,利用此对象我们可以打开并访问网络上的对象操作分布:把计算分散到不同的主机上进行处理,这就如同由许多人协作共同完成一项大而复杂的工作一样。 Java的客户机/服务器模式可以把计算从服务器分散到客户端,从而提高整个系统的执行效率。1.1.3 Java运行机制用Java语言编写的Java源程序,经Java编译器编译后形成字节码,这些字节码由Java运行系统负责解释和执行。解释和执行的过程可分为三步: (1) 字节码的装入。这是由类装载器完成的。类装载器负责装入运行程序需要的所有代码,包括被程序代码中的类所继承的类和调用的类。 (2) 字节码校验。字节码校验器对字节码进行安全性校验。(3) 字节码的翻译和执行。这可以取两种途径之一来实现:一种是解释型工作方式,通过解释器将字节码翻译成机器码,然后由即时运行部件立即将机器码送硬件执行;另一种是编译型工作方式,通过代码生成器先将字节码翻译成适用于本系统的机器码,然后再送硬件执行。Java运行系统一般采用解释型工作方式。其运行机制如图1-1所示。源程序(.Java文件)字节码(.class文件)类装载器字节码校验器代码生成器解释器即时运行部件硬件图1-1 Java运行机制由Java源程序编译生成的字节码不能直接在一般的操作系统平台上运行,而必须在一个称为Java虚拟机的操作系统之外的平台上运行。这就是说在运行Java程序时,首先应启动Java虚拟机,然后由Java虚拟机来负责执行Java的字节码。 Java虚拟机JVM(Java Virtual Machine)是可以运行Java字节码的假想的计算机。利用Java虚拟机就可以把Java字节码程序跟具体的软硬件平台分隔开来,只要根据JVM规格的描述将解释器移植到特定的计算机上,就能保证在任何机器上编译的Java字节码文件能够在该系统上运行。Java虚拟机包括以下几部分:(1) 指令集:采用独立于平台的字节码形式; (2) 寄存器组:包含程序计数器、堆栈、运行环境指针和变量指针; (3) 类文件格式规定:独立于平台; (4) 堆栈:用来传递参数和返回运行结果; (5) 内存垃圾收集器:释放不再使用的内存片段; (6) 存储区:用来存放字节码。运行JVM字节码的工作由解释器来完成。总之,JVM是一种在任意计算机上编译的Java字节码程序,是可以在任何操作系统下的计算机上运行的规范机制,它是Java平台独立性的基础。Java语言这种“一次编写,到处运行(write one, run anywherre)”的方式,有效地解决了当前大多数高级程序设语言需要针对不同系统来编译产生不同机器代码的问题,大大降低了程序开发、维护、管理的成本。需要注意的是,Java程序通过JVM可以达到跨平台特性,但JVM不是跨平台的。也就是说,不同操作系统上的JVM是不同的,Windows平台上的JVM不能用在Linux上面,反之亦然。Java虚拟机与Internet的关系如图1-2所示。类装载器字节码校验器Java虚拟机硬 件网络源程序(.Java文件)字节码(.class文件)图1-2 Java虚拟机与Internet的关系1.2 Java的运行环境1.2.1 Java开发工具J2SDKJava不仅提供了一个丰富的语言和运行环境, 而且还提供了一个免费的Java软件开发工具集(Java Developement Kits, 简称JDK)。到目前为止,Sun公司先后发布了多个主要的JDK的版本。通常所说的J2SDK ,是指与Java 2语言相对应的Java SDK(Java Software Development Kits),它是对较新版本中JDK的一个特定称呼。J2SDK(JDK)包括Java的编译器、解释器、调试器等开发工具以及Java API类库。编程人员和最终用户可以利用这些工具来开发Java程序。其调试工具主要包括Java语言编译器(Javac.exe),用于编译Java源程序;Java字节码解释器(Java.exe),用于解释运行Java程序,显示程序运行结果;小应用程序浏览工具appletviewer,用于测试并运行Java小程序。Java 2 SDK 开发工具集见表1-2。表1-2 Java 2 SDK 开发工具集工具名称说 明JavacJava编译器,用于将Java源程序编译成字节码JavaJava解释器,用于解释执行Java字节码appletviewer小应用程序浏览器,用于测试和运行JavaJavadocJava文档生成器JavapJava类文件反汇编器JdbJava调试器JavahC文件生成器,利用此命令可实现在Java类中调用C+代码1.2.2 安装和设置环境变量J2SDK有Solaris SPARC/x86、Linux x86、Microsoft Windows等版本,它们的建立过程略有不同。这里我们以Microsoft Windows版本的Java 2 SDK为蓝本,说明其建立过程。 在安装Microsoft Windows版本的Java 2 SDK开发工具时,需要具备下列配置: (1) 主频在166 MHz以上的奔腾型CPU。 (2) 32 MB以上的内存(运行图形应用程序至少需要32 MB,在浏览器中运行小应用程序Applet时,推荐48 MB)。 (3) 245 MB以上的可用硬盘空间。 (4) Windows 95/98/me/NT/2000等操作系统。安装Java 2 SDK的过程如下: (1) 从Sun公司的网站()上下载Java 2 SDK工具包。 (2) 从Java 2 SDK工具包中找到运行文件jdk-1_5_0_11-windows-i586-p.exe并运行它,开始进行Java环境的正式安装。默认安装于C:Program FilesJava目录下,用户可以更改这个默认安装目录。(3) 接下来需要设置运行环境参数,以便能够在Windows的任何目录下面都能编译和运行Java程序。对于Win2000或xp的用户,使用鼠标右击【我的电脑】,依次选择【属性】【高级】【环境变量】,打开【环境变量】对话框,在【系统变量】列表框中,单击【新建】按钮,新建环境变量classpath,其变量值为“.;C:Program FilesJavajdk1.5.0_11lib”;选择path变量,单击【编辑】按钮,在path变量的变量值后面加上“;C:Program FilesJavajdk1.5.0_11bin;”。(4) 设置DOS起始位置。由于Java程序需要在DOS环境下调试,而每次打开DOS窗口时默认的目录为Windows系统目录,为了在打开DOS窗口时可以直接进入包含自己开发的Java程序的路径下,可以做一下简单的设置。下面以Windows XP为例说明设置过程。第一步:首先建立一个存放Java源程序的路径和文件夹,例如在E盘建立文件夹Myjava。第二步:单击【开始】【程序】【附件】【命令提示符】【右击】【属性】,打开“命令提示符”的“属性”对话框,如图1-3所示:图1-3 命令提示符属性第三步:选择“快捷方式”选项卡,在“起始位置”栏输入“E:Javapro”,单击“确定”按钮。1.2.3 Java程序的编辑、编译和运行1. 编辑Java源程序是一种文本文件,可以使用任何的文本编辑器编写,只是要注意存储时文件名的后缀名必须是.java。建议读者把所有源程序文件都保存在一个指定的目录下,便于调试和运行。这里向大家推荐两类编辑器:一类是Windows的记事本,一类是文本编辑工具如UltraEdit和EditPlus。使用Windows记事本编辑Java源程序文件,存储时先选择*.*(所有文件)的文件类型,然后,输入带有.java后缀的文件名;或者直接以带英文双引号“XXXX.java”的形式输入文件名。UltraEdit和EditPlus是两个非常易用且功能强大的文本编辑工具。编辑时,它们自动地把关键字、常量、变量等不同元素用不同的颜色区分开来,从而有助于减少语法错误。如果读者习惯使用像Word这类文字处理软件,则应注意不要在文件中加入任何格式排版信息,确保得到的文件是文本文件。应当指出,尚有其它的Java开发工具可供选择,如JCreator、JBuilder 、Eclipse、NetBeans、Visual J+等。2. 编译Java是解释型语言。Java源程序必须先由Java编译器进行编译,生成字节码文件(也称类文件),然后在Java解释器的支持下解释运行。Java编译器是javac.exe,其用法如下: javac filename.java 其中filename.java是Java源程序文件的文件名。如果编译器没有返回任何错误信息,则表示编译成功,并在同一目录下生成与类名相同的字节码文件filename.class。如果编译出错,则需查找错误原因,进一步修改源程序,并重新编译。3. 运行Java解释器是程序java.exe,其用法如下:java filename其中filename是编译生成的Java字节码文件的文件名,注意不要带后缀名.class。否则,认为运行的程序名是filename.class,则在当前目录寻找filename.class.class的文件,这显然会出错。1.3 最简单的Java程序Java有两类程序,即Java应用程序(Java application)和Java小程序(Java applet),前者是在命令行中运行的独立的应用程序,它类似于以往用其他高级语言开发的程序;后者需要嵌入网页在浏览器中执行。Java Application程序的建立及运行可分为下述三个步骤: (1) 利用某一种文本编辑器建立Java源程序文件; (2) 利用Java编译器(javac)编译该application,产生.class字节码文件; (3) 利用解释器(java)解释字节码文件,完成该程序的运行过程。【例1-1】编写一个应用程序,在屏幕上显示字符串“Hello, World!”。第一步,编写源程序。使用记事本编写程序的源代码,代码的内容如图1-4所示。将源代码保存为文件HelloWorld.java,并存放在E:myjava中。注意:输入文件名时必须区分大小写。图1-4 HelloWorld程序第二步,编译源程序。利用Java编译器javac对源文件进行编译。在DOS提示符后,键入如下命令: javac HelloWorld.java 按Enter键后,开始编译该文件。若源文件无错误,则产生HelloWorld.class字节码文件,显示结果如图1-5所示;若源文件中有错误,则编译器将指出错误位置,此时需返回上一步对源文件进行修改。图1-5 编译源程序第三步,执行程序。在同样的命令窗口中输入“java filename” 形式的命令执行程序,本例应输入“java HelloWorld”,运行结果如图1-6所示。图1-6执行程序至此,完成了这个简单程序的开发。查看E:myjava目录,其中应该有两个文件,分别是HelloWorld.Java和HelloWorld.class。程序分析:(1) public class HelloWorld这一行表示声明此程序要建立一个新类,类名为HelloWorld。public指出这个类是公共类,而这个类定义的内容就在后面紧跟的花括号内。任何Java程序都必须以类的形式出现,一个程序中可以定义若干个类,但只能定义一个public类。定义类必须用关键字class作为标志。如果在一个程序中只定义了一个public类,那么类名一定是文件名,否则编译会出错。 (2) 在public static void main(String args )行中,用main定义了一个主方法,当程序执行时,解释器会找主方法,它是程序的入口点,若无此方法,解释器会显示错误信息。其中的public表明所有的类都可以调用这个方法,static表明这个方法是静态方法,可以通过类名直接调用,而void 表明此方法执行后不返回任何值。String args 表明向main传递的参数,String对象args是一个数组,用来保存在命令行输入的字符串。main后面紧跟的花括号是main方法实现的内容。它只含一条语句: System.out.println(Hello,World!);此语句的功能是输出字符串“Hello,World!”。为了实现屏幕输出,这里使用了系统包java.lang中的System类,该类中有静态成员变量out,它是一个标准输出流,主要用于输出用户信息,通过out调用标准输出流类中的println方法。println方法将作为参数的字符串输出到屏幕并换行。与此相似的方法是print,不同之处是print输出内容后不换行。Java语言系统以包的形式提供了许多的标准类库,这些类库是编制Java程序的基础。调用类库中的方法之前,先要使用import语句导入相应的类库(包),而系统包java.lang是Java最基本的类库,由系统自动导入,因此,Hello World程序没有使用import语句。1.4 Java在实际中的应用当Java平台发展到Java 2的版本以后,为了适应不同级别计算机硬件的开发需要,JAVA平台形成了三个主要分支:1) Java 2, Standard Edition(J2SE):是为台式机而设计的,主要运行在Linux, Solaris, 或Microsoft Windows等操作系统上。 2) Java 2, Enterprise Edition (J2EE):则是一个适合分布式的、多用户、企业级应用系统运转的平台。它以J2SE为基础,增加了处理服务器端计算的功能。3) Java 2, Micro Edition (J2ME):和J2SE不同,它既不算是一个软件也不能算是一则规范。准确地说,J2ME是为了支持像PDA、手机等小型的嵌入式或移动设备而推出的一系列的技术和规范的总称。它借用了J2SE类库的一部分,使用了更少的API,而且其J2ME采用的JAVA虚拟机(JVM)比J2SE的JVM也要小得多。1.4.1 JSPJSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。作为一种基于文本的、以显示为中心的开发技术,JSP提供了Java Servlet 的所有好处,并且,当与一个JavaBeans 类结合在一起时,提供了一种使内容和显示逻辑分开的简单方式。分开内容和显示逻辑的好处是,更新页面外观的人员不必懂得Java代码,而更新JavaBeans类的人员也不必是设计网页的行家里手,就可以用带JavaBeans 类的JSP页面来定义Web模板,以建立一个由具有相似的外观的页面组成的网站。JavaBeans 类完成数据提供,这样在模板中就没有Java代码,这意味着这些模板可以由一个HTML编写人员来维护。当然,也可以利用Java Servlet来控制网站的逻辑,通过Java Servlet调用JSP文件的方式来将网站的逻辑和内容分离。在选择使用一个Java Servlet,还是一个JSP页面时,要记住的是,Java Servlet 是一个程序设计工具,它最适用于不需要频繁修改的低级应用功能; 而JSP页面则通过以显示为中心的描述性的方法将动态内容和逻辑结合在一起。对于使用一个JSP页面的简单的基于Web的应用程序,可以使用定制标记或者Scriptlet,而不是使用JavaBeans 类来将内容与应用逻辑结合起来。定制标记被打包到一个标记库中,并被引入到一个JSP页面中。Scriptlet是直接嵌入在JSP页面中的很小的Java代码段。一般来说,在实际的JSP引擎中,JSP页面在执行时是编译式,而不是解释式的。解释式的动态网页开发工具如ASP、PHP3等由于速度等原因已经满足不了当前大型电子商务应用的需要了,传统的开发技术都在向编译执行的方式改变,如ASPASP +;PHP 3PHP 4。而尽管JSP的规范书中并没有要求实际的JSP引擎要使用编译式的执行方式,但估计一般是不会使用解释的方式来执行JSP页面的。通常说来,JSP页面一般是翻译为Servlet的Java源文件,再经过Java编译器编译为Servlet的class文件。为什么要编译为Servlet呢?据说是为了让原先的Servl t引擎可以直接服务于JSP,而JSP引擎就仅仅需要将JSP转译为Servlet就可以了。这里要注意的是:JSP规范书中并没有规定如何将JSP页面转译为Servlet,因此,不同的JSP引擎转译的结果也是不一样的。在JSP文件转译为Servlet以后,每次客户机(通常是用户的Web浏览器)向服务器请求这一个JSP文件的时候,服务器将检查自上次编译后JSP文件是否有改变,如果没有改变,就直接执行Servlet,而不用再重新编译,其效率是相当高的。一般来说,JSP文件的编译是在第一个用户访问到这个JSP页面时发生,而这第一个用户通常是开发人员自己,这样,正式放在服务器上让用户访问的JSP文件一般都已经有了对应的编译好的Servlet了。许多服务器都有设置,可以使JSP文件在第一个用户访问之前就预先编译好,这样看来,效率就更高了。和传统的CGI相比较,JSP有相当的优势。首先,在速度上,传统的CGI程序需要使用系统的标准输入输出设备来实现动态网页的生成,而JSP是直接和服务器相关联的。而且对于CGI来说,每一个访问就需要新增加一个进程来处理,进程不断地建立和销毁对于作为We b服务器的计算机将是不小的负担。其次,JSP是专门为We b开发而设计的,其目的是为了建立基于We b的应用程序,包含了一整套的规范和工具。使用JSP技术可以很方便地将一大堆JSP页面组合成为一个Web应用程序。和ISPAI和NSAPI相比较,JSP的开发速度要快得多,开发难度也要小得多,在编译为Java Servlet以后,配合目前最新的JIT(Just In Ti m e)的Java解释器,其执行速度也慢不了多少。而且,ISA I和NSAPI这种和Web服务器过于紧密结合的技术在使用时的一旦出现错误,很容易使Web服务器崩溃,而JSP就没有这个缺点。1.4.2 J2EEJ2EE(Java 2 Enterprise Edition)是建立在Java 2平台上的企业级应用的解决方案。J2EE技术的基础便是Java 2平台,不但有J2SE平台的所有功能,同时还提供了对EJB,Servlet,JSP,XML等技术的全面支持,其最终目标是成为一个支持企业级应用开发的体系结构,简化企业解决方案的开发,部署和管理等复杂问题。事实上,J2EE已经成为企业级开发的工业标准和首选平台。 J2EE并非一个产品,而是一系列的标准。J2EE 规范定义了以下种类的组件: 应用客户组件。 Enterprise JavaBeans 组件。 Servlet及Java Server Pages(JSP 页面)组件(也被称作Web 组件)。 Applet。一个多层的分布式的应用模型意味着应用逻辑被根据功能划分成组件,并且可以在同一个服务器或不同的服务器上安装组成J2EE 应用的这些不同的组件。一个应用组件应被安装在什么地方,取决于该应用组件属于该多层的J2EE 环境中的哪一层。这些层是客户层、We b层、业务层及企业信息系统层( EIS )等。(1) 客户层J2EE 应用可以是基于Web 的,也可以是不基于Web 的。在一个基于Web 的J2EE 应用中,用户的浏览器在客户层中运行,并从一个We b服务器下载Web层中的静态HTML 页面或由JSP或Servlet生成的动态HTML 页面。在一个不基于Web 的J2EE 应用程序中,一个独立客户程序不运行在一个HTML页面中,而是运行在其他一些基于网络的系统(比如手持设备或汽车电话)中,Applet程序,在客户层中运行,并在不经过Web 层的情况下访问Enterprise Beans。这个不基于Web 的客户层可能也包括一个JavaBeans 类来管理用户输入,并将该输入发送到在企业层中运行的Enterprise Beans类来进行处理。根据J2EE 规范,JavaBeans 类不被视为组件。为J2EE 平台编写的JavaBeans 类有实例变量和用于访问实例变量中的数据的“ get 和set 方法”。以这种方式使用的JavaBeans 类在设计和实现上通常都是简单的,但是它们必须符合JavaBeans 规范中列出的命名和设计约定。(2) Web 层J2EE Web 组件可以由JSP 页面、基于Web 的Applet以及显示HTML 页面的Servlet组成。调用Servlet或者JSP 页面的HTML 页面在应用程序组装时与Web 组件打包在一起。就像客户层一样,Web 层可能包括一个JavaBeans 类来管理用户输入,并将输入发送到在业务层中运行的Enterprise Beans 类来进行处理。运行在客户层的Web 组件依赖容器来支持诸如客户请求和响应及Enterprise Bean 查询等。(3) 业务层作为解决或满足某个特定业务领域(比如银行、零售或金融业)需要的逻辑的业务代码由运行在业务层的Enterprise Beans 来执行。一个Enterprise Bean 从客户程序处接收数据,对数据进行处理(如果需要),再将数据发送到企业信息系统层存储起来。一个Enterprise Beans 还从存储中检索数据,并将数据送回客户程序。运行在业务层的Enterprise Beans 依赖于容器来为诸如事务、生命期、状态管理、多线程及资源存储池等提供通常都非常复杂的系统级代码。业务层经常被称作Enterprise JavaBeans (EJB )层。业务层和Web 层一起构成了3 层J 2 E E应用的中间层,而其他两层是客户层和企业信息系统层。(4) 企业信息系统层企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划(E R P)、大型机事务处理( mainframe transaction processing )、数据库系统及其他遗留信息系统(legacy informationsystems )。J2EE 应用组件因为某种原因( 例如访问数据库) 可能需要访问企业信息系统。J2EE 平台的未来版本将支持Connector 架构,该架构是将J2EE 平台连接到企业信息系统上的一个标准API。(5) 查询服务因为一个J2EE 应用程序的组件是单独运行的,并且往往在不同的设备上运行,因此,需要一种能让客户层和Web 层代码查询并引用其他代码和资源的方法。客户层和Web 层代码使用Java 命名和目录接口(JNDI )来查询用户定义的对象(例如Enterprise Beans )、环境条目(例如一个数据库驱动器的位置)、企业信息系统层中用于查找资源的JDBC DataSource对象,以及消息连接。(6) 安全和事务管理诸如安全和事务管理这样的应用行为可以在部署时在Web 和Enterprise Beans 组件上进行配置。这个特征将应用逻辑从可能随装配而变化的配置设定中分开了。J2EE 安全模型允许配置一个Web 或Enterprise Beans 组件,使系统资源只能由授权的用户访问。例如,一个Web 组件可以被配置成提示输入用户名和密码。一个Enterprise Beans 组件可以被配置成只让特定团体中的成员调用其某些方法。或者,一个Servlet 组件可以被配置成让某个组织中的所有人都能访问其某些方法,同时只让该组织中的某些享有特权的人访问其中一些方法。同样是该Servlet 组件,可以针对另外一个环境而被配置成让每个人都能访问其所有方法,或者仅让选定的少数人访问其所有方法。J2EE 事务模型使得能够在部署时定义构成一个单一事务的方法之间的关系,以使一个事务中的所有方法被处理成一个单一的单元。因为一个事务是一系列步骤,这些步骤要么全部完成,要么全部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核桃考试题及答案
- 婚检考试题及答案
- 动火考试题及答案
- 植物基础知识模拟练习题含答案
- 母婴保健法培训试题【附答案】
- 危重症患者的识别界定试题(附答案)
- 护理值班交接班制度试题(附答案)
- 定点停车理论考试试题(附答案)
- 2025保险委托居间合同书-责任保险代理服务
- 2025年度国有企业临时聘用合同工劳动合同
- 《油气管道无人机智能巡检系统技术管理规范》
- 2025年新版期权知识考试题库带答案
- 2025年新《中华人民共和国安全生产法》知识竞赛测试题库含答案
- 2025年度吉林辅警招聘考试题(含答案)
- 吉安市新庐陵投资发展有限公司及下属子公司2025年第二批面向社会公开招聘笔试备考题库及答案解析
- 幼儿园卫生及安全检查标准
- 儿童动漫消费偏好-洞察及研究
- 2025年12345热线考试题库
- 网络接入管理办法
- 隧道二衬安全注意事项
- 绿色矿山培训课件
评论
0/150
提交评论