
第1篇 基础篇
第1章 Java之印象
前些年,张艺谋拍了一部宣传片《印象西湖》,这部宣传片曾风靡大江南北,可谓是给没去过杭州西湖或者初次去西湖的人留下了深刻的印象。Java是什么呢?在打开本书之前,它又留给你什么样的印象?为什么让你在众多的语言中选择并学习这么优秀的技术呢?它能带来什么呢?这些疑惑在本章将会为读者朋友讲解。学完本章后,初学者对Java应有一个深层次的印象。
1.1 引出问题
9月9日,7:00,晴
秋高气爽,天空依然很蓝!今天是我升入大学后的第八天,此时我的心里还是充满了各种新奇:学校的图书馆很大,师兄师姐们的毕业产品很了不起……我带着新奇的心情领来了自己的教材。
我:“我领回教材了,竟然发现有Java语言!上中学时我就听说了C语言和Visual Basic,后来又听说了C++、Java,我一直以为它们和JavaScript脚本语言差不多,现在我才知道原来Java是一门独立的语言。现在学Java还有用吗?”
KNOWALL:“我只能很负责地对你说,Java是当今使用最频繁的编程语言之一,并且一直位列前三甲!”
我:“Java真有这么厉害吗?”
KNOWALL:“Java吸取了C语言和C++的精华,遵循了面向对象思想,是一种高级语言。我们来看看主流编程语言之间的关系,如图1-1所示。”

图1-1 主流编程语言的发展
1.2 Java为何物
我:“Java真的有那么神奇吗?”
KNOWALL:“Java语言当然十分优秀,它颠覆了整个程序世界。让风靡一时的C++、Basic都感到了它的光辉,Java在Web应用、桌面应用和服务器等领域都有很深的造诣。”
1.2.1 探寻Java的起源
9月9日,7:10,晴
我:“既然Java源于C,那么Java肯定是在C语言之后诞生的。”
KNOWALL:“Java从1995年5月推出,到2009年4月20日被Oracle收购,直到现在,有15年的历史了!具体发展历程如图1-2所示。”

图1-2 Java的发展历程
1.2.2 看Java的特点
Java是一种简单的、面向对象的、分布式的、解释型的、健壮安全的、结构中立的、可移植的、性能优异和多线程的动态语言。当1995年Sun公司推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。现在的Java主要有如下特性。
(1)Java语言是简单的:一方面,Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
(2)Java语言是一个面向对象的:Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象的程序设计语言。
(3)Java语言是分布式的:Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(Java.NET),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
(4)Java语言是健壮的:Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
(5)Java语言是安全的:Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
(6)Java语言是可移植的:这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
(7)Java语言是解释型的:如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在链接阶段被载入到运行环境中。
(8)Java是高性能的:与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展,越来越接近于C++。
(9)Java语言是多线程的:在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程;其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是,Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
(10)Java语言是动态的:Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
1.3 我们需要准备什么
9月9日,7:30,晴
我:“开始编写程序之前,我得先安装一种开发工具吧?”
KNOWN:“是的,任何高级语言都有与之想配合的开发工具。但是我们现在先不说开发工具,在安装开发工具之前必须先搭建Java开发环境。”
我:“Java的开发环境有很多吗?”
KNOWALL:“Java在各个领域都发挥得不错,所以开发环境也有多个,这得根据你的需求来选择对应的环境。”
我:“选择开发环境后,才能安装开发工具吗?”
KNOWALL:“是的。简单地说,JDK是Java的工作环境,JRE是Java程序的运行环境,IDE是集成开发平台,例如Eclipse、Lomboz等,具体如图1-3所示。”

图1-3 Java开发环境和工具
第1步:在使用Java开发之前,需要先搭建其开发环境,即需要JRE的支持。在Windows上安装JRE/JDK非常简单,首先在Sun官方网站下载,网址为developers.sun.com/downloads/,如图1-4所示。

图1-4 Sun官方下载页面
第2步:在图1-4中可以看到有很多版本,运行Eclipse时,虽然只需要JRE就可以了,但是在开发Android应用程序的时候,需要完整的JDK(JDK已经包含了JRE),且要求其版本在1.5以上,这里选择Java SE (JDK) 6,其下载页面如图1-5所示。

图1-5 JDK下载页面
第3步:在图1-5中找到“JDK 6 Update 13”,单击其右侧的“Download”按钮,出现让用户选择其操作系统和语言的界面,在此首先选择“Windows”,然后单击“Download”按钮,如图1-6所示。

图1-6 选择“Windows”
第4步:在图1-6中找到“JDK 6 Update 13”,单击其右侧的“Download”按钮,出现让用户选择其操作系统和语言的界面,在此首先选择“Windows”,然后单击“Download”按钮,如图1-7所示。

图1-7 选择“Windows”
经过上述操作后,就已经开始下载安装文件“jdk-6u17-windows-i586-p.exe”了。
第5步:下载完成后双击“jdk-6u17-windows-i586-p.exe”文件开始进行安装。将首先弹出“许可证协议”对话框,在此单击“接受”按钮,如图1-8所示。

图1-8 “许可证协议”对话框
第6步:弹出“安装路径”对话框,在此选择文件的安装路径,如图1-9所示。

图1-9 “安装路径”对话框
第7步:单击“下一步”按钮,开始进行安装,如图1-10所示。

图1-10 开始安装
第8步:完成后弹出“目标文件夹”对话框,在此选择目标文件夹的路径,如图1-11所示。

图1-11 “目标文件夹”对话框
第9步:单击“下一步”按钮后,继续开始安装,如图1-12所示。

图1-12 继续安装
第10步:完成后弹出“完成”对话框,单击“完成”按钮,完成整个安装过程,如图1-13所示。

图1-13 完成安装
完成安装后,我们可以检测是否安装成功,具体的方法是:依次单击【开始】→【运行】菜单,在运行框中输入“cmd”并按下回车键,在打开的CMD窗口中输入java -version,如果显示如图1-14所示的提示信息,则说明安装成功。

图1-14 CMD窗口
如果检测没有安装成功,则需要将其目录的绝对路径添加到系统的PATH中。添加过程如下:
第1步:鼠标右键单击“我的电脑”,在弹出的快捷菜单中选择【属性】→【高级】,单击下面的“环境变量”,在下面的“系统变量”处选择“新建”,在弹出的对话框中,在“变量名”处输入JAVA_HOME,在“变量值”中输入刚才的目录,比如C:\Program Files\Java\jdk1.6.0_17,如图1-15所示。

图1-15 设置系统变量
第2步:再新建一个变量名为classpath、变量值为“.;%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar”的系统变量,确定后找到PATH的变量,双击或单击编辑,在变量值最前面加上“%JAVA_HOME%/bin;”,如图1-16所示。

图1-16 设置系统变量
第3步:再次依次单击【开始】→【运行】,在运行框中输入“cmd”并按下回车键,在打开的CMD窗口中输入java -version,如果显示如图1-17所示的提示信息,则说明安装成功。

图1-17 CMD界面
注意
上述变量设置中,是按照笔者的安装路径设置的,笔者安装JDK的路径是C:\Program Files\Java\jdk1.6.0_17。
1.4 开始体会Java程序之旅
9月9日,9:00,晴
我:“终于可以写第一个Java程序了,好激动啊!”
KNOWALL:“呵呵,人生太多第一次,第一次步入校园……第一次都会带给你很深的记忆。作为初学者,体会的第一个程序要尽量简单!写这个程序的目的是测试开发环境,并对Java基本的程序元素做一个大体的了解。”
1.4.1 一个简单的Java程序
KNOWALL:“看清楚了,仔细看我的操作过程!”
当安装和配置好JDK后,开始编写JDK程序,测试Java的环境是否正确。
(1)打开任意一个磁盘,在组织下拉列表中选择“文件夹和搜索选项”命令,如图1-18所示。

图1-18 选择命令
(2)单击“查看”选项卡,在高级设置列表中取消选择复选框,单击
按钮,如图1-19所示。

图1-19 取消选择扩展名
(3)新建一个记事本,然后在记事本里输入下面的程序:
class LoveJava{ /** * 这是一个 main 方法 */ public static void main(String [] args){ /* 输出此消息 */ System.out.println("Java,你好!"); } }
输入完成后,选择“文件”→“保存”命令,如图1-20所示。

图1-20 编写的第一个Java程序
(4)将这个文件命名为“JavaLove.java”程序。
提示
编写Java程序时要注意,class后面的名称要与Java源文件名对应,初学者一定要注意,以免出错。
1.4.2 编译和运行Java文件
编译和运行程序十分简单,用户只需要在DOS环境下进入编写源文件的地方,然后执行两个命令即可,其具体操作如下:
(1)单击“开始”菜单,选择“运行”命令,然后在打开的对话框中输入“CMD”,按【Enter】键进入DOS环境,如图1-21所示。

图1-21 进入DOS环境下
(2)本地Java文件保存在E盘的“123”文件夹下,用户需要使用DOS命令打开这个文件夹,如图1-22所示。

图1-22 使用命令打开文件夹
(3)输入Javac和Java命令将源文件进行编译和执行,操作后如图1-23所示。

图1-23 执行和编译Java文件
提示
在上面的操作中,使用DOS命令打开文件夹很烦琐,用户可以将快捷方式复制到需要打开的文件夹中。其具体操作是用户在C盘搜索Windows PowerShell程序,如图1-24所示。

图1-24 搜索出的快捷方式
我:“程序代码够简单,但是操作起来很复杂!”
KNOWALL:“哪有啊,你只需按照图1-25所示的流程操作即可。”

图1-25 Java程序开发流程
1.5 解决问题——谈Java的江湖地位
Java究竟有多强,仁者见仁,智者见智!但是从使用者的数量来看,近两年,Java一直稳居前两名(出自国外知名统计社区的统计)。至于Java的好处,我觉得在此没有说的必要了,因为大家都很明白。下面只从两个方面来阐述Java的地位。
1.专家的意见
看专家给出的下列比较。
·服务器领域:Java在服务器编程方面已经成就了霸主地位,是其他语言无法比拟的。
·移动设备:当今最火的手机平台之一Android是完全基于Java的,并且J2EE也是很火的手机平台之一。
·桌面应用:现在Java已经与C++和.NET三分天下。
2.就业前景
根据IDC(互联网数据中心)的统计数字,在所有的软件开发类人才的需求中,对Java工程师的需求达到全部需求量的60%~70%。应该说,Java软件工程师的就业机会和前景是非常大的,再加上Java软件工程师不仅是IT企业需要的,广大的非IT企业也需要,即就业前景是非常乐观的。
1.6 我的总结
本章简要介绍了Java的基本知识,表1-1是我的学习时间进度表。
表1-1 时间进度表
