面向对象的程序设计方法是目前软件开发的主流技术。Java语言是由美国Sun公司开发的,是一种完全面向对象的程序设计语言。它具有面向对象、跨平台、安全、健壮、分布式等特点。由于Java语言从根本上解决了Internet的异质、代码交换以及安全性等诸多问题,因此,Java语言非常适合于企业网络和Internet环境下的应用开发,自1995年诞生以来,很快就风靡全球,现已成为Internet中最受欢迎、最有影响力的程序设计语言。Java语言已经成为最卓越的程序设计语言之一,并进入了主流计算模式,对传统的计算模式提出了新的挑战,对整个计算机软件行业的发展产生了极其重大而深远的影响。

1999年,Sun公司把Java技术分成J2SE、J2EE和J2ME,2005年分别更名为Java SE、Java EE和Java ME。其中,Java SE为创建和运行Java程序提供了最基本的环境;Java EE和Java ME建立在Java SE基础上,Java EE为分布式的企业应用提供开发和运行环境,Java ME为嵌入式应用提供开发和运行环境。可见,不论是从事Java EE开发,还是从事Java ME开发,要想成为Java方面的卓越工程师,就必须具备扎实的Java SE知识结构。

Java语言的简单性、完全面向对象等特点,使得它非常适合大学中面向对象程序设计的教学。本书就是提供了一本零起点、全面介绍Java SE的知识结构体系和讲解面向对象程序设计的教程。读者只需具有一些计算机文化基础知识,就可学习本教程,而不必具有编程经验。通过学习本教程,可使读者掌握Java应用程序和Java Applet的开发方法和技术、熟练使用一种开发工具进行Java程序设计、学会面向对象的思维方式及其编程风格。为进一步学习各种Java技术,从事Java EE开发或Java ME开发打下坚实的基础。

1.JAVA概述

随着计算机和Internet的发展,迫切需要面向网络的计算机语言。大家想一想,在PC上用Windows编写的程序,不做修改就直接拿到UNIX系统上运行,行吗?显然不行,因为程序必须转换成计算机硬件的机器指令才能执行,而专门为某种计算机硬件和操作系统编写的程序是不能够直接放到另外的计算机硬件上执行的,至少要做移植工作。而在网络环境下,网络上的计算机是五花八门的,即计算机的类型和操作系统是不一样的。例如,SUN工作站的硬件是SPARC体系,软件是UNIX中的Solaris操作系统;而PC的硬件是INTEL体系,操作系统是Windows或Linux。因此,要想让程序在网络中各种计算机上都能正常运行,这就要求程序设计语言能够跨越各种软件和硬件平台。Java就是在这种需求背景下诞生和流行的。微软的比尔·盖茨(Bill Gates)认为:“Java是长期以来最卓越的程序设计语言。”如今,它已经成为最流行的网络编程语言。

1.JAVA语言简介

1.1 JAVA发展历史

1991年,美国Sun Microsystems公司(以下简称Sun公司)的Jame Gosling、Bill Joy等为了能够在消费电子产品上开发应用程序,积极寻找合适的编程语言。由于消费电子产品种类繁多,所采用的处理芯片不相同,存在着跨平台的问题。当时,Sun公司的研究人员采用C++语言来编写消费电子产品的应用程序,但是研究表明,对于消费电子产品而言,C++语言过于复杂和庞大,并不适用,安全性也并不令人满意。于是,Bill Joy先生领导的研究小组就着手设计和开发出一种新语言,称之为Oak。Oak是一种与平台无关、可靠性强、小而灵活的编程语言,但在当时,该语言并没有引起人们的注意。

1994年下半年,随着Internet的迅猛发展,人们发现Oak这种中性平台及安全性高的面向对象语言恰恰就是全球信息网所期待的语言。为了使之适应网络需求,开发人员对Oak进行了一系列的改进,1995年,面向对象的Java语言诞生了。其响亮的口号是“Write Once,Run Anywhere”。Java的诞生对传统的计算模型提出了新的挑战。如软件4A目标要求软件能达到任何人在任何地方和任何时间对任何电子设备都能操作。




java语言程序设计自考教材电子版_Java

Java的发展历史



1.2 Java语言的特点

Sun公司在“Java白皮书”中对Java的定义是:“Java:A simple,object-oriented,distributed,interpreted,robust,secure,architecture-neutral,portable,high-performance,multi-threaded,and dynamic language.”按照这个定义,Java语言是一种简单的、面向对象的、分布的、解释的、健壮的、安全的、体系结构中立的、可移植的、高性能的、多线程的以及动态执行的程序设计语言。

1.简单易学

Java语言简单易学。其语法与C语言和C++语言很接近,但它丢弃了C++中复杂、不安全的特性,如指针与内存管理、操作符重载和多继承等。

2.面向对象

面向对象的技术是当今软件开发的主流技术之一。Java语言是一个彻底的纯面向对象的程序设计语言。它具有面向对象的封装、继承和多态三大特点。Java语言通过类实现封装,在类之间实现单继承,在接口之间实现多继承,并全面支持动态绑定来实现多态。

3.安全性

除了Java语言具有的许多安全特性以外,Java提供了字节码校验器、文件访问限制机制、类装载器和运行时内存布局四级安全保证机制。

4.跨平台(体系结构中立)

Java程序能够在网络上任何地方执行;完全统一的语言版本,实现平台无关性;字节代码与平台无关性;访问底层操作系统功能的扩展类库,不依赖于具体系统等。

5.多线程

Java环境本身就是多线程的。特别地,Java提供了对多线程的语言级支持,程序员能很方便地编写多线程应用程序。

6.动态性

Java所需要的类是运行时动态装载的,也可从网络载入。在分布环境中动态地维护应用程序和类库的一致性,类库的更新,不需重新编译程序,不影响用户程序的执行。

2.JAVA程序工作原理

2.1Java程序工作流程

学习Java语言,有必要了解Java的工作流程,这将更有助于理解Java语言的特点。

对于运行在Internet上的网络应用程序,需要有良好的可移植性。因为Internet是由各种各样不同类型的终端、服务器和PC等硬件设备组成的,而且在这些设备上运行的软件系统也是多种多样的,所以Internet上的网络应用程序应该具有在各种不同的软硬件平台上都能正常工作的能力。Java的工作流程使得它具有了这样的能力,如下图所示。




java语言程序设计自考教材电子版_java程序设计_02

Java的工作流程



Java的工作流程是:

(1)编辑Java源文件。首先,编程人员使用Java语言编写好源代码,形成源文件。文件名的后缀为.java。

(2)编译Java源文件。然后,使用Java编译器来编译Java源文件,生成一种二进制的中间码,称为字节码(byte code),形成字节码文件。文件名的后缀为.class。

(3)运行Java程序。最后,使用Java解释器来解释执行编译生成的字节码,完成Java程序要实现的功能。

2.2 Java虚拟机

Java虚拟机(Java Virtual Machine,JVM)是一个抽象的计算机处理器,负责运行Java字节码文件,负责把字节码解释成具体平台上的机器指令进行执行。它也称为Java解释器。

Sun公司对Java虚拟机规范进行了严格定义和控制。Java虚拟机规范规定了:

(1)Java虚拟机由6个部分组成:一组指令集、一组寄存器、一个类文件格式规定、一个栈、一个无用单元收集堆(Garbage-collected-heap)和一个方法区域。

(2)虚拟机能够认识的字节代码以及能实现的功能。

但是Java虚拟机规范没有规定Java虚拟机组织结构及其功能是如何实现的。而这些必须在真实机器上以某种方式实现,既可以用软件实现,也可以用硬件实现。因此,对于不同的软硬件平台(指处理器和操作系统),Java虚拟机就要作专门的实现。但是,在不同软硬件平台上的Java虚拟机,只要符合Java虚拟机规范,将保证字节码文件的正确执行。Java语言编译执行的过程,如图1-2所示。

Java平台由Java虚拟机和Java应用编程接口(Application Programming Interface,API)构成。Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为核心部分和扩展部分。核心Java API中封装了程序设计所需要的主要应用类。在硬件和操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台几乎已经嵌入到所有的操作系统。这样,Java程序只编译一次,就可以在各种系统中运行。




java语言程序设计自考教材电子版_java程序_03

Java语言编译执行的过程



2.3 Java语言的平台无关性

Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上正确运行。其原因主要是:

(1)Java语言是与平台无关的。它没有“依据机器的不同而不同”或“由编译器决定”等字眼。因此,Java语言编写的程序在不同平台上都是完全一样的。

(2)字节代码是与平台无关的。由Java编译器产生的字节代码是二进制码,它与具体的计算机处理器代码无关。

(3)Java虚拟机隐藏了不同平台的差异。字节码文件并不是直接运行在计算机平台上,而是运行在Java虚拟机上。Java虚拟机将字节码文件与操作系统及硬件分开,保证了字节码文件在不同平台上运行的正确性。

下面通过一个类比的例子说明C语言和Java语言跨平台的区别。假如一个外国人想和一个广东人、上海人和陕西人聊天。但这个外国人只懂英语,广东人只懂粤语,上海人只懂上海话,陕西人只懂陕西话。这样,这位老外必须将他的话分别翻译成粤语、上海话和陕西话,这三位中国人才能听懂。在这里做如下类比,英语相当于C语言,地方话相当于不同计算机平台的机器指令。在不同计算机平台上,C语言源程序必须经编译链接,形成该平台所识别的机器码文件后才能运行,如下图所示。




java语言程序设计自考教材电子版_Java_04

C语言的机器代码在不同计算机平台上的相关性



如果这位老外将英语翻译成普通话,就不需要分别翻译成地方话。而中国人都具有将普通话翻译成家乡话的能力,相当于Java虚拟机。




java语言程序设计自考教材电子版_java语言_05

Java的平台无关性



由此可见,Java语言实现了二进制代码级的平台无关,在网络上实现了跨平台的特性。而C语言是实现了源程序代码级的跨平台。

Java语言这种“一次编写,到处运行(write once,run anywhere)”的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。

2.4 Java平台的分类

目前,Java分为三个体系Java SE(Java2Platform Standard Edition,Java平台标准版),Java EE(Java 2Platform Enterprise Edition,Java平台企业版),Java ME(Java 2Platform Micro Edition,Java平台微型版)。

(1)Java SE:Java SE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。Java SE包含了支持Java Web服务开发的类,并为Java EE提供基础。

(2)Java EE:这个版本以前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。Java EE是在Java SE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(Service-Oriented Architecture,SOA)和Web 2.0应用程序。

(3)Java ME:这个版本以前称为J2ME。Java ME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。

3.JAVA开发环境

3.1 Java SE的开发工具包

1995年Sun虽然推出了Java,但它只是一种语言,而要想开发复杂的应用程序,必须要有一个强大的开发库支持才行。因此,Sun在1996年1月发布了JDK 1.0。此后,Sun平均以两年一个新版本的速度不断更新JDK。目前,较新的版本是JDK 6。

JDK(Java SE Development Kits)就是Sun公司免费提供的Java SE开发工具包。JDK是一种开发环境,开发者利用它可以编译、运行和调试Java程序。

Java SE开发工具包可以从站点http://java.sun.com免费下载。下载完成后,在JDK根目录下,有bin、jre、lib、demo、include、src.zip等子目录和一些文件,其含义如下。

(1)开发工具

位于bin子目录中。指工具和实用程序,可帮助用户开发、执行、调试和保存以Java语言编写的程序。

(2)运行时环境

位于jre子目录中。Java SE运行时环境的实现,由JDK使用。该运行时环境包含Java虚拟机、类库以及其他文件,可支持执行以Java语言编写的程序。

(3)附加库

位于lib子目录中。包括开发工具需要的附加类库和支持文件。

(4)演示applet和应用程序

位于demo子目录中。带有源代码的Java平台编程示例,包括使用Swing和其他Java基类以及Java平台调试器体系结构的示例。

(5)C头文件

位于include子目录中。支持使用Java本机界面、JVMTM工具界面以及Java SE平台的其他功能进行本机代码编程的头文件。

(6)源代码

位于src.zip文件中。该文件保存着核心API中所有类的源代码(即java.*、javax.*和某些org.*包的源文件,但不包括com.sun.*包的源文件)。参阅这些源代码,可以帮助开发者更好地学习和使用Java程序设计语言、使用任一常用的zip实用程序或者使用JDK的bin目录中的Jar实用程序,即使用命令jar xvf src.jar。

可以对这些文件进行解压,提取所有的源代码文件。

3.2 Java集成开发环境

虽然JDK中提供了一些编译、运行和调试程序的工具,但是其命令行的工作方式让用户感觉不方便。因此,很多厂商推出了一些Java集成开发环境(Integrated Development Environment,IDE)。这些IDE是集成了开发一种语言程序所需的各种工具,集源代码的编辑、编译、调试、部署和管理等功能于一体,同时还提供友好的用户界面,可以帮助程序员生成应用程序框架,减少程序员的重复劳动,提高软件开发效率。

目前较为常用的Java集成开发环境有:Borland公司开发的JBuilder,Xinox Software公司开发的Jcreator,IBM公司开发的Eclipse,SUN公司开发的NetBeans等。下面对JCreator 和Eclipse作简要介绍。

1.JCreator简介

JCreator是Xinox公司开发的功能强大的Java集成开发环境,JCreator分为Le和Pro两个版本,Le版本是免费的,功能不及Pro的全面。而Pro版本需要购买注册才能使用。

JCreator是适合各个层次的Java开发人员的IDE工具。它为用户提供了相当强大的功能,包括:

(1)项目管理功能,项目模板功能,可个性化设置语法高亮属性、行数、类浏览器、标签文档、多功能编绎器、向导功能以及完全可自定义的用户界面。

(2)支持无限撤销、重做、代码自动缩进、自动类库方法提示、按照所选内容自动定位查阅Java API文档等功能。

(3)通过JCreator,不用激活主文档而直接编绎或运行用户的Java程序。

(4)可以开发JSP、HTML,并支持Ant和CVS(版本控制)。

(5)JCreator能自动找到包含主函数的文件或包含Applet的HTML文件,然后它会运行适当的工具。

(6)可以通过一个批处理同时编译多个项目。

(7)第一次启动时提示设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、编译器及解释器路径,还可以在帮助菜单中使用JDKHelp。

(8)JCreator的设计接近Windows界面风格,用户对它的界面比较熟悉。其最大特点是与用户机器中所装的JDK完美结合,是其他任何一款IDE所不能比拟的。

总之,JCreator小巧、易用、美观,是Java初级程序员的理想IDE。缺点是不能进行企业级Java EE开发应用。

2.Eclipse简介

Eclipse是一个开放源代码的、基于Java的可扩展集成开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Tools,JDT)。在Eclipse中还可以集成数据库开发(比如MySQL、Oracle等)和Java EE容器(如Tomcat、JBoss和Weblogic)。可以方便地使用Eclipse进行快速高效的Java企业级应用程序的开发。

Eclipse项目分成3个子项目:

(1)平台———Platform;

(2)开发工具箱———Java Development Toolkit(JDT);

(3)外挂开发环境———Plug-in Development Environment(PDE)。

这些子项目又细分成更多子项目。例如Platform子项目包含数个组件,如Compare、Help与Search。JDT子项目包括三个组件:User Interface(UI)、核心(Core)及排错(Debug)。

Eclipse Platform是一个开放的可扩展IDE,提供了一个通用的开发平台。JDT支持Java开发。PDE用来支持插件开发。

Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来进行Java语言开发,但是有人通过插件使其作为其他计算机语言(比如C++和Python)的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。

Eclipse的插件体系架构决定了Eclipse的高度可扩展性,作为IDE,在各种插件的帮助下,它不仅支持各种语言(Java、C/C++、PHP、Perl、Python等)的开发,还支持软件开发过程中各种开发活动(设计建模、测试、编译构建;插件开发、J2EE开发、GUI开发、数据库设计等),甚至能成为图片绘制的工具。

Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其他开放源代码的第三方软件组合而成。Eclipse项目生产的软件以CPL发布,第三方组件有各自自身的许可协议。

总之,Eclipse是一款非常受欢迎的Java开发工具,使用它的Java程序员是最多的。其缺点是比较复杂,对初学者来说,理解起来比较困难。

3.3 Java学习与帮助资源———JDK文档

JDK文档包含有关Java API、Java命令行开发工具等的一系列说明和帮助文档。其中,API的全称是Application Programming Interface应用程序编程接口。在JDK文档中,程序员可以了解类的继承结构、成员方法、成员变量、构造方法、静态成员的详细说明和描述信息。JDK文档是Java程序开发不可缺少的编程词典,是Java语言学习者最权威的参考资料。我们要逐渐习惯用Java文档自行解惑,通过Java文档深入地学习和感悟Java语言。同时,Java开发工具包(JDK)提供了“Java”、“Javac”、“Javadoc”、“appletviewer”等命令,在Java帮助文档中也对此进行了详细的介绍。

Java文档有多个版本,我们应该找到与所用JDK匹配的那个版本。另外,它有CHM和HTML两种格式,皆有中英文的版本。在查阅方式上,可选择在线查阅,也可将文档下载后在本地检索使用。可在Sun中国技术社区下载中文版的Java文档,也可以直接到Sun公司的Java官方网站下载英文版的Java文档。

下面主要针对HTML版本进行讨论。

Java API文档通常是安装在JDK目录下,在docs子目录中有一个index.html文件,用浏览器打开它,就可以看到Java文档首页进行查阅。

将窗口右侧的滚动条下拉,找到Java Platform API Specification的链接文本,单击即可进入Overview概述页面。




java语言程序设计自考教材电子版_java语言_06

Java文档的概述页面



Overview概述页面即为Java API的首页。该页面带有框架,左侧框架内上方为包的列表:按顺序列出了Java文档所有的软件包;左侧框架内下方为类的列表:按顺序列出了Java文档的指定包中对应的所有接口、类、异常和错误等信息。

如果想查找某个类的信息,首先从左侧上方找到该类所在的软件包,再在左侧下方找到该类,单击该类名,就在右侧弹出Class页面,该页面的右侧框架内为该类的说明:显示出该类的所有信息,包括该类的继承结构、类的声明、类的功能说明、属性列表、构造方法列表、方法列表等。类内部结构中的每个属性、构造方法和方法都包含一个超链接,单击该链接可以查看更详细的说明。如按上述方法查找java.lang包中System类的信息。




java语言程序设计自考教材电子版_java程序_07

Java文档的类页面