Java软件开发(第三版)
分類: 图书,计算机/网络,程序设计,Java Java Script J2EE,
作者: (英)温德尔(Winder,R.),(英)罗伯茨(Roberts,G.)著,黄湘情,曹永存译
出 版 社: 人民邮电出版社
出版时间: 2008-7-1字数: 1428000版次: 1页数: 716印刷时间: 2008/07/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787115174628包装: 平装编辑推荐
本书是《Java软件开发》的最新版本,全面介绍使用编程语言、Java 5进行面向对象的设计和程序开发等内容。本书带领读者从Java 5的基本用法开始,学习创建完整的面向对象的程序。按照“尽早认识对象”的方法,本书覆盖了Java语言的核心内容,包括使用新增的特性,如泛型。
本书的重点是鼓励读者合理创建和使用类,并说明运用什么策略来创建优秀的代码。通过学习本书,您会了解Java程序的工作方式,以及如何以组织和系统的方式设计并实现Java程序。此外,本书还给出了管理Java编程项目的方法,介绍了Ant构建工具和Subverslorl版本控制系统。
测试一直是《Java软件开发》中的重要部分。本书提供新的章节以详细介绍测试驱动开发(TDD)。这种编程方法对程序编写的要求更加严格,强调从一开始就要编写高质量的测试和被测试代码。书中用一系列的案例研究说明了TDD的工作方式,特别是测试代码的策略。
本书反映了Java编程语言的最新变化,再次讨论了程序设计的第一个过程,非常适合用于教学或自学。书中有许多启发性的例子和大型的案例研究,说明如何在创建实际的应用程序时应用编程的核心思想,以及如何有效地使用面向对象的方法创建出健壮、可靠的和经过充分测试的应用程序。
内容简介
本书是专门为Java软件开发课程编写的教材,旨在帮助读者学习Java程序设计和软件开发。
全书分为5个部分。第1部分(第1~10章)阐述了面向对象的Java语言和面向对象开发过程的基本概念和主要思想;第2部分(第11~14章)是有关程序设计的过程,介绍测试驱动开发的原理、过程、工具和技术,并说明是如何进行编程的;第3部分(第15~17章)给出了一些可以用于自学的案例,包括一些用来组织讨论会、扩展程序开发的项目基础内容。第4部分(第18~24章)是Java语言的自学指南和参考。附录部分提供了有关Java编程的一些有用参考资料。
本书适合作为高等院校计算机专业Java语言课程教材,也可以供Java语言自学者阅读使用。
目录
第1部分对象和类的编程
第1章简介
1.1引言
1.2Java简史
1.3Java生逢其时
1.4Java是什么
1.5抽象:编程的重要核心
1.6Java 2平台
1.7Java的体系结构是平台无关的
1.8Java不是玩笑
1.9小结
第2章程序设计基础
2.1引言
2.2抽象和概要
2.3语句的顺序
2.4迭代
2.4.1Java的while语句和复合语句
2.4.2Java的do语句
2.5选择语句
2.5.1Java的if语句
2.5.2Java的break语句
2.6变量
2.6.1变量的命名
2.6.2赋值
2.6.3变量的类型
2.6.4初始化变量
2.6.5常数变量(命名常量)
2.6.6变量和类型检查
2.6.7变量的比较
2.7编写一个简单的Java程序(程序1)
2.8使用注释
2.9输出语句
2.10输入语句
2.11交互式程序
2.11.1程序2——基本的输入输出
2.11.2程序3——使用字符串
2.11.3程序4——使用表达式
2.12小结
2.13复习题
2.14练习题
2.15挑战题
第3章向程序中增加结构
3.1引言
3.2抽象和封装
3.3方法
3.3.1从方法返回值
3.3.2void方法和类型
3.3.3方法的参数
3.3.4多个方法参数
3.3.5递归
3.4如何在程序中使用方法
3.4.1例程:乘法表程序
3.4.2例程:回文程序
3.5过程分解
3.6封装
3.6.1作用域与生存期
3.6.2命名与作用域
3.7更多的运算符
3.7.1递增、递减和赋值运算符
3.7.2算术表达式和类型
3.7.3条件运算符
3.8更多的控制语句
3.8.1for循环语句
3.8.2switch语句
3.9更多的实例程序
3.9.1例程:字符三角形(CharacterTriangle)程序
3.9.2例程:字符矩形(CharacterRectangle)程序
3.9.3例程:二进制转十进制(ConverBinaryToDecimal)程序
3.10小结
3.11复习题
3.12练习题
3.13挑战题
第4章容器类介绍
4.1引言
4.2数组
4.2.1声明数组
4.2.2数组索引
4.2.3Foreach循环
4.2.4数组用作方法参数
4.2.5数组用作返回值
4.2.6求平均数(Mean)程序
4.2.7Array类
4.2.8多维数组
4.2.9数组初始化表达式
4.2.10AddUpColumns程序
4.2.11main方法的参数
4.2.12字符数组和字符串
4.3容器(Container)类
4.3.1ArrayList类
4.3.2容器类和基本类型
4.3.3Foreach循环
4.3.4修改Mean程序
4.4数据文件
4.4.1文本数据
4.4.2用FileInput类读取数据
4.4.3用FileOutput类写数据
4.4.4DisplayTextFile程序
4.4.5Copy程序
4.4.6WordCount程序
4.5小结
4.6复习题
4.7练习题
4.8挑战题
第5章画图
5.1引言
5.2绘图
5.2.1画一条线段
5.2.2画矩形、正方形、椭圆和圆
5.2.3其他的标准图形
5.2.4创建新的图形
5.3绘图的属性
5.3.1颜色
5.3.2线宽
5.3.3图形的填充
5.4绘制文本
5.5程序例程
5.5.1例程:棋盘程序
5.5.2例程:螺旋线程序
5.5.3例程:图形程序
5.6小结
5.7复习题
5.8练习题
5.9挑战题
第6章类和对象
6.1引言
6.2创建新的数据类型
6.2.1栈对象
6.2.2Stack类
6.3通用类
6.4方法的命名和作用域
6.5对象初始化
6.5.1实例变量的直接初始化
6.5.2构造函数(Constructor)
6.5.3实例初始化块
6.5.4多种方法如何选择
6.6对象和引用
6.6.1删除旧的对象
6.6.2对象、引用和基本类型
6.6.3对象与方法参数
6.6.4复制对象
6.6.5相等性和对象
6.6.6null
6.6.7this操作符
6.7静态变量和静态方法
6.8类的几个例子
6.8.1例程:Name类
6.8.2例程:Matrix类
6.8.3例程:Graph类
6.9用类和对象进行程序设计
6.9.1对象用来提供服务
6.9.2类与封装
6.10枚举类型
6.11示例——创建桥牌
6.12小结
6.13复习题
6.14练习题
6.15挑战题
第7章类关系详述
7.1引言
7.2关联
7.2.1对象所有权(OwnerShip)
7.2.2有效地使用关联
7.3继承
7.3.1使用继承
7.3.2protected
7.3.3继承和构造函数
7.3.4超类
7.3.5QueueT与DequeueT的实现示例
7.3.6静态变量和继承
7.3.7隐藏名称
7.3.8方法覆盖和动态绑定
7.4关联与继承之间的抉择
7.5继承的层次体系
7.5.1Object类
7.5.2抽象类
7.6接口和类型一致性
7.6.1可替换性、类型和一致性
7.6.2接口及其实现
7.7比较对象的相等性
7.7.1Class类和Instanceof运算符
7.7.2一个惯例
7.8嵌套(Nested)类
7.9包(package)
7.10例程:再次研究Matrix类
7.11可复用性与组件
7.12小结
7.13复习题
7.14练习题
7.15挑战题
第8章异常
8.1问题是什么
8.2错误的种类
8.3表示异常
8.4抛出异常
8.5捕获异常
8.6finally块
8.7使用异常的重要性
8.8例子
8.8.1带异常的ConvertBinaryToDecimal程序
8.8.2以更复杂方式编写的Copy程序
8.8.3重写WordCount程序
8.8.4带异常处理的Stack类型
8.9小结
8.10复习题
8.11练习题
第9章使用线程的并发
9.1一次做多件事情
9.2线程
9.3使用线程
9.4线程同步
9.5线程调度
9.6示例程序
9.6.1文本时钟
9.6.2共享队列
9.6.3网络应用程序
9.7小结
9.8复习题
9.9练习题
第10章用户界面
10.1引言
10.1.1可视化组件
10.1.2事件和事件驱动系统
10.1.3AWT和Swing
10.2核心的GUI概念
10.2.1例程:HelloGoodbye程序
10.2.2创建窗口
10.2.3创建Swing GUI组件
10.2.4容器和布局管理器
10.2.5布局管理器优点
10.2.6不同的布局管理器
10.2.7窗口显示
10.2.8处理事件
10.2.9运行和终止HelloGoodbye程序
10.2.10HelloGoodbye程序的总结
10.3使用GUI作为文本输入
10.4实例:一个非常简单的文本编辑器
10.5菜单
10.6绘图
10.7小结
10.8复习题
10.9练习题
10.10挑战题
第2部分程序设计过程
第11章程序设计过程
11.1引言
11.1.1面向对象的软件工程
11.1.2敏捷方法
11.1.3设计文档
11.2为什么要用面向对象方法
11.2.1一个比喻—路线计划
11.2.2问题域
11.2.3封装
11.3开始任务
11.3.1概览
11.3.2初始问题陈述
11.3.3使用故事收集用户需求
11.3.4功能需求和用例
11.3.5分析
11.3.6设计、实现和测试
11.3.7交付、部署和维护
11.3.8复审和迭代
11.4测试策略
11.4.1单元测试和功能测试
11.4.2验收测试
11.4.3调试
11.5UML类、对象和序列图
11.5.1类图
11.5.2包
11.5.3对象图
11.5.4序列图
11.5.5临时表示法
11.6实践和经验
11.7小结
11.8复习题
11.9练习题
11.10挑战题
第12章单元测试
12.1引言
12.1.1测试是什么
12.1.2到底为什么要测试呢
12.2单元测试—第一个示例
12.2.1类及其测试
12.2.2测试是如何运行的
12.3单元测试的核心原则
12.3.1问题
12.3.2此代码不能够进行测试
12.4测试驱动的开发
12.4.1重构
12.4.2重复
12.4.3红色/绿色/重构
12.4.4按照规范进行测试
12.5TestNG框架
12.5.1测试循环
12.5.2TestNG测试类
12.5.3配置方法
12.5.4测试方法
12.5.5异常
12.5.6断言
12.5.7testng.xml文件
12.6扩展Person类
12.6.1重构
12.6.2无效日期
12.6.3日期验证
12.6.4类的状态
12.6.5现在在哪里呢
12.7小结
12.8复习题
12.9练习题
12.10挑战题
第13章测试驱动的程序设计策略
13.1引言
13.2第一步—搜索文件
13.2.1真实文件与模拟文件
13.2.2使用真实文件
13.2.3到目前为止的回顾过程
13.2.4模拟
13.2.5完整的FileNameSearch类
13.3GUI
13.3.1GUI布局
13.3.2测试GUI布局
13.3.3GUI类
13.3.4创建GUI
13.3.5选择按钮
13.3.6模拟对象
13.3.7搜索按钮
13.4完整的搜索器
13.5小结
13.6复习题
13.7练习题
13.8挑战题
第14章编程工具
14.1引言
14.2项目结构
14.2.1src目录
14.2.2build目录
14.2.3lib目录
14.2.4doc和javadoc目录
14.2.5reports目录
14.2.6deploy目录
14.2.7保证文件安全
14.3Ant-构建工具
14.3.1Ant概述
14.3.2项目元素
14.3.3属性
14.3.4path元素
14.3.5clean目标
14.3.6init目标
14.3.7compile.classes目标
14.3.8compile.tests目标
14.3.9test目标
14.3.10run目标
14.3.11javadoc目标
14.3.12deploy目标
14.3.13all目标
14.3.14使用构建文件
14.4版本控制
14.4.1CVS和Subversion
14.4.2Subversion系统信息库
14.4.3开始项目
14.4.4检验修订版
14.4.5更新、登记和冲突
14.4.6添加、删除和移动
14.4.7修订
14.4.8Status和Logs
14.4.9diff394
14.4.10复制和分支
14.4.11进一步研究
14.5集成开发环境
14.5.1使用IDE
14.5.2IDE和项目
14.5.3GUI构建器
14.5.4调试器
14.5.5UML工具
14.5.6命令行工具
14.5.7项目Web站点
14.6小结
14.7复习题
14.8练习题
14.9挑战题
第3部分程序开发案例
第15章案例研究概述
15.1引言
15.2案例研究
15.3案例研究的介绍
第16章邮件合并系统
16.1引言
16.2简要介绍
16.3回顾——一些研究
16.3.1XML
16.3.2DOM和SAX
16.3.3JDOM和dom4j
16.3.4初始试验
16.4数据存储
16.4.1初始分析
16.4.2初始设计思想
16.4.3具体设计
16.5GUI设计
16.5.1初始需求分析
16.5.2GUI的体系结构和设计
16.6显示邮件合并列表
16.6.1鼠标操作
16.6.2显示邮件合并细节
16.7菜单和操作
16.8更多操作
16.9练习题
16.10挑战题
第17章行人交叉路口模拟
17.1引言
17.2最初的问题定义
17.3最初的思考
17.3.1交通灯
17.3.2车辆指挥灯
17.3.3行人指挥灯
17.4首轮设计
17.5获得GUI
17.6GUI设计
17.7控制中的问题
17.8进一步设计
17.9小结
17.10练习题
17.11挑战题
第4部分Java编程语言详述
第18章Java语言参考
18.1引言
18.2语法和语义
18.3基本描述
18.4示例程序
18.5小结
第19章变量、类型和表达式
19.1引言
19.2注释
19.2.1目的
19.2.2概述
19.2.3语法
19.2.4描述
19.2.5例子
19.3标识符
19.3.1目的
19.3.2概述
19.3.3描述
19.3.4例子
19.4Unicode转义符
19.4.1目的
19.4.2概述
19.4.3描述
19.4.4例子
19.5字面量
19.5.1目的
19.5.2概述
19.5.3描述
19.5.4例子
19.6类型
19.6.1基本类型
19.6.2引用类型
19.6.3自动类型转换
19.7作用域
19.7.1目的
19.7.2概述
19.7.3描述
19.7.4例子
19.8变量
19.8.1变量声明
19.8.2变量初始化
19.8.3数组变量
19.9表达式和运算符
19.9.1基本表达式
19.9.2运算符
19.10源文件
19.11小结
19.12复习题
19.13练习题
第20章程序流程控制
20.1引言
20.2选择
20.2.1if语句
20.2.2switch语句
20.3迭代
20.3.1while循环语句
20.3.2do循环语句
20.3.3for循环语句
20.3.4循环行为检验
20.3.5foreach循环语句
20.4跳转语句
20.4.1break语句
20.4.2continue语句
20.4.3return语句
20.5递归
20.6小结
20.7复习题
20.8练习题
第21章类和包
21.1引言
21.2类
21.2.1类声明
21.2.2public、private和protected
21.2.3实例变量
21.2.4实例初始化器
21.2.5静态变量或类变量
21.2.6静态初始化器
21.2.7方法
21.2.8静态方法或类方法
21.2.9构造函数
21.2.10关键字this
21.3顶层类
21.3.1目的
21.3.2概述
21.3.3语法
21.3.4描述
21.4嵌套类
21.4.1顶层嵌套类
21.4.2成员类
21.4.3局部类
21.4.4匿名类
21.5枚举类型
21.5.1目的
21.5.2概述
21.5.3语法
21.5.4描述
21.5.5例子
21.6包
21.6.1目的
21.6.2概述
21.6.3语法
21.6.4描述
21.6.5例子
21.7静态加载
21.7.1目的
21.7.2概述
21.7.3语法
21.7.4描述
21.7.5例子
21.8小结
21.9复习题
21.10练习题
第22章继承和接口
22.1引言
22.2继承
22.2.1继承的概念
22.2.2关键字private和protected与继承性
22.2.3Final类
22.2.4方法覆盖(Overriding)
22.2.5Final方法
22.2.6方法调用表达式
22.2.7修改后的成员类名字查找
22.2.8构造函数与继承
22.2.9超类(Super)和隐含命名
22.2.10抽象(Abstract)类
22.2.11抽象(Abstract)方法
22.2.12从类对象继承的方法
22.3接口
22.3.1接口声明
22.3.2实现
22.4注释(Annotation)
22.4.1目的
22.4.2概述
22.4.3语法
22.4.4描述
22.4.5例子
22.5小结
22.6复习题
22.7练习题
第23章异常处理
23.1引言
23.1.1异常类
23.1.2Try、Catch与Finally
23.1.3异常的传递
23.1.4抛出(Throws)异常声明
23.1.5关键字throw
23.2小结
23.3复习题
第24章线程与并发
24.1引言
24.2Thread类
24.2.1目的
24.2.2概述
24.2.3语法
24.2.4描述
24.2.5例子
24.3同步方法
24.3.1目的
24.3.2概述
24.3.3语法
24.3.4描述
24.3.5例子
24.4同步语句
24.4.1目的
24.4.2概述
24.4.3语法
24.4.4描述
24.4.5例子
24.5小结
24.6复习题
24.7练习题
第5部分附录
附录A术语表
附录BCRC方法
B.1引言
B.2基本概念
B.3CRC卡片
B.4CRC方法过程
B.5一些问题
B.6文档
B.7设计
附录C在线文档
附录D运行Java程序
D.1从这里开始
D.2编译和运行Java程序
D.3使用Input、FileInput和FileOutput类
D.4使用DrawFrame和DrawPanel类
D.5使用CLASSPATH
附录EInput类
附录FFileInput类
附录GFileOutput类
附录HDrawFrame类
附录IDrawPanel类
附录J参考文献
J.1特性和Java使用
J.2单元测试和重构
J.3面向对象分析、设计和编程
J.4通用程序设计
J.5算法和数据结构
J.6并发和线程
J.7工具
J.8人机交互
书摘插图
第1部分对象和类的编程
第1章简介
目标:这一章主要介绍Java编程初学者需要用到的一些基本概念。
关键字:抽象,趣闻,术语,历史。
1.1引言
正如书名所表达的含义一样,本书是关于Java程序设计的。假设读者已经有了一些基本的计算机知识,熟悉基本的操作,比如文字处理、网上冲浪,或者甚至会编写一些程序。但本书并不要求读者有面向对象程序设计的经验。面向对象(object.oriented)是一个技术术语,它是Java内含的一种程序设计方法,也是一个优秀的程序员所必须掌握的。本书就是一本讲解如何使用Java进行面向对象程序设计的教程。
这一章首先给出一些阅读本书所需要的背景知识。在后续内容中,我们不仅会详细描述Java是什么,更重要的是教会您如何正确和高效地使用Java。学习完本书后,读者应当可以编写一些复杂实用的程序了。编写本书的一个重要原因就是希望读者可以解决一些实际的问题,并且得出相当专业的结论。本书不是简单的JaVa语言初级教程,而是对面向对象编程方法之魅力的充分展示。
对于编程新手,首先需要了解一些基本的术语。程序(program)(通常是长而复杂的)是计算机执行的一系列指令。这些指令说明计算机要做什么,究竟是用作文字处理、电子表格、玩游戏还是其他。程序员(programmer)的角色是使用一门程序设计语言(programming language)创建、编写一些程序,Java 是这样的程序设计语言之一。应用程序设计(application programming)或者开发,是为人们(最终用户)创建一些有实际用途的程序(应用程序)的过程。另一方面,系统程序设计(system programming)是从事编写、修改或者扩展操作系统(operating system)的活动。而操作系统是一个管理着计算机资源,并控制应用程序运行的复杂程序。
如上所述,探讨程序设计和Java语言需要对大量的技术术语有所了解。在学习本书的过程中,如果您发现一些不理解的术语,请试着查看一下本书的术语表(见“附录A”)。
1.2Java简史
20世纪90年代中期,Java第一次引起了关注,许多人开始用它创建Web内容和小型应用程序(applet)。之前创建网页使用的都是HTML语言,但这种语言不能建立复杂网页。接下来的几年中,随着各种语言和工具(XML、XHTIVlL、XSL、CSS、Flash、audio和video流等)的出现,整个Web内容创建环境发生了巨大的变化。虽然早期的JaVa常被当作万维网、编程语言,不过它的用途变化很快,现在已成为服务器端Web应用程序(servlet)而不仅仅是浏览器端应用程序的首选语言了。同时,Java正以各种方式广泛应用于嵌入式系统。按照惯例一直采用汇编语言或C语言编写嵌入式系统,但是Java的属性使它能够与这些语言共存(不是取代它们)。有意思的是,最初开发JaVa的目的就是在嵌入式系统中的应用,因此Java的使用又回到其初衷。
注意:
更为详细的Java发展史请参考Sun公司的Java网站http//java.sun.corn/。
事实上,Java的故事是非常有趣的。我们现在所称的Java来源于一个叫做Oak的编程语言,20世纪90年代初期由Sun微系统公司(Sun Microsystems)的一个开发组设计而成(Oak的名称源于Sun的员工从办公室的窗口看到一棵大橡树而产生的灵感)。开发Oak的目的是用于消费者电器设备的嵌入式系统编程,特别是诸如交互式有线电视(Cable TV)的控制设备和电子家居(electr Dnic home)的管理系统等领域。这些应用需要新的用户接口,要求容易联网并且有一个支持系统开发的编程工具。
实际上,可编程控制设备的消费市场并没有像预期的那样大规模地发展。然而,正如Intemet和Web被广泛使用一样,Oak的研究工作也在继续着。1994年初,为了适应Intemet的发展,Sun公司做出一个决定,把Oak改成基于Web应用的一门Intemet编程语言。原因是Oak包含了许多与Intemet相关的特性,包括“独立于平台的体系结构”,这意味着一些程序无需重新编写便可以运行在全世界各种不同类型的机器上。
1995年1月,Oak更名为Java(因为Oak这个名字已经在其他地方作为商用),逐渐发展成一门适合于建立基于Web应用的高可靠性编程语言。1995年5月,Sun公司发布了第1版Java开发工具包(JaVa Development Kit,JDK),允许全世界的开发者通过Intemet下载和使用Java。一个称为HotJaVa的Web浏览器支持JDK,可以通过嵌入在网页中的小应用程序运行Java程序,这一特性也相继被Microsoft公司和Netscape公司支持。从那时开始,Java就成为了日益流行的语言,如今已经被众多的开发者和软件公司广泛采用。他们开发了更多更好用的开发工具和其他软件。
1998年底,Java 2平台随Sun Java2 SDK标准版(J2SDK)一起发布。Sun公司增强了Java基本的J2SDK,增加了许多扩展环境的新特性,从而进一步发展了Java。这些特性的重点是用新方法构建程序,包括使用类库(class library),或者应用程序接口(Application Programmer Interface,API)。API具备更加广泛的功能,从而可以节省程序员大量的时间。
在2004年下半年,Sun公司发布了Java2平台的重要改进版本J2SE v5.0,其中包括泛型、注释和其他急需的特性。发布的同时,Sun公司还重新使用JDK——_J2SE开发工具包来表示已经实现的Java 2平台。Java这次变革引起了Java使用方式的巨大变化,特别是常用的使用和编写JaVa类库这种操作。而那些没有使用J2SE v5.0的书和程序都已经“过时”了,还可能导致Java用法错误。可以确信的是,本书中不会有Java的“过时”用法。
Java演变的结果是它发展成为一个大范围的、通用的开发系统。Java还非常适合开发那些Web环境之外的大型应用程序。事实上,使用Java可以创建所有的应用程序,特别值得强调的是在网络和通信领域内的广泛应用。正如先前提到的那样,Java已经成为开发中间件(middl,eware)应用程序的非常成功的语言。这些中间件成为运行在网络上的分布式应用程序的核心组件。另外,Java也被许多大学视为程序设计的教学语言。而且,Java也广泛运用在许多嵌入式系统中,例如移动电话、机顶盒和其他消费产品,都使用Java 2平台的一种变体,称为Java 2平台的Micro版本(J2ME)。JaVa正如Oak最初提出。
1.3 Java生逢其时
Java最突出的一个特点,就是在如此短的时间里迅速成为一门非常流行的语言。因此有必要探究JaVa是怎样创造出如此多的奇迹的。
Java并不是一种完美的语言,但很重要的一点是,它几乎融合了编程语言和编程方法所有重要和优秀的思想。另外,也有其他一些因素促使Java获得了成功。
它看起来像用户熟悉的其他一些流行的语言,如c、C++和Smalltalk。这种相似性避免了潜在用户把Java看作“很另类”的一门新语言,而认为不值得花时间去学它的问题。
Web越来越流行,而Java与它是紧密相关的,这种关联给了.Java很大的优势。
编程“领袖”喜欢它。领袖是新的编程语言的早期采用者,即使它们(指语言,而不是领袖)还不成熟,也有助于迅速传播语言信息。
您可以免费获得!这是非常重要的,因为这样可以使潜在用户用最小的代价(至少直接在金钱方面)来试用一种新的语言。
更为有趣的是,关于一种新语言,以上列表显示的最重要特性是社会方面的——想到用它是因为它可以完成人们现在想做的事情。而技术方面的考虑却成了第二位。
总而言之,Java语言拥有良好的特性(面向对象)和最好的价格(免费),在最恰当的地方(在Web上)诞生,又在最合适的时间(正好在Web逐渐流行时)出现。
1.4 Java是什么
Java是一个通用的标志,包括了Java编程语言、开发工具和环境,以及全部已成为标准的Java类库和API函数。很大程度上,所有这些元素都是不可分割的。所以学习Java就是学习以上所有的内容。有时,您见到的“Java编程系统”或“Java 2平台”这些名词强调的不仅仅指编程语言本身。
Java是一种“面向对象的编程语言”。本章将解释面向对象的含义。现在我们需要认识到,一门编程语言是以纯文本格式编写程序的,面向对象的开发是设计和构建系统的现代方法,这一方法通过把面向对象的概念嵌入在编程语言当中得以充分体现。
如今,面向对象的开发方法为解决软件开发过程中出现的严重问题,提供了广泛可行的和实际的解决方案。历史上真正成功的完美的软件开发的确是凤毛麟角,于是面向对象就显得更加重要。其实这里可能还会存在一些误解。有许多已交付的软件没有被用起来、很多软件开发项目存在许多失败之处或者软件交付时间一再推迟而且质量很差等,但实际上还是存在许多非常好和非常可靠的软件。不要以为在您的软件开发过程中,采用了“面向对象”就可以魔术般地解决所有问题。我们能够教给您的是一个概念性的框架和软件开发的方法,而解决更多的问题需要以大量的实践经验为基础。本书的目的也是要把Java中包含的绝大多数知识和经验传授给您,最后就要看你能否努力和高效地学习了。
……