《Java软件开发(第三版)》当当编辑推荐:
本书是《Java软件开发》的最新版本,全面介绍使用编程语言、Java 5进行面向对象的设计和程序开发等内容。本书带领读者从Java 5的基本用法开始,学习创建完整的面向对象的程序。按照“尽早认识对象”的方法,本书覆盖了Java语言的核心内容,包括使用新增的特性,如泛型。
本书的重点是鼓励读者合理创建和使用类,并说明运用什么策略来创建优秀的代码。通过学习本书,您会了解Java程序的工作方式,以及如何以组织和系统的方式设计并实现Java程序。此外,本书还给出了管理Java编程项目的方法,介绍了Ant构建工具和Subverslorl版本控制系统。
测试一直是《Java软件开发》中的重要部分。本书提供新的章节以详细介绍测试驱动开发(TDD)。这种编程方法对程序编写的要求更加严格,强调从一开始就要编写高质量的测试和被测试代码。书中用一系列的案例研究说明了TDD的工作方式,特别是测试代码的策略。
本书反映了Java编程语言的最新变化,再次讨论了程序设计的第一个过程,非常适合用于教学或自学。书中有许多启发性的例子和大型的案例研究,说明如何在创建实际的应用程序时应用编程的核心思想,以及如何有效地使用面向对象的方法创建出健壮、可靠的和经过充分测试的应用程序。
《Java软件开发(第三版)》亚马逊编辑推荐:
本书是专门为Java软件开发课程编写的教材,旨在帮助读者学习Java程序设计和软件开发。 全书分为5个部分。第1部分(第1~10章)阐述了面向对象的Java语言和面向对象开发过程的基本概念和主要思想;第2部分(第11~14章)是有关程序设计的过程,介绍测试驱动开发的原理、过程、工具和技术,并说明是如何进行编程的;第3部分(第15~17章)给出了一些可以用于自学的案例,包括一些用来组织讨论会、扩展程序开发的项目基础内容。第4部分(第18~24章)是Java语言的自学指南和参考。附录部分提供了有关Java编程的一些有用参考资料。 本书适合作为高等院校计算机专业Java语言课程教材,也可以供Java语言自学者阅读使用。
《Java软件开发(第三版)》内容简介 :
本书是专门为Java软件开发课程编写的教材,旨在帮助读者学习Java程序设计和软件开发。
全书分为5个部分。第1部分(第1~10章)阐述了面向对象的Java语言和面向对象开发过程的基本概念和主要思想;第2部分(第11~14章)是有关程序设计的过程,介绍测试驱动开发的原理、过程、工具和技术,并说明是如何进行编程的;第3部分(第15~17章)给出了一些可以用于自学的案例,包括一些用来组织讨论会、扩展程序开发的项目基础内容。第4部分(第18~24章)是Java语言的自学指南和参考。附录部分提供了有关Java编程的一些有用参考资料。
本书适合作为高等院校计算机专业Java语言课程教材,也可以供Java语言自学者阅读使用。
亚马逊目录 :
第1部分 对象和类的编程
第1章 简介 3
1.1 引言 3
1.2 Java简史 3
1.3 Java生逢其时 4
1.4 Java是什么 5
1.5 抽象:编程的重要核心 5
1.6 Java 2平台 6
1.7 Java的体系结构是平台无关的 7
1.8 Java不是玩笑 8
1.9 小结 8
第2章 程序设计基础 9
2.1 引言 9
2.2 抽象和概要 10
2.3 语句的顺序 11
2.4 迭代 13
2.4.1 Java的while语句和复合语句 14
2.4.2 Java的do语句 15
2.5 选择语句 16
2.5.1 Java的if语句 17
2.5.2 Java的break语句 18
2.6 变量 18
2.6.1 变量的命名 19
2.6.2 赋值 19
2.6.3 变量的类型 20
2.6.4 初始化变量 21
2.6.5 常数变量(命名常量) 22
2.6.6 变量和类型检查 22
2.6.7 变量的比较 22
2.7 编写一个简单的Java程序(程序1) 23
2.8 使用注释 26
2.9 输出语句 28
2.10 输入语句 29
2.11 交互式程序 30
2.11.1 程序2——基本的输入输出 30
2.11.2 程序3——使用字符串 31
2.11.3 程序4——使用表达式 34
2.12 小结 39
2.13 复习题 39
2.14 练习题 40
2.15 挑战题 41
第3章 向程序中增加结构 42
3.1 引言 42
3.2 抽象和封装 43
3.3 方法 43
3.3.1 从方法返回值 45
3.3.2 void方法和类型 46
3.3.3 方法的参数 46
3.3.4 多个方法参数 48
3.3.5 递归 49
3.4 如何在程序中使用方法 51
3.4.1 例程:乘法表程序 51
3.4.2 例程:回文程序 53
3.5 过程分解 58
3.6 封装 59
3.6.1 作用域与生存期 59
3.6.2 命名与作用域 60
3.7 更多的运算符 61
3.7.1 递增、递减和赋值运算符 61
3.7.2 算术表达式和类型 62
3.7.3 条件运算符 63
3.8 更多的控制语句 63
3.8.1 for循环语句 63
3.8.2 switch语句 64
3.9 更多的实例程序 65
3.9.1 例程:字符三角形(CharacterTriangle)程序 65
3.9.2 例程:字符矩形(CharacterRectangle)程序 66
3.9.3 例程:二进制转十进制(ConverBinaryToDecimal)程序 68
3.10 小结 74
3.11 复习题 74
3.12 练习题 75
3.13 挑战题 76
第4章 容器类介绍 78
4.1 引言 78
4.2 数组 78
4.2.1 声明数组 78
4.2.2 数组索引 80
4.2.3 Foreach循环 81
4.2.4 数组用作方法参数 81
4.2.5 数组用作返回值 82
4.2.6 求平均数(Mean)程序 82
4.2.7 Array类 85
4.2.8 多维数组 85
4.2.9 数组初始化表达式 87
4.2.10 AddUpColumns程序 87
4.2.11 main方法的参数 88
4.2.12 字符数组和字符串 91
4.3 容器(Container)类 91
4.3.1 ArrayList类 92
4.3.2 容器类和基本类型 93
4.3.3 Foreach循环 95
4.3.4 修改Mean程序 95
4.4 数据文件 97
4.4.1 文本数据 97
4.4.2 用FileInput类读取数据 98
4.4.3 用FileOutput类写数据 100
4.4.4 DisplayTextFile程序 101
4.4.5 Copy程序 103
4.4.6 WordCount程序 106
4.5 小结 108
4.6 复习题 109
4.7 练习题 109
4.8 挑战题 110
第5章 画图 111
5.1 引言 111
5.2 绘图 111
5.2.1 画一条线段 113
5.2.2 画矩形、正方形、椭圆和圆 115
5.2.3 其他的标准图形 116
5.2.4 创建新的图形 117
5.3 绘图的属性 117
5.3.1 颜色 117
5.3.2 线宽 118
5.3.3 图形的填充 118
5.4 绘制文本 119
5.5 程序例程 120
5.5.1 例程:棋盘程序 120
5.5.2 例程:螺旋线程序 122
5.5.3 例程:图形程序 124
5.6 小结 129
5.7 复习题 130
5.8 练习题 130
5.9 挑战题 131
第6章 类和对象 132
6.1 引言 132
6.2 创建新的数据类型 132
6.2.1 栈对象 133
6.2.2 Stack类 134
6.3 通用类 138
6.4 方法的命名和作用域 141
6.5 对象初始化 143
6.5.1 实例变量的直接初始化 143
6.5.2 构造函数(Constructor) 144
6.5.3 实例初始化块 145
6.5.4 多种方法如何选择 146
6.6 对象和引用 146
6.6.1 删除旧的对象 147
6.6.2 对象、引用和基本类型 148
6.6.3 对象与方法参数 149
6.6.4 复制对象 150
6.6.5 相等性和对象 151
6.6.6 null 152
6.6.7 this操作符 153
6.7 静态变量和静态方法 154
6.8 类的几个例子 156
6.8.1 例程:Name类 157
6.8.2 例程:Matrix类 161
6.8.3 例程:Graph类 163
6.9 用类和对象进行程序设计 168
6.9.1 对象用来提供服务 168
6.9.2 类与封装 169
6.10 枚举类型 169
6.11 示例——创建桥牌 171
6.12 小结 176
6.13 复习题 176
6.14 练习题 177
6.15 挑战题 177
第7章 类关系详述 179
7.1 引言 179
7.2 关联 179
7.2.1 对象所有权(OwnerShip) 180
7.2.2 有效地使用关联 180
7.3 继承 180
7.3.1 使用继承 181
7.3.2 protected 182
7.3.3 继承和构造函数 183
7.3.4 超类 184
7.3.5 QueueT与DequeueT的实现示例 184
7.3.6 静态变量和继承 186
7.3.7 隐藏名称 187
7.3.8 方法覆盖和动态绑定 187
7.4 关联与继承之间的抉择 189
7.5 继承的层次体系 191
7.5.1 Object类 191
7.5.2 抽象类 192
7.6 接口和类型一致性 193
7.6.1 可替换性、类型和一致性 194
7.6.2 接口及其实现 195
7.7 比较对象的相等性 197
7.7.1 Class类和Instanceof运算符 198
7.7.2 一个惯例 199
7.8 嵌套(Nested)类 200
7.9 包(package) 201
7.10 例程:再次研究Matrix类 203
7.11 可复用性与组件 211
7.12 小结 212
7.13 复习题 213
7.14 练习题 213
7.15 挑战题 213
第8章 异常 214
8.1 问题是什么 214
8.2 错误的种类 215
8.3 表示异常 216
8.4 抛出异常 216
8.5 捕获异常 218
8.6 finally块 220
8.7 使用异常的重要性 220
8.8 例子 221
8.8.1 带异常的ConvertBinaryToDecimal程序 221
8.8.2 以更复杂方式编写的Copy程序 224
8.8.3 重写WordCount程序 232
8.8.4 带异常处理的Stack类型 234
8.9 小结 237
8.10 复习题 237
8.11 练习题 238
第9章 使用线程的并发 239
9.1 一次做多件事情 239
9.2 线程 239
9.3 使用线程 241
9.4 线程同步 241
9.5 线程调度 242
9.6 示例程序 243
9.6.1 文本时钟 243
9.6.2 共享队列 247
9.6.3 网络应用程序 250
9.7 小结 256
9.8 复习题 256
9.9 练习题 256
第10章 用户界面 257
10.1 引言 257
10.1.1 可视化组件 258
10.1.2 事件和事件驱动系统 258
10.1.3 AWT和Swing 258
10.2 核心的GUI概念 259
10.2.1 例程:HelloGoodbye程序 259
10.2.2 创建窗口 261
10.2.3 创建Swing GUI组件 261
10.2.4 容器和布局管理器 262
10.2.5 布局管理器优点 264
10.2.6 不同的布局管理器 264
10.2.7 窗口显示 265
10.2.8 处理事件 266
10.2.9 运行和终止HelloGoodbye程序 267
10.2.10 HelloGoodbye程序的总结 268
10.3 使用GUI作为文本输入 268
10.4 实例:一个非常简单的文本编辑器 270
10.5 菜单 274
10.6 绘图 278
10.7 小结 278
10.8 复习题 278
10.9 练习题 279
10.10 挑战题 280
第2部分 程序设计过程
第11章 程序设计过程 283
11.1 引言 283
11.1.1 面向对象的软件工程 283
11.1.2 敏捷方法 284
11.1.3 设计文档 284
11.2 为什么要用面向对象方法 285
11.2.1 一个比喻—路线计划 285
11.2.2 问题域 286
11.2.3 封装 286
11.3 开始任务 287
11.3.1 概览 287
11.3.2 初始问题陈述 287
11.3.3 使用故事收集用户需求 288
11.3.4 功能需求和用例 289
11.3.5 分析 290
11.3.6 设计、实现和测试 292
11.3.7 交付、部署和维护 293
11.3.8 复审和迭代 294
11.4 测试策略 295
11.4.1 单元测试和功能测试 295
11.4.2 验收测试 296
11.4.3 调试 297
11.5 UML类、对象和序列图 298
11.5.1 类图 298
11.5.2 包 303
11.5.3 对象图 303
11.5.4 序列图 304
11.5.5 临时表示法 305
11.6 实践和经验 306
11.7 小结 306
11.8 复习题 307
11.9 练习题 307
11.10 挑战题 308
第12章 单元测试 309
12.1 引言 309
12.1.1 测试是什么 309
12.1.2 到底为什么要测试呢 310
12.2 单元测试—第一个示例 310
12.2.1 类及其测试 311
12.2.2 测试是如何运行的 312
12.3 单元测试的核心原则 314
12.3.1 问题 314
12.3.2 此代码不能够进行测试 315
12.4 测试驱动的开发 315
12.4.1 重构 315
12.4.2 重复 316
12.4.3 红色/绿色/重构 316
12.4.4 按照规范进行测试 318
12.5 TestNG框架 318
12.5.1 测试循环 319
12.5.2 TestNG测试类 319
12.5.3 配置方法 320
12.5.4 测试方法 320
12.5.5 异常 321
12.5.6 断言 321
12.5.7 testng.xml文件 322
12.6 扩展Person类 323
12.6.1 重构 327
12.6.2 无效日期 329
12.6.3 日期验证 331
12.6.4 类的状态 333
12.6.5 现在在哪里呢 337
12.7 小结 337
12.8 复习题 338
12.9 练习题 338
12.10 挑战题 339
第13章 测试驱动的程序设计策略 340
13.1 引言 340
13.2 第一步—搜索文件 341
13.2.1 真实文件与模拟文件 343
13.2.2 使用真实文件 343
13.2.3 到目前为止的回顾过程 347
13.2.4 模拟 347
13.2.5 完整的FileNameSearch类 352
13.3 GUI 353
13.3.1 GUI布局 353
13.3.2 测试GUI布局 353
13.3.3 GUI类 357
13.3.4 创建GUI 361
13.3.5 选择按钮 363
13.3.6 模拟对象 366
13.3.7 搜索按钮 368
13.4 完整的搜索器 371
13.5 小结 372
13.6 复习题 372
13.7 练习题 373
13.8 挑战题 373
第14章 编程工具 374
14.1 引言 374
14.2 项目结构 374
14.2.1 src目录 375
14.2.2 build目录 375
14.2.3 lib目录 376
14.2.4 doc和javadoc目录 376
14.2.5 reports目录 376
14.2.6 deploy目录 376
14.2.7 保证文件安全 377
14.3 Ant-构建工具 377
14.3.1 Ant概述 378
14.3.2 项目元素 381
14.3.3 属性 381
14.3.4 path元素 382
14.3.5 clean目标 383
14.3.6 init目标 384
14.3.7 compile.classes目标 384
14.3.8 compile.tests目标 385
14.3.9 test目标 385
14.3.10 run目标 386
14.3.11 javadoc目标 386
14.3.12 deploy目标 387
14.3.13 all目标 388
14.3.14 使用构建文件 388
14.4 版本控制 389
14.4.1 CVS和Subversion 389
14.4.2 Subversion系统信息库 390
14.4.3 开始项目 390
14.4.4 检验修订版 391
14.4.5 更新、登记和冲突 392
14.4.6 添加、删除和移动 393
14.4.7 修订 393
14.4.8 Status和Logs 394
14.4.9 diff 394
14.4.10 复制和分支 395
14.4.11 进一步研究 395
14.5 集成开发环境 396
14.5.1 使用IDE 396
14.5.2 IDE和项目 396
14.5.3 GUI构建器 399
14.5.4 调试器 400
14.5.5 UML工具 401
14.5.6 命令行工具 402
14.5.7 项目Web站点 403
14.6 小结 403
14.7 复习题 403
14.8 练习题 404
14.9 挑战题 404
第3部分 程序开发案例
第15章 案例研究概述 407
15.1 引言 407
15.2 案例研究 408
15.3 案例研究的介绍 408
第16章 邮件合并系统 410
16.1 引言 410
16.2 简要介绍 410
16.3 回顾——一些研究 411
16.3.1 XML 411
16.3.2 DOM和SAX 413
16.3.3 JDOM和dom4j 414
16.3.4 初始试验 414
16.4 数据存储 422
16.4.1 初始分析 422
16.4.2 初始设计思想 423
16.4.3 具体设计 426
16.5 GUI设计 435
16.5.1 初始需求分析 435
16.5.2 GUI的体系结构和设计 435
16.6 显示邮件合并列表 435
16.6.1 鼠标操作 436
16.6.2 显示邮件合并细节 440
16.7 菜单和操作 449
16.8 更多操作 462
16.9 练习题 462
16.10 挑战题 462
第17章 行人交叉路口模拟 463
17.1 引言 463
17.2 最初的问题定义 463
17.3 最初的思考 464
17.3.1 交通灯 464
17.3.2 车辆指挥灯 464
17.3.3 行人指挥灯 465
17.4 首轮设计 466
17.5 获得GUI 479
17.6 GUI设计 491
17.7 控制中的问题 498
17.8 进一步设计 509
17.9 小结 509
17.10 练习题 509
17.11 挑战题 509
第4部分 Java编程语言详述
第18章 Java语言参考 513
18.1 引言 513
18.2 语法和语义 513
18.3 基本描述 514
18.4 示例程序 514
18.5 小结 516
第19章 变量、类型和表达式 517
19.1 引言 517
19.2 注释 517
19.2.1 目的 517
19.2.2 概述 517
19.2.3 语法 517
19.2.4 描述 518
19.2.5 例子 519
19.3 标识符 522
19.3.1 目的 522
19.3.2 概述 522
19.3.3 描述 522
19.3.4 例子 523
19.4 Unicode转义符 523
19.4.1 目的 523
19.4.2 概述 523
19.4.3 描述 523
19.4.4 例子 524
19.5 字面量 524
19.5.1 目的 524
19.5.2 概述 524
19.5.3 描述 524
19.5.4 例子 524
19.6 类型 526
19.6.1 基本类型 526
19.6.2 引用类型 527
19.6.3 自动类型转换 527
19.7 作用域 528
19.7.1 目的 528
19.7.2 概述 528
19.7.3 描述 528
19.7.4 例子 529
19.8 变量 529
19.8.1 变量声明 530
19.8.2 变量初始化 531
19.8.3 数组变量 533
19.9 表达式和运算符 537
19.9.1 基本表达式 537
19.9.2 运算符 538
19.10 源文件 547
19.11 小结 548
19.12 复习题 548
19.13 练习题 548
第20章 程序流程控制 550
20.1 引言 550
20.2 选择 550
20.2.1 if语句 550
20.2.2 switch语句 554
20.3 迭代 558
20.3.1 while循环语句 559
20.3.2 do循环语句 561
20.3.3 for循环语句 563
20.3.4 循环行为检验 566
20.3.5 foreach循环语句 567
20.4 跳转语句 568
20.4.1 break语句 568
20.4.2 continue语句 570
20.4.3 return语句 572
20.5 递归 574
20.6 小结 575
20.7 复习题 575
20.8 练习题 575
第21章 类和包 576
21.1 引言 576
21.2 类 576
21.2.1 类声明 576
21.2.2 public、private和protected 578
21.2.3 实例变量 579
21.2.4 实例初始化器 580
21.2.5 静态变量或类变量 581
21.2.6 静态初始化器 583
21.2.7 方法 584
21.2.8 静态方法或类方法 588
21.2.9 构造函数 590
21.2.10 关键字this 593
21.3 顶层类 595
21.3.1 目的 595
21.3.2 概述 595
21.3.3 语法 595
21.3.4 描述 595
21.4 嵌套类 595
21.4.1 顶层嵌套类 595
21.4.2 成员类 598
21.4.3 局部类 602
21.4.4 匿名类 605
21.5 枚举类型 607
21.5.1 目的 607
21.5.2 概述 607
21.5.3 语法 608
21.5.4 描述 608
21.5.5 例子 609
21.6 包 610
21.6.1 目的 610
21.6.2 概述 611
21.6.3 语法 611
21.6.4 描述 611
21.6.5 例子 612
21.7 静态加载 613
21.7.1 目的 613
21.7.2 概述 613
21.7.3 语法 613
21.7.4 描述 613
21.7.5 例子 614
21.8 小结 615
21.9 复习题 615
21.10 练习题 615
第22章 继承和接口 616
22.1 引言 616
22.2 继承 616
22.2.1 继承的概念 616
22.2.2 关键字private和protected与继承性 618
22.2.3 Final类 620
22.2.4 方法覆盖(Overriding) 621
22.2.5 Final方法 623
22.2.6 方法调用表达式 624
22.2.7 修改后的成员类名字查找 630
22.2.8 构造函数与继承 631
22.2.9 超类(Super)和隐含命名 633
22.2.10 抽象(Abstract)类 634
22.2.11 抽象(Abstract)方法 635
22.2.12 从类对象继承的方法 637
22.3 接口 642
22.3.1 接口声明 643
22.3.2 实现 645
22.4 注释(Annotation) 647
22.4.1 目的 648
22.4.2 概述 648
22.4.3 语法 648
22.4.4 描述 648
22.4.5 例子 649
22.5 小结 649
22.6 复习题 649
22.7 练习题 649
第23章 异常处理 650
23.1 引言 650
23.1.1 异常类 650
23.1.2 Try、Catch与Finally 652
23.1.3 异常的传递 656
23.1.4 抛出(Throws)异常声明 657
23.1.5 关键字throw 659
23.2 小结 661
23.3 复习题 661
第24章 线程与并发 662
24.1 引言 662
24.2 Thread类 663
24.2.1 目的 663
24.2.2 概述 663
24.2.3 语法 663
24.2.4 描述 664
24.2.5 例子 665
24.3 同步方法 669
24.3.1 目的 669
24.3.2 概述 669
24.3.3 语法 669
24.3.4 描述 669
24.3.5 例子 670
24.4 同步语句 673
24.4.1 目的 673
24.4.2 概述 673
24.4.3 语法 673
24.4.4 描述 673
24.4.5 例子 673
24.5 小结 674
24.6 复习题 674
24.7 练习题 675
第5部分 附录
附录A 术语表 679
附录B CRC方法 685
附录C 在线文档 688
附录D 运行Java程序 691
附录E Input类 694
附录F FileInput类 702
附录G FileOutput类 704
附录H DrawFrame类 708
附录I DrawPanel类 711
附录J 参考文献 713
……
当当书摘插图 :
第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.2 Java简史
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中包含的绝大多数知识和经验传授给您,最后就要看你能否努力和高效地学习了。
……