Java程序设计大学教程 它们具有很高的可移植性,也就是说它们可以用来为多种类型的计算机编程。其他的语言 譬如机器语言,是为一种特定型号的计算机系统,甚至是一台特定的计算机,在某些研究领 域使用而编写的。最常用的程序设计语言具有很高的可移植性,可以用于有效地解决不同类 型的计算问题。像C、Java和BASC这样的语言就属于这一范畴。 作为在计算机上实现算法的工具,对于理想的程序设计语言来说,所提供的语法应该能 够满足描述算法结构、数据、操作等各方面信息的需要。程序设计语言从最初的机器语言发 展到今天流行的面向对象语言,语言的抽象程度越来越高,程序的风格越来越接近人类自然 语言的风格,因此程序设计过程也越来越接近人类的思维过程。 12.1 发展历史 程序设计语言几乎可以追溯到20世纪40年代数字计算机发明之时。最早的汇编语言 随着商业计算机的推出,出现于20世纪50年代末。最早的过程语言是在20世纪50年代末 到20世纪60年代初开发的: FORTRAN语言由约翰巴克斯创造,然后由格雷斯·霍珀创造 了 COBOL语言。第一种函数式语言是LISP,由约翰◆麦卡锡于20世纪50年代末编写。这 3种语言今天仍在广泛使用,但经历过大量修改。 20世纪60年代末,出现了最早的面向对象的语言,如 SIMULA语言。逻辑语言在20 世纪70年代中期随着 PROLOG语言的推出而变得广为人知; PROLOG语言是一种用于编 写人工智能软件的语言。后来尽管纯逻辑语言受欢迎的程度有所下降,但其变体形式,如关 系型数据库所使用结构化查询语言(SQL)却变得越来越重要。 在20世纪70年代,过程语言继续发展,出现了 ALGOL、 BASIC、 Pascal、C和Ada 等语言。 SMALLTALK语言是一种具有高度影响力的面向对象的语言,它导致了面向对象 语言与传统过程语言相结合的一些语言,如C++、 Delphi等。但是很快面向对象的方法在软 件开发和程序设计中占据了主导地位,出现了像Java和C#这样的纯粹面向对象的语言。 12.2 语言的类型 程序设计语言可划分为低级语言和高级语言。低级程序设计语言或机器语言,是程序设 计语言中最基础的类型,能被计算机直接理解。机器语言的区别取决于制造商和计算机的型 号。高级语言是在计算机能够理解和处理之前必须首先翻译成机器语言的程序设计语言。C、 FORTRAN、 Pascal和Java都是高级语言的例子。汇编语言是中级语言,非常接近于机器语 言,没有其他高级语言所表现出的语言复杂程度,但仍然得翻译成机器语言。 1.机器语言 在机器语言中,指令被写成计算机能够直接理解的被称之为比特的1和0的序列。机器 语言中的一条指令通常告诉计算机4件事情: (1)到计算机主存储器(随机访问存储器)的哪个位置去找一或两个数字或者简单的 数据段; (2)要执行的一个简单操作,例如将两个数字加起来 (3)将这个简单操作的结果存放在主存储器的什么位置 (4)到哪里找要执行的下一条指令。 虽然所有的可执行程序最终都是以机器语言的形式被计算机读取,但是它们并非都是用 机器语言编写的。直接用机器语言编程极端困难,因为指令是1和0的序列。机器语言中的
Java 程序设计大学教程 9 它们具有很高的可移植性,也就是说它们可以用来为多种类型的计算机编程。其他的语言, 譬如机器语言,是为一种特定型号的计算机系统,甚至是一台特定的计算机,在某些研究领 域使用而编写的。最常用的程序设计语言具有很高的可移植性,可以用于有效地解决不同类 型的计算问题。像 C、Java 和 BASIC 这样的语言就属于这一范畴。 作为在计算机上实现算法的工具,对于理想的程序设计语言来说,所提供的语法应该能 够满足描述算法结构、数据、操作等各方面信息的需要。程序设计语言从最初的机器语言发 展到今天流行的面向对象语言,语言的抽象程度越来越高,程序的风格越来越接近人类自然 语言的风格,因此程序设计过程也越来越接近人类的思维过程。 1.2.1 发展历史 程序设计语言几乎可以追溯到 20 世纪 40 年代数字计算机发明之时。最早的汇编语言, 随着商业计算机的推出,出现于 20 世纪 50 年代末。最早的过程语言是在 20 世纪 50 年代末 到 20 世纪 60 年代初开发的:FORTRAN 语言由约翰•巴克斯创造,然后由格雷斯•霍珀创造 了 COBOL 语言。第一种函数式语言是 LISP,由约翰•麦卡锡于 20 世纪 50 年代末编写。这 3 种语言今天仍在广泛使用,但经历过大量修改。 20 世纪 60 年代末,出现了最早的面向对象的语言,如 SIMULA 语言。逻辑语言在 20 世纪 70 年代中期随着 PROLOG 语言的推出而变得广为人知;PROLOG 语言是一种用于编 写人工智能软件的语言。后来尽管纯逻辑语言受欢迎的程度有所下降,但其变体形式,如关 系型数据库所使用结构化查询语言(SQL)却变得越来越重要。 在 20 世纪 70 年代,过程语言继续发展,出现了 ALGOL、BASIC、Pascal、C 和 Ada 等语言。SMALLTALK 语言是一种具有高度影响力的面向对象的语言,它导致了面向对象 语言与传统过程语言相结合的一些语言,如 C++、Delphi 等。但是很快面向对象的方法在软 件开发和程序设计中占据了主导地位,出现了像 Java 和 C#这样的纯粹面向对象的语言。 1.2.2 语言的类型 程序设计语言可划分为低级语言和高级语言。低级程序设计语言或机器语言,是程序设 计语言中最基础的类型,能被计算机直接理解。机器语言的区别取决于制造商和计算机的型 号。高级语言是在计算机能够理解和处理之前必须首先翻译成机器语言的程序设计语言。C、 FORTRAN、Pascal 和 Java 都是高级语言的例子。汇编语言是中级语言,非常接近于机器语 言,没有其他高级语言所表现出的语言复杂程度,但仍然得翻译成机器语言。 1. 机器语言 在机器语言中,指令被写成计算机能够直接理解的被称之为比特的 1 和 0 的序列。机器 语言中的一条指令通常告诉计算机 4 件事情: (1)到计算机主存储器(随机访问存储器)的哪个位置去找一或两个数字或者简单的 数据段; (2)要执行的一个简单操作,例如将两个数字加起来; (3)将这个简单操作的结果存放在主存储器的什么位置; (4)到哪里找要执行的下一条指令。 虽然所有的可执行程序最终都是以机器语言的形式被计算机读取,但是它们并非都是用 机器语言编写的。直接用机器语言编程极端困难,因为指令是 1 和 0 的序列。机器语言中的
Java程序设计大学教程 一条典型的指令可能是1001010010,意思是将存储寄存器A的内容加到存储寄存器B 的内容中 2.高级语言 高级语言是利用人类语言中的词和语法的一套相对复杂的语句。它们比汇编语言和机器 语言更类似于正常的人类语言,因此用来编写复杂的程序更容易。这些程序设计语言允许更 快地开发更庞大和更复杂的程序。然而,在计算机能够理解之前,高级语言必须由编译器翻 译成机器语言。因为这个原因,与用汇编语言编写的程序比较起来,用高级语言编写的程序 可能运行的时间更长,占用的内存更多。 3.汇编语言 计算机编程人员使用汇编语言使机器语言程序编写起来更简单一些。在汇编语言中,每 条语句大致对应一条机器语言指令。汇编语言的语句是借助易于记忆的命令编写的。在典型 的汇编语言的语句中,把存储寄存器A的内容加到存储寄存器B的内容中这一命令,可以 写成ADDB,A。汇编语言与机器语言具有某些共同特征。例如,对特定的比特进行操作, 用汇编语言和机器语言都是可行的。当尽量减少程序的运行时间很重要时,程序员就使用汇 编语言,因为从汇编语言到机器语言的翻译相对简单。当计算机的某个部分必须被直接控制 时,如监视器上的单个点或者流向打印机的单个字符,这时也使用汇编语言 123 高级语言的分类 高级语言通常分为面向过程的、函数式的、面向对象的或逻辑的语言。当今最常见的高 级语言是面向过程的语言。在这种语言中,实现某个完整功能的一个或多个相关的语句块组 成了一个程序模块或过程,而且被给予诸如“过程A”的名称。如果在程序的其他地方需要 同样的操作序列,可以使用一个简单的语句调回这个过程。实质上,一个过程就是一个小型 程序。可以通过将实现不同任务的过程组合在一起而构成一个大程序。过程语言使程序变得 比较短,而且更易于被计算机读取,同时要求程序员将每个过程都设计得足够通用,以便能 用于不同的情况,避免了重复编写相同的代码。近几十年来发展的一些高级过程化语言有 FORTRAN、 COBOL、 Pascal、C和Ada等 函数式语言像对待数学函数一样对待过程,并允许像处理程序中的任何其他数据一样处 理它们。这就使程序构造在更高、更严密的水平上得以实现。函数式语言也允许变量只赋值 次。这样就简化了编程,因为一个变量没有必要每次在一个程序语句中用到时都重新定义 或重新赋值。函数式语言的许多观点已经成为许多现代过程语言的关键部分。这类语言代表 性的有十九世纪六十年代由麻省理工大学开发的表处理解释语言List 面向对象的语言是函数式语言的发展结果。在面向对象的语言中,把数据和数据处理过 程封装成叫做对象的单元。对象进一步抽象成类,而类则定义对象必须具有的属性。某些与 对象相关的功能称为方法。计算机通过使用对象的某种方法来使用这个对象。方法对对象中 的数据执行某个操作,然后将值返回给方法调用者。面向对象的语言中所提供的这种结构, 使面向对象的语言更符合人脑的思维模式,并有利于解决复杂的编程任务。像 Delphi、C++、 C#和Java都是目前主要的面向对象的语言。 逻辑语言将逻辑用作其数学基础,依据逻辑推理的原则响应查询。它是在由希腊数学家 定义的规范的逻辑基础上发展而来的,并且后来发展成为一阶谓词演算( first-order predicate calculus)。一个逻辑程序由一系列的事实与“如果……则”规则组成,来具体说明一系列事
Java 程序设计大学教程 10 一条典型的指令可能是 10010 1100 1011,意思是将存储寄存器 A 的内容加到存储寄存器 B 的内容中。 2. 高级语言 高级语言是利用人类语言中的词和语法的一套相对复杂的语句。它们比汇编语言和机器 语言更类似于正常的人类语言,因此用来编写复杂的程序更容易。这些程序设计语言允许更 快地开发更庞大和更复杂的程序。然而,在计算机能够理解之前,高级语言必须由编译器翻 译成机器语言。因为这个原因,与用汇编语言编写的程序比较起来,用高级语言编写的程序 可能运行的时间更长,占用的内存更多。 3. 汇编语言 计算机编程人员使用汇编语言使机器语言程序编写起来更简单一些。在汇编语言中,每 条语句大致对应一条机器语言指令。汇编语言的语句是借助易于记忆的命令编写的。在典型 的汇编语言的语句中,把存储寄存器 A 的内容加到存储寄存器 B 的内容中这一命令,可以 写成 ADD B, A。汇编语言与机器语言具有某些共同特征。例如,对特定的比特进行操作, 用汇编语言和机器语言都是可行的。当尽量减少程序的运行时间很重要时,程序员就使用汇 编语言,因为从汇编语言到机器语言的翻译相对简单。当计算机的某个部分必须被直接控制 时,如监视器上的单个点或者流向打印机的单个字符,这时也使用汇编语言。 1.2.3 高级语言的分类 高级语言通常分为面向过程的、函数式的、面向对象的或逻辑的语言。当今最常见的高 级语言是面向过程的语言。在这种语言中,实现某个完整功能的一个或多个相关的语句块组 成了一个程序模块或过程,而且被给予诸如“过程 A”的名称。如果在程序的其他地方需要 同样的操作序列,可以使用一个简单的语句调回这个过程。实质上,一个过程就是一个小型 程序。可以通过将实现不同任务的过程组合在一起而构成一个大程序。过程语言使程序变得 比较短,而且更易于被计算机读取,同时要求程序员将每个过程都设计得足够通用,以便能 用于不同的情况,避免了重复编写相同的代码。近几十年来发展的一些高级过程化语言有: FORTRAN、COBOL、Pascal、C 和 Ada 等。 函数式语言像对待数学函数一样对待过程,并允许像处理程序中的任何其他数据一样处 理它们。这就使程序构造在更高、更严密的水平上得以实现。函数式语言也允许变量只赋值 一次。这样就简化了编程,因为一个变量没有必要每次在一个程序语句中用到时都重新定义 或重新赋值。函数式语言的许多观点已经成为许多现代过程语言的关键部分。这类语言代表 性的有十九世纪六十年代由麻省理工大学开发的表处理解释语言 List。 面向对象的语言是函数式语言的发展结果。在面向对象的语言中,把数据和数据处理过 程封装成叫做对象的单元。对象进一步抽象成类,而类则定义对象必须具有的属性。某些与 对象相关的功能称为方法。计算机通过使用对象的某种方法来使用这个对象。方法对对象中 的数据执行某个操作,然后将值返回给方法调用者。面向对象的语言中所提供的这种结构, 使面向对象的语言更符合人脑的思维模式,并有利于解决复杂的编程任务。像 Delphi、C++、 C#和 Java 都是目前主要的面向对象的语言。 逻辑语言将逻辑用作其数学基础,依据逻辑推理的原则响应查询。它是在由希腊数学家 定义的规范的逻辑基础上发展而来的,并且后来发展成为一阶谓词演算(first-order predicate calculus)。一个逻辑程序由一系列的事实与“如果……则”规则组成,来具体说明一系列事
Java程序设计大学教程 实如何可以从其他实事中推断出来,例如 如果x语句为真,则Y语句为假。 在这样一个程序的执行过程中,一条输入语句可以按照逻辑从程序中的其他语句推断出 来。许多人工智能程序使用这种语言编写。最著名的说明性语言是 Prolog( PROgramming in LOGic),它是由法国人 A Colmerauer于1972年设计开发的。 Prolog中的程序全部由论据和 规则组成。 13 Java语言介绍 Java是SUN公司开发的源于 Internet的一种现代程序设计语言。多年来,SUN公司对 Java产品不断改进升级,使之紧跟时代步伐,满足了日益复杂的软件开发需求。 1.3.1 Java发展的历史 Java的历史可以追溯到1991年,那时候两个计算机奇才 Patrick Naughton和 James Gosling带领着SUN公司的一个工程师小组,着手设计能够用于家电消费设备的小型计算机 语言。由于这些设备没有很强的处理能力和太多内存,所以这个语言必须非常小并能够生成 非常紧凑的代码。另外,因为不同厂商可能选择不同的CPU,所以这个语言不能够限定在 个单一的体系结构下,也就是能够满足跨平台的要求。这个项目的名称是“Gren”。因此 代码短小、紧凑、与平台无关便是Java雏形生来就具有的特性。 这个模型的商业实现是要设计一种能够为假想机器生成中间代码的可移植的语言,这个 假想机器就是后来的Java虚拟机(JVM)。这样中间代码可以在任何安装有正确解释器的机 器上使用。 Green项目的工程师们也就是通过使用虚拟机解决了他们的主要问题。 Gosling起初把他的语言称为“Oak”,但是SUN公司的人发现已经存在一门名叫Oak 的计算机语言。后来开发小组在一次咖啡馆聚会时,从咖啡的灵感中想到了“Java”这个名 称,以至于流传至今,无人不知 Gren项目并没有使Java在消费电子产品市场中取得成功。相反,Java在 Internet的浏 览器上的应用却使其名声鹊起。当时 Patrick Naughton和 Jonathan Payne开发的浏览器演化 为 Hotjava浏览器,并有在网页中执行Java代码的能力,从而引发了人们对Java的狂热。 SUN公司在1996年早期发布了Java第一版。人们很快认识到 Javal.0并不适合做真正 的应用开发。它的后继者Java1.1很快填补了前者的不足,极大地提高了反射能力并为GUl 编程增加了新的事件模型。尽管如此,它仍然具有很大的局限性。 1998年12月Java12版本发布,SUN公司将其称为J2 SE SDK12(Java2标准版软件 开发工具箱1.2版),以示与以前版本的明显不同 除了Java的“标准版”』2SE之外,SUN公司还推出了两种其他的版本:用于蜂窝电话 等嵌入式设备的“微型版”—J2ME;用于服务器端处理“企业版”—J2EE。本书使用 的是标准版—J2SE50。 J2SE50是Java平台和语言最新的重要修订版。它包含了15个组件JSR以及由Java 社团( Java Community Process,JCP)开发的其他将近100个重大更新。Java的版本号自从 SUN Microsystems Inc.:(美国)太阳微系统股份有限公司,主要生产SUN系列工作站和网络产品,是 JAVA语言的创始者。SUN系 Stanford University Network的首字母缩略
Java 程序设计大学教程 11 实如何可以从其他实事中推断出来,例如: 如果 X 语句为真,则 Y 语句为假。 在这样一个程序的执行过程中,一条输入语句可以按照逻辑从程序中的其他语句推断出 来。许多人工智能程序使用这种语言编写。最著名的说明性语言是 Prolog(PROgramming in LOGic),它是由法国人 A.Colmerauer 于 1972 年设计开发的。Prolog 中的程序全部由论据和 规则组成。 1.3 Java 语言介绍 Java 是 SUN 公司1 开发的源于 Internet 的一种现代程序设计语言。多年来,SUN 公司对 Java 产品不断改进升级,使之紧跟时代步伐,满足了日益复杂的软件开发需求。 1.3.1 Java 发展的历史 Java 的历史可以追溯到 1991 年,那时候两个计算机奇才 Patrick Naughton 和 James Gosling 带领着 SUN 公司的一个工程师小组,着手设计能够用于家电消费设备的小型计算机 语言。由于这些设备没有很强的处理能力和太多内存,所以这个语言必须非常小并能够生成 非常紧凑的代码。另外,因为不同厂商可能选择不同的 CPU,所以这个语言不能够限定在 一个单一的体系结构下,也就是能够满足跨平台的要求。这个项目的名称是“Green”。因此, 代码短小、紧凑、与平台无关便是 Java 雏形生来就具有的特性。 这个模型的商业实现是要设计一种能够为假想机器生成中间代码的可移植的语言,这个 假想机器就是后来的 Java 虚拟机(JVM)。这样中间代码可以在任何安装有正确解释器的机 器上使用。Green 项目的工程师们也就是通过使用虚拟机解决了他们的主要问题。 Gosling 起初把他的语言称为“Oak”,但是 SUN 公司的人发现已经存在一门名叫 Oak 的计算机语言。后来开发小组在一次咖啡馆聚会时,从咖啡的灵感中想到了“Java”这个名 称,以至于流传至今,无人不知。 Green 项目并没有使 Java 在消费电子产品市场中取得成功。相反,Java 在 Internet 的浏 览器上的应用却使其名声鹊起。当时 Patrick Naughton 和 Jonathan Payne 开发的浏览器演化 为 HotJava 浏览器,并有在网页中执行 Java 代码的能力,从而引发了人们对 Java 的狂热。 SUN 公司在 1996 年早期发布了 Java 第一版。人们很快认识到 Javal.0 并不适合做真正 的应用开发。它的后继者 Java 1.1 很快填补了前者的不足,极大地提高了反射能力并为 GUI 编程增加了新的事件模型。尽管如此,它仍然具有很大的局限性。 1998 年 12 月 Java 1.2 版本发布,SUN 公司将其称为 J2SE SDK1.2(Java2 标准版软件 开发工具箱 1.2 版),以示与以前版本的明显不同。 除了 Java 的“标准版”J2SE 之外,SUN 公司还推出了两种其他的版本:用于蜂窝电话 等嵌入式设备的“微型版”——J2ME;用于服务器端处理“企业版”——J2EE。本书使用 的是标准版——J2SE 5.0。 J2SE 5.0 是 Java 平台和语言最新的重要修订版。它包含了 15 个组件 JSR 以及由 Java 社团(Java Community Process,JCP)开发的其他将近 100 个重大更新。Java 的版本号自从 1 SUN Microsystems Inc.:(美国)太阳微系统股份有限公司,主要生产 SUN 系列工作站和网络产品,是 JAVA 语言的创始者。SUN 系 Stanford University Network 的首字母缩略
Java程序设计大学教程 1.1开始,似乎就多少显得有点蹩脚。从1.2版本开始Java被称作Java2,而不是Java1.2 现在则显得更加离奇,称为 JavaTM2 Platform Standard Edition50或者J2SE50,而内部的版 本号还是1.5.0。据SUN公司的说法,从Java诞生至今已有9年时间,而从第二代Java平 台J2SE算起也有5个年头了。在这样的背景下,将下一个版本的版本号从15改为50可以 更好的反映出新版』2SE的成熟度、稳定性、可伸缩性和安全性。Java演化历史参见图1-5。 Platform Evolution 2SE5.0 2SE14 Metadat New 1/0 25E1.3 2SE1.2 Performance MSJVM Java Hotspot VM WebStart Synchronized Scalability Java 1.1 platform release improvements trains Reflection Improved L&F Enhancements Image 1/0 aris native Swing Serialization AWT PDA, IVMPI Feb 97 Dec 98 May 00 Feb'02 Sept 04 图1-5Java演化历史 1.3.2 Java是什么,Java不是什么 1.Java是一种面向对象的程序设计语言 Java首先是一种高级程序设计语言。它的优点包括了程序可读性强、可编译成平台无关 的中间代码、严格的数据类型检查,以及可将应用程序分解成多个分布在各处的程序单元, 以便在计算机网络上运行。Java虽然用到了许多与C/C++相同的语言结构,但其设计得足够 简单,相对于CC++而言,用户能够更容易地熟练使用这种语言。 Java是一种面向对象的语言。面向对象的语言将程序划分为单独的模块,称之为对象, 其中封装了程序的各种属性和动作。Java是一种纯粹的面向对象语言,不像C++和 Delphi 那样是一种面向过程和面向对象都可以混杂使用的语言。Java带有许多库,可以用来构建面 向对象的程序。因此,Java能很好地支持面向对象编程( object-oriented programming,OOP) 与面向对象设计( object-oriented design,oOD)。 2.Java是健壮的和安全的语言。 Java在设计之初就注重语言的健壮性,避免了一些不稳定的因素。例如:严格的数据类 型检査,避免误用指针。Java还具有某些特点,能够在程序运行之前査岀许多潜在的错误 而它的优秀的异常处理能力使它可以在程序运行期间“捕捉”错误。因此,Java程序中的错 误不会像其他程序设计语言中的错误那样经常让系统崩溃 Java是安全的语言。因为Java是设计在网络上使用的,他有保护免遭不安全代码(不 12
Java 程序设计大学教程 12 1.1 开始,似乎就多少显得有点蹩脚。从 1.2 版本开始 Java 被称作 Java 2,而不是 Java 1.2, 现在则显得更加离奇,称为 Java™ 2 Platform Standard Edition 5.0 或者 J2SE 5.0,而内部的版 本号还是 1.5.0。据 SUN 公司的说法,从 Java 诞生至今已有 9 年时间,而从第二代 Java 平 台 J2SE 算起也有 5 个年头了。在这样的背景下,将下一个版本的版本号从 1.5 改为 5.0 可以 更好的反映出新版 J2SE 的成熟度、稳定性、可伸缩性和安全性。Java 演化历史参见图 1-5。 图 1-5 Java 演化历史 1.3.2 Java 是什么,Java 不是什么 1. Java 是一种面向对象的程序设计语言 Java 首先是一种高级程序设计语言。它的优点包括了程序可读性强、可编译成平台无关 的中间代码、严格的数据类型检查,以及可将应用程序分解成多个分布在各处的程序单元, 以便在计算机网络上运行。Java 虽然用到了许多与 C/C++相同的语言结构,但其设计得足够 简单,相对于 C/C++而言,用户能够更容易地熟练使用这种语言。 Java 是一种面向对象的语言。面向对象的语言将程序划分为单独的模块,称之为对象, 其中封装了程序的各种属性和动作。Java 是一种纯粹的面向对象语言,不像 C++和 Delphi 那样是一种面向过程和面向对象都可以混杂使用的语言。Java 带有许多库,可以用来构建面 向对象的程序。因此,Java 能很好地支持面向对象编程(object-oriented programming,OOP) 与面向对象设计(object-oriented design,OOD)。 2. Java 是健壮的和安全的语言。 Java 在设计之初就注重语言的健壮性,避免了一些不稳定的因素。例如:严格的数据类 型检查,避免误用指针。Java 还具有某些特点,能够在程序运行之前查出许多潜在的错误, 而它的优秀的异常处理能力使它可以在程序运行期间“捕捉”错误。因此,Java 程序中的错 误不会像其他程序设计语言中的错误那样经常让系统崩溃。 Java 是安全的语言。因为 Java 是设计在网络上使用的,他有保护免遭不安全代码(不
Java程序设计大学教程 可信任的,可能引入病毒或破坏系统的代码)侵害的一些特性。例如,基于Web的Java程 序下载到浏览器中以后,它们的行为就受到了严格限制。实际上用户下载Java程序比下载 可执行文件、 ActiveX控件更加安全。 3.Java是平台无关的语言。 这里的平台是指特定类型的计算机系统,如Unⅸ或 Windows系统。Java的口号是“ 次编写,到处运行。”这意味着Java程序不用修改就可以在不同类型的计算机系统上运行。 Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器, 它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但 JVⅥM通常是在软件上而不是在硬件上实现。(目前,SUN系统公司己经设计实现了Java芯 片,主要使用在网络计算机NC上。另外,Java芯片的出现也会使Java更容易嵌入到家用 电器中。)JⅥM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编 译器编译后的程序。Java编程人员在编写完软件后,通过Jαva编译器将Java源程序编译为 JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这 种字节码是在何种平台上生成的。另外,Java采用的是基于IEE标准的数据类型。通过JVM 保证数据类型的一致性,也确保了Java的平台无关性。任何其他高级程序设计语言都不是 这样的,而这也是Java适合 Internet应用的一个原因 Java是分布式的语言,这意味着可以将其程序设计为在计算机网络上运行。它包含了 些特性和代码库,使得构建Web应用程序特别容易。这就是Java非常适合于企业网络应用 的原因之一。 4.Java不是专用于 Internet的语言 Java是编程语言,不是设计网站的HTML语言的扩展,而HIML是描述网页结构的方 式。除了在HTML中可以嵌入 Java applet之外,两者没有任何共同之处。 Java也不是XML的扩展。而ⅩML是 Internet网上广泛使用的描述数据的语言,可以用 任何语言处理XML数据,只不过 Java API对XML处理提供了更好的支持。 尽管 Java applet都是运行在Web浏览器中,但并不意味着Java程序一定要在浏览器中 运行。实际上人们大量编写的是独立的、不依赖浏览器运行的Java程序。这些程序通常称 为Java应用程序,他们可以移植的到不同的平台上独立运行。另外Java通过JDBC(Java Database Connectivity,Java数据库连接)等数据库访问工具的支持还可以开发数据库应用 程序。毫无疑问,Java特别适合网络编程,但不妨碍他在其它领域的应用。 5.Java不是一个集成开发环境 Java不像 Delphi或ⅤB那样集成有一个功能强大的集成开发环境(IDE)。即使 Java SDK 也不是个容易使用的编程环境——除非用户习惯于命令行工具。尽管一些软件商为Java提 供了各种集成开发环境,其中整合了编辑器、编译器、拖放设计器以及便利的调试工具。但 它们都很复杂,对初学者并不适合。这些集成开发环境动辄生成数百行代码,复杂的功能会 使初学者晕头转向,还不如使用简单的文本编辑器来学习Java更有效。在本书中,我们虽 然介绍一些优秀的集成开发环境,但我们仍然推荐使用文本编辑器来学习Java 6.Java不是万能的编程语言 从理论上讲,没有一种语言比另一种语言更加优越。语言的差异只是在效率上,这里的 效率包括语言的编程效率和语言的运行效率 Java只不过是一种编程语而已。很多程序员喜欢Java,认为Java是一种胜过其它语言
Java 程序设计大学教程 13 可信任的,可能引入病毒或破坏系统的代码)侵害的一些特性。例如,基于 Web 的 Java 程 序下载到浏览器中以后,它们的行为就受到了严格限制。实际上用户下载 Java 程序比下载 可执行文件、ActiveX 控件更加安全。 3. Java 是平台无关的语言。 这里的平台是指特定类型的计算机系统,如 Unix 或 Windows 系统。Java 的口号是“一 次编写,到处运行。”这意味着 Java 程序不用修改就可以在不同类型的计算机系统上运行。 Java 主要靠 Java 虚拟机(JVM)在目标码级实现平台无关性。JVM 是一种抽象机器, 它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但 JVM 通常是在软件上而不是在硬件上实现。(目前,SUN 系统公司已经设计实现了 Java 芯 片,主要使用在网络计算机 NC 上。另外,Java 芯片的出现也会使 Java 更容易嵌入到家用 电器中。)JVM 是 Java 平台无关的基础,在 JVM 上,有一个 Java 解释器用来解释 Java 编 译器编译后的程序。Java 编程人员在编写完软件后,通过 Java 编译器将 Java 源程序编译为 JVM 的字节代码。任何一台机器只要配备了 Java 解释器,就可以运行这个程序,而不管这 种字节码是在何种平台上生成的。另外,Java 采用的是基于 IEEE 标准的数据类型。通过 JVM 保证数据类型的一致性,也确保了 Java 的平台无关性。任何其他高级程序设计语言都不是 这样的,而这也是 Java 适合 Internet 应用的一个原因。 Java 是分布式的语言,这意味着可以将其程序设计为在计算机网络上运行。它包含了一 些特性和代码库,使得构建 Web 应用程序特别容易。这就是 Java 非常适合于企业网络应用 的原因之一。 4. Java 不是专用于 Internet 的语言 Java 是编程语言,不是设计网站的 HTML 语言的扩展,而 HTML 是描述网页结构的方 式。除了在 HTML 中可以嵌入 Java applet 之外,两者没有任何共同之处。 Java 也不是 XML 的扩展。而 XML 是 Internet 网上广泛使用的描述数据的语言,可以用 任何语言处理 XML 数据,只不过 Java API 对 XML 处理提供了更好的支持。 尽管 Java applet 都是运行在 Web 浏览器中,但并不意味着 Java 程序一定要在浏览器中 运行。实际上人们大量编写的是独立的、不依赖浏览器运行的 Java 程序。这些程序通常称 为 Java 应用程序,他们可以移植的到不同的平台上独立运行。另外 Java 通过 JDBC(Java Database Connectivity,Java 数据库连接)等数据库访问工具的支持还可以开发数据库应用 程序。毫无疑问,Java 特别适合网络编程,但不妨碍他在其它领域的应用。 5. Java 不是一个集成开发环境 Java 不像 Delphi 或 VB 那样集成有一个功能强大的集成开发环境(IDE)。即使 Java SDK 也不是个容易使用的编程环境——除非用户习惯于命令行工具。尽管一些软件商为 Java 提 供了各种集成开发环境,其中整合了编辑器、编译器、拖放设计器以及便利的调试工具。但 它们都很复杂,对初学者并不适合。这些集成开发环境动辄生成数百行代码,复杂的功能会 使初学者晕头转向,还不如使用简单的文本编辑器来学习 Java 更有效。在本书中,我们虽 然介绍一些优秀的集成开发环境,但我们仍然推荐使用文本编辑器来学习 Java。 6. Java 不是万能的编程语言 从理论上讲,没有一种语言比另一种语言更加优越。语言的差异只是在效率上,这里的 效率包括语言的编程效率和语言的运行效率。 Java 只不过是一种编程语而已。很多程序员喜欢 Java,认为 Java 是一种胜过其它语言