第章1 Java语言概述 Java是一种面向对象的程序设计语言。本章首先介绍Java的发展历程,让读者对Java 有基本的认识,了解Java的特点和运行机制;然后详细讲解Java开发环境的搭建和开发流 程,包括一些基本的注意事项。 学习目标 .认识Java,并了解其发展历程。 .熟悉Java语言的特点及应用领域。 .掌握安装并配置Java开发环境的方法。 .掌握Java中Path及claspath属性的作用。 .能够编写并运行一个简单的Java程序。 .掌握Java的开发流程。 .了解常用的Java开发工具。 1.1 认识Java 1.1.1 什么是Java 在认识Java之前,先了解两个基本概念。 1.软件开发 软件开发是根据用户要求建造软件系统或者系统中的软件部分的过程。软件开发是一 项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件是一系列按照特定顺序组 织的计算机数据和指令的集合,分为系统软件和应用软件。软件一般使用某种程序设计语 言来实现,通常采用相应的开发工具进行开发。 开发出来的软件系统可以帮助人们解决和处理各种问题,必然产生人机交互。人机交 互方式有两种:图形用户界面(graphicaluserinterface,GUI)和命令行界面(commandline interface,CLI )。第一种方式简单直观,用户易于接受,容易上手操作,如Windows操作系 统;第二种方式需要一个控制台,用户输入特定的指令,让计算机完成操作,较为麻烦,需要 用户记住一些命令,如DOS操作系统。 2.计算机语言 语言是人与人之间用于沟通的一种方式。例如,中国人与中国人用普通话沟通;中国人 要和英国人交流,需要学习英语。计算机语言是人与计算机交流的方式。如果人要与计算 机交流,需要学习计算机语言。计算机语言有很多种,如C、C++、Java、PHP等。 Java 程序设计(第2 版) Java是Sun公司(全称Stanforduniversitynetwork,于1982年成立。2009年4月 20日,被甲骨文公司以约74亿美元收购)开发的一套编程语言,主设计者是JamesGosling(见图1-1),最早来源于一个叫Gren的项目。这个项目最初的目的是为家用电子消费产 品开发一个小巧、易用、安全稳定、与平台无关的分布式代码系统,以便通过网络对家用电器 进行控制。一开始,Sun公司的工程师们准备采用C++语言来开发,但由于C++过于复杂, 安全性差,于是他们决定基于C+ + 开发一种符合自己要求的新语言。1991年4月,历时 18个月,新语言的第一个版本诞生了。命名时,JamesGosling看到窗口的橡树(见图1-2), 遂为其取名为Oak,希望它能够有橡树一般坚强的生命力。后来,他发现Oak是Sun公司 另外一种语言的注册商标,于是1995年将这种新语言更名为Java,即太平洋上一个盛产咖 啡的岛屿的名字。Java是一种用于网络的,精巧而安全的语言,使程序能够最大限度地利 用网络资源。 图1-1JamesGosling 图1-2 印度橡树 Java语言发展到今天,有多个版本。1995年5月23日,Su0版, n公司推出JDK1.标志 着Java正式进军InterneSun公司对JDK1.并推出JDK1. t。1998年,0升级,2的开发包, 加入大量的轻量级组件包。从此,a正式命名为Ja2 。 JavavJava语言经历了以下3个发展方向。 (1)J2SE(Java2platformstandardedition):包含构成Java语言核心的类,如数据库 连接、接口定义、输入/输出和网络编程,主要用于开发一般个人电脑上的应用软件。 (2)J2ME(Java2platformmicroedition):包含J2SE中的一部分类,用于消费类电子 产品的软件开发,如呼机、智能卡、手机、PDA和机顶盒。 (3)J2EE(Java2platformenterpriseedition):即Java企业版,包含J2SE中的所有类, 还包含用于开发企业级应用的类,如EJB 、Servlet、JSP 、XML和事务控制,也是现在Java应 用的主要方向,用于开发企业级应用软件。 上述3项中的核心部分是J2SE,2ME和J2EE是在J J2SE基础上发展起来的。 【注】在2005年“Java十周年大会”之后,上述3门技术被重新命名。 (1)J2SE更名为JavaSE 。 (2)J2ME更名为JavaME 。 (3)J2EE更名为JavaEE 。 第 1 章 Java 语言概述003 1.1.2 Java语言的特点 Java总是和C++联系在一起,而C++是从C语言派生而来的,所以Java语言继承了这 两种语言的大部分特性。Jaa的语法从C语言继承而来,aa许多面向对象的特性都受到 vJvC++的影响。事实上,aa中的几个自定义特性都来自或可以追溯到它的这些前驱语言。 Jv 略有不同的是,Java语言完全面向对象,摒弃了C和C++的不足。Java语言的诞生与过去 近30 年中计算机语言的不断改进和发展密切相关。 Sun公司在《Java白皮书》中对Java的定义是:“Java:Asimple,object-oriented, ditiued,nepeed,out,acietr-etal,eue,prali-efracli srbtitrrtrbsrhtcuenurscrotbe,hghpromne,mutthedd,nniagae”即Jva是一种具有简单、面向对象、分布式、解释型、健壮、 raeaddyamclnuga 安全、与体系结构无关、可移植、(.) 高性能、多线程和动态执行等特性的语言。下面简述Java 的主要特性。 1. 简单易用 Java语言是一种相当简洁的面向对象程序设计语言,它省略了C++语言中所有难以理 解、容易混淆的特性,如头文件、指针、结构、单元、运算符重载和虚拟基础类等,更加严谨、 简洁 J 。 ava源代码的书写不拘泥于特定的环境,可以使用记事本、文本编辑器等;将源文件编 译后,可直接运行;再通过调试,得到预期的结果。 此外,a可以自动完成垃圾收集工作,回收不再使用的内存,使用户无须担心内存管 Jav 理之类的事情 。 2. 面向对象 面向对象是指以对象为基本粒度,其下包含属性和方法。对象的说明用属性表达,通过 使用方法来操作这个对象。可以这么说,面向对象是软件工程学的一次革命,大大提升了人 类的软件开发能力,是一个伟大的进步,是软件发展重大的里程碑。作为一种现代编程语 言,是不能偏离面向对象这一方向的,aa语言也不例外。 JvJava是一种面向对象的语言,具有面向对象的诸多优点,如代码扩展、代码复用等。 3. 分布式 Java语言具有强大的、易于使用的联网能力,非常适合开发分布式计算的程序。Java 应用程序可以像访问本地文件系统那样通过URL 访问远程对象。 使用Java语言编写Socket通信程序比使用其他任何语言都要简单。它适用于公共网 关接口(CGI)脚本的开发,还可以利用Java小应用程序(Applet)、Java服务器页面(Java JSP )、t等手段构建更丰富的网页。 serverpage,Servle 4. 解释型 Java是一种解释型语言,相对于C/C++,用Java语言写出来的程序效率低,执行速度 慢。但它可以通过在不同平台上运行Java解释器,解释Java代码,实现“一次编写,到处运 行”的目标。为此,牺牲效率是值得的。而且,现在的计算机技术日新月异,运算速度也越来 越快,用户不会感到太慢。 5. 健壮 Java语言在伪编译时做了许多早期潜在问题的检查,在运行时又做了一些相应的检 Java 程序设计(第2 版) 查,可以说是一种非常严格的编译器。它的这种“防患于未然”的手段将许多程序中的错误 扼杀在“摇篮”之中,使许多在其他语言中必须通过运行才会暴露出来的错误,在编译阶段就 被发现了。 另外,aa语言具备保证程序稳定、有效地减少了错误, aa应用程序 Jv健壮的特性, 使Jv 更加健壮 。 6.具有较高的安全性 人们设计Java语言时,在安全性方面考虑得很仔细,做了许多探究,使其成为目前非常 安全的一种程序设计语言。 对Java来说,安全性分为4个层面,即语言级安全性、编译时安全性、运行时安全性和 可执行代码安全性。语言级安全性指Java的数据结构是完整的对象,这些封装过的数据类 型具有安全性。编译时,要检查Java语言和语义,保证每个变量对应一个值,编译后生成 Jaa类。运行时,aa类需要使用类加载器载入, vJv由字节码校验器校验之后才可以运行。 Java类在网络上使用时,对其权限进行了设置,以保证被访问用户的安全性。 7.可移植性 对于程序员而言,写出来的程序如果不需要修改就能够同时在Windows、MacOS 、UNIX 等平台上运行,简直就是美梦成真,Java语言让这个原本遥不可及的事越来越近。使用Java 语言编写的程序,只需较少的修改,甚至有时根本不需修改,即可在不同的平台上运行。 8.拥有较高的性能 由于Java是一种解释型语言,其执行效率就会低一些,但采取下述两种措施,可使其拥 有较高的性能。 (1)Java语言源程序编写完成后,先使用Java伪编译器进行伪编译,将其转换为中间 码(也称为字节码)再解释。 (2)提供了一种即时(just-in-time,JIT)编译器。当需要更快的速度时,使用JIT编译 器将字节码转换成机器码,将其缓冲下来,速度就会更快。 9.具有多线程处理能力 线程是一种轻量级进程,是现代程序设计中必不可少的一种特性。多线程是指允许一 个应用程序同时存在两个或以上的线程,用于支持事务并发和多任务处理。多线程处理能 力使程序具有更好的交互性和实时性。 Java在多线程处理方面性能超群,除了内置的多线程技术之外,还定义了一些类、方法 等来建立和管理用户定义的多线程,具有让用户惊喜的强大功能,而且在Java语言中进行 多线程处理也很简单。 10.是一种动态语 言 Java是一种动态的语言,表现在以下两个方面 。 (1)在Java语言中,可以简单、直观地查询运行时的信息。 (2)可以将新代码加入到正在运行的程序中。 1.3 Jva程序的运行机制 1.a 在Java中处理代码的过程如图1-3所示。 从图13中可以看出,a源文件的扩展名为.a,通过编译,生成*.文件,在计 -Javjavclas 第 1 章 Java 语言概述005 图1-3Java程序的运行机制 算机上执行。此时执行*.的计算机并不是物理上可见的,而是Ja自己设计的一台 clas av 计算机———a虚拟机(JVM )。Ja通过JVM进行可移植性操作。 JavJavavirtualmachine,av 在Java中,所有的程序都在JVM上运行。JVM是在一台计算机上由软件或硬件模拟 clas av 的计算机,它读取并处理编译过的、与平台无关的字节码*.文件。Ja解释器负责将 Java虚拟机的代码在特定的平台上运行。JVM的基本原理如图1-4所示。 图1-4JVM的基本原理 从图14中可以发现,所有的*.文件都在JVM上运行,即*.文件只需要认 -clas clas 识JVM,由JVM去适应各个操作系统。如果不同的操作系统安装了符合其类型的JVM, 那么程序无论在哪个操作系统上都可以正确地执行。 有些读者可能很难理解以上的解释。其实这个过程类似于下述情景:有一位中国富商, 同时要和美国、韩国、俄罗斯、日本、法国、德国等几个国家的客户洽谈生意,可是他不懂这些国 家的语言,所以他针对每个国家都请了一位翻译。他只对翻译说话,不同的翻译就会将他说的 话译给相应的客户。这样,富商只需要对各位翻译说话,就可以同几个国家的客户进行沟通。 【注】Java的两种核心机制如下所述。 1)JavJavavirtalmachin (a虚拟机(e),是一台利用软件方法实现的虚拟的计算机,具有指 令集,并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。对于不同的平台,有不 同的虚拟机。Java虚拟机屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。 (2)垃圾收集机制(garbagecolection),即回收不再使用的内存空间。在C/C++等语 言中,由程序员负责回收无用内存。Java语言撤销了程序员回收无用内存空间的责任,它 提供一种系统级线程来跟踪存储空间的分配情况,并在JVM空闲时,检查并释放那些可被释 放的存储空间。垃圾回收在Java程序运行过程中自动执行,程序员无法精确控制和干预。 1.4 Jva语言的应用领域 1.a Java技术自1995年问世以来,在我国的应用和开发迅速普及。总体来看,主要集中于 Java 程序设计(第2 版) 企业应用开发。根据有关单位调查显示,从开发领域的分布来看,Web开发占了一半以上, 为57.9%;JvC/S应用占11.系统编程占15. aaME移动或嵌入式应用占15%;7%; 4% 。近 30%的开发者用Java从事C/S应用或系统级应用的开发。 Java语言主要应用在下述几个领域。 1.行业和企业信息化 由于Sun、IBM 、Oracle、BEA等国际厂商相继推出基于Java技术的应用服务器以及各 种应用软件,带动了Java在金融、电信、制造等领域日益广泛的应用。例如,清华大学计算 机系利用Java、XML和Web技术研制开发了多个软件平台,东方科技的TongWeb、金蝶 的Apusic、中创的Inforweb等J2EE应用服务器,以及和佳ERP和宝信ERP等ERP产品, 在许多企业得到应用。 2.电子政务及办公自动化 东方科技、金蝶、中创等公司开发的J2EE应用服务器在电子政务及办公自动化中广泛 应用。例如,金蝶的Apusic在民政部、广东省市工商局应用;东软电子政务架构EAP平台 在社会保险、公检法、税务系统应用;中创的Inforweb等Infor系列中间件产品在国家海事 局、山东省政府及中国建设银行、民生银行等金融系统应用;无锡永中科技基于Java平台开 发的国产化集成办公软件永中Ofice在一些省、市政府部门应用。 3.嵌入式设备及消费类电子产品 无线手持设备、通信终端、医疗设备、信息家电(如数字电视、机顶盒、电冰箱)、汽车电子 设备等是近几年来比较热门的Java应用领域。在这方面的应用有中国联通CDMA1X网 络中基于Java技术的无线数据增值服务———UniJa。 4.辅助教学 在辅助教学方面,东南大学与中兴通信公司利用Java语言联合开发了远程教学系统, 用于本地网上教学、课后学习和异地远程教育;清华大学利用Java语言进行了计算机软件 基础课教学改革,分析、研究Java教学软件BlueJ的汉化方案;电子科技大学应用JavaRMI 技术进行远程教育;西安电力高等专科学校采用Java技术开发了交互式电站仿真系统,实 现电站锅炉仿真、锅炉膛火焰仿真,为实现网上仿真进行了有益的探索。 1.2 Java 开发环境与开发工具 1.1 Jva开发环境 2.a 一台计算机上安装了JVM,即可运行Java程序。但是要开发Java程序,还需建立Java 开发环境。不同领域的Java开发应用所需的版本不同,本书使用JavaSE开发环境。 1.JavaSE的组成 JavaSE是一个包含Java开发环境和运行环境的套件,由以下3项组成。 (1)Javadevelopmentkit(JDK):Java应用程序开发环境。 Java不仅提供了丰富的语言和运行环境,还提供了一个免费的Java开发工具集,以便 程序员开发Java开发工具包。Java2SDK开发工具集如表1-1所示。 第 1 章 Java 语言概述007 表1- 1 Java2SDK 开发工具集 工具名称 说明 javac java appletviewer javadoc jdb javapjavah Java编译器,用于将Java源程序编译成字节码 Java解释器,用于解释、执行Java字节码 小应用程序查看器,用于测试和运行JavaApplet程序 Java文档生成器 Java调试器 Java类文件反汇编器 C文件生成器,实现在Java类中调用C++代码 JDK中除了包括Java开发工具以外,还包括JRE,所以安装了JDK,就不用单独安装 JRE ( 了 2) 。 Javaruntimeenvironment(JRE):Java应用程序运行环境,包括Java虚拟机 和 Java程序所需要的核心类库等。如果仅需运行开发好的Java程序,计算机只需要 安 装JRE 。 (3)Javaplug-in:Java插件。 JVM 、JRE与JDK的关系如图1-5所示。 图1-5JVM 、JRE与JDK的关系 2.建立JavaSE开发环境 6版本) 。 步骤1:安装JDK(本书使用JDK1. (1)准备好JDK的安装文件jdk-6u18-windows-i586seexe。从Oracle公司的网站 (htp:oal.om/ehewok/jv/jvs/downoddxjp138363.tml)下/i(.) //www.rcectcntraaaaelasne-s-h 载JDK工具包。 (2)运行.e文件,安装JDK 。默认安装在C:a文件夹下,本书更 ex\ProgramFiles\Jav 改安装在D:\Java文件夹下。 (3)按照安装向导的提示,完成安装,即可看到如图1-6所示的文件夹 。 ①bin:一些执行文件,包括Java的编译器、解释器和工具 。 ②demo:各种演示的实例 。 ③lib:保存的库文件 。 ④include:Win32子目录,都是本地文件 。 Java 程序设计(第2 版) 008 图1-6 安装JDK后的文件夹 ⑤jre:Java程序运行环境的根目录。 其中,bin 文件夹包含将来要使用的各种Java 命令,但是这些命令本身并不在 Windows环境之中。要想使用这些命令,必须先在Windows中注册。 步骤2:设置环境变量。 在JDK安装完毕后,需设置path和classpath这两个环境变量。这是程序编译和运行 的重要保证。 path指示Java命令的路径,如javac、java、javaw 等。这样,在控制台下面编译、执行程 序时就不需要再输入路径了。 由于JDK的安装路径多次使用,在此先新建环境变量JAVA_HOME,操作步骤如下: (1)选择“我的电脑”→“属性”命令,在打开的窗口中选择“高级系统设置”命令,打开 “系统属性”对话框,如图1-7所示。 (2)选择“高级”选项卡,然后单击“环境变量”按钮,打开“环境变量”对话框,如图1-8 所示。 (3)单击“系统变量”栏中的“新建”按钮,弹出“编辑系统变量”对话框。在“变量名”文 本框中输入JAVA_HOME,在“变量值”文本框中输入C:\Java\jdk1.7.0_03,如图1-9 所示。 path环境变量包含在Windows系统里,修改一下,使其指向JDK 的bin文件夹,即在 “环境变量”对话框中单击“系统变量”栏中的“编辑”按钮,弹出“编辑系统变量”对话框,然后 在“变量值”文本框的最前面加上路径,再用“;”将后面的路径分隔开,如“%JAVA_ HOME%\bin;”,如图1-10所示。 %注意: 环境变量的各变量值之间需用分号分隔。 第 1 章 Java 语言概述009 图1-7 “系统属性”对话框图1-8 “环境变量”对话框 图1-9 设置JAVA_HOME路径图1-10 设置Path路径 h是类库的默认搜索路径,即告诉JVM要使用或者执行的*.文件所在的 文件夹。这是专门针对Java的,故系统里没有这个环境变量,需要进行手动加入。 claspath的设置流程为:在“环境变量”对话框中单击“系统变量”栏中的“新建”按钮,弹出 “编辑系统变量”对话框;然后在“变量名”文本框中输入claspath,在“变量值”文本框中输 入.;%JAVA_HOME%\itjr;%JAVA_itosjr,如图1-11所示。注 claspatclas lb\d.aHOME%\lb\ol.a 意,最前面是“;”,这告诉JDK,搜索类时,先查找当前文件夹的.文件。 .clas 图1-11 设置claspath路径 最后,单击“确定”按钮,保存设置。启动cmd命令行方式,输入javac,如果出现如 图1-12所示的内容,则表示JDK配置成功。 Java 程序设计(第2 版) 01 0 图1-12 JDK配置成功演示 %注意1:修改Path与classpath之后,要重新启动命令行方式。 在进行环境设置时,可能出现“此命令不是系统内部命令”的提示,原因是在配置环 境属性之前,命令行方式已经启动,之后再配置Path路径和classpath路径,于是该环境 肯定无法立即生效。此时重新启动命令行方式,可以把新的设置读取进来。 %注意2:javac与java命令的作用。 javac.exe是Java本身提供的编译命令,主要目的是将*.java文件编译成*.class文 件。java.exe是Java提供的解释命令,主要用于解释、执行字节码文件。 1.2.2 Java开发工具 学过程序设计的人都知道,使用Basic语言进行程序设计,可以使用QBasic、Visual Basic等开发工具;使用C语言进行程序设计,可以使用TurboC、VisualC++、C++ Builder 等开发工具。这些开发工具集成了编辑器和编译器,是集成开发工具,使用较方便。学习 Java程序设计,同样需要方便、易用的开发工具。 Java的开发工具很多,而且各有优缺点,初学者往往不知道有哪些常用的开发工具,或 者由于面临的选择比较多而产生困惑。目前,比较流行的Java开发工具有EditPlus、 JCreator、Eclipse、MyEclipse、JBuilder、NetBeans等。下面介绍几款常用的开发工具,以便 初学者掌握并做出选择。 1.文本编辑器EditPlus EditPlus是功能全面的文本、HTML、程序源代码编辑器,默认支持HTML、CSS、 PHP、ASP、Perl、C/C++、Java、JavaScript和VBScript的语法着色。通过定制语法文件,还 可以扩展到其他程序语言。EditPlus编辑界面如图1-13所示。 EditPlus是共享软件,它的官方网址是www.editplus.com,最新版本是EditPlus3.31。