第2章 Java语言概述.ppt
《第2章 Java语言概述.ppt》由会员分享,可在线阅读,更多相关《第2章 Java语言概述.ppt(151页珍藏版)》请在三一文库上搜索。
1、第2章 Java语言概述,2.1 Java语言的优势与特点 2.2 Java语言的基本语法 2.3 流程控制语句,1991年,Sun公司的James Gosling等人,为在电视机、烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名叫Oak(一种橡树的名字)的语言。由于商业上的种种原因,这种语言始终没有投放到市场中,而且连Oak这个名字也成了问题,因为已经有上百家公司在使用这个名字,所以Sun公司根本无法将之注册为商标。最终,Sun公司决定,将这种语言改名为Java,并且在互联网上发布,免费提供下载。,当时,由于Oak的失败,有一些传谣者鼓吹Java这些字母代表“只是又一个无意义的缩写
2、词“(Just Another Valueless Acronym)。Sun公司否认了这一说法,而且说Java是语言开发者在喝一种原产于印度尼西亚爪哇群岛的咖啡时,出于一时的灵感而碰撞出的火花。,几个月后,出乎所有人的意料,Java成为赛博空间最热门的话题。Java被越来越多的用户使用,受到越来越多的重视。上百个Java小应用程序在互联网上的多媒体应用中流行起来。一些著名的公司,如微软、IBM、苹果电脑、数字设备公司,纷纷购买了Java语言的使用权,随之大量出现了用Java编写的软件产品。Java受到业界的重视与好评。微软总裁比尔盖茨在悄悄地观察了一段时间后,也感慨地说:“Java是长时间以来
3、最卓越的程序设计语言“。,Java为什么会在短时期内受到如此多的程序员欢迎?为什么在计算机行业竞争激烈的今天,一个计算机硬件公司开发出来的语言,会一下子得到几乎世界上各大计算机软、硬件公司的支持呢? Java最重要的特征在于它的操作平台无关性,这是以往任何一种语言都不具备的特征。也就是说,用Java语言编写的程序可以在任何一台计算机上运行,而不管该计算机使用何种操作系统,要知道,这可是广大程序员的一个梦想。,其次,Java是一种面向对象的语言。长期以来,人们一直在设法争取问题空间同求解空间在结构上的一致,以使我们在分析、设计和实现程序时,同我们认识客观世界的过程尽可能一致,因此产生了面向对象的
4、程序方法。Java就是这样一种面向对象的语言,不仅如此,它还代表了面向对象程序设计方法在目前的最高应用水平。对一个程序员来说,这意味着可以将注意力集中在应用程序的数据和处理数据的方法上,而无需过多地考虑处理过程。,此外,Java还是一种非常简单的语言。Java的前身Oak,是为家用电器产品设计的,只有简单易用才能推广开来,因此,这种语言被设计得简单而高效。程序员只需理解一些基本的概念,就可以用它编写适合各种情况的应用程序了。 最后,安全性也成为Java受青睐的一个方面。因为在网络环境中,安全是需要认真考虑的一个问题。没有安全的保障,用户绝对不会从Internet上随意一个站点上下载一个Java
5、小应用程序,并在自己的计算机上运行。Java语言提供了若干种安全机制来抵御病毒产生或侵入文件系统。这一点也让用户们非常放心。,Java的出现确实给计算机行业吹来了一股清风;它带来了很多新鲜而有趣的思想和观念;它甚至改变了人们使用计算机的方式。就连环球信息网WWW的创始人也说:“计算机行业发展的下一个浪潮就是Java,并且很快就会发生。“ 如今,在美国硅谷,不懂得Java的人是无法找到工作的。在我国,许多计算机权威人士都断言,谁先掌握了Java,谁就号准了世界的脉搏,就能在信息时代找到自己的立足之地。,研究机构Evans Data公司最近公布的调查结果显示,Java将在2003年超过C/C+成为
6、全球软件开发人员的首选语言。 参加本次调查的编程人员来自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
7、/C+市场。其主要原因是Java具有许多C+所没有的优点,如简单性、更好的内存管理和跨平台功能。相反,在过去三年里,C+在各国开发人员中的占有率减少。Evans Data说,目前被调查的开发人员有25%的时间使用C+,而这一数字将在2002年进一步减少。但是这家市场研究机构仍认为C/C+由于其已经生成的巨大代码量,不可能很快消逝。,至于C#,一种与C+相似但与Microsoft.Net倡议密切相连,具备类似Java语言特性的新语言,这份调查显示,3/4的开发人员表示还没有采用它的计划。Garvin说,有可能采用C#的开发人员可能是那些已经使用某种Microsoft编程语言的用户。,2.1 Ja
8、va语言的优势与特点,Sun公司这样形容自己的Java语言:它是一种简单、面向对象、分布式、解释型、稳定、安全、结构中立、易移植、高性能、多线程的动态语言。这段长长的定语准确地描述了Java语言的基本特征,也道出了Java为何流行的秘密。,可以说,程序设计语言的优点,Java几乎全都拥有。从实际的应用开发来看,也确实如此。但有一点需注意的是,由于Java是经过编译器生成字节码后再通过解释器对其解释执行,其运行速度会比较慢。下面就上述的特点逐一进行阐述。,1简单性 Java是一种简单的语言。这点主要表现为简单易学,在形式上它和C/C+极为相似,而且其运行系统小(Java的基本解释器只有40 KB
9、,加上标准库和线程支持也不过215 KB)。 我们知道,C+中的结构、联合和类的概念重合之处很多,而Java只保留了类的概念,减少了复杂性。运算符重载是C+的一大特点,一度被认为简化了程序设计,但实际上用得非常少,作用也不大,反而加重了程序员的负担,Java把它也给去掉了。,多重继承一直是一个有争议的问题,赞成者认为它为面向对象语言带来了方便性和通用性,增加了语言的表达能力,反对者声称它是一个不必要的特征,容易混淆,难以使用,浪费机器资源,实际价值有限,所以Java把它也取消了,而带之以接口“interface“。Gosling同时认为,C+的预处理程序、标题文件、goto语句和隐式类型转换,
10、都增加了程序的不可读性,容易出问题,所以全部给取消了。,2面向对象 在程序的开发设计过程中,程序员一直在设法争取问题空间同求解空间在结构上尽可能一致,以使我们在分析、设计和实现程序时,同我们认识客观世界的过程尽可能地一致,因此产生了面向对象程序设计方法。所谓面向对象的设计方法,是基于信息隐藏和抽象数据类型概念,把系统中所有资源,如数据、模块以及系统都看成是对象。每个对象封装数据和方法,而方法实施对数据的处理,并且通过继承机制实现代码复用。,传统的面向对象语言各有不足,如C+语言,由于继承了C的大量特性,如独立的函数概念,因而变得复杂而难用,而纯粹的面向对象语言如Smalltalk、Eiffel
11、,却是动态性有余,效率不高。Java完全具备面向对象的四大特点:封装、继承、多态和动态。其封装性比C+好,它没有全程变量,没有主函数main。在Java中绝大部分成员是对象,只有简单数字类型、字符类型、布尔类型除外,以便保持高性能。Java提供给用户一系列的类(class),一个或多个class可以组成一个包(package)。Java的class和C+的一样有层次结构,子类可以继承父类的属性和方法。Java类中方法均缺省为虚函数。,Java的面向对象与许多语言都有相通之处,与C+自不必说,因为Java几乎是C+的一个子集,熟悉C+编程的人很快会习惯Java编程。学过Pascal的读者对Jav
12、a可能也有似曾相识的感觉,因为Java的package和Pascal中的Unit非常相似,都是表示某些程序块的输入。运算符重载在C+中一向被认为是一种优雅的多态机制,但在实践中,人们发现,运算符重载会使程序变得难以理解,Java的设计者最后取消了运算符重载,只在字符串连接运算中留了一些运算符重载的痕迹,例如用“+”实现字符串的连接。,Java语言面向对象结构的动态性很高,C+中,如果修改了某一个类,整个程序都得重新编译。在Java中,可以在类库中自由地加入新的方法和实例变量,而不影响用户的程序执行。虽然C+也可以实现这种动态性,但使用起来非常复杂,代价也很高。,3分布式 Java是一种面向对象
13、的程序设计语言,它也支持网络上的应用程序,是一种分布式(distributed)程序设计语言。使用Java提供的类库,比如,可以方便地支持TCP/IP协议,完成各种层次上的网络连接。请看下面一个简单的ftp登录的例子:,. FtpClient f_client; f_client=new FtpClient(“hostname“); f.login(“anonymous“,“); f.binary(); .,另外,Java提供一个Socket类,这个类可以提供可靠的流式网络连接。这样,我们可以非常方便地创建分布式的Client和Server应用程序。传统的网络编程是一件复杂的事情,但是通过Ja
14、va提供的网络类库,可以轻易地构造出网络应用,如客户机/服务器应用,浏览器/服务器应用,大大简化了工作难度。正如Java的设计者Gosling所说,Java的设计就是为了“最大限度地利用网络”。,4解释型 我们知道,Java的编译器产生的是字节代码,可把它理解为一种中间代码,而不是特定的机器码。该字节码必须运行在一个解释器上,所以说,Java是一种解释型语言。由于产生的是中间代码字节代码,因而可达到与平台无关的目的,从而可高效地在不同平台之间传输。同时,该程序可在任何平台上运行,只要这个平台上安装了Java解释器和运行系统即可。 在解释环境中,程序开发过程中标准的“链接”过程没有了,Java的
15、“链接”实际上是把一个新类加载到当前的环境中,这和传统的程序开发过程中的编译、链接、测试有较大的区别。,5健壮性 分布式计算环境要求软件具有高度的健壮性。C+程序员都知道其在稳定性方面的最大问题在于指针的使用和缺乏自动的内存管理。这使得程序员可能编写出在语法和语义上均正确,但却可能对系统产生巨大破坏作用的软件。Java是一种比C+还强的强壮型语言。它要求显式的方法声明,保证编译器可以发现方法调用错误。Gosling认为指针的主要作用在于数组和结构的访问及使用。Java的数组可以解决前者的问题,但加强了对数组下标的检查。结构的访问和使用可通过类及类的方法访问变量解决,因而可以取消指针的概念。,J
16、ava语言稳定性的另一个方面是自动的内存管理。用过C/C+的读者知道,比如我们可以调用函数malloc()来进行内存的分配,但在使用完后,必须要对占用的资源进行释放,即再调用free()函数释放掉分配的内存,如果稍不小心,就可能造成系统故障或空间的浪费。Java中专门有一个后台垃圾自动收集程序Garbage Collector。它以较低的线程优先级对存储器进行扫描,自动释放掉不再使用的存储碎片,从而使程序员不用再担心内存的使用,只是专注于程序的设计即可。,异常处理也是Java健壮性的一个方面。一般认为,异常处理是成熟语言的标志。在Java中,通过使用try/catch/finally语句,程序
17、员可以把一组错误处理代码放在一个集中的地方统一处理,这可简化错误的处理及错误的恢复。,6安全性 Java的安全性和健壮性是紧密联系的,由于其主要应用于网络程序的开发,因而如果没有较高的安全性作为保障的话,用户从网络上下载程序将是非常危险的。正如我们前面所描述的,Java取消了指针,杜绝了不怀好意的程序对内存恶意篡改。,Java语言的安全机制基于“不存在可信任的代码”的概念。其运行环境提供了以下四级安全保障机制: 字节码校验器 类装载器 运行时内存布局 文件访问机制,当Java字节码进入解释器时,首先必须经过字节码校验器的检查。校验器就象一个忠诚的卫士,不能通过检查的一律不准入内。即使是Java
18、编译器生成的完全正确的字节码,校验器也必须再次对其检查,因为Java程序的编译和解释执行期间,字节码可能会无意或恶意地被篡改过。然后,Java解释器将决定程序中类的内存布局,这就意味着不怀好意的程序无法预先知道一个类的内存布局结构,因而也就无法利用该信息来修改或破坏系统。,随后,类装载器负责把来自网络的类加载到单独的内存区域,类和类之间相互不会干扰。最后,客户端用户还可以限制从网络上加载的类只能访问某些被允许的系统,如文件和硬盘。所以,当这几种机制加在一起,再加上其他的增强办法,如传输过程中使用加密解密算法,程序中做上特殊的标记等,使得Java成为了最安全的系统之一。,7可移植性 Java语言
19、的可移植性具有深远的意义,它不仅给软件开发者带来了“一次性开发”的方便,而且迎合了网络计算的思想。在Java以前,人们只是将Internet当作一个巨大的硬盘,里面有无数的静止信息。当Java出现后,Internet则变成了一个巨大的操作系统,Java就是这个系统的语言。用这个语言写的任何程序,如电子表格软件,存放在某台机器上,Internet网上的任何用户只要得到许可,就可以下载并运行这个程序,从而节省了大量的硬盘空间,也省去了管理的麻烦。,Java的设计者采用了多种机制来保证可移植性,最主要的有: (1) Java从本质上讲是解释型的,这意味着任何一台机器,只要配备了Java解释器,就可以
20、运行Java程序。 (2) Java的数据类型在任何机器上都是一致的,它不支持特定硬件环境的数据类型。 总之,Java的可移植性决定了它将成为未来网络环境的“世界语”。,8高性能 由前所述,我们知道Java是一个解释型语言。按照系统结构的观点,解释型语言除不可能达到编译型语言的速度外,其他一些性能并不比编译型语言差。有人作过测试,Java程序的平均运算速度是C语言的1/20倍。为了解决高性能问题,Java的设计者正在努力开发出一种更具效率的编译器,这种编译器可以在运行时把Java的字节码翻译成特定CPU的机器码,从而使转化成机器码的字节码在性能上接近于C或C+。,9多线程 Java高性能的另一
21、个方面是它的多线程能力,他可以同时运行多个线程,处理多个任务。多线程可称为“轻量级进程”,它有点像Unix下的进程概念,多线程即多个模块并行运行;通过消息协调操作;通过信号灯和锁保证关键模块的执行不被中断。线程之间可以共享内存和全局变量,比进程的开销要小得多,因此也可以将线程看作可以同时运行的函数。多个线程的并行执行,仿佛有多个CPU在运行。比如说,一个线程在执行复杂的计算,而另一个线程完成与用户的交互。用户不必停下来等待Java程序完成冗长的操作,所以,多线程能够增强用户的实时交互能力,提高程序的运行效率。,传统的语言程序中,多线程编程是相当繁琐的,因为同一时刻要发生许多事情,程序员必须考虑
22、它们的执行顺序、同步管理、资源争用等情况。例如当使用C或C+语言开发多线程应用程序,首要的困难是要保证多个例程可被若干并发线程运行。如果一个例程改变了状态变量的值,那么一次只可能有一个线程执行。同时,它还需要程序员负责例程的锁定与释放,且非常容易形成“死锁”。,Java还通过关键字synchronized来保证两个或更多的线程不会同时执行一个被声明为同步的方法,从而保证某些关键操作(如写数)顺利进行而不会被中断。 当然,Java的同步策略也有问题,当被标记为synchronized的函数执行时间较长时,就可能造成很多线程在等待该同步函数,而阻止了程序的其他非同步部分的执行,降低了执行效率。,2
23、.2 Java语言的基本语法,与C/C+相似,Java的数据类型可以分为两大类型:基本类型(简单数据类型)和引用类型(复合数据类型)。简单类型包括整型(integer)、浮点型(float)、字符型(char)及布尔型(boolean)。简单数据类型用户通常是不能修改的,它用来实现一些基本的数据类型。,复合数据类型有类(class)、接口(interface)和数组(array)。复合数据类型是用户根据用户的需要定义并实现其运算的类型。简单类型的数据在函数调用中是以传值方式进行的,而复合数据类型在函数调用中则是以传地址的方式进行的。Java的数据类型可用图2.1表示。,图 2.1,整数类型 b
24、yte、short、int、long 浮点类型 float、double 字符型 char 布尔类型 boolean 类 class 接口 interface 数组 array,基本类型,引用类型,数据类型,变量是Java程序中的基本存储单元,它由类型和标识符构成。Java字符集支持扩展的16位字节码(Unicode字符集),提供多语言支持。表达式是常量、变量、方法调用以及一个或多个运算符的任意组合,是构成Java语言的基本单元。 本节我们将介绍Java中简单数据类型、变量、表达式及运算符的基本内容。,2.2.1 数据类型 Java程序都是由数据和对数据进行的操作构成的。数据是计算机用的基本数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 Java语言概述 Java 语言 概述
链接地址:https://www.31doc.com/p-5030134.html