第1部分 对象和类的编程
第1章 简介
目标:这一章主要介绍Java编程初学者需要用到的一些基本概念。
关键字:抽象,趣���,术语,历史。
1.1 引言
正如书名所表达的含义一样,本书是关于Java程序设计的。假设读者已经有了一些基本的计算机知识,熟悉基本的操作,比如文字处理、网上冲浪,或者甚至会编写一些程序。但本书并不要求读者有面向对象程序设计的经验。面向对象(object.oriented)是一个技术术语,它是Java内含的一种程序设计方法,也是一个**的程序员所必须掌握的。本书就是一本讲解如何使用Java进行面向对象程序设计的教程。
这一章首先给出一些阅读本书所需要的背景知识。在后续内容中,我们不仅会详细描述Java是什么,更重要的是教会您如何正确和**地使用Java。学习完本书后,读者应当可以编写一些复杂实用的程序了。编写本书的一个重要原因就是希望读者可以解决一些实际的问题,并且得出相当专业的结论。本书不是简单的JaVa语言初级教程,而是对面向对象编程方法之魅力的充分展示。
对于编程新手,首先需要了解一些基本的术语。程序(program)(通常是长而复杂的)是计算机执行的一系列指令。这些指令说明计算机要做什么,究竟是用作文字处理、电子表格、玩游戏还是其他。程序员(programmer)的角色是使用一门程序设计语言(programming language)创建、编写一些程序,Java 是这样的程序设计语言之一。应用程序设计(application programming)或者开发,是为人们(*终用户)创建一些有实际用途的程序(应用程序)的过程。另一方面,系统程序设计(system programming)是从事编写、修改或者扩展操作系统(operating system)的活动。而操作系统是一个管理着计算机资源,并控制应用程序运行的复杂程序。
如上所述,探讨程序设计和Java语言需要对大量的技术术语有所了解。在学习本书的过程中,如果您发现一些不理解的术语,请试着查看一下本书的术语表(见“附录A”)。
1.2 Java简史
20世纪90年代中期,Java**次引起了关注,许多人开始用它创建Web内容和小型应用程序(applet)。之前创建网页使用的都是HTML语言,但这种语言不能建立复杂网页。接下来的几年中,随着各种语言和工具(XML、XHTIVlL、XSL、CSS、Flash、audio和video流等)的出现,整个Web内容创建环境发生了巨大的变化。虽然早期的JaVa常被当作万维网、编程语言,不过它的用途变化很快,现在已成为服务器端Web应用程序(servlet)而不仅仅是浏览器端应用程序的**语言了。同时,Java正以各种方式广泛应用于嵌入式系统。按照惯例一直采用汇编语言或C语言编写嵌入式系统,但是Java的属性使它能够与这些语言共存(不是取代它们)。有意思的是,*初开发JaVa的目的就是在嵌入式系统中的应用,因此Java的使用又回到其初衷。
注意:
更为详细的Java发展史请参考Sun公司的Java网站http//java.sun.corn/。
事实上,Java的故事是非常有趣的。我们现在所称的Java来源于一个叫做Oak的编程语言,20世纪90年代初期由Sun微系统公司(Sun Microsystems)的一个开发组设计而成(Oak的名称源于Sun的员工从办公室的窗口看到一棵大橡树而产生的灵感)。开发Oak的目的是用于消费者电器设备的嵌入式系统编程,特别是诸如交互式有线电视(Cable TV)的控制设备和电子家居(electr Dnic home)的管理系统等领域。这些应用需要新的用户接口,要求容易联网并且有一个支持系统开发的编程工具。
实际上,可编程控制设备的消费市场并没有像预期的那样大规模地发展。然而,正如Intemet和Web被广泛使用一样,Oak的研究工作也在继续着。1994年初,为了适应Intemet的发展,Sun公司做出一个决定,把Oak改成基于Web应用的一门Intemet编程语言。原因是Oak包含了许多与Intemet相关的特性,包括“独立于平台的体系结构”,这意味着一些程序无需重新编写便可以运行在全世界各种不同类型的机器上。
1995年1月,Oak更名为Java(因为Oak这个名字已经在其他地方作为商用),逐渐发展成一门适合于建立基于Web应用的高可靠性编程语言。1995年5月,Sun公司发布了第1版Java开发工具包(JaVa Development Kit,JDK),允许全世界的***通过Intemet下载和使用Java。一个称为HotJaVa的Web浏览器支持JDK,可以通过嵌入在网页中的小应用程序运行Java程序,这一特性也相继被Microsoft公司和Netscape公司支持。从那时开始,Java就成为了日益流行的语言,如今已经被众多的***和软件公司广泛采用。他们开发了更多更好用的开发工具和其他软件。
1998年底,Java 2平台随Sun Java2 SDK标准版(J2SDK)一起发布。Sun公司增强了Java基本的J2SDK,增加了许多扩展环境的新特性,从而进一步发展了Java。这些特性的**是用新方法构建程序,包括使用类库(class library),或者应用程序接口(Application Programmer Interface,API)。API具备更加广泛的功能,从而可以节省程序员大量的时间。
在2004年下半年,Sun公司发布了Java2平台的重要改进版本J2SE v5.0,其中包括泛型、注释和其他急需的特性。发布的同时,Sun公司还重新使用JDK——_J2SE开发工具包来表示已经实现的Java 2平台。Java这次变革引起了Java使用方式的巨大变化,特别是常用的使用和编写JaVa类库这种操作。而那些没有使用J2SE v5.0的书和程序都已经“过时”了,还可能导致Java用法错误。可以确信的是,本书中不会有Java的“过时”用法。
Java演变的结果是它发展成为一个大范围的、通用的开发系统。Java还非常适合开发那些Web环境之外的大型应用程序。事实上,使用Java可以创建所有的应用程序,特别值得强调的是在网络和通信领域内的广泛应用。正如先前提到的那样,Java已经成为开发中间件(middl,eware)应用程序的非常成功的语言。这些中间件成为运行在网络上的分布式应用程序的核心组件。另外,Java也被许多大学视为程序设计的教学语言。而且,Java也广泛运用在许多嵌入式系统中,例如移动电话、机顶盒和其他消费产品,都使用Java 2平台的一种变体,称为Java 2平台的Micro版本(J2ME)。JaVa正如Oak*初提出。
1.3 Java生逢其时
Java*突出的一个特点,就是在如此短的时间里迅速成为一门非常流行的语言。因此有必要探究JaVa是怎样创造出如此多的奇迹的。
Java并不是一种**的语言,但很重要的一点是,它几乎融合了编程语言和编程方法所有重要和**的思想。另外,也有其他一些因素促使Java获得了成功。
·它看起来像用户熟悉的其他一些流行的语言,如c、C++和Smalltalk。这种相似性避免了潜在用户把Java看作“很另类”的一门新语言,而认为不值得花时间去学它的问题。
·Web越来越流行,而Java与它是紧密相关的,这种关联给了.Java很大的优势。
·编程“**”喜欢它。**是新的编程语言的早期采用者,即使它们(指语言,而不是**)还不成熟,也有助于迅速传播语言信息。
·您可以免费获得!这是非常重要的,因为这样可以使潜在用户用*小的代价(至少直接在**方面)来**一种新的语言。
更为有趣的是,关于一种新语言,以上列表显示的*重要特性是社会方面的——想到用它是因为它可以完成人们现在想做的事情。而技术方面的考虑却成了第二位。
总而言之,Java语言拥有良好的特性(面向对象)和*好的价格(免费),在*恰当的地方(在Web上)诞生,又在*合适的时间(正好在Web逐渐流行时)出现。
1.4 Java是什么
Java是一个通用的标志,包括了Java编程语言、开发工具和环境,以及全部已成为标准的Java类库和API函数。很大程度上,所有这些元素都是不可分割的。所以学习Java就是学习以上所有的内容。有时,您见到的“Java编程系统”或“Java 2平台”这些名词强调的不仅仅指编程语言本身。
Java是一种“面向对象的编程语言”。本章将解释面向对象的含义。现在我们需要认识到,一门编程语言是以纯文本格式编写程序的,面向对象的开发是设计和构建系统的现代方法,这一方法通过把面向对象的概念嵌入在编程语言当中得以充分体现。
如今,面向对象的开发方法为解决软件开发过程中出现的严重问题,提供了广泛可行的和实际的解决方案。历史上真正成功的**的软件开发的确是凤毛麟角,于是面向对象就显得更加重要。其实这里可能还会存在一些误解。有许多已交付的软件没有被用起来、很多软件开发项目存在许多失败之处或者软件交付时间一再推迟而且质量很差等,但实际上还是存在许多非常好和非常可靠的软件。不要以为在您的软件开发过程中,采用了“面向对象”就可以魔术般地解决所有问题。我们能够教给您的是一个概念性的框架和软件开发的方法,而解决更多的问题需要以大量的实践经验为基础。本书的目的也是要把Java中包含的绝大多数知识和经验传授给您,*后就要看你能否努力和**地学习了。
……