资源预览内容
第1页 / 共151页
第2页 / 共151页
第3页 / 共151页
第4页 / 共151页
第5页 / 共151页
第6页 / 共151页
第7页 / 共151页
第8页 / 共151页
第9页 / 共151页
第10页 / 共151页
亲,该文档总共151页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 Java语言概述,2.1 Java语言的优势与特点 2.2 Java语言的基本语法 2.3 流程控制语句,1991年,Sun公司的James Gosling等人,为在电视机、烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名叫Oak(一种橡树的名字)的语言。由于商业上的种种原因,这种语言始终没有投放到市场中,而且连Oak这个名字也成了问题,因为已经有上百家公司在使用这个名字,所以Sun公司根本无法将之注册为商标。最终,Sun公司决定,将这种语言改名为Java,并且在互联网上发布,免费提供下载。,当时,由于Oak的失败,有一些传谣者鼓吹Java这些字母代表“只是又一个无意义的缩写词“(Just Another Valueless Acronym)。Sun公司否认了这一说法,而且说Java是语言开发者在喝一种原产于印度尼西亚爪哇群岛的咖啡时,出于一时的灵感而碰撞出的火花。,几个月后,出乎所有人的意料,Java成为赛博空间最热门的话题。Java被越来越多的用户使用,受到越来越多的重视。上百个Java小应用程序在互联网上的多媒体应用中流行起来。一些著名的公司,如微软、IBM、苹果电脑、数字设备公司,纷纷购买了Java语言的使用权,随之大量出现了用Java编写的软件产品。Java受到业界的重视与好评。微软总裁比尔盖茨在悄悄地观察了一段时间后,也感慨地说:“Java是长时间以来最卓越的程序设计语言“。,Java为什么会在短时期内受到如此多的程序员欢迎?为什么在计算机行业竞争激烈的今天,一个计算机硬件公司开发出来的语言,会一下子得到几乎世界上各大计算机软、硬件公司的支持呢? Java最重要的特征在于它的操作平台无关性,这是以往任何一种语言都不具备的特征。也就是说,用Java语言编写的程序可以在任何一台计算机上运行,而不管该计算机使用何种操作系统,要知道,这可是广大程序员的一个梦想。,其次,Java是一种面向对象的语言。长期以来,人们一直在设法争取问题空间同求解空间在结构上的一致,以使我们在分析、设计和实现程序时,同我们认识客观世界的过程尽可能一致,因此产生了面向对象的程序方法。Java就是这样一种面向对象的语言,不仅如此,它还代表了面向对象程序设计方法在目前的最高应用水平。对一个程序员来说,这意味着可以将注意力集中在应用程序的数据和处理数据的方法上,而无需过多地考虑处理过程。,此外,Java还是一种非常简单的语言。Java的前身Oak,是为家用电器产品设计的,只有简单易用才能推广开来,因此,这种语言被设计得简单而高效。程序员只需理解一些基本的概念,就可以用它编写适合各种情况的应用程序了。 最后,安全性也成为Java受青睐的一个方面。因为在网络环境中,安全是需要认真考虑的一个问题。没有安全的保障,用户绝对不会从Internet上随意一个站点上下载一个Java小应用程序,并在自己的计算机上运行。Java语言提供了若干种安全机制来抵御病毒产生或侵入文件系统。这一点也让用户们非常放心。,Java的出现确实给计算机行业吹来了一股清风;它带来了很多新鲜而有趣的思想和观念;它甚至改变了人们使用计算机的方式。就连环球信息网WWW的创始人也说:“计算机行业发展的下一个浪潮就是Java,并且很快就会发生。“ 如今,在美国硅谷,不懂得Java的人是无法找到工作的。在我国,许多计算机权威人士都断言,谁先掌握了Java,谁就号准了世界的脉搏,就能在信息时代找到自己的立足之地。,研究机构Evans Data公司最近公布的调查结果显示,Java将在2003年超过C/C+成为全球软件开发人员的首选语言。 参加本次调查的编程人员来自60多个国家,他们中60%的人在2003年将更多地使用Java,所用时间超过使用C/C+或VB。公布本次调查结果的Evans Data公司副总裁Garvin说,自该公司1998年首次开始跟踪Java的使用情况起,Java用户总数不断增加。她说:“Java在北美之外的发展更强劲。至少一半被调查的来自各国的开发人员目前使用Java。事实上,他们使用Java的平均时间由1999年的9.1%上升到目前的17.7%。,“尽管最初存在由于Sun公司的专有立场和该公司与操作系统社区的矛盾而造成的有关Java的争议,但是Java不断作为技术“热点“蚕食C/C+市场。其主要原因是Java具有许多C+所没有的优点,如简单性、更好的内存管理和跨平台功能。相反,在过去三年里,C+在各国开发人员中的占有率减少。Evans Data说,目前被调查的开发人员有25%的时间使用C+,而这一数字将在2002年进一步减少。但是这家市场研究机构仍认为C/C+由于其已经生成的巨大代码量,不可能很快消逝。,至于C#,一种与C+相似但与Microsoft.Net倡议密切相连,具备类似Java语言特性的新语言,这份调查显示,3/4的开发人员表示还没有采用它的计划。Garvin说,有可能采用C#的开发人员可能是那些已经使用某种Microsoft编程语言的用户。,2.1 Java语言的优势与特点,Sun公司这样形容自己的Java语言:它是一种简单、面向对象、分布式、解释型、稳定、安全、结构中立、易移植、高性能、多线程的动态语言。这段长长的定语准确地描述了Java语言的基本特征,也道出了Java为何流行的秘密。,可以说,程序设计语言的优点,Java几乎全都拥有。从实际的应用开发来看,也确实如此。但有一点需注意的是,由于Java是经过编译器生成字节码后再通过解释器对其解释执行,其运行速度会比较慢。下面就上述的特点逐一进行阐述。,1简单性 Java是一种简单的语言。这点主要表现为简单易学,在形式上它和C/C+极为相似,而且其运行系统小(Java的基本解释器只有40 KB,加上标准库和线程支持也不过215 KB)。 我们知道,C+中的结构、联合和类的概念重合之处很多,而Java只保留了类的概念,减少了复杂性。运算符重载是C+的一大特点,一度被认为简化了程序设计,但实际上用得非常少,作用也不大,反而加重了程序员的负担,Java把它也给去掉了。,多重继承一直是一个有争议的问题,赞成者认为它为面向对象语言带来了方便性和通用性,增加了语言的表达能力,反对者声称它是一个不必要的特征,容易混淆,难以使用,浪费机器资源,实际价值有限,所以Java把它也取消了,而带之以接口“interface“。Gosling同时认为,C+的预处理程序、标题文件、goto语句和隐式类型转换,都增加了程序的不可读性,容易出问题,所以全部给取消了。,2面向对象 在程序的开发设计过程中,程序员一直在设法争取问题空间同求解空间在结构上尽可能一致,以使我们在分析、设计和实现程序时,同我们认识客观世界的过程尽可能地一致,因此产生了面向对象程序设计方法。所谓面向对象的设计方法,是基于信息隐藏和抽象数据类型概念,把系统中所有资源,如数据、模块以及系统都看成是对象。每个对象封装数据和方法,而方法实施对数据的处理,并且通过继承机制实现代码复用。,传统的面向对象语言各有不足,如C+语言,由于继承了C的大量特性,如独立的函数概念,因而变得复杂而难用,而纯粹的面向对象语言如Smalltalk、Eiffel,却是动态性有余,效率不高。Java完全具备面向对象的四大特点:封装、继承、多态和动态。其封装性比C+好,它没有全程变量,没有主函数main。在Java中绝大部分成员是对象,只有简单数字类型、字符类型、布尔类型除外,以便保持高性能。Java提供给用户一系列的类(class),一个或多个class可以组成一个包(package)。Java的class和C+的一样有层次结构,子类可以继承父类的属性和方法。Java类中方法均缺省为虚函数。,Java的面向对象与许多语言都有相通之处,与C+自不必说,因为Java几乎是C+的一个子集,熟悉C+编程的人很快会习惯Java编程。学过Pascal的读者对Java可能也有似曾相识的感觉,因为Java的package和Pascal中的Unit非常相似,都是表示某些程序块的输入。运算符重载在C+中一向被认为是一种优雅的多态机制,但在实践中,人们发现,运算符重载会使程序变得难以理解,Java的设计者最后取消了运算符重载,只在字符串连接运算中留了一些运算符重载的痕迹,例如用“+”实现字符串的连接。,Java语言面向对象结构的动态性很高,C+中,如果修改了某一个类,整个程序都得重新编译。在Java中,可以在类库中自由地加入新的方法和实例变量,而不影响用户的程序执行。虽然C+也可以实现这种动态性,但使用起来非常复杂,代价也很高。,3分布式 Java是一种面向对象的程序设计语言,它也支持网络上的应用程序,是一种分布式(distributed)程序设计语言。使用Java提供的类库,比如java.net,可以方便地支持TCP/IP协议,完成各种层次上的网络连接。请看下面一个简单的ftp登录的例子:,. FtpClient f_client; f_client=new FtpClient(“hostname“); f.login(“anonymous“,“); f.binary(); .,另外,Java提供一个Socket类,这个类可以提供可靠的流式网络连接。这样,我们可以非常方便地创建分布式的Client和Server应用程序。传统的网络编程是一件复杂的事情,但是通过Java提供的网络类库,可以轻易地构造出网络应用,如客户机/服务器应用,浏览器/服务器应用,大大简化了工作难度。正如Java的设计者Gosling所说,Java的设计就是为了“最大限度地利用网络”。,4解释型 我们知道,Java的编译器产生的是字节代码,可把它理解为一种中间代码,而不是特定的机器码。该字节码必须运行在一个解释器上,所以说,Java是一种解释型语言。由于产生的是中间代码字节代码,因而可达到与平台无关的目的,从而可高效地在不同平台之间传输。同时,该程序可在任何平台上运行,只要这个平台上安装了Java解释器和运行系统即可。 在解释环境中,程序开发过程中标准的“链接”过程没有了,Java的“链接”实际上是把一个新类加载到当前的环境中,这和传统的程序开发过程中的编译、链接、测试有较大的区别。,5健壮性 分布式计算环境要求软件具有高度的健壮性。C+程序员都知道其在稳定性方面的最大问题在于指针的使用和缺乏自动的内存管理。这使得程序员可能编写出在语法和语义上均正确,但却可能对系统产生巨大破坏作用的软件。Java是一种比C+还强的强壮型语言。它要求显式的方法声明,保证编译器可以发现方法调用错误。Gosling认为指针的主要作用在于数组和结构的访问及使用。Java的数组可以解决前者的问题,但加强了对数组下标的检查。结构的访问和使用可通过类及类的方法访问变量解决,因而可以取消指针的概念。,Java语言稳定性的另一个方面是自动的内存管理。用过C/C+的读者知道,比如我们可以调用函数malloc()来进行内存的分配,但在使用完后,必须要对占用的资源进行释放,即再调用free()函数释放掉分配的内存,如果稍不小心,就可能造成系统故障或空间的浪费。Java中专门有一个后台垃圾自动收集程序Garbage Collector。它以较低的线程优先级对存储器进行扫描,自动释放掉不再使用的存储碎片,从而使程序员不用再担心内存的使用,只是专注于程序的设计即可。,异常处理也是Java健壮性的一个方面。一般认为,异常处理是成熟语言的标志。在Java中,通过使用try/catch/finally语句,程序员可以把一组错误处理代码放在一个集中的地方统一处理,这可简化错误的处理及错误的恢复。,6安全性 Java的安全性和健壮性是紧密联系的,由于其主要应用于网络程序的开发,因而如果没有较高的安全性作为保障的话,用户从网络上下载程序将是非常危险的。正如我们前面所描述的,Java取消了指针,杜绝了不怀好意的程序对内
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号