资源预览内容
第1页 / 共105页
第2页 / 共105页
第3页 / 共105页
第4页 / 共105页
第5页 / 共105页
第6页 / 共105页
第7页 / 共105页
第8页 / 共105页
第9页 / 共105页
第10页 / 共105页
亲,该文档总共105页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第1章 Java系统环境概述 第1章 Java系统环境概述 1.1 编程语言的发展 1.2 网络时代的编程语言Java 1.3 Java的开发运行环境 1.4 Java程序的运行步骤 第1章 Java系统环境概述 1.1 编程语言的发展自从1946年第一台电子计算机问世以来,人们一直在探索着自然语言与计算机语言之间的映射问题。我们知道,人类的任何思维活动都是借助于人们所熟悉的某种自然语言进行的。若希望借助计算机完成人类的一种思维活动,就需要把用自然语言表达的东西转换成计算机能够理解和执行的语言形式,这便是编程语言或程序设计语言。毫无疑问,电子计算机毕竟是一种机器,它能够理解和执行的编程语言和自 然语言之间存在着较大的差距,这种差距被人们称做“语言的鸿沟”。这一鸿沟虽不可彻底消除,但可以使其逐渐变窄。第1章 Java系统环境概述 事实上,从计算机问世至今,各种编程语言的发展变迁,其 目的就是为了缩小这一鸿沟。图1.1引自参考文献3,笔者稍作修改,该图展示了从机器语言发展到面向对象的语言使 “语言的鸿沟”变窄的情形。第1章 Java系统环境概述 图1.1 编程语言的发展与“语言的鸿沟”的变化 第1章 Java系统环境概述 1.1.1 机器语言电子计算机是一种机器,这种机器主要由电子元器件构 成。对于电子元器件来说,最容易表达的是电流的通/断或电位的高/低两种状态。因此,在电子计算机问世之初,人们首先想到的是用“0”和“1”两种符号来代表电路的通和断两种状态,这便是最早的编程语言机器语言。第1章 Java系统环境概述 机器语言是计算机能够理解并直接执行的唯一语言,整 个语言只包含“0”和“1”两种符号。用机器语言编写的程序,无论是它的指令、数据还是其存储地址,都是由二进制的 “0”和“1”组成的。这种语言离计算机最近,机器能够直接执行它。然而,由“0”和“1”组成的二进制串没有丝毫的形象意义,因此,它离人类的思维最远,“语言的鸿沟”最宽。所以,用机器语言编写程序的效率最低,并且在编写程序时很容易发生错误。第1章 Java系统环境概述 1.1.2 汇编语言为了克服机器语言的缺陷,人们设想用一些易于理解和记忆的符号来代替二进制码,这便是汇编语言。由于汇编语言用符号构成程序,而这些符号表示指令、数据、寄存器、地址等物理概念,因而,使用汇编语言编程在适合人类形象思维的道路上前进了一步。但是,使用汇编语言编写程序时,编程人员依然需要考虑寄存器等大量的机器细节,即汇编语言仍然是一种与具体机器硬件有关的语言,是一种面向机器的语言,因此,人们也把它称为符号化的机器语言。第1章 Java系统环境概述 1.1.3 高级语言由于机器语言和汇编语言都离不开具体的机器指令系统,用它们编程时要求程序员必须熟悉所用计算机的硬件特性,因而,用它们编写程序的技术复杂、效率不高,且可维护性和可移植性都很差。为了从根本上摆脱语言对机器的依附 ,人们经过多年的潜心研究,终于在1956年推出了一种与具体机器指令系统无关、表达方式接近自然语言的计算机语言 FORTRAN语言。在FORTRAN语言程序中,采用了具有一定涵义的数据命名和人们容易理解的执行语句,屏蔽了机器细节,使得人们在书写和阅读程序时可以联系到程序所 描述的具体事物。所以,人们把这种“与具体机器指令第1章 Java系统环境概述 系统无关,表达方式接近自然语言”的计算机语言称为高级语言。高级语言的出现是编程语言发展史上的一大进步,它缩小了编程语言与自然语言之间的鸿沟。此后,高级语言进一步向体现客观事物的结构和逻辑涵义的方向发展。结构化数据、结构化语句、数据抽象、过程 抽象等概念相继被提出。以1971年推出的Pascal为典型代表的结构化程序设计语言,进一步缩小了编程语言和自然语言的距离。在此后的十几年中,结构化程序设计进一步发展成 为一门方法学。在20世纪70年代到80年代,各种结构化程序设计语言及方法非常流行,成为当时软件开发设计领域的主流技术。第1章 Java系统环境概述 在结构化程序设计中,把程序概括为如下的公式:程序 = 数据结构 + 算法其中,数据结构是指利用计算机的离散逻辑来量化表达需要解决的问题,而算法则研究如何高效、快捷地组织解决问题的具体过程。可见,以结构化程序设计为代表的高级语言是 一种面向数据/过程的程序设计语言,人们把这类语言也称为面向过程的语言。第1章 Java系统环境概述 面向过程的语言可以精确地用计算机所理解的逻辑来描述和表达待解决问题的具体解决过程。然而,它把数据和过程分离为相互独立的实体,使程序中的数据和操作不能有效地组织成与问题域中的具体事物相对应的程序成分,所以它很难把一个具有多种相互关系的复杂事物表述清楚。程序员在编写算法时,必须时刻考虑所要处理问题的数据结构,如果数据结构发生了轻微的变化,那么对处理这些数据的算法也要做出相应的修改,甚至完全重写,否则这个算法就不可再用。因而,用这种程序设计方法编写的软件,其重用性较差。为了较好地解决软件的重用性问题,使数据与程序始终保持相容,人们又提出了面向对象的程序设计方法。第1章 Java系统环境概述 1.1.4 面向对象的语言面向对象的编程语言(Object-Oriented Programming Language,OOPL)的设计出发点是为了能更直接地描述问题域中客观存在的事物(即对象)以及它们之间的关系。面向对象技术追求的是软件系统对现实世界的直接模拟,是将现实世界中的事物直接映射到软件系统的解空间。它希望用户最大程度地利用软件系统,花费少量的编程时间来解决需要解决的问题。在面向对象的程序设计语言中,可以把程序描述为如下的公式:程序 = 对象 + 消息第1章 Java系统环境概述 面向对象的语言对现实世界的直接模拟体现在下面几个方面:(1) 对象(object)。只要我们仔细研究程序设计所面对的问题域客观世界,就可以看到,客观世界是由一些具体的事物构成的,每个事物都具有自己的一组静态特征(属性)和一组动态特征(行为)。例如,一辆汽车有颜色、型号、马力、生产厂家等静态特征,又具有行驶、转弯、停车等动态特征。要把客观世界的这一事实映射到面向对象的程序设计语言中,则需把问题域中的事物抽象成对象,用一组数据描 述该对象的静态特征(即属性,在Java中称之为数据成员),用一组方法来刻画该对象的动态特征(即行为)。第1章 Java系统环境概述 (2) 类(class)。客观世界中的事物既具有特殊性又具有共同性。人类认识客观世界的基本方法之一就是对事物进行分类,即根据事物的共同性把事物归结为某些类。考虑一下所有的汽车和一辆汽车之间的关系就很容易理解这一点。 OOPL很自然地用类(class)来表示一组具有相同属性和方法的对象。(3) 继承(inheritance)。在同一类事物中,每个事物既具有同类的共同性,又具有自己的特殊性。OOPL用父类与子类的概念来描述这一事实。在父类中描述事物的共性,通过 父类派生(derive)子类的机制来体现事物的个性。考虑同类事物中每个事物的特殊性时,可由这个父类派生子类,子类可以继承父类的共同性,又具有自己的特殊性。第1章 Java系统环境概述 (4) 封装(encapsulation)。客观世界中的事物是一个独立的整体,它的许多内部实现细节是外部所不关心的。例如,对于一个只管开车的驾驶员来说,他可能根本不知道他所驾驶的这辆汽车内部用了多少根螺钉或几米导线,以及它们是 怎样组装的。OOPL用封装机制把对象的属性和方法结合为一个整体,并且屏蔽了对象的内部细节。第1章 Java系统环境概述 (5) 关联(association)。客观世界中的一个事物可能与其他事物之间存在某种行为上的联系。例如,一辆行驶中的汽 车遇到红色信号灯时要刹车停止,OOPL便通过消息连接来表示对象之间的这种动态联系,也称之为关联。(6) 组合体(composite)。拥有其他对象的对象被称为组合体。客观世界中较为复杂的事物往往是由其他一些比较简单的事物构成的。例如,一辆自行车是由车架、车轮、把手 等构件构成的。OOPL也提供了描述这种组合体的功能。第1章 Java系统环境概述 综上所述,面向对象的编程语言使程序能够比较直接地反映客观世界的本来面目,并且使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发。面向对象的语言和人类认识、理解客观世界所使用的自然语言之间的差距是比较小的。当然,二者之间仍然存在着一定的差距,自然语言的丰富多样和借助人脑的联想思维才能辨别的语义,仍是目前任何一种计算机编程语言无法相比的。第1章 Java系统环境概述 1.1.5 面向对象语言的发展面向对象的语言是在软件开发的实践中逐步提出并不断 得到完善的。1967年由挪威计算中心开发的Simula 67语言首先引入了类的概念和继承机制,被认为是面向对象语言的鼻祖。20世纪70年代出现的CLU、并发Pascal、Ada和Modula-2等编程语言,对抽象数据类型理论的发展起到了重要作用。这些语言支持数据与操作的封装。第1章 Java系统环境概述 1980年提出的Smalltalk-80是第一个完善的、能够实际应用的面向对象语言。它在系统的设计中强调对象概念的统一,并引入和完善了类、方法、实例等概念和术语,应用了继承机制和动态链接。它被认为是一种最纯粹的面向对象的程序设计语言。从20世纪80年代中期到90年代,是面向对象语言走向繁荣的阶段。其主要表现是大批比较实用的OOPL的涌现,例如C+、Objective-C、Object Pascal、COLOS(Common Lisp Object System)、Eiffel、Actor及Java等。第1章 Java系统环境概述 综观所有的面向对象程序设计语言,我们可以把它们分为两大类:(1) 纯粹的面向对象语言,如Smalltalk、Java。在这类语言中,几乎所有的语言成分都是“对象”。这类语言强调的是开发快速原型的能力。(2) 混合型的面向对象语言,如C+、Object Pascal。这类语言是在传统的过程化语言中加入了各种面向对象的语言机构,它们强调的是运行效率。第1章 Java系统环境概述 1.2 网络时代的编程语言JavaInternet将世界各地成千上万的计算机子网连接成一个庞大的整体,而这些子网是由各种各样不同型号、不同规模、使用不同操作系统、具有不同应用软件平台的计算机组成的。这就很自然地提出了一个问题:有没有一种语言,使得程序员用这种语言编写的程序可以在不同的计算机上运行, 从而减少编程工作量,提高程序的可移植性,使Internet能够发挥更多、更大的作用呢?Java正是顺应了这种需求,因而得到了广泛的使用。它以其平台无关性、面向对象、多线程、半编译半解释等特点而成为网络时代的编程语言。第1章 Java系统环境概述 1.2.1 Java的产生1991年初,美国加州的Sun Microsystem公司(以下简称Sun公司)成立了一个以James Gosling为首、名为Green的项目研发小组,其目标是开发一个面向家用电器市场的软件产品,用软件实现一个对家用电器进行集成控制的小型控制装置。他们首先注意到这个产品必须具有平台独立性,即让该 软件在任何CPU上都能运行。为达到此目的,Gosling首先从改写C+ 语言的编译器着手。但是,他们很快便意识到这个产品还必须具有高度的简洁性和安全性,而C+ 在这方面显然无法胜任。因此,Gosling决定自行开发一种新的语言,并将该语言命名为Oak(橡树)。第1章 Java系统环境概述 Oak是Green项目小组开发的名为“*7”(StarSeven)产品中的一个组成部分。StarSeven是一个集成了Oak、GreenOS(一种操作系统)、用户接口模块和硬件模块四个部分的类似于PDA(Personal Digital Assistan
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号