首页>参考读物>计算机科学与技术>软件与程序设计

Java 2核心技术 卷II:高级特性(原书第7版)
作者 : Cay Horstmann, Gary Cornell
译者 : 陈昊鹏 王浩 姚建平 等
出版日期 : 2006-03-15
ISBN : 7-111-17901-3
定价 : 108.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 842
开本 : 16开
原书名 : Core Java 2, Volume II-Advanced Features (Seventh Edition)
原出版社: Prentice Hall
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书包括Java 2平台标准版(J2SE)的高级用户界面编程和企业特性。与卷Ⅰ(包括最重要的语言和类库特性)一样,本书针对J2SE 5.0做了更新和修订。所有的示例程序都已进行更新,而且经过精心的构思,从而可以阐明针对职业开发者所碰到的实际问题类型的实战性解决方案。

  卷Ⅱ包括注释和其他J2SE 5.0增强特性的新章节,全面涵盖下列内容:
  ■多线程 ■分布式对象 ■数据库 ■JNDI和LDAP ■高级GUI构件 ■本地方法 ■XML处理 ■网络编程 ■集合类 ■高级图形 ■国际化 ■JavaBeans ■注释

  第7版完全修订和更新的内容包括
  ●多线程:包括java.util.concurrent类库、锁、条件对象、future、线程池、线程安全的集合、线程与Swing。
  ●集合类:集合框架、具体的集合和泛型工具方法。
  ●注释和元数据:使用注释来实现编程任务自动化,JDK 5.0的标准注释,源代码级注释处理的apt工具,以及字节码工程。
  ●高级Swing和AWT:列表、树、表和其他高级构件,图像处理和打印。
  ●JavaBeans:包括属性编辑器、定制器和长期持久化。
  ●XML:DOM和SAX解析器、XPath和XSL转换。

图书特色

图书前言

致读者
  您手中的这本书是第7版的《Java 2 核心技术》(Core Java 2)的卷Ⅱ。卷Ⅰ主要介绍了Java语言的一些关键特性;而本卷主要介绍编程人员进行专业的软件开发时需要了解的高级主题。因此,与本书卷Ⅰ和它前面的一些版本一样,我们仍将本书定位于为那些将Java技术运用于实际项目的编程人员提供帮助。
  请注意:如果你是一个经验丰富的开发人员,能够灵活运用像内部类和泛型这样的高级语言特性,那么你就不需要阅读完卷Ⅰ再学习本卷。(不过,本卷会根据适当情况去参考引用卷Ⅰ的有关内容,我们希望读者会购买或者已经购买了卷Ⅰ,当然,读者也可以在任何一本综合介绍Java平台的书中找到所需的背景知识。)
  最后要说明的一点是,编写任何一本书籍都难免会有一些错误或不准确的地方。我们非常乐意听到这方面的内容。当然,我们更希望对这些问题的报告只听到一次。为此,我们创建了一个FAQ、bug修正以及应急方案的网站http://www.horstmann.com/corejava.html。你可以在bug报告网页(该网页的目的是鼓励读者阅读以前的报告)的末尾处添加bug报告来发布bug和问题、给出建议,以便改进本书将来的版本。

关于本书
  本书中的章节大部分是相互独立的。你可以研究令你最感兴趣的任何主题,并可以按照任意顺序阅读这些章节。
  第1章着重介绍多线程,它可以让你编程实现并行运行的多个任务。(一个线程就是程序中的一个控制流。)我们将介绍怎样创建线程,以及怎样对线程进行同步处理。多线程在JDK 5.0中变动很大,我们会告诉你有关的所有新机制。
  第2章的主题是Java 2平台的集合框架。无论何时,只要你想要收集多个对象,并且以后还要对它们进行检索,你都会希望使用一个最适合你的运行环境的集合,而不是仅仅将这些元素随意置入一个向量中。
  这一章将介绍如何利用预先为你构建的标准集合,同时对JDK 5.0泛型集合类做了彻底的修正。
  第3章介绍网络API。Java使得复杂的网络编程工作变得很容易实现。我们将介绍怎样创建连接到服务器上的网络连接,怎样实现你自己的服务器,以及怎样生成HTTP连接。最后我们将讨论半关闭信道以及可中断信道这样的高级问题。
  第4章介绍数据库编程。重点讲解JDBC,即Java数据库连接API,这是用于将Java程序与关系数据库进行连接的API。我们将介绍怎样通过使用JDBC API的核心子集,编写能够处理实际的数据库日常操作事务的实用程序。(如果要完整介绍JDBC API的功能,可能需要编写一本像本书一样厚的书才行。)最后我们简要介绍了层次数据库,探讨了一下JNDI(Java命名及目录接口)以及LDAP(轻量级目录访问协议)。
  第5章介绍分布式对象。我们详细了介绍RMI(远程方法调用)。这个API可以让你运行分布在多台机器上的Java对象。然后简要讨论了CORBA(通用对象请求代理架构),并展示了那些用C++和Java编写的对象是怎样进行通信的。最后讨论了SOAP(简单对象访问协议),并给出了一个实现了Java程序和Amazon Web Service之间进行通信的示例。
  第6章涵盖了没有纳入卷Ⅰ的所有Swing知识,尤其是重要但很复杂的树构件和表格构件。随后我们介绍了编辑面板的基本用法、“多文档”界面的Java实现以及在多线程程序中用到的进度指示器。我们仍着重介绍在实际编程中可能遇到的最为有用的构件,因为对Swing类库进行百科全书般的介绍可能会填满好几卷书,并且只有专业编程人员才感兴趣。
  第7章介绍Java 2D API,你可以用它来创建实际的图形。该章还介绍了抽象窗口操作工具包(AWT)的一些高级特性,这部分似乎应该在卷Ⅰ中做专门介绍。虽然如此,这些技术还是应该成为每一个编程人员工具包的一部分。这些特性包括打印和用于剪切及拖放的API。
  第8章介绍了用于Java平台的构件API—JavaBean。你将会看到怎样编写自己的bean,以及其他编程人员怎样在集成构建环境中对它们进行操作。最后我们展示怎样使用JavaBean的持久性,以某种与适用于长期存储的对象序列化不同的格式来存储自己的数据。
  第9章继续介绍Java安全模式。Java平台一开始就是基于安全而设计的,该章会带你深入内部,查看这种设计是怎样实现的。我们将展示怎样编写用于特殊目的的应用的类加载器以及安全管理器。然后介绍允许使用消息、代码签名、授权以及认证和加密等重要特性的安全API。从JDK 5.0开始,这部分内容被彻底更新了,以便能够利用AES和RSA加密算法。
  第10章讨论了一个我们认为重要性将会不断提升的特性—国际化。Java编程语言是几种一开始就被设计为可以处理Unicode的语言之一,不过Java平台的国际化支持则走得更加深远。因此,你可以对Java应用程序进行国际化,使得它们不仅可以跨平台,而且还可以跨越国界。例如,我们会展示怎样编写一个退休金计算器的applet,对它可以根据本地浏览器的情况使用英语、德语或者汉语进行浏览。
  第11章介绍本地方法,它可以让你调用为微软Windows API这样的特殊机制而编写的各种调用方法。很显然,这种特性具有争议性:使用本地方法,那么Java平台的跨平台本质将会随之消失。虽然如此,每个为特定平台编写Java应用程序的严谨的编程人员都需要了解这些技术。当你编写重要的应用程序的时候,为了你的目标平台,你可能需要求助于操作系统API。我们将通过给出一个怎样从某个Java程序访问Windows注册表API的示例阐明这一点。
  第12章介绍XML。介绍怎样解析XML文件,怎样生成XML以及怎样使用XSL转换。在一个实用示例中,我们将展示怎样在XML中指定Swing格式的布局。我们对该章进行了更新修正,将XPath API纳入其中,它使得“在XML的干草堆中发现绣花针”变得更加容易。
  第13章是本版新增加的一部分。涉及注释、元数据以及在JDK 5.0中新添加的一些特性。可以使用注释向Java程序中添加任意信息(元数据)。我们将展示注释处理器怎样在源码级别或者在类文件级别上收集这些注释,以及怎样运用这些注释来影响运行时的类行为。注释只有在工具的支持下才有用,因此,我们希望我们的讨论能够帮助你根据需要选择有用的注释处理工具。

约定
  我们使用等宽字体表示计算机代码,这种格式在众多的计算机书籍中极为常见。各种图标的含义如下:
  注意:需要引起注意的地方。
  提示:有用的提示。
  警告:关于缺陷或危险情况的警告信息。
  C++注意:本书中有一定的C++注释,用于解释Java程序设计语言和C++语言之间的不同。如果你对这部分不感兴趣,可以跳过。
  
应用编程接口
  Java平台配备有大量的编程类库或者应用编程接口(API)。当第一次使用某个API时,我们添加了一个简短的描述,并用一个API图标进行标识。这些描述可能有点不太规范,但是比起那些正式的在线API文档来说要更具指导性。
  其源代码包含在与本书相伴的代码中的程序都被作为示例程序而将其代码列举了出来;例如
例5-12  WarehouseServer.java
  可以从网站http://www.phptr.com/corejava下载相关代码。

致谢
  写书总是需要付出极大的努力,而重写也并不像看上去那么容易,特别是在Java技术方面,要跟上其飞快的发展速率,更是如此。一本书的面世需要众多有奉献精神的人共同努力,我非常荣幸地在此向整个《Java 2核心技术》团队致谢。
  长期为我们辛勤劳动的Prentice Hall出版社的编辑Greg Doench再次出色地完成了工作,协调处理了这项复杂工程的方方面面。Mary Lou Nohr编辑誊写了手稿,对文字的一致性投入了极大的关注,并且总是能够发现我那日耳曼风格的句式,以及对Java注册商标规则的违反。Vanessa Moore再次出色地完成了本书的制作工作。Prentice Hall出版社和Sun Microsystems出版社的其他许多人也都提供了颇有价值的帮助,但是他们甘愿居于幕后。我希望他们都能够知道我是多么地感谢他们付出的努力。我的感谢还要送给本书以前版本的合著者Gary Cornell,他后来转向其他具有挑战性的领域了。
  我非常感谢找到了很多令人尴尬的错误并提出了许多颇具创见性的建议的评审团队。这一版是由以下人员评审的:Chuck Allison (特约编辑,《C/C++ Users Journal》)、Cliff Berg (iSavvix 公司)、Frank Cohen (PushToTest)、Brian Goetz (首席顾问, Quiotix公司)、Rob Gordon、John Gray (哈特福大学)、Dan Harkey (圣何塞州立大学)、William Higgins (IBM)、Angelika Langer、Mark Lawrence、Bob Lynch (Lynch Associates)、Philip Milne (顾问)、Hao Pham、Stephen Stelting (Sun Microsystems)、Kim Topley (《Core JFC》的作者)和 Paul Tyma (顾问)。对你们的慷慨帮助,我表示万分的感谢!
  以前版本的评审者为:Alec Beaton (PointBase, Inc.)、Joshua Bloch (Sun Microsystems)、David Brown、Dr. Nicholas J. De Lillo (曼哈顿学院)、Rakesh Dhoopar (Oracle)、David Geary (Sabreware Inc.)、Angela Gordon (Sun Microsystems)、Dan Gordon (Sun Microsystems)、Rob Gordon、Cameron Gregory (olabs.com)、Marty Hall (约翰斯·霍普金斯大学应用物理实验室)、Vincent Hardy (Sun Microsystems)、Vladimir Ivanovic (PointBase, Inc.)、Jerry Jackson (ChannelPoint Software)、Tim Kimmet (Preview Systems)、Chris Laffra、Charlie Lai (Sun Microsystems)、Doug Langston、Doug Lea (SUNY Oswego)、Gregory Longshore、Mark Morrissey (俄勒冈研究院)、Mahesh Neelakanta (佛罗里达大西洋大学)、Paul Philion、Blake Ragsdell、Stuart Reges (亚利桑那大学)、Peter Sanders (ESSI 大学, Nice, France)、Devang Shah (Sun Microsystems)、Christopher Taylor、Luke Taylor (Valtech)、George Thiruvathukal、Janet Traub、Peter van der Linden (Sun Microsystems)和Burt Walsh。

Cay Horstmann
旧金山2004年9月

封底文字

作者简介

Cay Horstmann, Gary Cornell:Cay Horstmann: 是圣何塞州立大学计算机科学系教授。他曾经是Preview Systems公司的副总裁和首席技术官,曾任许多大型公司、大学和组织的C++、Java与因特网编程顾问。他还撰写了众多技术和学术专著,并参与编写《Core JavaServer Faces》一书。
Gary Cornell: 曾经撰写或与人合著过20多本计算机畅销书。他是Brown大学的博士,在IBM的Watson实验室做过访问科学家,曾任康涅狄格大学的教授。

译者简介

陈昊鹏 王浩 姚建平 等:暂无简介

译者序

“Core Java”已经连续推出了7版,在广大Java程序员和爱好者中的影响力越来越大。本书覆盖面广,几乎囊括了Java 2标准版的所有方面。以接近实战的实例来展开内容的书写方式,更是容易让读者理解和接受Java的精髓。
  Java已经受到越来越多的程序员的青睐,越来越多的程序员开始从C++转战到Java的领域。但是Java语言的内容包罗万象,而且其自身发展的速度更是惊人,我们在Sun公司的网站上几乎每个月都会看到有新的基于Java的规范出台。JDK 5.0的出现使很多以前对JDK 1.4已经非常熟悉的Java程序员也产生了一些震惊,其新添加的特性将在很大程度上改变以前使用Java的方式。因此,本书在第6版的基础上,对JDK 5.0中的新特性进行了重点介绍,对原有部分章节进行了更新和调整,并且新增加了一些章节,以此来使程序员们能够更加透彻地理解和熟练地掌握这些新特性。
  本卷面向的是已经熟读并掌握了本书卷I内容的读者,或者是已经对Java语言的基本特性相当熟悉的读者。本卷包含了多线程、集合、数据库编程、分布式对象、AWT高级特性、Swing高级特性、JavaBean、安全、国际化、本地方法、XML以及注释等内容,把读者引入了Java世界的更深处。
  我们在翻译本书的过程中力求忠于原著。对于本书中出现的大量的专业术语尽量遵循标准的译法,并在有可能引起歧义之处注上了英文原文,以便读者对照理解。
  全书的翻译由陈昊鹏、王浩、姚建平和龚斌合作完成,楼钢、李伟、郭嘉和方小丽也参与了全书的翻译和审校工作。由于我们水平有限,书中出现错误与不妥之处在所难免,恳请读者批评指正。

推荐序

图书目录

第1章  多线程 1
1.1  什么是线程 2
1.2  中断线程 11
1.3  线程状态 13
1.3.1  新生线程 13
1.3.2  可运行线程 13
1.3.3  被阻塞线程 14
1.3.4  死线程 15
1.4  线程属性 15
1.4.1  线程优先级 15
1.4.2  守护线程 16
1.4.3  线程组 16
1.4.4  未捕获异常处理器 18
1.5  同步 19
1.5.1  竞争条件的一个例子 19
1.5.2  详解竞争条件 22
1.5.3  锁对象 23
1.5.4  条件对象 25
1.5.5  Synchronized关键字 30
1.5.6  同步块 35
1.5.7  Volatile域 35
1.5.8  死锁 36
1.5.9  公平 38
1.5.10  锁测试和超时 38
1.5.11  读/写锁 39
1.5.12  为什么要弃用stop和suspend方法 40
1.6  阻塞队列 41
1.7  线程安全的集合 46
1.7.1  高效队列和散列表 46
1.7.2  写数组的拷贝 47
1.7.3  旧的线程安全的集合 47
1.8  Callable和Future 48
1.9  执行器 51
1.9.1  线程池 51
1.9.2  预定执行 55
1.9.3  控制线程组 55
1.10  同步器 56
1.10.1  障栅 57
1.10.2  倒计时门栓 57
1.10.3  交换器 57
1.10.4  同步队列 58
1.10.5  信号量 58
1.11  线程和Swing 63
1.11.1  “单一线程”规则 64
1.11.2   Swing工作器 68
第2章  集合 74
2.1  集合接口 74
2.1.1  将集合接口和实现分离 74
2.1.2  Java类库中的集合接口和迭代器接口 76
2.2  具体的集合 80
2.2.1  链表 81
2.2.2  数组列表 88
2.2.3  散列集 88
2.2.4  树集 90
2.2.5  优先级队列 95
2.2.6  映射表 96
2.2.7  专用的集和映射表类 99
2.3  集合框架 103
2.3.1  视图和包装器 105
2.3.2  批操作 110
2.3.3  集合与数组的转换 110
2.3.4  框架的扩展 111
2.4  算法 113
2.4.1  排序与混排 114
2.4.2  二分查找 116
2.4.3  简单算法 117
2.4.4  编写你自己的算法 118
2.5  遗留下来的集合 119
2.5.1  Hashtable类 119
2.5.2  枚举 120
2.5.3  属性集 120
2.5.4  栈 121
2.5.5  位集 121
第3章  网络 125
3.1  连接到服务器 125
3.2  实现服务器 128
3.3  发送E-Mail 134
3.4  建立URL连接 137
3.4.1  URL和URI 137
3.4.2  使用URLConnection获取信息 139
3.4.3  提交表单数据 146
3.5  高级套接字编程 153
3.5.1  套接字超时 153
3.5.2  可中断套接字 154
3.5.3  半关闭 158
3.5.4  因特网地址 158
第4章  数据库编程 162
4.1  JDBC的设计 162
4.1.1  JDBC驱动程序类型 163
4.1.2  JDBC的典型用法 164
4.2  结构化查询语言 165
4.3  安装JDBC 168
4.4  JDBC编程的基本概念 169
4.4.1  数据库URL 169
4.4.2  建立连接 169
4.4.3  执行SQL命令 173
4.4.4  高级SQL类型 175
4.4.5  管理连接、语句和结果集 176
4.4.6  组装数据库 177
4.5  执行查询操作 180
4.6 可滚动和可更新的结果集 187
4.6.1  可滚动的结果集 188
4.6.2  可更新的结果集 190
4.7  元数据 193
4.8  行集 200
4.9  事务 208
4.9.1  保存点 209
4.9.2  批量更新 209
4.10  高级连接管理 211
4.11  LDAP概述 212
4.11.1  配置LDAP服务器 213
4.11.2  访问LDAP目录信息 215
第5章  分布式对象 225
5.1  客户与服务器的角色 225
5.2  远程方法调用 227
5.2.1  存根与参数编组 227
5.2.2  动态类加载 229
5.3  配置远程方法调用 229
5.3.1  接口与实现 229
5.3.2  存根类的生成 231
5.3.3  定位服务器对象 231
5.3.4  客户端 235
5.3.5  部署的准备工作 239
5.3.6  部署程序 241
5.4  远程方法中的参数传递 242
5.4.1  传递非远程对象 242
5.4.2  传递远程对象 251
5.4.3  远程对象与equals和hashCode方法 253
5.4.4  克隆远程对象 253
5.5  服务器对象激活 254
5.6  Java IDL与CORBA 258
5.6.1  接口定义语言 259
5.6.2  一个CORBA的例子 262
5.6.3  实现CORBA服务器 269
5.7  远程方法调用与SOAP 274
第6章  高级Swing 279
6.1  列表 279
6.1.1  JList构件 279
6.1.2  列表模式 284
6.1.3  插入和移除值 288
6.1.4  值的绘制 289
6.2  树 293
6.2.1  简单的树 294
6.2.2  结点枚举 305
6.2.3  绘制结点 306
6.2.4  监听树事件 312
6.2.5  定制树模型 316
6.3  表格 323
6.3.1  简单表格 323
6.3.2  表格模型 326
6.3.3  排序过滤器 333
6.3.4  单元格的绘制和编辑 338
6.3.5  对行和列的操作 349
6.3.6  选择行、列和单元格 350
6.4  样式文本构件 356
6.5  进度指示器 361
6.5.1  进度条 361
6.5.2  进度监视器 365
6.5.3  监视输入流的进度 369
6.6  构件组织器 373
6.6.1  分割面板 373
6.6.2  选项卡面板 377
6.6.3  桌面面板和内部框体 381
6.6.4  级联与平铺 383
6.6.5  否决属性设置 385
第7章  高级AWT 396
7.1  绘图操作流程 396
7.2  形状 398
7.3  区域 409
7.4  笔划 412
7.5  着色 418
7.6  坐标变换 423
7.7  剪切 430
7.8  透明与组合 433
7.9  绘图提示 440
7.10  图像的读取器和写入器 444
7.10.1  获得图像文件类型的读取器和写入器 445
7.10.2  读取和写入带有多个图像的文件 446
7.11  图像处理 454
7.11.1  访问图像数据 454
7.11.2  图像过滤 460
7.12  打印 467
7.12.1  图形打印 467
7.12.2  打印多页文件 474
7.12.3  打印预览 475
7.12.4  打印服务程序 483
7.12.5  流打印服务程序 488
7.12.6  打印属性 492
7.13  剪贴板 498
7.13.1  数据传递的类和接口 498
7.13.2  传递文本 499
7.13.3  可传递的接口和数据风格 502
7.13.4  构建一个可传递的图像 504
7.13.5  使用本地剪贴板来传递对象引用 509
7.13.6  通过系统剪贴板传递Java对象 514
7.14  拖放操作 517
7.14.1  放置目标 519
7.14.2  拖曳源 526
7.14.3  Swing对数据传递的支持 531
第8章  JavaBean构件 534
8.1  为何是Bean 534
8.2  编写Bean的过程 535
8.3  使用Bean构造应用程序 537
8.3.1  将Bean打包成JAR文件 538
8.3.2  在开发环境中组合Bean 539
8.4  Bean属性与事件的命名模式 542
8.5  Bean属性的类型 544
8.5.1  简单属性 545
8.5.2  索引属性 545
8.5.3  绑定属性 546
8.5.4  约束属性 547
8.6  BeanInfo类 552
8.7  属性编辑器 556
8.8  定制器 573
8.9  JavaBean持久化 580
8.9.1  JavaBean持久化可用于任何数据 583
8.9.2  一个JavaBean持久化的完整示例 588
第9章  安全 599
9.1  类加载器 599
9.1.1  将类加载器作为名字空间 601
9.1.2  编写你自己的类加载器 601
9.2  字节码校验 605
9.3  安全管理器与访问权限 609
9.3.1  Java2平台安全性 610
9.3.2  安全策略文件 613
9.3.3  定制权限 619
9.3.4  实现权限类 619
9.3.5  定制安全管理器 624
9.3.6  用户认证 630
9.3.7  JAAS登录模块 634
9.4  数字签名 641
9.4.1  消息摘要 642
9.4.2  消息签名 646
9.4.3  消息认证 652
9.4.4  X.509证书格式 654
9.4.5  证书的生成 654
9.4.6  证书签名 657
9.5  代码签名 663
9.5.1  JAR文件签名 663
9.5.2  软件开发者证书 666
9.6  加密 667
9.6.1  对称密码 667
9.6.2  密码流 672
9.6.3  公共密钥密码 673
第10章  国际化 678
10.1  Locale 678
10.2  数字格式 682
10.3  日期和时间 687
10.4  排序 692
10.5  消息格式化 698
10.6  文本文件和字符集 701
10.7  资源包 702
10.7.1  定位资源包 702
10.7.2  属性文件 703
10.7.3  包类 704
10.8  一个完整的例子 705
第11章  本地方法 717
11.1  用Java编程语言调用C函数 718
11.2  数值参数与返回值 722
11.3  字符串参数 723
11.4  访问域 727
11.4.1  访问实例域 727
11.4.2  访问静态域 731
11.5  编码签名 731
11.6  调用Java方法 732
11.6.1  非静态方法 732
11.6.2  静态方法 733
11.6.3  构造器 734
11.6.4  替代方法调用 734
11.7  访问数组元素 738
11.8  错误处理 740
11.9  使用调用API 744
11.10  完整的示例:访问Windows注册表 747
11.10.1  Windows注册表概述 747
11.10.2  访问注册表的Java平台接口 748
11.10.3  以本地方法方式实现注册表访问函数 748
第12章  XML 760
12.1  XML概述 760
12.2  解析XML文档 764
12.3  验证XML文档 773
12.3.1  文档类型定义 774
12.3.2  XML Schema 779
12.3.3  实用示例 781
12.4  使用XPath来定位信息 792
12.5  使用名字空间 797
12.6  使用SAX解析器 799
12.7  生成XML文档 802
12.8  XSL转换 809
第13章  注释 817
13.1  对程序添加元数据 817
13.2  一个示例:注释事件处理器 818
13.3  注释语法 822
13.4  标准注释 825
13.4.1  正规注释 826
13.4.2  元注释 826
13.5  用于源码级注释处理的apt工具 828
13.6  字节码工程 833

教学资源推荐
作者: [美]雷蒙德·盖拉多(Raymond Gallardo) 斯科特·霍梅尔(Scott Hommel) 索娅·坎南(Sowmya Kannan) 琼尼·戈登(Joni Gordon) 沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour)著
作者: Harvey M.Deitel,Paul J.Deitel
作者: (美)布莱恩·R. 霍尔(Brian R.Hall) 凯文·J.斯隆卡(Kevin J.Slonka)著
作者: [美]奥弗·曼德勒维奇(Ofer Mendelevitch) 凯西·斯特拉(Casey Stella) 著 道格拉斯·伊德理恩(Douglas Eadline)
参考读物推荐
作者: [美] 约瑟夫·阿坝哈瑞(Joseph Albahari) 埃里克·约翰森(Eric Johannsen)著
作者: (美)Mark Guzdial,Barbara Ericson 著
作者: 揭金良等
作者: (美)Steve Teixeira