Java从入门到精通(第2版)

978-7-115-37512-4
作者: 龙马高新教育 魔乐科技(MLDN)软件实训中心 张玉宏
译者:
编辑: 张翼
分类: Java

图书目录:

详情

本书面向Java的零基础读者,介绍基础入门知识和实际操作技巧。全书紧贴软件开发的实际需求,首先向读者展示语言的背景知识和应用范围,之后通过实例和自测,系统讲解相关知识点,同时兼顾实际开发项目经验。为了增强实用性,光盘中还特别赠送了精选的考试认证、求职面试等题库,供读者研究学习。最后,为帮助初入职场的从业者顺利进入角色,还在光盘中赠送了职业规划建议及相关开发文档。

图书摘要

版权信息

书名:Java从入门到精通(第2版)

ISBN:978-7-115-37512-4

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

• 策  划 龙马高新教育

  编  著 魔乐科技(MLDN)软件实训中心

  主  编 张玉宏

  责任编辑 张 翼

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410

  反盗版热线:(010)81055315


本书以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍了Java的相关知识和实战技能。

本书第1篇【基础知识】主要讲解Java的基础知识、开发工具、程序要素、常量与变量、数据类型、运算符、表达式与语句、程序控制结构、数组、类和对象、方法以及枚举等;第2篇【核心技术】主要讲解类的封装、继承与多态、抽象类与接口、类的专题研究、Java常用类库、String类、对象的引用与传递、包及访问权限、异常的捕获与处理、Java类集框架以及Annotation等;第3篇【高级应用】主要讲解多线程、文件I/O操作、Java Applet网页小程序、Java网络程序设计、Java数据库编程以及DAO设计模式等;第4篇【项目实战】通过OA办公系统和电子商务网站平台两个实战案例,介绍了完整的Java开发流程。

本书所附DVD光盘中包含了与图书内容全程同步的教学录像。此外,还赠送了大量相关学习资料,以便读者扩展学习。

本书适合任何想学习Java的读者,无论您是否从事计算机相关行业,是否接触过Java,均可通过学习快速掌握Java的开发方法和技巧。


“从入门到精通”系列是专为初学者量身打造的一套编程学习用书,由知名计算机图书策划机构“龙马高新教育”精心策划而成。

本书主要面向Java 初学者和爱好者,旨在帮助读者掌握Java基础知识、了解开发技巧并积累一定的项目实战经验。当读者系统地学习完本书内容之后,就可以骄傲地宣布——“我是一名真正的Java 程序员了!”。

荀子曰:不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。

实践对于学习的重要性由此可见一斑。纵观当前编程图书市场,理论知识与实践经验的脱节,是很多Java 图书的写照。为了杜绝这一现象,本书立足于实战,从项目开发的实际需求入手,将理论知识与实际应用相结合。目标就是让初学者能够快速成长为初级程序员,并拥有一定的项目开发经验,从而在职场中拥有一个高起点。

本书总结了作者多年的教学实践经验,为读者设计了最佳的学习路线。

► 零基础、入门级的讲解

无论读者是否从事计算机相关行业,是否接触过Java,是否使用Java开发过项目,都能从本书中找到最佳起点。

► 超多、实用、专业的范例和项目

本书结合实际工作中的范例,逐一讲解Java的各种知识和技术。最后,还以实际开发项目来总结本书所学内容,帮助读者在实战中掌握知识,轻松拥有项目经验。

► 随时检测自己的学习成果

每章首页罗列了“本章要点”,以便读者明确学习方向。每章最后的“实战练习”则根据所在章的知识点精心设计而成,读者可以随时自我检测,巩固所学知识。

► 细致入微、贴心提示

本书在讲解过程中使用了“提示”、“注意”、 “技巧”等小栏目,帮助读者在学习过程中更清楚地理解基本概念、掌握相关操作,并轻松获取实战技巧。

► 45小时全程同步教学录像

涵盖本书所有知识点,详细讲解每个范例及项目的开发过程及关键点。帮助读者更轻松地掌握书中所有的Java程序设计知识。

► 超多王牌资源大放送

赠送大量超值资源,包括48小时Java项目实战教学录像 、 14小时Oracle项目实战教学录像、857页Java SE类库查询手册、Eclipse常用快捷键说明文档、Eclipse提示与技巧电子书、50个Java常见面试题及解析电子书、21个Java常见错误及解决方案电子书、25个Java高效编程技巧、Java程序员职业规划、Java程序员面试技巧等。

01.光盘运行后首先播放片头动画,之后进入光盘的主界面。其中包括【课堂再现】、【Java和Oracle项目实战教学录像】、【Java培训】三个学习通道,和【范例源码】、【实战练习答案】、【赠送资源】、【帮助文件】、【退出光盘】五个功能按钮。

02.单击【课堂再现】按钮,进入多媒体同步教学录像界面。在左侧的章号按钮上单击鼠标左键,在弹出的快捷菜单上单击要播放的节名,即可开始播放相应的教学录像。

03.单击【Java和Oracle项目实战教学录像】按钮,打开教学录像文件夹,在其子文件夹中选择要播放的视频文件,即可播放录像。

04.单击【范例源码】按钮,可打开本书范例源码文件夹。

05.单击【实战练习答案】按钮,可在打开的文件夹中看到实战练习答案。

06.单击【赠送资源】按钮可以查看随本书赠送的资源。

07.单击【帮助文件】按钮,可以打开“光盘使用说明.pdf”文档,该说明文档详细介绍了光盘在电脑上的运行环境及运行方法等。

08.单击【退出光盘】按钮,即可退出本光盘系统。

更多学习资料,请访问www.51pcbook.cn。

本书由龙马高新教育策划,河南工业大学张玉宏博士任主编(负责第0~12章及第19~20章),王云侠老师(负责第13~18章)、国家开放大学郝智红博士(负责第21~24章)和魏蔚博士(负责第25~29章)任副主编,参加资料整理的人员有王凯旋、蔡耀、李冰凯、李瑜、高泽民、宋文举、靳浩东、梁成浩、孔万里、李震、赵源源、乔娜、周奎奎、王果、陈小杰、左琨、邓艳丽、崔姝怡、侯蕾、左花苹、刘锦源、普宁、王常吉、师鸣若、钟宏伟、陈川、刘子威、徐永俊、朱涛和张允等。

在编写过程中,我们竭尽所能地将最准确的Java理解和感悟呈现给读者,但也难免有疏漏和不妥之处,敬请不吝指正。若您在学习过程中遇到困难或疑问,或有任何建议,可发送电子邮件至zhangyi@ptpress.com.cn。

 

编者


本章视频教学录像:1小时30分钟

Java语言是一门优秀的编程语言,它的优点是与平台无关,可以实现“一次编写,到处运行”。Java是一门面向对象的计算机语言,它简洁高效,具有高度的可移植性。本章介绍Java的来源、基本思想、技术体系、应用领域和前景以及学习Java的技术路线。

本章要点(已掌握的在方框中打钩)

□ 了解Java的来源

□ 了解Java的基本思想

□ 了解Java的技术体系、应用前景

Java源自Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发一个分布式代码系统,这样就可以将通信和控制信息发给电冰箱、电视机、烤面包机等家用电器,对它们进行控制和信息交流。最初Green项目的工程师们准备采用C++,但C++比较复杂,最后经过裁剪、优化和创新,1990年,由Sun公司的James Gosling(詹姆斯·高斯林)领导的小组基于C++开发了一种与平台无关的新语言Oak(Java的前身)。Oak的取名缘于Gosling办公室外有一棵枝繁叶茂的橡树,这在硅谷是一种很常见的树。

Oak主要用于为各种家用电器编写程序,Sun公司曾以Oak语言投标一个交互式电视项目,但结果被SGI(硅图公司——1982年成立于美国)打败。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划,Oak几乎面临夭折,恰巧这时Mark Ardreesen(美国软件工程师,曾创办网景通讯公司)开发的Mosaic浏览器(互联网历史上第一个获普遍使用且能够显示图片的网页浏览器)和Netscape浏览器(网页浏览器——市占率曾位居主导地位)启发了Oak项目组成员,让他们看见了Oak在互联网上应用的前景,于是他们改造了Oak。

Java主要设计者JamesGosling

Java标志

Java吉祥物Duke

1995年1月,Oak被改名为Java,这是因为Oak是一家显卡制造商已注册的商标。Oak若想发展壮大,法律层面上的改名势在必行。Java是印度尼西亚“爪哇(注:Java的音译)”岛的英文名称,该岛因盛产咖啡而闻名。这就是Java的官方商标是一杯浓郁的咖啡的原因。Sun随后开发了HotJava浏览器,得到了Sun公司时任首席执行官Scott McNealy的支持,触发了Java进军Internet。

Java技术是由美国Sun公司倡导和推出的,它包括Java语言和Java Media APIs、Security APIs、Management APIs、Java Applet、Java RMI、JavaBean、JavaOS、Java Servlet、JavaServer Page 以及JDBC等。Java技术的发展重要历程简述如下(右图所示的是Java语言的吉祥物Duke)。

1996年2月,Sun公司发布Java芯片系列,包括PicoJava、MicroJava和UltraJava,并推出Java数据库连接范式JDBC(Java DataDase Connectivity),并给出对应的API(应用程序接口)。

1996年4月,Microsoft公司、SCO公司、Apple公司(苹果电脑公司)、NE C公司等获得Java的许可证。Sun公司宣布允许HP、Apple、日立、IBM、Microsoft、Novell、SGI、Tamdem、SCO等多家大型信息公司将Java平台嵌入到其操作系统中。

1996年5月,Sun公司在旧金山(San Francisco)举行了第一届JavaOne世界Java开发者大会。Sun公司在大会上推出诸如CommerceAPIs等一系列Java平台新技术及新的HotJava开发环境等。

1996年6月,Sun公司发布JSP 1.0,这里的JSP(JavaServer Pages)是由Sun 公司倡导、众多公司协同参与一起建立的一种动态网页技术标准。Sun公司同期还推出JDK(Java开发工具包)1.3和Java Web Server 2.0。

提示

由Java源代码编译出的二进制文件叫.class文件,如果使用十六进制编辑器(如UltraEdit)打开这个.class文件,你会发现该文件最前面的32位将显示为CA FE BA BE,连接起来也就是词组“CAFE BABE ”(咖啡宝贝),如下图所示。诸如James Gosling等这类编程天才都是在这些不经意的地方“雁过留声,人过留名”。

文件中的“咖啡宝贝”Java class。

1996年9月,Addison-Wesley和Sun公司推出Java虚拟机规范和Java类库。

1997年4月,第二届JavaOne世界大会召开,参与者逾一万人,创当时全球同类会议规模纪录。Java已深得业界认可。

1998年12月,Java2企业平台J2EE发布。

1999年6月,Sun公司针对不同用户群,发布了Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)。

2000年9月,Sun公司发布JSP1.2和Java Servlet 2.3 API。

2001年9月,J2EE1.3发布。

2002年2月,J2SE1.4发布,自此Java的计算能力有大幅提升。

2004年9月,J2SE1.5发布,成为Java语言发展史上的又一个里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0。

2005年6月,JavaOne大会召开,Sun公司公开Java SE 6。此时,Java的各种版本已经更名,取消了其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。

2006年12月,Sun公司发布JRE 6.0。

2009年4月,Oracle (甲骨文)公司以总额74亿美金收购Sun公司,Java版权归Oracle公司所有。

2009年12月,Sun公司发布企业版升级版Java EE 6。

2011年7月28日,Oracle公司发布Java SE 7。

在过去,大多数程序在移植到不同的操作系统平台(如UNIX、Linux和Windows等)上时,程序员通常不得不重新调试与编译这些程序,有时甚至需要重写。Java最大的优点就是在设计之初就秉承了“一次编写,到处运行”思想(Write Once, Run Everywhere,简称WORE,有时也写成“Write Once, Run Anywhere”,简称WORA),它是Sun 公司为宣传Java语言的跨平台特性而提出的口号。

Java的跨平台性是指在一种平台下用Java语言编写的程序可以在编译后不用经过任何更改,就能在其他平台上运行。比如,一个在Windows下开发出来的程序,在运行时可以无缝地部署到Linux、UNIX或Mac OS(苹果操作系统)环境之下。反之亦然,在Linux下开发的Java程序,同样可在Windows等其他平台上运行。Java是如何实现跨平台性的呢?我们可用下面的图来比拟说明。

比如说,中国人(一个平台)说的一句问候的话语:“你好,世界!”,美国人、法国人、德国人及日本人(其他平台)都能理解中国人的“问候”。之所以能这样,这得益于英文、法语、德语及日语翻译们的翻译。Java语言聪明之处在于,它用一个名为Java虚拟机(JVM—Java Virtual Machine)的机制屏蔽了这些“翻译”的细节。各国人尽管尽情地表达(编写Java代码),JVM在背后默默地帮他们干了“翻译沟通”的活。正是因为有JVM的存在,Java程序员才可以做到“一次编写,到处运行”——这正是Java的灵魂所在。JVM的思想将在1.6节给予更为详细的说明。

仅从传统意义上来看, Java技术体系包括以下几个组成部分:

什么是JDK?什么又是JRE?两者有什么区别与联系?

JDK:我们把Java编程语言、Java API类库和Java虚拟机这三部分统称为JDK(Java Development Kit,Java 开发工具包)(注:JDK包括JRE,Java基本类库,Java开发工具,如编辑器,调试器等)。JDK是用于支持Java程序开发的最小环境。有时为了方便起见,会以JDK来代替整个Java技术体系。

JRE: 我们把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment,Java运行时环境),JRE是支持Java程序运行的标准环境。

二者区别与联系:在Java技术体系上, JDK范围涵盖JRE,JRE是JDK的子集。如果仅仅是运行Java程序,用户计算机只需配置JRE环境;如果用户还想自己开发Java程序,则需要用户安装配置JDK环境。

按照Java技术关注的重点业务领域来划分,Java技术体系可以分为4个平台,如下图所示。

(1)Java SE(Standard Edition,标准版):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这个版本2005年以前称为J2SE。

(2)Java EE(Enterprise Edition,企业版):以Java SE为基础,往外延伸,增加了许多支持企业内部使用的扩充类,支持使用多层架构的企业应用(如ERP—企业资源计划系统、CRM—客户关系管理系统的应用)的Java平台,除了提供Java SE API外,还对其做了大量的扩充并提供了相关的部署支持。这个版本2005年以前称为J2EE。

(3)Java ME(Micro Edition,微型版):Java ME同样以Java SE为基础,但向内精简。它所支持的只有核心类的子集合,它支持Java程序运行在移动终端(手机、PDA—掌上电脑)上的平台,加入了针对移动终端的支持。这个版本2005年以前称为J2ME。Java的微型版主要是进行嵌入式开发,目前渐渐被Android开发所替代。

(4)Java Card(智能卡版):由于服务对象定位更加明确化,Java Card版本比Java ME(微型版)更加精简。它支持一些Java小程序(Applets)运行在小内存设备(如容量小于64K的智能卡)的平台上。

但是,不管Java的技术平台如何划分,都是以Java SE为核心的,所以掌握Java SE最为重要,这也是本书的主要讲解范围。如果要想进行Java EE的开发,Java SE是其中必要的组成部分,这也就是为什么在学习Java EE之前要读者一定要有扎实的Java SE基础了。

Java作为Sun公司推出的新一代面向对象程序设计语言,特别适于互联网应用程序的开发,但它的平台无关性直接威胁到了Wintel(即微软的Windows操作系统与Intel CPU所组成的个人计算机)的垄断地位,这表现在以下几个方面。

信息产业的许多国际大公司购买了Java许可证,包括IBM、Apple、DEC、Adobe、SiliconGraphics、HP、TOSHIBA以及Microsoft等。这一点说明,Java已得到了业界的高度认可。

众多的软件开发商开始支持Java软件产品。例如Inprise公司的JBuilder、Oracle公司自己维护的Java开发环境JDK与JRE。

Intranet正在成为企业信息系统最佳的解决方案,而其中Java将发挥不可替代的作用。Intranet的目的是将Internet用于企业内部的信息类型,它的优点是便宜、易于使用和管理。用户不管使用何种类型的机器和操作系统,界面是统一的Internet浏览器,而数据库、Web页面、Applet、 Servlet、JSP等则存储在Web服务器上,无论是开发人员还是管理人员,还是普通用户都可以受益于该解决方案。

虽然Sun公司被收购了,但Java作为Sun公司的优质资产被母公司Oracle公司高度重视,因此仍然得以继续“茁壮成长”。根据TIOBE公布的2015年1月份编程语言前10名排行榜(如下表所示), Java与C和Objective-C,名列前三甲。虽然不同的月份,前10名的地位可能有互换,但Java在整个编程领域的前三甲的地位基本是不动摇的。这从侧面可以反映,Java的无处不在,其应用领域和前景非常广阔。

当前排名(2015/1)

历史同比排名(2014/1)

地位排名趋势

编程语言

市场份额

1

1

=

C

16.703%

2

2

=

Java

15.528%

3

3

=

Objective-C

6.953%

4

4

=

C#

6.705%

5

5

=

PHP

5.045%

6

6

=

JavaScript

3.784%

7

9

Python

3.274%

8

8

=

Pert

2.613%

9

13

PL/SQL

2.256%

10

17

MATLAB

2.014%

从桌面办公到网络数据库,从PC机到嵌入式移动平台,从Java小应用程序(Applet)到架构庞大的J2EE企业级解决方案,处处都有Java的身影,就连美国大型太空(NASA)项目当中,也使用了Java来开发控制系统和相关软件。

Java技术的开放性、安全性和庞大的社会生态链以及其跨平台性,使得Java技术成为智能手机软件平台的事实性标准。在未来发展方向上,Java在Web、移动设备以及云计算等方面的应用前景也非常广阔。虽然面对来自网络的类似于Ruby on Rails这样编程平台的挑战,但Java依然还是事实上的企业Web开发标准。随着云计算(Cloud Computing)以及移动领域的扩张,更多的企业考虑将其应用部署在Java平台上,那么无论是本地主机,还是公共云,Java都是目前最合适的选择。

Java是目前世界上最流行的编程语言之一,而且也成为了事实上的应用层的开发标准,在很多的开发之中,都会把Java作为一些底层代码的操作功能的调用工具,如目前面向手机的Android开发。Java应用领域之广,也势必促使Java开发者的就业市场呈现欣欣向荣的发展态势。

学习Java不仅是学习一门计算机语言,更多的是学习一种思想,一种开发模式。对于从事软件行业的工作人员,掌握了Java语言,可以让自己日后的事业发展得更加顺利。Java语言由于学习相对完整,Java开发人员可以轻松转入到手机开发、.NET、PHP等语言的开发上,以后也可以更快的跨入到项目经理的行列之中。

目前,Java人才的需求量旺盛,根据IDC(International Data Corporation,国际数据公司)的统计数字,在所有软件开发类人才的需求中,对Java工程师的需求达倒全部需求量的60%~70%。同时,企业提供的薪水也不菲,通常来说,具有3年以上开发经验的工程师,年薪10万元以上是一个很正常的一个薪酬水平。但IT企业却很难招聘到合格的Java人才。所以读者朋友如果想让自己成为合格的受企业欢迎的Java程序员,需要做好自己的职业发展规划。

首先,要定位自己的目标,然后在有的放矢地进行自我提升。对于Java工程师来说,大致可以从三个大方向来规划自己的职业蓝图。

(一) 继续走技术工作之路。从技术发展方向来看,Java工程师则可以由最初的初级软件工程师即程序员逐渐晋升至中级软件工程师(高级程序员)、高级软件工程师及架构师等。走这条路,依然可进入电信、银行、保险专业软件开发公司等从事软件设计和开发工作。在信息时代,越来越多的公司重视信息化,而信息化落实起来离不开软件开发,而软件开发中Java当属挑大梁者。如果选择这个方法,程序员要脚踏实地,一步一个脚印地练好Java的基本功。对于初(中)级程序员来说首先掌握Java的基本语法(如类与对象、构造方法、引用传递、内部类、异常、包、Java常用类库、Java IO及Java类集等)。当然,如果读者定位高级程序员以上的目标,那么目标的实现主要依赖三点:一是前期扎实的Java基础,二是后期对软件开发持续性热爱,三是靠程序员个人的领悟。

(二)定位成为技术类管理人员,如产品研发经理、技术经理、项目经理及技术总监职位等。如果选择管理方向,首先要有一定的“基层“经验,至少要有几年的Java开发经验。否则,即使偶然因素让你“擢升‘至’管理层”,那么也会因为“外行指导内行”而饱受诟病,所以如果定位管理人员,那么成功的第一步就是至少成为一名中级以上的Java程序员,前面所言的Java基础也是需要掌握的。想成为技术类管理人员,还要深谙Java设计模式及软件工程的思想,从而能把控软件开发的全局。一个好的技术类管理人员,不仅要自身具有很强的技术管理能力,同时,也要有很强的技术体系建设和团队管理的能力,对自己所处的行业技术发展趋势和管理现状具有准确的判断。统筹全局、集各个层次的技术人员之合力,高质量完成软件项目,是成为技术类管理人员的挑战。

(三)在其他领域成就大业。Java软件开发发展前景好,运用范围也广,具备Java基础的工程师,还可以尝试着在其他领域成就一番大业。例如,Java工程师可以从事JSP网站开发、移动领域应用开发、电子商务开发等工作。如果从事WEB开发,那么在此之前一定要熟练掌握HTML、JavaScript、XML。在WEB开发中其核心就是进行数据库的操作,先从JSP(Java Server Pages)学习,并可以使用JSP + JDBC(Java Data Base Connectivity,Java数据库连接)或者是JSP + ADO(ActiveX Data Objects)完成操作。JSP技术是以Java语言作为脚本语言的。之后再学习MVC设计模式(Model View Controller),它是指软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。如果掌握了MVC设计,读者也就可以轻松地掌握AJAX(Asynchronous JavaScript and XML)和Struts技术。AJAX 是在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的手段。Struts 是Apache软件基金会(ASF)赞助的一个开源项目。使用Struts机制可以帮助开发人员减少运用MVC设计模型开发Web应用的时间。

之后,再学习Hibernate和Spring等轻量级实体层开发方法等。Hibernate是一个开放源代码的Java语言下的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可便利地使用对象编程思维来操纵数据库。Spring Framework是一个开源的Java/Java EE全功能栈,其应用程序框架内包含了一些基于反射机制写的包,有了它以后程序员便可以将类的实例化写到一个配置文件里,由相应的Spring包负责实例化。

以上三条与Java相关的职业发展规划之路,都以夯实Java基础为根本。每一条路走到顶层,都需要重视基础,一步一个脚印,做事由浅入深,由简入繁,循序渐进。《礼记•中庸》有言:“君子之道,辟如行远必自迩,辟如登高必自卑”。这句话告诉我们,君子行事,就像走远路一样,必定要从近处开始;就像登高山一样,必定要从低处起步。

练就成为一名Java高手的过程可能需经历多年的时间。一些读者担心,自己可能等不到成为高手那一天,就无力开发Java了。其实,Java相关的开发行业也如陈年美酒,越陈越香。想一想,前面提到Java的核心设计者James Gosling,发髯皆白,却依然意气风发,时常给比他年轻很多岁的软件开发精英们讲解Java发展之道,那种指点江山的气势,是何等地豪迈!Java软件开发行业职业寿命很长,能提供给从业人员更广阔的发展方向。如果想在Java开发相关的领域有所建树,多一份持久的坚持是必须的。

Java是一门面向对象编程(Object-oriented programming,简称OOP)语言,在学习的过程中一定要多从面向对象的角度去考虑问题。在初级入门阶段,读者要以上机实训为主,多动手,增强自己对Java代码的感性认识。感性认识积累多了,再配合书籍学好理论,这才能有高层次的理性认知。

学习任何编程语言,亲自动手编程实践是必不可少的。在阅读完每一个章节后,尽量将书上的实例代码和课后习题亲自编写一遍。在编写代码的过程中,一定要理清代码思路,发现问题,解决问题。对复杂的代码要反复揣摩,直至烂熟于心。

有些源代码已随书光盘里配备,有些网站上也提供现成的,但作为初学者,务必不能偷懒,直接复制,拿来就用。虽然亲自编写代码比较麻烦,也容易出错,但请记住:纠正这些错误正是非常好的学习机会!

从一个Java的初学者,升级为一个编程高手,没有捷径。其必经的一个成长路线正如下图所示:(1)编写代码 →(2)犯错(发现问题)→(3)纠错(解决问题)→(4)自我提升→(1)编写代码→(2)犯错(发现问题)→(3)纠错(解决问题)→(4)自我提升……积累了一定的感性认识后,才会有质的突变,提升至新的境界。总之,想成为一个高水平的Java程序员,一定要多动手练习,多思考。

阅读Java书籍也要掌握一定的技巧。建议读者在阅读时,快速看完某一章的全部内容,在第一遍阅读期间,可允许在一定程度上“不求甚解”。当读者掌握了Java的基础语法,初步理解了面向对象的编程主要特征后,这时应该重新看书——“温故而知新”,将书中的面向对象内容从头到尾再看一遍,进行知识的归类总结。建议在学习过程中记录心得和感悟,把自己对某一知识点的理解记录下来。在书本空白处,甚至可在个人的博客(如在CSDN程序员网站等)里纪录下自己的感悟,这样一来可加深自己理解,二来也可服务在此知识点困惑的其他读者,一举两得。

学习要循序渐进。在学习的初期,读者应从基础语法学起,不要拘泥于细节,耐得住性子,把书读完,先将容易理解的部分快速学会,再去研究晦涩的部分。当一个知识点实在搞不明白的时候,可以先把它记下来。先从宏观上对一个知识点有个整体的把握,然后回过头来再研究细节。一开始“有所舍弃”,之后“重头再来”,这会提高你的学习效率,让你养成一个良好的学习习惯。

在学习Java的过程中,可能会遇到许多的问题,下面推荐一些解决问题的途径。读者既可使用搜索引擎也可去专业的问答社区进行提问。搜索引擎,如谷歌 (http://www.google.com.hk/ )、必应 (http://cn.bing.com/)及百度(http://www.baidu.com)都是读者朋友在学习过程中的 “好老师”。如果读者朋友的英语水平比较好,推荐访问国外知名网站StackOverFlow(http://stackoverflow.com/),这是一个高质量的问答社区,你在学习Java过程中遇到的问题,基本上其他的学习者也都会遇到,而在这里几乎都能得到高水平的解决方案。

如果本书已不能满足读者朋友的需求,那么恭喜你!很高兴你已从Java初学者过渡到高手“晋级者”。你所欠缺的是对面向对象编程思想更加深入的理解,是对面向对象的各种特性及其实现细节更加熟练的掌握。建议读者阅读偏重工程实践的书籍,或者诸如《Thinking in Java(Java编程思想)》等偏重理论认知的书籍。这类书籍通常涉及大量工程经验,讨论的议题也更加理论化,读者需要有充分的Java实战经验才能有所感悟和共鸣,因此并不适合作为初学者的阅读书籍。

本书主要是面向初学者或中级水平的读者的。针对本书,Java学习可以大致分为三个阶段。

(1)初级阶段:学习Java基础语法和类的创建与使用,基础I/O(输入/输出)操作、各种循环控制、运算符、数组的定义、方法定义格式、方法重载等,并熟练使用一种开发工具,如Eclipse等。

(2)中级阶段:掌握面向对象的封装、继承和多态,学习常用对象和工具类,深入I/O(输入/输出)操作,异常处理、Java的包管理机制、集合框架等。

(3)高级阶段:掌握Java的反射机制、泛型、网络编程、GUI开发、多线程、高级I/O、数据库编程、Java Applet等。

对于读者来说,Java学习的路线在整体上需遵循:初级阶段中级阶段高级阶段,循序渐进地学习(如上图所示),不建议读者一开始就“越级”学习,需知“欲速则不达”。在这三个阶段各自内部的知识点,没有必然的先后次序,读者可根据自己的实际情况“有的放矢”地学习。不管处于哪个学习阶段,读者都要重视Java的实战练习,等学习到高级阶段还要用一些项目实训来提升自己。

“罗马不是一日建成的(Rome was not built in a day)”,编程高手也不是一日能成就的。《荀子·劝学篇》亦有云:“骐骥一跃,不能十步;驽马十驾,功在不舍。学习Java的途中没有捷径,需要进行不断地理论学习、反复地实战练习才能将代码运用灵活,就好像练习武功一样,只有重视基本功,并持之以恒,才能让自己的动作收放自如,招式炉火纯青。

各位Java爱好者,想成为Java高手吗?赶快行动吧!


本篇从Java的基本概念及特性开始Java的学习之旅,并通过一些实例来了解Java的实际开发过程。

读者在学完本篇后将会了解到Java软件和编程的基本概念,掌握Java的基本操作及应用方法,为后面的学习打好基础。

第1章 揭开Java的神秘面纱

第2章 流行的Java开发工具——Eclipse

第3章 初识庐山真面目——Java程序要素概览

第4章 常用的编程元素——常量和变量

第5章 不可不知的数据分析法——数据类型

第6章 重要的编程组件——运算符、表达式与语句

第7章 程序执行方向——程序控制结构

第8章 常用的数据结构——数组

第9章 面向对象设计——类和对象

第10章 重复调用的代码块——方法

第11章 快速归类整型常数——枚举


本章视频教学录像:1小时47分钟

通过上一章的阅读,相信你已经对Java语言有了大概的了解,本章更进一步地介绍如何在Windows和Linux的环境下下载与安装JDK,并详细描述Windows下开发环境的配置。最后介绍如何编译和运行第1个Java程序。

本章要点(已掌握的在方框中打钩)

□ 掌握下载、安装Java开发工具箱

□ 掌握开发环境变量的配置

□ 学会编写第1个Java程序

本节视频教学录像:2分钟

学习Java的第一步就是要搭建Java开发环境(Java Development Kit,JDK),它是在操作系统(如Windows、Linux等)下搭建的Java最基本的开发环境,目前由Oracle公司维护开发并免费提供。

JDK由一个处于操作系统层之上开发环境和运行环境组成,如下图所示。JDK除了包括编译(javac)、解释(java)、打包(jar)等工具,还包括开发工具及开发工具的应用程序接口等。当Java程序编译完毕后,如果想运行,还需要JRE(Java Runtime Environment,Java运行环境)。

JRE是运行JAVA程序所必需的环境的集合,包含JVM标准实现及Java核心类库。如果仅仅想运行Java程序,安装JRE就够了。也就是说,JRE是面向Java程序的使用者的。如果想开发Java程序,就需要安装JDK,它是面向Java程序的开发者。Java程序的开发者自然也是Java程序的应用者。从下图也容易看出,JDK包含JRE。

由上图可以看出,Java程序开发的第一步就是编写Java语言的源代码。而编写源代码的工具可以是任何文本编辑器,如Windows 下的记事本、Linux下的Vim均可。这里推荐读者使用对编程语言支持较好的编辑器:Notepad++、UltraEdit、Editplus等。

Java源文件编写完毕后,就可以在命令行下通过javac命令将Java源程序编译成字节码(二进制文件),然后通过java命令来解释执行编译好的Java类文件(文件扩展名为.class)。但如果想正确使用javac和java等命令,用户必须自己搭建Java开发环境。在1.3节,我们将详细介绍此步骤。

采用Oracle公司提供的JDK开发Java程序,能够让初学者专注于Java语法的理解,代码模块之间的关系比较清晰明了,有利于初学者理解Java面向对象的设计思想。此外,JDK的版本也会随Java (J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是明显的,从事大规模企业级Java应用开发比较困难,也不利于团体协同开发。

因此,目前市面上出现了很多优秀的Java集成开发环境 (Integrated Development Environment,简称 IDE),如NetBeans和Eclipse等。IDE在JDK的基础上,为程序提供了很多辅助功能的支持,极大方便了程序的开发。在第2章我们将系统地介绍Eclipse的使用。

本节视频教学录像:13分钟

本节分别介绍两种应用最为广泛的操作系统——Windows和Linux环境下安装JDK的过程。Oracle公司提供多种操作系统下的不同版本的JDK。

JDK软件包的下载方法如下。

(1)首先登录Oracle官方网站下载最新版的JDK版本。在浏览器地址栏中输入www.oracle.com,打开Oracle官方网站,单击“Downloads(下载)”下载,如下图所示。

(2)如0.3节介绍, Java技术体系可以分为4个平台:Java SE(Standard Edition,标准版)、Java EE(Enterprise Edition,企业版)、Java ME(Micro Edition,微型版)和Java Card(智能卡版)。后面三个版本都是以Java SE为核心的,所以掌握Java SE最为重要,这也是本书的主要讲解范围。因此,在“Downloads”单击打开的网页中选择下载“Java SE”,如下图所示。

(3)进入正式下载页面http://www.oracle.com/technetwork/java/javase/downloads/index.html,如下图所示。

单击下载“Java Platform (JDK) 8u5”。需要读者注意的是,虽然我们下载的是Java 8,但Java 8的推广使用还需要假以时日,Java 7仍然是广泛应用的开发环境。

借助搜索引擎,如百度(www.baidu.com)或者谷歌(www.google.com.hk),输入关键字诸如“Java 7 下载”等,可以搜索到很多可用的下载地址,或者在下面的官方链接地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,也可以选择下载Java 7的最后更新版本,如下图所示。

而对于初学者来说,我们主要关注的是Java的基础知识的学习,在这点上,Java 7和Java 8没有太明显的差别。在后续的章节中,如果基础知识部分涉及Java 8的新特性时,我们会单独列出说明。

在Java 的发展过程中,其版本编号有一定的“混乱”性,容易让用户产生某种程度的困扰。譬如,有的时候读者朋友(特别是初学者)可能在阅读一些Java书籍时,发现版本为Java 2,如J2EE。有时又发现一些书籍说自己代码编译的平台是Java 6.0或Java 7.0,那Java 3 或Java 4 去哪里了?因此这里有必要给予解释一下。下面简要的介绍一下Java的版本号命名规则。

在Java 1.1之前,其命名方式和传统的方式一样。但当Java 1.1升级到Java 1.2时,Sun公司的Java市场推广部门觉得, Java的内涵发生了很大的变化,应给予Java一个“新”的名称——Java 2,而它内部的发行编号仍是Java 1.2。当Java内部发行版从1.2过渡到1.3和1.4时,Sun公司对外宣称的版本依然是Java 2.Sun公司从来没有发布过Java 3和Java 4。从Java的内部发行版的1.5开始,Java的市场推广部门又觉得Java已经变化很大,需要给予一个“新”的称呼来在市场中“博得眼球”,于是Java 1.5 直接对外宣称Java 5,依此类推,Java 1.6 对外宣称Java 6,而目前我们即将学到的Java 7,其内部版本是Java 1.7。如下表所示。

Java内部发行版本

发布时间

Java对外推广版本号

JDK 1.0

1996年1月

Java 1.0

JDK 1.1

1997年2月

Java 1.1

JDK 1.2

1998年12月

Java 2

JDK 1.3

2000年5月

JDK 1.4

2002年2月

JDK 1.5

2004年9月

J2SE 5.0

JDK 1.6

2006年12月

Java SE 6

JDK 1.7

2011年7月

Java SE 7

JDK 1.8

2014年 3月

Java SE 8

为了避免混淆,Oracle公司宣布改变Java版本号命名方式:自JDK 5.0起,Java以两种方式发布更新。第一种方式是Limited Update(有限更新)模式,其包含新功能和非安全修正。第二种方式是Critical Patch Updates(CPUs,重要补丁更新),只包含安全的重要修正。举例来说,Java SE 8u5的解释如下图所示。

(4)由于Oracle的Java实施的是“许可证(License)”,所以需要选择“ Accept License Agreement(接受许可证协议)”,然后选择与自己所使用操作系统匹配的SDK版本,如下图所示。

读者朋友可以根据自己的操作系统类型以及位数(32位的还是64位的),下载所对应的Java JDK。我们用下表详细说明上图所示的各种不同版本JDK的含义。

软件/文件描述

文件大小

下载对应的文件

解释说明

Linux x86

133.58 MB

jdk-8u5-linux-i586.rpm

Linux安装包,x86表示为32位操作系统适用

Linux x86

152.5 MB

jdk-8u5-linux-i586.tar.gz

Linux x64

133.87 MB

jdk-8u5-linux-x64.rpm

x64表示64位Linux操作系统适用的安装包

Linux x64

151.64 MB

jdk-8u5-linux-x64.tar.gz

Mac OS X x64

207.79 MB

jdk-8u5-macosx-

x64.dmg

苹果操作系统Mac OS X的安装包,目前仅提供64位安装包

Solaris SPARC 64-bit (SVR4 package)

135.68 MB

jdk-8u5-solaris-sparcv9.tar.Z

Oracle公司维护的64位类Unix系统的安装包,需先解压,再在解压文件中找到安装文件

Solaris SPARC 64-bit

95.54 MB

jdk-8u5-solaris-sparcv9.tar.gz

Solaris x64 (SVR4 package)

135.9 MB

jdk-8u5-solaris-x64.tar.Z

Solaris x64

93.19 MB

jdk-8u5-solaris-x64.tar.gz

Windows x86

151.71 MB

jdk-8u5-windows-

i586.exe

x86表示是32位的Windows实用的安装包

Windows x64

155.18 MB

jdk-8u5-windows-

x64.exe

x64表示是64位的Windows实用的安装包

请注意,对于Linux版本而言,rpm为Red Hat和CentOS为代表的安装包,假设下载的是32位的rpm安装包:jdk-8u5-linux-i586.rpm,则其安装格式为:

rpm –ivh jdk-8u5-linux-i586.rpm

而以tar.gz的软件包则需要先解压,假设我们下载的是jdk-8u5-linux-i586.tar.gz,则需要用tar命令先解压:

tar zxvf jdk-8u5-linux-i586.tar.gz

然后在解压后的文件夹中查找安装文件jdk1.8.0_version,这里的version是下载时的次版本号,在不同时期下载,version可能是不同的,因为JDK总是不断在升级的。

Java 8的JDK软件包多在100MB以上,下载需要一定的时间,请读者耐心等待。下面为读者说明JDK在两种常用的操作系统——Windows和Linux下的详细安装流程。

在下载过程中,有个小问题需要读者注意:如何识别自己所使用的Windows操作系统版本号?在Windows 7下,在桌面上鼠标右键单击“我的电脑”图标,选择“属性”命令,在弹出“属性”窗口下,如下图所示,“系统类型”处即可显示读者所用的操作系统版本信息。

目前,在笔者写作本书时, Java的JDK版本号是Java SE 8u5,但编程语言趋势是一直向上升级,只要大版本“8”不变,“u”后面的小版本号有所变化,基本上不会影响普通用户的学习。

安装环境介绍。

操作系统:64位Windows 7

安装软件:jdk-8u5-windows-x64.exe

(1)开始安装,下载完成后,就可以安装Java JDK。双击“jdk-8u5-windows-x64.exe”,具体流程如下图所示。

(2)选择安装路径,确定是否安装公共JRE。公共JRE提供了一个Java运行环境。JDK默认自带了JRE。可单击【取消】按钮,选择不安装公共JRE,并不会对Java运行造成影响。如下图所示。

(3)单击【Next】按钮,正在安装JDK,如图所示。

(4)安装公共JRE,如果在上一步中没有取消安装公共JRE,在安装JRE过程中会提示安装公共JRE。可以在本步骤中单击取消,不安装公共JRE。或者单击下一步按钮,安装公共JRE。

(5)正在安装公共JRE。

(6)JDK安装完成。

(7)查看安装目录(C:\Program Files\Java)。如果安装了公共JRE,会在本目录下出现公共JRE安装后的目录(如下图所示),否则则没有。

(8)查看JDK安装目录(C:\Program Files\Java\jdk1.8.0_05)。JDK默认安装了JRE,提供了Java程序运行时默认环境,运行时并不使用公共JRE。

Windows是Java程序员应用广泛的操作系统,但是Linux操作系统在服务器领域(如Red Hat)占据重要地位,其桌面系统(如Ubuntu)的市场份额也日益扩大。所以,学有余力的读者可以在Linux平台下开展Java程序开发。因此也有必要介绍一下Linux下安装JDK的流程。

在Linux环境下,在安装Java JDK之前,首先要下载正确的JDK软件包。下载的方式和Windows环境下的流程基本一致。但在判定用户所使用的操作系统版本上,是有所不同的。

笔者使用的Linux操作系统为Red Hat Enterprise Linux (RHEL) 6.5。下面在终端演示的几条命令,是下载JDK之前需要了解的操作系统信息。

(1)查询Linux操作系统是32位还是64位。使用命令getconf LONG_BIT或getconf WORD_BIT,如下图所示。

如果显示32则说明是Linux32位操作系统。类似的,如果显示为64,则说明Linux为64位操作系统,其中root是Linux的根用户(类似于Windows的超级管理员)。下面我们还可以用file命令来显示Linux的版本号。

(2)使用file /bin/ls显示Linux的版本号,如下图所示。

如果输出有32-bit字样,则说明是Linux 是32位操作系统。类似的,如果含有64-bit字样,则说明为Linux 是64位操作系统。

(3)查询Linux的发行版本。

在命令行模式下,输入 lsb_release -a ,即可列出所有版本信息,如下图所示。

上面输出说明当前的Linux操作系统为Red Hat Enterprise Linux Server release 6.5。根据上面的操作系统版本信息,我们选择单击下载32位的JDK:“jdk-8u5-linux-i586.rpm”,如下图所示。

安装环境介绍。

操作系统:Red Hat Enterprise Linux Server release 6.5 32位。

安装软件:jdk-8u5-linux-i586.rpm。

提示

RPM是RedHat Package Manager(RedHat软件包管理工具)类似于Windows操作系统下的“添加/删除程序”。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装,这样更加方便用户使用。

(1)将安装包下载至用户家目录(home)下的文件夹Downloads。

我们用pwd命令显示当前的工作目录,用ls –l 命令显示当前的工作目录下的文件列表,jdk-8u5-linux-i586.rpm就是我们要安装的文件,如下图所示。

(2)查询系统是否安装JDK。

使用rpm -qa | grep jdk 命令查看当前系统是否已安装了JDK;使用java -version 命令查看当前使用的JDK版本,如下图所示。

上图显示,我们的系统中并没有安装Java。如果安装了旧版本的,则需要先卸载旧版本。使用:

rpm -e --nodeps 【软件包名】

卸载指定的软件包。卸载完成后使用:

which java

命令确认JDK已完全卸载。

(3)安装Java 8 的JDK。

使用如下命令:

rpm -ivh jdk-8u5-linux-i586.rpm

安装JDK,如下图所示。其中rpm是安装命令,而-ivh是安装参数,具体含义读者可以用“man rpm”参考,这里不再赘述。

(4)测试JDK是否安装成功。

使用“java -version”来检测Java的版本号,如果检测到版本号,就间接说明安装成功。用“which java”来检测Java的安装路径,如下图所示。

需要读者注意的是,在Linux中,是区分大小写的。在bash命令行模式下,要使用小写的“java”,而非“Java”。

对于其他Linux发行版(如Ubuntu等),由于系统配置不同,安装JDK情况也可能不同,在安装完成JDK后还需要配置相关的环境变量,下面我们来说明Linux。

下面我们介绍如何在Ubuntu操作系统上安装JDK 8,这是Linux环境下最便捷的方法。

安装环境介绍。

操作系统:Ubuntu 14.04 LTS 32位

安装软件:jdk-8u5-linux-i586.tar.gz

Ubuntu 系统安装Java 8最简单的方式是通过Ubuntu的PPA( Personal Package Archives,个人软件包仓库)安装。PPA是专为Ubuntu 用户设计的软件仓库,类似于Windows下的奇虎公司的360软件管家。

(1)打开终端(快捷键Ctrl+Alt+t),在Ubuntu中添加PPA。

输入命令:sudo add-apt-repository ppa:webupd8team/java

(2)更新软件列表。

输入命令:sudo apt-get update

等待软件列表更新完成,如下图所示。

(3)安装 JDK 8。

输入命令:sudo apt-get install oracle-java8-installer。

①安装oracle-java8-installer会暂用部分硬盘空间,系统问是否继续,输入y,继续。

②oracle-java8-installer提示注意Oracle公司的Java SE的许可证协议,按回车键确认。

③选择接受许可证协议,用Tab键切换值<YES>处,按回车键确认。

④下载安装jdk-8u5-linux-i586.tar.gz,由于该文件较大,需要耐心等待一会。

(4)测试是否安装成功。

待上述安装流程完毕后,输入命令。

java -version

检测Java的版本号码,间接验证Java是否安装成功(需要注意的是,在Linux中,有关Java的命令都是小写的java,否则会出错)。

从提示中,可以看出java 1.8.0_05安装成功。

如果原来已经安装有Java 7,想要设置 Java 8 为默认的编译环境,则需在终端输入下面的命令:

sudo apt-get install oracle-java8-set-default

如果工作需要,想将编译环境切换为 Java 7,在终端输入下面的命令:

sudo update-java-alternatives -s java-7-oracle

类似,如果重新切换为 Java 8,在终端输入下面的命令:

sudo update-java-alternatives -s java-8-oracle

本节视频教学录像:44分钟

环境变量的配置主要包括了解环境变量和具体配置过程等。

本书主要以Windows 7为操作系统载体来讲解Java。而在开发Java程序之前,通常需要先在Windows操作系统中配置好有关Java的系统环境变量(Environment Variable)。

在介绍环境变量的含义之前,我们先举一个形象的例子,给读者一个感性的认识。比如我们喊一句:“张三,你妈妈喊你回家吃饭!”可是“张三”为何人?他在哪里呢?对于我们人来说,认不认识“张三”都能给出一定的响应,如认识他,可能就会给他带个话;而不认识他,也可能帮忙吆喝一声“张三,快点回家吧!”

然而,对于操作系统来说,假设“张三”代表的是一条命令,它不认识“张三”是谁,也不知道“它”来自何处,它会“毫无情趣”的说,我“不认识“张三”: “not recognized as an internal or external command,然后拒绝继续服务。

为了让操作系统“认识”张三,我们必须给操作系统有关张三的精确信息,如“XXX省YYY县ZZZ乡QQQ村张三”,但其他的问题又来了,如果“张三”所代表的命令是用户经常用到的,每次使用“张三”,用户都在终端敲入“XXX省YYY县ZZZ乡QQQ村张三”,这是非常繁琐的,能不能有简略的办法呢?聪明的系统设计人员想出了一个简易的策略——环境变量。把“XXX省YYY县ZZZ乡QQQ村”设置为常见的“环境”,当用户在终端仅仅敲入“张三”时,系统自动检测环境变量集合里有没有“张三这个人,如果在”“XXX省YYY县ZZZ乡QQQ村”找到了,就自动替换为一个精确的地址“XXX省YYY县ZZZ乡QQQ村张三”,然后继续为用户服务。如果整个环境变量集合里都没有“张三”,那么再拒绝服务,如下图所示。

操作系统里没有上/下行政级别的概念,但却有父/子文件夹的概念,二者有“曲艺同工”之处。对“XXX省YYY县ZZZ乡QQQ村”这条定位“路径”,操作可以用“/”来区分不同级别文件夹,即:”“XXX省/YYY县/ZZZ乡/QQQ村””,而“张三”就像这个文件夹下的命令文件。

下面我们给出环境变量的正式定义。

环境变量是指在操作系统指定的运行环境中的一组参数,它包含一个或多个应用程序使用的信息。环境变量一般是多值的,即一个环境变量可以有多个值,各个值之间以英文状态下的分号“;”(即半角的分号)分隔开来。

对于Windows等操作系统来说,一般都有一个系统级的环境变量Path(路径)。当用户要求操作系统运行一个应用程序,却没有指定应用程序的完整路径时,操作系统首先会在当前路径下寻找该应用程序,如果找不到,便会到环境变量路径“Path”指定的路径下寻找。若找到该应用程序则执行它,否则会给出错误提示。用户可以通过设置环境变量来指定自己想要运行的程序的所在位置。

例如,编译Java程序需要用到javac命令,运行Java程序需要java命令。而这两个命令并不是Windows系统自带的命令,所以用户需要通过设置环境变量(JDK的安装位置)来指定这两个命令的位置。设置完成后就可以在任意目录下使用这两个命令了,而无需每次都要输入这两个命令的所在的精确全路径(如C:\Program Files\Java\jdk1.8.0_05)。javac和java等命令都放在JDK安装目录的bin目录下。基于类似于环境变量“Path”相同的理由,我们需要掌握JDK中最重要的3个环境变量,下面一一给予介绍。

对于环境变量中相关变量的深刻理解极为重要,特别是ClassPath,在日后的Java学习开发过程中会发现,很多问题的出现都与ClassPath环境变量有关。在学习如何配置这些环境变量之前,很有必要深刻理解下面3个环境变量代表的含义。

(1)JAVA_HOME:顾名思义,”JAVA的家“——该变量是指安装Java的JDK路径,它告知操作系统在哪里可以找到JDK。

(2)Path:前文已经有所介绍。该变量是告诉操作系统可执行文件的搜索路径,即可以在哪些路径下找到要执行的可执行文件,请注意它仅对可执行文件有效。当运行一个可执行文件时,用户仅仅给出该文件名,操作系统首先会在当前目录下搜索该文件,若找到则运行它,若找不到该文件,则根据Path变量所设置的路径,逐条到Path目录中搜索该可执行文件。

(3)ClassPath:该变量是用来告诉Java解释器(即java命令)在哪些目录下可找到所需要执行的class文件(即javac编译生成的字节码文件)。

对于初学者来说,Java的运行环境的配置比较麻烦,请读者按照以下介绍实施配置。

1.JAVA_HOME的配置

下面我们详细说明Java的环境变量配置流程。

(1)在桌面中右击【我的电脑】,在弹出的快捷菜单中选择【属性】选项,如下图所示。

(2)在弹出的界面左上方,选择【高级系统设置】选项,如下图所示。

(3)单击【高级系统设置】选项后弹出【系统属性】对话框,然后单击【高级】->【环境变量】,如下图所示。

(4)在【环境变量】对话框中,单击【系统变量】下的【新建】按钮,显示如下图所示。

(5)在【编辑系统变量】对话框中输入,变量名为:“JAVA_HOME”,变量值为:C:\Program Files\Java\jdk1.8.0_05。特别需要读者注意的是,这个路径的具体值是根据读者安装JDK的路径而定,读者把Java安装在哪里,就把对应的安装路径放置于环境变量之内,不可拘泥于本书演示的这个路径值。然后,单击【确定】按钮,如下图所示。

注意

假设JDK安装在“C:\Program Files\Java\jdk1.8.0_05”,在设置完毕对应的环境变量JAVA_HOME后,以后再要用到这个变量时,需用两个%将其包括起来。如要设置另外一个环境变量值为“C:\Program Files\Java\jdk1.8.0_05\bin”,那么我们可以简单的用“%JAVA_HOME%\bin”代替即可。

2.Path的配置

(1)选中系统环境变量中的Path,单击【编辑】按钮,如下图所示。

(2)在弹出的【编辑系统变量】对话框的【变量值】文本框中,在文本框的末尾添加:“;%JAVA_HOME%\bin”,特别注意不要忘了前面的分号“;”,然后单击【确定】按钮,返回【系统属性】对话框,如下图所示。这里的%JAVA_HOME%就是指代前面设置的“C:\Program Files\Java\jdk1.8.0_05”,这里主要是为了方便起见,避免每次引用这个路径都输入很长的字符串。如果不怕麻烦,“;%JAVA_HOME%\bin”完全可以用全路径“;C:\Program Files\Java\jdk1.8.0_05\bin”代替之。这个路径务必设置正确,因为诸如Java语言的编译命令javac和解释命令java等都是在这个路径下,设置失败,这些命令将无法找到。注意:Path路径都是系统路径,配置的过程中要小心,以防无意删掉,最好先备份到文档中。

注意

当Path有多个变量值时,一定要用半角(即英文输入法)下的“;”将多个变量值区分开。初学者很容易犯错的地方:(1)忘记在上一个Path路径值前面添加分号“;”(2)没有切换至英文输入法,误输入中文的分号“;”。英文分号是1个字节大小,而中文的分号是2个字节大小。

(3)在【系统属性】对话框中单击【确定】按钮,完成环境变量的设置,如下图所示。

请注意,检测环境变量是否配置成功,在命令行模式下,在任意目录下用javac命令来检验,如果能输出javac的用法提示,则说明配置成功,如下图所示。

进入命令行模式的方法是,单击Windows 7的【开始】菜单,在搜索框中输入CMD命令,然后回车即可。

3.ClassPath的指定

ClassPath的设定对初学者来说,有一定的难度,容易配错。如果说JAVA_HOME指定的是java命令的运行路径的话,那么ClassPath指定的就是java加载类的路径,只有类在ClassPath中,java命令才能找到它,并解释它。

在Java中可以使用“set classpath”命令指定Java类的执行路径。下面通过一个例子来了解一下classpath的作用,假设这里的“Hello.class”类位于“C:\”目录下。

在“D:\”目录下的命令行窗口执行下面的指令。

set classpath=c:

之后在“D:\”目录下执行“java Hello”命令,如下图所示。

从上图所示的输出结果可以发现,虽然在“D:\”目录中并没有“Hello.class”文件,但是也可以用“java Hello”执行“Hello.class”文件。之所以会有这种结果,就是因为在“D:\”目录中使用了“set classpath”命令,它把类的查找路径指向了“C:\”目录,在运行java时,会从ClassPath 中查找这个Hello类文件,而ClassPath 中包括了“C:\”,所以运行成功。

注意

在设置classpath时,最好将classpath指向当前目录,即所有的class文件都从当前文件夹中开始查找:“set classpath=.”。在命令行输入命令时,不包括上面的引号“ ”。在Windows及Linux等操作系统下,一个点“.”代表当前目录,两个点“..”代表上一级目录。

但是这样的操作行命令操作模式,实际上又会造成一种局限:每一次启动命令行窗口所设置的ClassPath都只是针对于当前命令行窗口有效。一旦重新开启命令行窗口,或系统重启,命令行临时设置的ClassPath中变量值都丢失了。如果想“一劳永逸”,最好的办法还是将ClassPath设置为环境变量。

(1)参照上一节中JAVA_HOME的配置,在【环境变量】对话框中,单击【系统变量】下的【新建】按钮,如下图所示。新建一个环境变量,变量名为:CLASSPATH,变量值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar。注意不要忽略了前面的 "." ,这里的小点“.”代表的是当前路径,既然是路径,自然也需要用分号“;”隔开。JDK的库所在包即tools.jar,所以也要设置进ClassPath中。

注意

Windows系统环境下,一般只要设置好JAVA_HOME就可以正常运行Java程序。默认的ClassPath是当前路径(即一个点 “.”)。有些第三方的开发包,需要使用到环境变量ClassPath,只有这样才能够使用JDK的各种工具。Windows下不区分大小写,ClassPath和CLASSPATH是等同的,可根据读者习惯自己选择大小写

(2)在按照步骤⑴设置后,如果在Java类(即.class)文件所存储的当前路径下,那么用“java+类名”方式解释执行用户类文件,这是没有问题的。但是如果用户更换了路径,现在的“当前路径”里没有在.class文件,那么“java”就无法找到这个类文件。

这时,即使在命令行下给出.class文件所在的全路径,java依然会出错,这会让初学者很困惑。下面具体说明,假设Java文件Hello.java存在在“D:\src\chap01\”路径下,由于JAVA_HOME和Path环境变量正确,用户可以正确编译、运行,使用javac和java命令无误,如下图所示。

但是如果用户切换了路径,比如使用“cd”命令切换至“D:\src\”,再次用java运行Hello类文件,就会得到错误信息:“Error: Could not find or load main class TestJava2_1”,如下图所示。这是因为Java在ClassPath里找不到Hello.class,因为现在的这个当前路径(也就是那个“.”代表的含义)已经变更为“D:\src\”,而“D:\src\”路径下确实没有Hello.class这个文件。

所以如果想在任意路径下执行用户的类文件,就必须把用户自己编译出的类文件所在路径,这里指的是“D:\src\chap01”,也加入到ClassPath中,并用分号“;”与前一个变量隔开,如下图所示。

(3)最后,参照环境变量Path的配置,将环境变量CLASSPATH添加到Path的最后,如下图所示。CLASSPATH是环境变量,在另外一个地方作为变量使用时,要用两个%将该变量前后包括起来。

如果用户原来的命令行终端窗口一直开启着,则需要关闭再重启命令行窗口,这是因为需要重新更新命令行窗口的环境变量。之后,就可以在任意路径下执行用户自己的类文件,如下图所示。

本节视频教学录像:18分钟

现在就自己来动手编写一个Java的程序,亲自感受一下Java语言的基本形式。需要说明的是,Java程序分为两种形式:一种是网页上使用的Applet程序(Java小程序),该程序可以嵌入在 HTML(标准通用标记语言的一个应用)页中。另一种是Application程序(即Java应用程序),本书主要讲解的是Java应用程序。下面就以Java应用程序为例,开始我们第1个Java程序。

【范例1-1】 编写Hello.java程序。

01  public class Hello
02  {
03   // main是程序的起点,所有程序由此开始运行
04   public static void main(String args[])
05   {
06     // 下面语句表示向屏幕上打印输出“Hello World !”字符串
07     System.out.println("Hello World !"); 
08   }
09  }

【运行结果】

将上面的程序保存为“Hello.java”文件。行号是为了让程序便于被读者(或程序员)理解而人为添加的,真正Java源代码是不需要这些行号的。在命令行中输入“javac Hello.java”,没有错误后输入“java Hello”。运行结果如下图所示,显示“Hello World!”。

Java程序运行的流程可用如右图来说明:所有的Java源代码(以.java为扩展名),通过Java编译器javac (javac命令中字母c来自于compiler的首字母)编译成字节码,也就是以.class为扩展名的文件。然后利用命令java将对应的字节码通过Java虚拟机(JVM)解释为特定操作系统(如Windows、Linux等)能理解的机器码,最终Java程序得以执行。

这里需要注意的是,此处的java命令在Windows操作系统下,不区分大小写,诸如java 和JavA都是等同的。而在Linux等类UNIX系统下,由于区分大小写,javac和java命令等的所有命令字符都必须小写。

上面的程序如果暂时不明白也没有关系,读者只要将程序在任意纯文本编辑器(如Windows下的记事本、Notepad++、Linux下的vim等均可)里敲出来,然后按照步骤编译、执行就可以了。这里只是让读者对Java Application程序有一个初步印象,因为以后所有的内容都将围绕Java Application程序进行。

下面我们来解读一下这个Java小程序,让读者对Java程序有个初步的认知。更为详细的知识点读者可以参考后续相关章节进行学习。

第1行。public 是一个关键字,用于声明类的权限,表明这是一个公有类(class),其他任何类都可以直接访问它。class 也是Java的一个关键字,用于类的声明,其后紧跟的就是类名,这里的类名称是Hello。

第2行和第9行。这一对大括号{}标明了类的区域,在这个区域内的所有内容都是类的一部分。

第3行和第6行。这两行为注释行,可以提高程序的可读性。注释部分不会被执行。这种注释属于单行注释,要求以双斜线//开头,后面的部分均为注释。

第4行。这是一个main方法,它是整个Java程序的入口,所有的程序都是从public static void main(String args[])开始运行的,该行的代码格式是固定的。String args[]不能漏掉,如果漏掉,在一些编辑器中,如Eclipse,该类不能被识别执行。另外String args[]也可以写成String []args,String为参数类型,表示为字符串型,args是arguments(参数)的缩写。public 和static都是Java的关键词,它们一起表明main是公有的静态方法。void也是Java的关键词,表明该方法没有返回值。对于这些关键词,读者可以暂时不用深究,在后面的章节中会详细讲解main方法的各个组成部分。

第5行和第8行是main方法的开始和结束标志,它们声明了该方法的区域,在{}之内的语句都属于main方法。

第7行System.out.println是Java内部的一条输出语句。引号内部的内容"Hello World !"会在控制台中打印出来。

本节视频教学录像:10分钟

在上一个小节中,我们看到Java编译器——javac仅仅将源代码编译成.class文件,然后通过命令java将.class文件送往Java虚拟机(JVM),变成最终可执行的程序。下面我们就Java虚拟机的机制进行简单的讨论。

Java中的虚拟机的概念,可以看作是在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机却是相同的。

Java程序得以执行的环境称之为Java运行时环境(Java Runtime Environment, 简称JRE),它由Java的虚拟机JVM和Java 的API构成。一个Java程序若想运行在Java虚拟机之中,源代码的语句需由Java编译器编译成字节码。字节码本质上是一种标准化的可移植的二进制格式。该格式以Java类文件(.class)的形式存在。一个Java程序可有多个不同的.class文件构成。在早期发布大型的Java程序,通常把多个.class文件打包成一个发布文件.jar ,其扩展名来自于“java archive”(java 归档文件)的简写。

Java虚拟机在执行.class或jar文件时,使用到“即时编译器”(JIT compiler,just-in-time compiler)。“即时编译器”是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器(processor)指令的程序。本质上,“即时编译器”是Java程序的第二个编译器,它能把通用的字节码编译成特定系统的机器指令代码。但是这里的二次编译,对用户来说基本上是“透明的”——即它存在但用户无需感知。

值得一提的是,另外一种网络编程常见语言——Python,也可以通过jpython(Python的纯java实现版本)编译后,同样也生成Java编译生成一样的字节码,从而也大大提供了该类程序的可移植性。但python不在本书讨论的范围。

本节视频教学录像:5分钟

1.注意Java相对C++的一些特性

由于Java语言的设计者十分熟悉C++语言,所以在设计时很好地借鉴了C++语言。可以说,Java语言是比C++语言“更加面向对象”的一种编程语言。Java语言的语法结构与C++语言的语法结构十分相似,这使得C++程序员学习Java语言更加容易。

如果读者是从C++过渡而来的Java学习者,那么下面几个特性值得读者注意。

(1)提供了对内存的自动垃圾回收(Garbage Collection),程序员无需在程序中进行分配、释放内存,那些可怕的内存分配错误不会再打扰设计者了。

(2)去除了C++语言中容易出错的“指针”,而是用诸如“引用(reference)”的方法来取而代之。

避免了赋值语句(如a = 3)与逻辑运算语句(如a = = 3)的混淆。

(3)取消了多重继承这一复杂的概念。多重继承会导致类中数据成员的“二义性”等问题,从而使得类的访问结构非常复杂。

2.重视Java官网的文档

Java 7的语言规范(The Java® Language Specification Java SE 7 Edition)是公开的,可在Oracle的官方网站上下载(http://docs.oracle.com/javase/specs/jls/se7/jls7.pdf)。阅读Java语言的规范是提高技术水平的好方法。

3.如何在命令行模式下正确运行Java类文件

使用javac编译java源代码生成对应的.class文件,比如,范例1-1所示的Hello.class,然后用java来运行这个类文件,初学者很容易犯错,最有可能得到如下错误信息。

Error: Could not find or load main class Hello.class

产生这种错误的原因通常有两个。

(1)Java环境变量JAVA_HOME及ClassPath设置不正确,在设置环境变量时,在前一个环境变量前一定要用分号“;”以此区分不同的环境变量。同时要把当前目录“.”放进环境变量中。这里的一个小点“.”代表的就是class类文件所在的当前目录。

(2)有可能初学者在命令行模式下按如下方式来运行这个类文件。

java Hello.class

而正确的方式为:

java Hello

也就是说,java操作的对象虽然是类文件,但是却无需类文件的扩展名.class。

4.正确保存Java的文件名

对于包括public类名的Java源程序,在保存时,初学者需要注意该源程序的名称需要和public类名称保持完全一致,如下所示的一个类。

public class Hello

这个公有类名名称为Hello,那么这个类所在的源文件必须保存为Hello.java,由于Java语言是区分大小写的,保存的Java文件名(除了扩展名.java)必须和公有类的名称一致,包括大小写也一致。例如,如果公有类的名称为HEllo,而文件保存为Hello.java,虽然二者仅有一个字符“E”的在大小写上有差异,但依然无法通过编译,会得到如下错误。

error: class HEllo is public, should be declared in a file named HEllo.java
public class Hello
1 error

上述错误信息的第一句就是提示包含公有类HEllo的文件,应保存的文件名为HEllo.java,而不是目前保存的Hello.java。

需要注意的是,对于没有包括public类的源文件,源文件的名称和非public类的名称可以不相同。

本节视频教学录像:15分钟

编写一个Java程序,运行后在控制台中输出“不抛弃,不放弃。Java, I am coming!”。


本章视频教学录像:1小时20分钟

古语有言:“工欲善其事,必先利其器。”要学习和使用Java语言进行程序开发,就必须选择一种功能强大、使用方便且能够辅助程序开发的IDE集成开发工具,而Eclipse就是目前最为流行的Java语言辅助开发工具。它具有强大的代码辅助功能,能够帮助程序开发人员自动完成输入语法、补全文字、修正代码等操作,能够大量减轻程序开发人员的时间和精力。通过本章的学习,读者能够初步了解Eclipse开发工具,并且能够使用它完成程序的开发工作。

本章要点(已掌握的在方框中打钩)

□ Eclipse概述

□ 掌握Eclipse的安装、设置与启动方法

□ 熟悉Eclipse的开发环境

□ 使用Eclipse创建Java程序

□ 在Eclipse中调试Java程序

本节视频教学录像:44分钟

本节主要讲解Eclipse工具安装、配置以及工作台等内容。

Eclipse是IBM花巨资开发的IDE集成开发环境(Integrated Development Environment),其前身是IBM的Visual Age for Java(VA4J)。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境,是可扩展的体系结构,可以集成不同软件开发供应商开发的产品,将他们开发的工具和组件加入到Eclipse平台中。另外Eclipse还附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

随Java应用的日益广泛,各大主要软件供应商都参与到Eclipse架构开发中,使得Eclipse的插件数量与日增多。Eclipse为程序开发人员提供了优秀的Java程序开发环境。

Eclipse的安装非常简单,仅需对下载后的压缩文件进行解压缩即可完成操作。

1.安装Eclipse开发工具

(1)笔者使用的Eclispe的版本是4.4,读者可在Eclispe的官方网址:http://www.eclipse.org/downloads/,下载该版本。

注意

操作系统的位数是指其所依赖的指令集位数,目前主要有32位和64位这两大类指令集。32位操作系统只能支持4GB以内的内存。64位操作系统可支持4GB以上的内存。为了保证应用软件的性能和兼容性,建议读者安装与操作系统位数相匹配的软件版本。

(2)根据你的操作系统类型下载对应版本的Eclipse,笔者的操作系统为64位Windows 7,所以单击上图所示的“Windows 64 Bit”链接地址,下载eclipse-standard-luna-R-win32-x86_64.zip,事实上,64位的操作系统也是可以安装32位Eclipse的,因为操作系统通常保证向前兼容。如果读者的操作系统是32位的,就单击“Windows 32 Bit”,下载对应的32位Eclipse。然后用WinRAR等解压缩软件,将该zip文件压缩包解压到本地。32位的操作系统是不能安装64位Eclipse的。下载页面会自动跳转到用户最近的Eclipse镜像下载点,下图所示的为中国科技大学的镜像地址。

注意

在安装Eclipse时,除了要考虑与操作系统的位数兼容,还要保证和Java的JDK位数一致(JDK的下载安装,我们已经在第一章讲到)。

(3)为了便于管理,读者可以将解压缩后的Eclipse文件夹复制到任意指定的文件夹中。例如,“D:\Development\Java”文件夹,这里的路径及文件夹名仅仅是为了举例说明,读者可根据自己的需要选择安装路径和创建文件夹,如“C:\我的开发\Java”都是合法可行的。

2.启动Eclipse

接下来可以启动Eclipse。具体步骤如下。

(1)Eclipse的启动很简单,进入Eclispe文件夹(如路径D:\Development\Java\Eclipse)。由于Eclipse是绿色软件,无需安装,双击运行eclipse.exe可执行文件,便可启动英文版的Eclipse开发工具,如下图所示。为了更方便的操作,这里可以将eclipse.exe发送到桌面快捷方式或固定到任务栏。默认的Eclipse版本是英文界面的,如果想安装其他语言版本(如中文)的Eclipse,请参阅第3步的设置。

(2)Eclipse启动后,Eclipse首先让用户选择一个工作空间(WorkSpace)。

注意

工作空间”实际上是一个存放Eclipse建立的项目的目录,包括项目源代码、图片等,以及一些用户有关Eclipse个性化的设置,如用于语法高亮显示的颜色、字体大小及日志等。一般来说,不同的Java项目,如果设置不同,需要使用不同的工作空间来彼此区分。如果想备份自己的软件项目,只要复制该目录即可。

在弹出的【Workspace Launcher】对话框的【Workspace】在文本框中输入你指定的路径,如“D:\Development\Java\workspace”,然后单击【确定】按钮。如下图所示。

该对话框用于设置Eclipse的工作空间,本书所使用的Eclipse工作空间为D:\Development\Java\workspace。

注意

Eclipse每次启动都会出现设置工作空间的对话框,如果选中【Use this as the default and do not ask again】复选框,就可以将当前的工作空间设置为默认的工作空间,这样再启动Eclipse时就不会出现此对话框了。

单击【OK】按钮,系统将出现Eclipse的欢迎界面,其中包含【Overview】【Tutorials】【Samples】和【What's New】以及工作台相关按钮和菜单栏等,如下图所示。

3.Eclipse的国际化

Eclipse默认安装的语言版本是英文。从初学者的角度考虑,如果集成开发工具是中文版的,读者在学习和使用的过程中会轻松很多。另外一点就是,读者可以方便地查阅中文教程和帮助信息。为此,读者可到Eclipse网站上下载多国语言包,从而实现Eclipse操作界面的国际化,进而选择中文语言来显示Eclipse程序界面。

在Eclipse国际化之前,首先要查看Eclipse的版本号:首先打开Eclipse软件,在菜单【Help】【About Eclipse】,查看当前的Eclipse版本号,如下图所示。

由上图方框标识的部分可以看出, Eclipse 4.4.0所对应的版本名称为Luna。在选择多国语言包的地址时一定要找到与你Eclipse版本相匹配的地址。目前官方给出的下载地址是以版本代号给出的,如本书使用的是Luna,另外还有Kepler、Juno、Indigo等早期版本。

注意

Eclipse除了用数字来标识版本号外,还给每个发行版本取了一个著名的人或物名,例如Eclipse 3.7 版本代号 Indigo (靛青)、Eclipse 4.2 版本代号 Juno(朱诺)、Eclipse 4.3 版本代号 Kepler(开普勒)及Eclipse 4.4 Luna(撸哪)等。

然后,到官方网站(http://www.eclipse.org/babel/downloads.php)找到与所安装的Eclipse版本相匹配的多国语言包:Babel Language Pack Update Site for Luna。

下面简要介绍两种相对简单的安装方式:在线安装及下载语言包安装。

1.在线安装汉化

(1)在Eclipse的菜单栏【Help】中,单击【Install New Software】选项,如下图所示。

之后,会弹出【Install】对话框,如下图所示。

在【Install】对话框中,单击右上角的Add(添加)按钮,在弹出的对话框【Add Repository】中,将【Name】对应的文本框中,输入“Language”作为名字,在【Location】对应的文本框中输入:http://download.eclipse.org/technology/babel/update-site/R0.12.0/luna,然后单击【OK】按钮,如下图所示。

需要说明的是,上述链接地址是多国语言包的在线安装的解析地址,直接在浏览器地址栏输入这个链接地址是无效的。此外,由于国内用户网络存在不稳定性,这样可能会导致出现无法有效解析上述国外网址的现象,这时需要读者耐心地多尝试几次。若想直接下载多国语言包文件,需要单击“Zipped p2 repository (84 MB)”对应的链接。

(2)然后会出现“Pending”字样,这是表示让等待一会,即将就绪,如下图所示。

(3)之后,在出现的插件列表中找到Babel Language Packs in Chinese (Simplified),其中Chinese (Simplified)字样表示的是简体中文版本,如下图所示。

(4)在它前面的复选框中打钩。然后单击【Next】按钮,出现这个语言包的安装细节【Install Details】,如下图所示。

(5)然后单击【Next】按钮,出现【Review Licences】,若想使用这个语言包,必须接收这个软件安装许可证协议,该协议里包含了免责条款及对用户的权利限制。选择“I accept the terms of the liences agrement”,单击【Finish】完成,如下图所示。

(6)然后等待Eclipse下载对应的语言包,这个过程需要一定的时间,读者也可以让下载过程运行在后台(Run in Backgroud),如下图所示。

(7)在安装过程中可能会出现安全警告(Security Warning),读者单击【OK】按钮即可,如下图所示。

(8)最后待安装完成后,重启Eclipse,如下图所示。

(9)按照以上步骤操作,即可实现Eclipse从英文版向中文版的切换,如下图所示。本质上,Eclipse的内核还是英文版的,其所谓的汉化并不完全,只对关键的地方(如菜单栏)进行了中文汉化,仍有很多文档仅提供英文版。

我们推荐读者在熟悉Eclipse使用后,切换到英文环境,这是因为有关Eclipse的最新、最权威文档及Eclipse使用过程中输出的调试信息很多都是英文的,任何语言经过一层“翻译”之后,信息都会在某种程度上有所损失。

2.下载语言包汉化

到官方网站(http://www.eclipse.org/babel/downloads.php)找到与所安装的Eclipse版本相匹配的多国语言包:Babel Language Pack Update Site for Luna。

(1)在语言包下载页面“Babel Language Pack Zips”单击Luna键,如下图所示。

(2)选择中文简体,如下图所示。

(3)单击“BabelLanguagePack-datatools-zh_4.4.0.v20140623020002.zip (87.72%)”,下载该汉化包。前面括号里的百分比%为汉化比例,由于Eclipse的汉化工作是志愿者义务在空闲时间翻译的,所以通常汉化工作不像商业软件那么彻底,随着时间的流逝,汉化比例会越来越高。

(4)在镜像网站下载语言包。

下载页面会自动跳转到距离用户最近的镜像站点,单击“[China] Beijing Institute of Technology (http)”下载语言包。

将汉化包下载好以后,解压缩,目录结构如下图所示。

然后把features和plugins这两个文件夹复制到eclipse安装目录(如D:\Development\Java\Eclipse\)下面的dropins目录(注意,不是plugins目录),dropins文件夹原本是空文件夹,复制之后如下图所示。

然后重启Eclipse,就已经成功汉化了,如下图所示。

在Eclipse的欢迎界面中,单击【工作台】按钮或者关闭【欢迎】的界面窗口,将显示出Eclipse的工作台,如下图所示。Eclipse工作台是程序人员开发以及调试程序的主要场所。

Eclipse的一大优势就在于它有非常多优秀的插件(Plug-in),这些插件采用无缝衔接的方式集成到该工作台中,这就使得Eclipse在运行系统之上可以实现各种插件带来的“附加”功能。拥有合适的Eclipse插件是非常重要的,因为一个好的插件可以大大的提高我们的工作效率,提高代码质量。例如, FindBugs插件可以帮助程序员更容易找到Java代码中的缺陷(Bug)。再例如,Checkstyle插件可以集成到Eclipse IDE中去,它能确保Java代码遵循标准代码样式。当然,作为一个开发平台,它也可在这个工作台中开发各种插件,然后安装在Eclipse之中,为己所用。

Eclipse 工作台主要有标题栏、菜单栏、工具栏、编辑器和各种视图(大纲视图、调试视图、团队视图)等,如下图所示。

项目资源管理器主要用于显示项目中的文件列表。文件编辑区用于显示当前编辑的文本(如Java源代码)。当文件被加入到项目中后,就可在资源浏览器或Java包浏览窗口中双击指定文件,Eclipse会试图打开这个文件,其中Eclipse内嵌的编辑器能缺省打开一些文件,如*.java,*.txt等。控制台(Console)用来显示程序调试信息或程序运行结果。

Eclipse的菜单栏中包含了Eclipse的基本命令,主要有【文件】、【编辑】、【源码】、【重构】等10个子菜单,下面分别给予简要介绍。

1.【文件】菜单

文件(File)菜单用于新项目的创建、保存以及关闭等操作。该菜单主要包含【新建】、【保存】、【关闭】、【打印】等,除此之外,还包括【切换工作空间】、【导入】及【导出】工作空间资源以及结束工作空间本身等命令,如下图所示。

2.【编辑】菜单

编辑(Edit)菜单主要用于辅助程序代码设计工作,如代码的【复制】、【剪切】、【粘贴】及【查找】等,如下图所示。

3.【源码】菜单

源码(Source)菜单中所包含的命令都是和代码编写相关的,主要用于源码的【注释】、【缩进】、【格式化】等工作,如下图所示。

4.【重构】菜单

重构(Refactor)菜单也可以在一些视图的快速菜单与Java编辑器中找到。它是Eclipse最为关键的菜单,主要包括对项目重构的相关命令,对本菜单需要重点掌握,如下图所示。

在Eclipse中,重构是指在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

具体举例来说,如果类放错了位置,可以通过【重构】将其前移至另一个包(package)里面。再例如,如果类、方法和变量等名称错了,可将这些名称进行改名。但是,这些名称的修改,可能会涉及整个项目的多个源码文件,“牵一发而动全身”,凡是涉及到这些名称的所有代码必须全部修改,否则局部修改后的代码可能难以使用。而在多个文件中,利用人工的方式逐一修改这些名称,工作量很大,而且极易出错。【重构】菜单下的命令可以方便地帮助用户完成这些功能。

提示

重构(Refactoring)从其英文构词法,就可以看出它是让某事物重新(re)回工厂(factory)加工。该概念最早源自Martin Fowler的著作《重构:改善既有代码的设计》。对这个软件设计理念感兴趣的读者可参阅此书。

5.【浏览】菜单

浏览(Navigate)可以寻找及导览工作空间中显示的资源及其他成品。它包含了一些浏览的动作,例如 【转至】、【打开类型】、【打开声明】及【显示位置】等,如下图所示。使用户既可以浏览,也可以仔细查看代码。例如,一个常见的可以添加到动作集的命令的例子是【浏览】 【打开类型】。该命令用来打开当前窗口中不可见的某种类型编辑器,这是一种横向导航的方式。

6.【搜索】菜单

搜索(Search)包括了丰富的查找命令,包括【Java】、【引用】、【声明】和【文件中出现的位置】等。如下图所示。搜索功能是 Eclipse 中一个非常重要的特性,它提供了丰富的查找结果(如用户可以输入“正确表达式”或任意字符串,指定查找范围和匹配选项等), 以及方便的定位,并可以查看查找历史记录和使用上一次的条件重新运行查找功能。

例如,通过【搜索】 【Java】,可以激活有关Java项目的查找功能,其对话框如下图所示。如果用户想比较精确的查找,可以通过对话框中的【搜索】、【限制为】及【搜索位置】来缩小搜索范围。

7.【项目】菜单

项目(Project)菜单主要用于管理Eclipse中的项目,可以对工作空间中的项目执行动作(构建或编译)。该菜单包括用于项目的【打开】、【关闭】及【自动构建】等操作,如下图所示。

在Eclipse中,从软件开发的角度来考虑,“项目”是指独立的应用程序或模块,它可以理解为是实现某项功能的源代码文件的集合。

8.【运行】菜单

运行(Run)菜单中包含了与程序【运行】和【调试】相关的各种操作,同时还具有保存【运行历史】和【调试历史】的记录功能,如下图所示。

【运行】菜单中常用的【运行】和【调试】命令,可分别用快捷键【Ctrl+F11】和【F11】来激活。使用快捷键可以提高程序的开发效率。

9.【窗口】菜单

窗口(Window)菜单主要用于显示、隐藏或处理Eclipse中的各种视图和透视图,如下图所示。视图是为了定义Eclipse在窗口里显示的最初的设计和布局。

工作台会有许多不同种类的内部窗口,称为视图(View)。之所以称为视图,是因为这些窗口是以不同的视野来看整各项目。例如,大纲视图(Outline)可查看项目中当前选中的源文件的概略状况,如类名、方法名等。如下图所示。

视图主要控制在菜单和工具上显示什么内容。例如,在【窗口】 【打开透视图】 【Java】中,一个Java 视图包括常用的编辑Java源程序的视图;而在【窗口】 【打开透视图】 【调试】中,用于调试的透视图则包括调试Java程序时要用到的视图。

10.【帮助】菜单

帮助(Help)菜单主要是提供有关使用工作台的说明,如下图所示。例如,【欢迎】这个指令会开启欢迎使用内容。【帮助内容】这个指令显示说明视图。说明视图含有工作台和已安装特性的相关信息。【安装新软件】这个指令会开启安装Eclipse的新插件和软件包等对话框。

本节视频教学录像:20分钟

通过前面的学习,读者对Eclipse工具应该有了一个基本的认识。本节学习如何使用Eclipse完成HelloWorld程序的编写和运行。

【范例2-1】 创建HelloWorld项目。使用项目向导创建一个Java项目。

在Eclipse中编写应用程序时,需要先创建一个项目。在Eclipse中有多种项目(如CVS项目、Java项目及Maven项目等),其中Java项目是用于管理和编写Java程序的,这类项目是我们目前需要关注的,其他项目属于较为高级的应用,读者在有一定的Java编程基础后,可在参阅相关资料来学习它们的应用,创建Java项目的具体步骤如下。

(1)选择【文件】【新建】【Java项目】命令,打开【新建项目】对话框,如下图所示。

(2)在弹出的【新建Java项目】对话框的【项目名】文本框中输入【HelloWord】文本,如下图所示。

(3)单击【完成】按钮,完成Java项目的创建。在【包资源管理器】窗口中便会出现一个名称为【HelloWorld】的Java项目,如下图所示。

【范例2-2】 创建Hello Word类文件。使用向导创建一个Java类文件。

通过前面创建Java项目的操作,在工作空间中已经有一个【Java 项目】了。构建Java应用程序的下一个操作就是要创建HelloWorld类。创建Java类的具体步骤如下。

单击工具栏中的【创建类】按钮或者在菜单栏中执行【文件】【新建】【类】命令,如下图所示,启动【新建 Java 类】向导。

(1)在【源文件夹】文本框中输入Java项目源程序的文件夹位置。通常系统向导会自动填写,如无特殊情况,不需要修改,如下图所示。

(2)在【包】文本框中输入该Java类文件准备使用的包名,系统默认为空,这样会使用Java项目的【缺省包】。

(3)在【名称】文本框中输入新建类的名称,如“HelloWorld”。

注意

在这里使用的类的名称和项目的名称一致,这并不影响使用,它们分别代表类文件和Java项目文件,需要注意区分。

(4)选中【public static void main ( String [] args )】复选框,向导在创建类文件时,会自动为该类添加main()方法,使该类成为可以运行的主类。

(5)单击【完成】按钮,完成Java类的创建,如下图所示。

在编写代码之前,读者需要了解“类”、“包”和“文件”这三个概念(后续的章节会更为详细地讲解)。类可以看作是用户自定义的一种数据类型。由于Java是一门纯面向对象的编程语言,在Java项目中,会用到大量的类。如果项目大了,难免会产生类的名称是相同的。例如,在“圆柱体”工程和“球体”工程中,它们可能都有相同的类名——体积类,而对于Java编译器来说,相同的作用范围内,类的名称必须是唯一的(即无二义性)。为了解决这个问题,Java就用“包(Package)”的概念,让有可能重名的类处于不同的“包”里。这样,“圆柱体”包里的“体积类”和“球体”包里的“体积类”就可以区分开了。

如同有两个人都叫“张三”,他们客观存在着,且都不想改名,为了区分二位,我们可用“河南的张三”和“河北的张三”来加以识别。这里的“河南”和“河北”,在一定意义上,就可以理解为是不同的“包”。有了“包”的概念,可以在很大程度避免类、方法等的重名。Java里的“包”概念和C++中的“名称空间(Namespace)”有着类似的含义。而所有的类都必须保存于某个特定的文件之中,这也就是源码文件(即.java文件)。

【范例2-3】 在代码编辑器中编写HelloWorld程序代码(HelloWorld.java)。

编辑器位于Eclipse工作台的中间区域,该区域可以重叠放置多个编辑器。编辑器的类型也可以不同,但是主要的功能都是完成Java程序、XML配置等代码的编写或者进行可视化设计工作。下面介绍如何使用该编辑器和使用代码辅助功能,来快速编写Java应用程序。

1.打开编辑器

当使用创建Java类向导完成Java类文件的创建后,在Eclipse的工作台上会自动打开Java编辑器新创建的Java类文件。打开Java编辑器的方法如下。

(1)在【包资源管理器】窗口中,双击或者右击Java源文件HelloWorld.java,如下图所示。

(2)在弹出的快捷菜单中执行【打开】命令,便可打开Java编辑器界面,如下图所示。

提示

在Java代码编辑器的左侧右击,在弹出的快捷菜单中选择【显示行号】菜单项,可以启动Java编辑器自动显示行号的功能。

2.编写Java程序代码

Eclipse具有强大的Java语法突出显示功能。例如,Java编辑器能以各种样式(如字体加粗或斜体等)和不同的颜色来突出显示Java语法(如用紫色显示Java关键字,绿色显示注释部分)用户可根据自己的习惯在菜单栏【窗口】【首选项】【Java】【代码样式】中做个性化的设置。其中被突出显示的语法包括程序代码注释、Javadoc注释、Java关键字、变量以及字符串等。

此外,Eclipse还有不错的代码辅助功能。例如,在编写Java程序代码时,可以使用【Ctrl+Alt+/】组合键自动补全Java关键字,也可以使用【Alt+/】快捷键启动Eclipse的代码辅助菜单。下面介绍如何使用Eclipse的代码辅助功能完成Hello world类的代码编写,具体的操作步骤如下。

(1)在【包资源管理器】窗口中,双击【HelloWorld.java】Java源文件。

(2)在Java代码编辑器的左侧右击,在弹出的快捷菜单中选择【显示行号】菜单项,如下图所示。

注意

下面仅需在第6行代码中输入“System.out.println("Hello World!");”代码,就可以完成输出Hello World!语句的功能。

(3)在第6行代码中输入Sys后按住【Alt+/】快捷键启动Eclipse的代码辅助菜单,使用上下方向键移动选中的项,按回车键确认,也可直接用鼠标在辅助菜单中双击选中System项,便可自动输入该项,如下图所示。

(4)按照相同的方法,完成“System.out.println("Hello world!");”语句的输入,如下图所示。

(5)在Eclipse中读者还可以直接选择【sysout -打印到标准输出】选项来完成输出语句的快捷编写。第(3)步和第(4)步中的非快捷编写,如果用户想输入“System.out.println( )”,用户需要多用2次智能提示才能完成。在完成System的输入后,按下点“.”,从可选项中选择“out”,如下图(左)所示。

然后,在完成“out”输入后,接着输入点“.”,从可选项中输入println(),如下图(右)所示。

而如果读者选择【sysout -打印到标准输出】选项,则一次性的输出语句“System.out.println();”,如下图所示。

(6)如果在输入的过程中出现了漏输入或者错误的输入,将鼠标停留在红色处,编辑器会做出正确的语法提示,如下图所示。

(7)如果完成了完整语法的输入,最后没有输入【;】语句结束符号,系统也会给出正确的语法提示,如下图所示。

(8)完整的代码如下所示。

01    public class HelloWorld  {
02          public static void main(String[] args) {
03             System.out.println("Hello world!");     //输出"Hello World !"到控制台
04          }
05    }

【范例2-4】 运行HelloWorld程序。在控制台中显示HelloWorld程序运行结果。

前面所创建的HelloWorld类是包含main()主方法的,它是一个可以运行的主类。具体运行方法如下。

(1)在【包资源管理器】窗口中,右击【HelloWorld.java】Java源文件。

(2)在弹出的快捷菜单中执行【运行方式】【Java应用程序】命令,在弹出的【保存并启动】对话框中单击【确定】按钮,保存并启动应用程序。如果选中【在启动前始终保存资源】,那么每次运行程序前将会自动保存文件内容,从而跳过下图对话框。

(3)单击【确定】按钮后,程序的运行结果便可在控制台中显示出来,如下图所示。

本节视频教学录像:7分钟

在Eclipse中,交互式运行代码是其最强大的特性之一。使用JDT调试器,可以逐行执行Java程序,检查程序不同位置变量的值,这个过程在定位代码中的问题时非常有用。

为了准备调试,需要在代码中设置一个断点,以便让调试器暂停执行,而允许进行调试,否则程序会从头执行到尾,就没有机会调试了。在编辑器左边灰色边缘双击,这里将第3行代码println()函数位置设置为断点,此时会显示一个蓝色的小点,表示一个活动的断点,如下图所示。

在调试器中运行程序和正常运行类似,Eclipse提供了两个选项:【Java应用程序】和【调试】。

(1)在代码中右击,在弹出的快捷菜单中单击【调试方式】【Java应用程序】选项,如下图所示。

Eclipse将会启动程序,在弹出的对话框中单击【是】,并选中【记住我的决定】,如下图所示。

(2)自动切换到调试透视图,在断点暂停执行。如前文所述,所谓视图,就是工作台中的不同种类的内部窗口。调试透视就是方便调试程序,其显示的几个与调试相关的小窗口,包括【调试】视图、【变量】视图、【源代码】、【大纲】视图及【控制台】等。如下图所示。

Eclipse 平台的特色在于内置了 Java 的调试器,该调试器提供所有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及暂挂和恢复线程的能力。调试视图作为Eclipse调试透视图的一部分,如上图(左上窗口)所示,调试视图在工作台中管理程序的调试和运行,它为调试中的每个目标显示其暂挂线程的堆栈帧。程序中的各个线程以作为树的节点出现,而调试视图则显示运行中的各目标的进程。

(3)在代码中右击,在弹出的快捷菜单中单击【调试方式】【调试配置】选项,打开【调试配置】对话框。这里采用的是对调试选项的一些标准配置,如下图所示。

除此之外,Eclipse还支持远程Java调试。这种情况下,用户要选择左侧视图中的【远程Java应用程序】项,可以创建一个新的远程启动配置,如输入运行 Java 程序的远程主机的 IP 地址或域名等。

(4)单击上图中的【调试】按钮,Eclipse将会回到调试透视图,在断点暂停执行,如下图所示。

程序执行到断点被暂停后,可以通过Eclipse窗口工具栏中的按钮进行相应的调试操作。例如在【调试视图】选择继续、停止等,如下图所示。

本节视频教学录像:3分钟

1.英文Windows 7下Eclipse的中文界面切换

如果读者的Windows 7是英文版本的,还想使用中文版本的Eclipse,除了在2.1.2小节介绍的下载多国语言包之外,还要在桌面的Eclipse图标,右键单击【Property】,在出现界面的【Target】文本框中添加启动参数:D:\eclipse\eclipse.exe -nl "ZH",如下图所示,然后单击【OK】,即可完成Eclipse的中文界面转换。这里的“ZH”表示中文,而“D:\eclipse\eclipse.exe”是英文版Windows 7操作系统下的Eclipse所在路径。

2.Eclipse的英文界面恢复

虽然Eclipse的中文版更适合初学者,但建议英文基础比较好的读者,直接用英文版的Eclipse,这将对以后的学习有很大帮助,习惯于英文开发环境亦是一个Java高手的特征之一。如果Java学习有了一定的时间,读者想将中文的Eclipse切换回英文版,其实不用将2.1.2小节安装的多国语言包删除,仅在快捷方式中目标的地址后面加上参数(-nl "区域语言代码"),即可实现界面语言的切换,如:

D:\eclipse\eclipse.exe -nl "EN"。

如下图所示,其中“D:\eclipse\eclipse.exe”是Eclipse的所在路径,“EN”表示英文。

启动Eclipse的中文界面

还原Eclipse的英文界面

3.Eclipse并不是Java程序开发的必选项

学习Java过程中,要对Eclipse有个客观的认识。事实上,Eclipse仅是一个好用的Java集成开发环境,并不是学习Java的“标配”,等读者有一定的编程经验,可完全脱离Eclipse来开发Java程序。可用编辑器如Notepad++、Utraedit等(Linux下可以使用vim或gedit)来编辑Java源代码,然后用Oracle公司提供的JDK,仅使用javac和java等命令就可实施Java程序的开发。

4.常用的Eclipse快捷键

读者如果能熟练使用Eclipse的快捷键,可提高Eclipse的使用效率。下表给出使用频度较高的快捷键。

快捷键

快捷键作用

Ctrl + Shift + O

引入及管理imports语句

Ctrl + Shift + T

打开Open Type 查找类文件

Ctrl + Shift + F4 (Ctrl + W)

关闭打开的窗口

Ctrl + Shift + F

对所选代码自动调整格式

Ctrl + Shift + /

为所选区域添加星号类型注释

Ctrl + Shift + \

为所选区域取消注释

Ctrl+ 鼠标

打开鼠标所指变量的声明

Ctrl + E

打开编辑器(切换窗口)

Ctrl + /

注释本行

Ctrl + D

删除本行

Alt + Shift + R

变量重命名(变量重构)

Alt + Shift + L

抽取本地变量

Alt + Shift + M

抽取方法

Alt + Shift + J

添加注释

Ctrl + Alt + ↓(↑)

向下(上)复制本行

Alt + ↓(↑)

向下(上)移动本行

Alt + /

输出提示

本节视频教学录像:6分钟

在Eclipse中创建一个项目并编写程序,实现在控制台输出“《Java从入门到精通》是学习Java的好助手!”,程序运行结果如下图所示。


相关图书

Java核心技术速学版(第3版)
Java核心技术速学版(第3版)
Effective Java中文版(原书第3版)(5天免费训练营详情页扫码报名)
Effective Java中文版(原书第3版)(5天免费训练营详情页扫码报名)
Java研发自测入门与进阶
Java研发自测入门与进阶
Java开发坑点解析:从根因分析到最佳实践
Java开发坑点解析:从根因分析到最佳实践
冲刺高薪Offer——Java通用架构方案及面试指南
冲刺高薪Offer——Java通用架构方案及面试指南
Java编程动手学
Java编程动手学

相关文章

相关课程