本书沿用了Deitel特色的“程序实况解说”,深入探讨了Java编程语言和JavaAPI。通过完整的语法着色、代码高亮、逐行代码的演练和程序输出,全面地介绍了测试程序的概念。书中首先介绍了使用早期Java类和对象的方法,然后迅速转移到更高级的主题,包括GUI、图形、异常处理、Lambda表达式、数据流、功能接口、对象序列化、并发性、泛型、泛型集合、JDBC等。本书包含数百个完整的Java可运行示例、数千行成熟的Java代码,总结出许多程序开发技巧,帮助你建立强大的应用程序。
以实用的、示例丰富的形式讲述:
Java SE 7和 SE 8
Lambda表达式、数据流、静态方法的默认界面与功能
类、对象、封装、继承、多态、接口
Swing和JavaFX的图形用户界面、图像
集成的异常处理
文件、数据流、对象序列化
多线程和多核性能的并发性
仿泛型和泛型集合
数据库(SQL和JDBC,JavaDB)
使用调试器和API文档
面向对象设计的ATM案例研究
……
推荐序
从1995年Java 1.0版本发布以来我就一直迷恋它,这种迷恋让我逐渐成为了Java开发人员、作家、演讲者、老师和Oracle Java技术大使。在这个过程中,我一直很荣幸能将Paul Deitel称为我的同事,并经常使用和推荐他的Java书籍。这些Java书籍的很多版次都被证明是学习专业课程不可或缺的教科书,所以我们一直使用它们来讲授Java 编程语言。
我认为这本书是很好的资源,一方面是因为它彻底而深入地覆盖了Java概念,另一方面是因为它对有效软件开发进行了必不可少的概念和实践的处理。
本书第3版最让我感到兴奋的一些特性如下:
?用一章专门介绍了Java Lambda表达式和流。首先简单地介绍了函数式编程,接着介绍了Java Lambda表达式,以及如何使用流在集合上执行函数式编程任务。
?本书从第一版就开始处理并发问题,而多核架构的出现让这个问题变得越来越重要。本书的并发性一章中包含一些定时示例(使用Java SE 8中引入的新日期/时间API类),这些示例表现出多核带来的性能提升(相对于单核)。
?JavaFX是Java的GUI/图形/多媒体技术的进一步发展,因此我很高兴能够看到Deitel以“程序实况解说”的教学方式来介绍JavaFX。
感谢Paul Deitel和Harvey Deitel的这本书为软件开发人员提供了良好的资源。
James L. Weaver
Oracle公司Java技术大使
前言
欢迎阅读本书。本书将向软件开发人员介绍最先进的计算技术。
我们专注于软件工程的最佳实践。本书沿用了Deitel特色的“程序实况解说”——用可以在Windows、Linux和OS X最新版本中运行的完整代码(而不是代码片段)来解释相关概念。每个完整的代码示例都伴随着现场样例执行。所有的源代码都可以从下面的网址下载
http://www.deitel.com/books/javafp3/
与作者保持联系
不管你在阅读本书的过程中遇到什么问题,都可以给我们发送邮件,邮箱为
deitel@deitel.com
要了解本书的最新信息,可以访问
http://www.deitel.com/books/jfp3
可以从以下网址订阅Deitel Buzz Online电子邮件新闻简报
http://www.deitel.com/newsletter/subscribe.html
还可以加入Deitel社交网站社区
?Facebook(http://www.deitel.com/deitelfan)
?Twitter(@deitel)
?Google+(http://google.com/+DeitelFan)
?YouTube(http://youtube.com/DeitelTV)
?LinkedIn(http://linkedin.com/company/deitel-&-associates)
模块化结构
本书适合具有高级语言编程背景的程序员阅读。本书的特色是具有以下模块化结构。
简介
?第1章 Java简介和一个Java应用程序的测试驱动
?第2章 Java应用程序简介、输入/输出和运算符
?第3章 类、对象、方法和字符串的简介
其他编程基础
?第4章 控制语句第一部分:赋值、++和--运算符
?第5章 控制语句第二部分:逻辑运算符
?第6章 方法:更深入的探讨
?第7章 数组和ArrayList
?第14章 字符串、字符和正则表达式
?第15章 文件、流和对象序列化
面向对象编程
?第8章 类和对象:更深入的探讨
?第9章 面向对象编程:继承
?第10章 面向对象编程:多态和接口
?第11章 异常处理:更深入的探讨
Swing和JavaFX图形用户界面、Java2D图形
?第12章 Swing GUI组件第一部分
?第13章 图形、Java 2D
?第19章 Swing GUI组件第二部分
?第22章 JavaFX GUI
泛型集合、Lambdas和流
?第16章 泛型集合
?第17章 Java SE 8 Lambdas和流
?第18章 泛型类和方法
并发/数据库
?第20章 并发
?第21章 使用JDBC访问数据库
面向对象设计
?第23章 ATM案例学习第一部分:使用UML的面向对象设计
?第24章 ATM案例学习第二部分:面向对象设计的实现
新特性
本书在前两版基础上所做的更新如下。
?在Java SE 7或者Java SE 8中都很容易使用。本书是随着Java SE 8的发布一起出版的。为了满足不同读者的需求,我们为对Java SE 7、Java SE 8或者对两者都感兴趣的专业人员设计了本书。我们将在第17章介绍Java SE 8特性(参见图1)。
图1 我们将要讨论的Java SE 8特性
?Java SE 8 Lambdas、流、具有默认和静态方法的接口。Java SE 8中最显著的新特性是Lambdas和辅助技术。在第17章你将会看到,使用Lambdas和流的函数式编程可以帮助你更快速、更简洁地编程。与以前的技术编写程序相比(参见图2),函数式编程的bug更少且更容易并行化(可以在多核系统上获得性能提升)。你将会看到,函数式编程让面向对象编程更具吸引力。
?Java SE 7的try-with-resources语句和AutoClosable接口。当你用自动关闭AutoClosable对象的try-with-resources语句使用这些对象时,它们会减少资源泄露的可能性。在本书中,我们使用try-with-resources和AutoClosable对象作为第15章的开头。
?Java安全性。我们是通过CERT Oracle Java安全编码标准来审查本书的:
http://bit.ly/CERTOracleSecureJava
要了解关于CERT的更多内容,请阅读“Java安全编程”部分。
?Java NIO API。我们更新了第15章的文件处理示例,以便使用Java NIO(新IO)API特性。
图2 Java SE 8 Lambdas和流的讨论和示例
?Java文档。我们在本书中提供了Java文档的链接,你可以从这些文档中了解更多关于我们介绍的各种主题的相关信息。Java SE 7文档的链接从如下网址开始:
http://docs.oracle.com/javase/7/
Java SE 8文档的链接从如下网址开始:
http://download.java.net/jdk8/
当Oracle发布Java SE 8时,这些链接可能会发生变化——可能会从如下网址开始:
http://docs.oracle.com/javase/8/
对于本书出版后的任何链接更改,我们都会将其发布在:
http://www.deitel.com/books/jfp3
Swing和JavaFX GUI、Java 2D图形
?Swing GUI和Java 2D图形。我们会在第12章和第19章讨论Java的Swing GUI。Swing目前处于维护模式——Oracle已经停止其开发,接下来只会提供bug修复,然而它仍然是Java的一部分,而且仍被广泛使用。行业中大多数基于GUI的遗留代码都是使用的Swing GUI。我们会在第13章讨论Java 2D图形。
?JavaFX GUI。JavaFX是Java的GUI、图形和多媒体技术的进一步发展。在第12章我们用的是Java FX 2.2(Java SE 7),使用的是Scene Builder——一种快速方便地创建JavaFX GUI的拖放工具。它是一个独立的工具,你既可以单独使用它,也可以在Java IDE中使用它。
并发
?最佳多核性能的并发。我们非常有幸邀请《Java并发编程实战》(Addison-Wesley)的合著者Brian Goetz作为我们的审稿人员。我们使用Java SE 8技术更新了第20章。我们增加了一个使用Java SE 8日期/时间API的parallelSort vs. sort示例,用于对每个操作计时并演示parallelSort在多核系统上的性能提高。我们还包含了使用时间/日期API的Java SE 8并行和序列流处理示例来显示性能提升。最后,我们添加了一个Java SE 8 CompletableFuture示例,它比较了长时间计算的串行和并行执行的相对性能。
?SwingWorker类。我们使用SwingWorker类来创建多线程用户界面。
?并发是一个挑战。存在着多种并发特性。我们指出了大多数开发人员应该使用的特性,并提出了那些应该留给专家使用的特性。
获取正确的货币金额
?货币金额。为了方便,我们在前面的章节中使用double类型来表示货币金额。由于double类型可能会导致错误的货币计算,因此我们使用更复杂的BigDecimal类来表示货币金额。我们会在第8章和第22章介绍BigDecimal类。
对象技术
?面向对象编程。我们使用早期的对象方法来回顾第1章中对象技术的基本概念和术语。读者会在第3章开发第一个自定义类和对象。
?早期对象的真实案例研究。早期的类和对象表示主要由Account、Student、AutoPolicy、Time、Employee、GradeBook、洗牌和发牌的案例研究组成,并逐渐引入更深入的面向对象概念。
?继承、接口、多态和组合。我们使用一系列真实的案例研究来说明这些面向对象概念,并解释了要创建优质的应用程序首先应该选择哪个概念。我们还会讨论Java SE 8对接口概念的改进。
?异常处理。在本书的前几章就包含了基本的异常处理,然后我们在第11章介绍了更深入的异常处理。异常处理对于创建“任务关键”和“业务关键”的应用程序来说非常重要。程序员需要关注的是:“当我调用用于完成工作的组件出现问题时会发生什么?该组件如何表示它出现了问题?”要使用一个Java组件,你不仅需要知道该组件在“事情顺利进展”时的行为,还要知道当“事情无法顺利进展”时该组件会抛出哪种异常。
?Array和ArrayList类。第7章包含了Array类(其中包含用于执行常见数组操作的方法)和ArrayList类(它实现了动态分配数组的数据结构)。这符合在学习如何定义自己的类的同时,使用现有的类进行大量练习的理念。
?案例研究:开发一个ATM的面向对象设计和Java实现。第23章和第24章包含使用UML(Unified Modeling Language,统一建模语言;为面向对象系统建模的行业标准图形化语言)来进行面向对象设计的案例研究。我们设计并实现了一个简单的自动取款机(ATM)软件。我们分析了一个指定如何构建系统的典型需求文档,确定了实现该系统所需要的类,包括这些类需要拥有的属性和这些类需要表现出的行为,并指定了这些类如何交互才能满足系统需求。我们根据设计创建出一个完整的Java实现。我们的一些Java专业课程的参与者经常说这是让他们顿悟的时刻——这个案例研究帮助他们将所有内容联系起来,并让他们真正了解了基于Java的面向对象编程。
泛型集合
?泛型集合表示。我们从第7章的泛型类ArrayList开始介绍。而第16~18章提供了对泛型集合更深入的处理——显示如何使用Java API的内置集合。我们介绍了如何实现泛型方法和类。而Lambdas表达式和流(第17章介绍)尤其适用于泛型集合。
数据库
?JDBC。第21章涵盖了JDBC,并使用了Java DB数据库管理系统。本章介绍了结构化查询语句(SQL),它主要由一个面向对象的案例研究组成,这个案例研究是开发一个由数据库驱动的、用于说明预处理语句的通讯录。
Java安全编程
人们很难创建出可以抵抗病毒、蠕虫和其他恶意软件攻击的、具有工业强度的系统。如今,通过互联网,这类攻击瞬间就可以在全球范围内造成影响。从开发周期的开始就将软件安全性考虑进来,可以大大减少漏洞。我们在讨论和代码示例中包含了各种Java安全编码实践。
人们创建了CERT Coordination Center(www.cert.org)来分析和及时应对攻击。CERT(Computer Emergency Response Team,计算机安全应急响应组)是一个由政府资助的组织,位于卡内基梅隆大学软件工程研究所。CERT会发布和推广各种流行编程语言的安全编码标准,以帮助软件开发人员实现具有工业强度的系统,从而避免会造成开放式系统受到攻击的编程实践。
我们要感谢Robert C. Seacord,他是CERT的安全编程管理员和卡内基梅隆大学计算机科学系的副教授。Seacord先生是我们C11 for Programmers一书的技术评审,他从安全角度审查了我们的C语言程序,并建议我们遵守CERT C语言安全编程标准。这方面的经验还对我们在C++11 for Programmers和本书中使用的编码实践产生了影响。
教学方法
本书包含数百个完整的可运行示例。我们强调的是程序的清晰性,并专注于构建工程设计良好的软件。
语法着色。为了增加可读性,我们为代码添加了语法阴影,这类似于大多数IDE和代码编辑器给代码的语法添加颜色。我们采用的语法着色约定是:
注释用常规字体表示。
关键字用粗字体表示。
常量和字面值用比关键字稍浅一点的黑体字来表示。
所有的其他代码用黑体表示。
代码高亮显示。在每个源代码程序中,关键代码段都被加了一个灰色的矩形框。
使用字体突出显示。为了便于参考,我们用粗体表示每个定义性出现的关键概念和索引的页面引用。我们用加粗的Helvetica字体强调屏幕组件(例如,File菜单)、用Lucida字体强调Java程序文本(例如,int x = 5;)。
网页存取。所有的源代码示例都可以从以下网址下载:
www.deitel.com/books/javafp3
www.pearsonhighered.com/deitel
目标。每章都包含一个Objectives(本章目标)列表。
插图/图。本书包含了大量的图表、线条图、UML图、程序和程序输出。
编程技巧。我们提供了编程技巧来帮助你关注程序开发的重要方面。这些技巧和实践是我们在7年的编程和企业培训经验中积累的精华。最佳编程实践
最佳编程实践让读者关注那些有助于编写更清晰、更易理解和维护的程序的技术。
常见编程错误
指出这些常见的编程错误可以减少读者犯类似错误的可能性。
错误预防技巧
这些技巧包括揭露和删除程序中bug的建议;大多数技巧描述的是如何预防将bug带入Java程序中。
性能技巧
这些技巧强调的是如何让程序运行得更快或者尽量减少它们占用的内存。
可移植性技巧
可移植性技巧可以帮助你编写能够在各种平台上运行的代码。
软件工程意见
软件工程意见强调的是影响软件系统(尤其是大型系统)构建的架构和设计问题。
外观观察
外观观察强调的是图形用户界面的约定。这些观察可以帮助你设计具有吸引力的、对用户友好的、符合行业标准的用户界面。
索引。我们包含了大量的索引。我们使用加粗的页号强调关键术语的定义性出现。
本书使用的软件
本书中需要的所有软件都可以免费从互联网上下载。参见后面的“阅读本书之前的准备”部分来获取每个下载的链接。
本书的大部分示例代码都是用免费的Java Standard Edition Development Kit (JDK) 7编写的。对于Java SE 8模块,我们使用的是OpenJDK的JDK 8早期试用版本。我们在第22章还使用了Netbeans IDE。要了解更多信息,请参见后面的“阅读本书之前的准备”部分。
Java基础:LiveLessons视频培训产品第二版的第I部分、第II部分、第III部分和第IV部分
我们的“Java基础:LiveLessons视频培训产品第二版的第I部分、第II部分、第III部分和第IV部分”(2014年夏季)介绍了当你开始使用Java构建健壮且强大的软件时所需要知道的内容。它包含了三十多个小时的与本书同步的专家培训视频。要了解如何从Informit和Udemy在线购买Deitel LiveLessons视频产品的更多信息,请访问:
http://www.deitel.com/livelessons
如果你已经订阅了Safari Books Online(www.safaribooksonline.com),你还可以获取我们的LiveLessons视频。
致谢
我们要感谢Deitel & Associates有限公司的Abbey Deitel和Barbara Deitel为这个项目投入了大量时间。Abbey参与撰写了本书的第1章和这篇前言,她和Barbara仔细研究了Java SE 8的新功能。
我们有幸与Prentice Hall/Pearson的出版专家团队共同完成该项目。我们要感谢培生科技出版集团的主编Mark L. Taub 19年来给我们的指导和为此付出的精力。我们要感谢Carole Snyder招募了优秀的Java社区成员来进行审稿,并出色地完成了管理审稿过程的工作;感谢Chuti Prasertsith为本书设计的封面;感谢John Fuller管理本书的出版工作。
审稿人员
我们要感谢审稿人员对我们新版本付出的努力——优秀的Oracle团队成员、Oracle Java冠军程序员、其他行业的专家和学者。他们完成了对本书文本和程序的审查,并为提高本书的表述方式提供了无数建议。
第3版本审稿人员:Lance Andersen(Oracle公司)、Danny Coward博士(Oracle公司)、Brian Goetz(Oracle公司)、Evan Golub(马里兰大学)、Huiwei Guan博士(北岸社区学院计算机信息科学系教授)、Manfred Riem(Java Champion)、Simon Ritter(Oracle公司)、Robert C. Seacord(CERT,卡内基梅隆大学的软件工程研究所)、Khallai Taylor(特里顿学院助理教授、孤星学院客座教授)、Jorge Vargas(Java Champion)、Johan Vos(LodgON、Oracle Java Champion)和James L. Weaver(Oracle公司,Pro JavaFX 2一书的作者)。
新版本的其他审稿人员:Soundararajan Angusamy(Sun Microsystems公司)、Joseph Bowbeer(顾问)、William E. Duncan(路易斯安那州立大学)、Diana Franklin(加州大学圣塔芭芭拉分校)、Edward F. Gehringer(北卡罗莱纳州立大学)、Ric Heishman(乔治梅森大学)、Heinz Kabutz博士(JavaSpecialists.eu)、Patty Kraft(圣地亚哥州立大学)、Lawrence Premkumar(Sun Microsystems公司)、Tim Margush(阿克伦大学)、Sue McFarland Metzger(维拉诺瓦大学)、Shyamal Mitra(得克萨斯大学奥斯汀分校)、Peter Pilgrim(顾问)、Manjeet Rege博士(罗彻斯特理工学院)、Susan Rodger(杜克大学)、Amr Sabry(印第安纳大学)、José Antonio González Seco(西班牙安达卢西亚议会议员)、Sang Shin(Sun Microsystems公司)、S. Sivakumar(Astra Infotech Private Limited公司)、Raghavan “Rags” Srinivas(Intuit)、Monica Sweat(乔治亚理工学院)、Vinod Varma(Astra Infotech Private Limited公司)和Alexander Zuev(Sun Microsystems公司)。
对Brian Goetz的特别感谢
我们很荣幸地邀请Brian Goetz(Oracle Java SE 8 Lambda项目的Java语言架构和规范负责人、《Java并发编程实战》一书的作者)对本书进行了详细的审查。他仔细地阅读了每一章,并提供了非常有益的见解和建设性的意见。本书中所有残留的错误都是我们的责任。
我们真诚地欢迎读者提出可以提高本书质量的意见、批评、更正和建议。请将它们发送到:
deitel@deitel.com
我们会及时回复你。我们在编写本书的过程中享受到了很多乐趣,我们希望你也能在本书的阅读中得到乐趣。
Paul Deitel
Harvey Deitel
作者简介
Paul Deitel,Deitel & Associates有限公司的CEO兼CTO,毕业于麻省理工学院,主修信息技术。他获得了Java认证程序员和Java认证开发员称号,并且是一名Oracle Java冠军程序员。在Deitel & Associate有限公司工作的过程中,他已经为世界各地的客户提供了数百节编程课程,这些客户包括思科、IBM、西门子、Sun Microsystems、戴尔、Fidelity、肯尼迪航天中心、美国国家强风暴实验室、白沙导弹试验场、Rogue Wave Software、波音公司、SunGard Higher Education、北电网络公司、彪马、iRobot、Invensys等。他和本书的合著者Harvey M. Deitel博士是全球畅销编程语言教材、专业书籍和视频的作者。
Harvey Deitel博士,Deitel & Associates有限公司的董事长和首席战略官,在计算机领域拥有50多年的经验。Deitel博士获得了麻省理工学院电子工程专业的学士和硕士学位,并获得了波士顿大学的数学博士学位。他拥有丰富的大学教学经验,在1991年与儿子Paul Deitel创办Deitel & Associates有限公司之前,他是波士顿大学计算机科学系的主任并获得了终身任职权。Deitel的出版物获得了国际上的认可,并被翻译为日语、德语、俄语、西班牙语、法语、波兰语、意大利语、简体中文、繁体中文、韩语、葡萄牙语、希腊语、乌尔都语和土耳其语出版。Deitel博士为很多大公司、学术研究机构、政府机关和军方提供了数百场专业编程讲座。
Deitel & Associates有限公司简介
由Paul Deitel和Harvey Deitel创立的Deitel & Associates有限公司是一家国际知名的写作、企业培训和软件开发公司,该公司专注于计算机编程语言、对象技术、手机应用程序开发,以及Internet和Web软件技术方面的培训和写作。公司的培训客户包括很多全球最大的公司、政府机关、军队和学术研究机构。该公司向全球客户提供了由讲师主导的主要编程语言和平台课程,包括Java、Android应用程序开发、Objective-C和iOS应用程序开发、C++、C、Visual C#、Visual Basic、Visual C++、Python、对象技术、互联网和Web编程,并且还在不断提供其他编程语言和软件开发课程。
通过与Prentice Hall/Pearson 39年的合作,Deitel & Associates有限公司出版了很多一流的编程教程、专业书籍(印刷和电子书格式)和LiveLessons视频课程。读者可以通过以下邮件地址联系Deitel & Associates有限公司和作者:
deitel@deitel.com
要了解Deitel Dive-Into系列企业培训课程的更多信息,请访问:
http://www.deitel.com/training
如果贵机构希望获得关于由讲师主导的现场培训的相关建议,可发送邮件到deitel@deitel.com。
想购买Deitel书籍和LiveLessons视频培训的个人可以访问www.deitel.com。公司、政府机关、军队和学术研究组织的大宗团购应该直接与Pearson联系。要了解更多信息,请访问:
http://www.informit.com/store/sales.aspx
阅读本书之前的准备
这部分内容包含你在使用本书之前应该知道的信息。这里介绍的任何信息的更新都会被发布在:
http://www.deitel.com/books/javafp3
此外,我们还提供了用于演示“阅读本书之前的准备”一节使用说明的Dive-Into视频(可以在2014年秋季课程上获取)。
字体和命名约定
我们使用字体来区分屏幕组件(例如,菜单名和菜单项)和Java代码或者命令。我们的约定是:用sans-serif bold Helvetica字体(例如,File菜单)强调屏幕组件,用sans-serif Lucida字体(例如,System.out.println())强调Java代码和命令。
本书使用的软件
本书使用的所有软件都可以免费从互联网上获取。除了专门针对Java SE 8的示例外,所有代码都使用Java SE 7和Java SE 8 JDK(Java标准版开发工具包)进行了测试。
Java标准版开发工具包7(JDK 7)
Windows、OS X和Linux平台的JDK 7可以从如下网址获取:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java标准版开发工具包8(JDK 8)
在本书出版时,Windows、OS X和Linux平台的最新版JDK 8可以从如下网址获取:
https://jdk8.java.net/download.html
当JDK 8的最终版发布时,可以从如下网址获取:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK安装说明
JDK安装程序下载完成后,请务必按照JDK安装说明在你的平台上安装JDK,该安装说明的网址如下:
http://docs.oracle.com/javase/7/docs/webnotes/install/index.html
虽然这些安装说明是关于JDK 7的,但它们同样适用于JDK 8——你需要更新所有版本特定说明中的JDK版本号。
设置PATH环境变量
计算机中的PATH环境变量用于指定查找应用程序时要检索的计算机目录,例如允许你编译和运行Java程序的应用程序(分别称为javac和java)。按照安装说明在你的平台上安装Java,确保你能够正确地设置PATH环境变量。设置环境变量的步骤根据操作系统的不同而有所不同,有时不同的操作系统版本(例如,Windows 7和Windows 8)也会造成设置环境变量步骤的不同。各种平台的说明被列在如下网址中:
http://www.java.com/en/download/help/path.xml
如果你没有正确地在Windows和一些Linux安装中设置PATH变量,那么当你使用JDK的工具时就会收到如下消息:
“java” is not recognized as an internal or external command, operable program or batch file.
在这种情况下,需要返回设置PATH的安装说明并检查你的步骤。如果你下载了JDK的新版本,那么你可能需要在PATH变量中修改JDK安装目录的名称。
JDK安装目录和bin子目录
JDK的安装目录根据平台的不同而有所不同。下面列出的目录用于Oracle的JDK 7 update 51。
?Windows上的32位JDK:
C:\Program Files (x86)\Java\jdk1.7.0_51
?Windows上的64位JDK:
C:\Program Files\Java\jdk1.7.0_51
?Mac OS X:
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
?Ubuntu Linux:
/usr/lib/jvm/java-7-oracle
根据你使用平台的不同,当你使用不同的JDK 7或者JDK 8时,JDK安装文件夹的名称可能有所不同。对于Linux来说,安装位置取决于你使用的安装程序和你使用的Linux版本。我们使用的是Ubuntu Linux。PATH环境变量必须指向JDK安装目录的bin子目录。
在设置PATH时,一定要为你安装的JDK版本使用正确的JDK安装目录名——当新的JDK版本可用时,JDK安装目录名就会改变,以便包括更新的版本号。例如,在我们编写这部分内容时,最新的JDK 7版本是update 51。因此,JDK安装目录名以“_51”结束。
设置CLASSPATH环境变量
当你尝试运行Java程序时,如果你收到这样一条消息:
Exception in thread "main" java.lang.NoClassDefFoundError: YourClass
就表示你的系统中有一个必须要修改的CLASSPATH环境变量。要修复这个错误,就要按照设置PATH环境变量的步骤来定位CLASSPATH变量,然后编辑这个变量的值,使其包含当前目录——通常表示为一个点(.)。对于Windows平台来说,需要在CLASSPATH值的开头添加(这些字符的前后都没有空格)如下内容:
.;
对于其他平台来说,用合适的路径分隔符取代这个分号——通常是一个冒号(:)。
设置JAVA_HOME环境变量
第21章使用的Java DB数据库要求你将JAVA_HOME环境变量设置到你的JDK安装目录中。你用于设置PATH的步骤同样适用于设置其他环境变量,例如JAVA_HOME。
Java集成开发环境(IDE)
有很多可用于Java编程的Java集成开发环境(IDE)。因此,本书中的大多数示例都只使用JDK命令行工具。我们提供了介绍如何下载、安装和使用3种流行IDE的Dive-Into视频(可以在2014年秋季课程中获取)——NetBeans、Eclipse和IntelliJ IDEA。我们在第22章使用的是NetBeans。
NetBeans下载
你可以从如下网址下载JDK/NetBeans包:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
与JDK绑定在一起的NetBeans版本是用于Java SE开发的。在线的JavaServer Faces(JSF)和网络服务章节使用的是NetBeans的Java Enterprise Edition(Java EE)版本,其下载地址如下:
https://netbeans.org/downloads/
这个版本同时支持Java SE和Java EE开发。
Eclipse下载
你可以从如下网址下载Eclipse IDE:
https://www.eclipse.org/downloads/
Eclipse IDE既可以供Java开发人员进行Java SE开发,又可以供Java EE开发人员进行Java Enterprise Edition(Java EE)开发(例如,JSF和网络服务),也就是说,这个版本同时支持Java SE和Java EE开发。
IntelliJ IDEA社区版下载
你可以从如下网址下载免费的IntelliJ IDEA社区版:
http://www.jetbrains.com/idea/download/index.html
免费版本只支持Java SE开发。
获取代码示例
本书的代码示例可以从如下网址下载(位于“Download Code Examples and Other Premium Content”标题下):
http://www.deitelcom/books.javafp3
这些代码示例还可以从如下网址下载:
http://www.pearsonhighered.com/deitel
当你下载ZIP压缩文件时,要写下你在电脑上保存它的位置。
使用ZIP提取工具或者操作系统的内置功能来提取examples.zip的内容,例如7-Zip(www.7-zip.org)、WinZip(www.winzip.com)。本书中的说明都假定这些代码示例位于:
?
Windows的C:\examples中
?
Linux用户账户主文件夹的examples子文件夹中
?
Mac OS X文稿文件夹的examples子文件夹中
Java的Nimbus外观
Java捆绑了一个称为Nimbus的跨平台外观。对于使用Swing图形用户界面(例如,第12章和第19章)的程序来说,我们将测试机配置为使用Nimbus作为默认外观。
为了将Nimbus设置为所有Java应用程序的默认外观,你必须同时在JDK安装文件夹和JRE安装文件夹的lib文件夹中创建一个称为swing.properties的文本文件。将下面的一行代码放置在这个文件中:
swing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
要了解定位这些文件夹的更多信息,请访问http://docs.oracle.com/javase/7/docs/webnotes/install/index.html。[注意:除了独立的JRE外,你的JDK安装文件夹中还嵌套着一个JRE。如果你正在使用一个依赖于JDK的IDE(例如,NetBeans),你可能还需要将swing.properties文件放置在嵌套jre文件夹的lib文件夹中。]
现在你已经准备好使用本书来开始你的Java学习了。我们希望你喜欢这本书!