Java程序设计与应用第 1章
Java语言概述
Java程序设计与应用
2009年 7月 27日星期一 2
学习目的:
了解程序设计语言的发展历史
了解 Java语言的特色和应用背景
了解 Java虚拟机,Java的运行环境和 Java编程语言开 发环境
初步掌握简单 Java程序的创建、编译和运行
学习重点
面向对象的程序设计语言
Java虚拟机
Java的运行环境
Java程序的创建、编译和运行
Java程序设计与应用
2009年 7月 27日星期一 3
第 1章
Java语言概述本章提要:
1,程序设计语言概述
2,Java语言简介
3,Java语言概述
4,简单 Java程序的创建,编译及运行步骤
Java程序设计与应用
2009年 7月 27日星期一 4
1.1 程序设计语言概述
1.1.1 计算机程序设计方法和语言随着计算机硬件与通讯技术的发展,计算机应用领域越来越广泛,应用规模也越来越大,程序设计不再是一,两个程序员可完成的任务,在这种情况下编写程序不再片面追求高效率,而是综合考虑程序的可靠性,可扩展性,可重用性和可理解性等因素 。
程序设计方法是独立于具体程序设计语言的一门技术 。 由于程序设计通常离不开程序设计语言作为工具,
所以容易混淆程序设计方法与程序设计语言的概念 。 程序设计语言的设计目的主要是为了支持某种程序设计方法 。
Java程序设计与应用
2009年 7月 27日星期一 5
1.早期的程序设计早期的高级程序设计语言有 FORTROM,COBOL,BASIC等
。 这一时期由于追求程序的高效率,程序员过份依赖技巧与天份,不太注重程序的结构,。 一个典型问题是程序中的控制随意跳转,即不加限制地使用 goto语句,这样的程序对阅读者来说是难以理解的,程序员也难以修改程序 。
2.结构化的程序设计随着程序规模与复杂性的不断增长,20世纪 60年代诞生了结构化程序设计方法 。 结构化程序设计方法的主要技术是自顶向下,逐步求精,采用单入口 /单输出的控制结构 。
这一程序设计方法的代表语言是 Pascal,C,Ado等 。
Java程序设计与应用
2009年 7月 27日星期一 6
自顶向下是一种分解问题的技术,与控制结构有关。
逐步求精指对结构化程序进行分解,最终使其成为三种基本控制结构的组合。结构化程序设计的结果是一个程序最终由若干过程组成,每一个过程完成一个明确的功能。
3.面向对象程序设计虽然结构化程序设计提高了软件生产率和软件质量,
但随着程序规模与复杂性的增长,程序中的数据结构变得与这些数据上的操作同样重要。在大型结构化程序中,一个数据结构可能由许多个过程来处理,修改数据结构将影响到所有相关的过程。在由几百个过程组成的成千上万行的结构化程序中,这种情况变得相当麻烦并且容易产生错误。
Java程序设计与应用
2009年 7月 27日星期一 7
20世纪 80年代兴起的面向对象程序设计方法在结构化程序设计的基础上提出了一种新的设计思路,最重要的改变是程序围绕被操作的数据来设计,而不是围绕操作本身
。面向对象程序设计以类作为构造程序的基本单位,具有封装、数据抽象、继承、多态化等特点。较有影响的面向对象程序设计语言有 Simula,C++,Java等。
Java语言是在 C++语言基础上发展起来的一种适合分布式计算的新型面向对象程序设计语言,也是目前推广最快的程序设计语言。 Java语言将面向对象、平台无关性、
稳定性与安全性、多线程等特征集于一身,为用户提供了一个良好的程序设计环境,特别适合因特网的应用开发。
与当前迅速发展的因特网应用紧密结合是 Java语言成功的关键所在。
Java程序设计与应用
2009年 7月 27日星期一 8
1.1.2 计算机程序设计方法和语言
1.面向对象与面向过程的区别早期的编程语言如 Fortran语言和 C语言基本上都是面向过程的语言,主要是采用数学语言方式编程的语言,其编程的主要思路专注于算法的实现。
传统的面向过程的编程在描述问题时,由两部分组成:
数据:描述实体状态的数据结构;
过程:操作这些状态数据的程序和步骤。
面向过程编程的一个显著特点是数据与程序的分开。数据是静止的东西,不会自行变化,必须通过过程操作来改变数据,因此,函数调用在面向过程编程中被大量使用。
Java程序设计与应用
2009年 7月 27日星期一 9
针对程序结构不清晰而无法维护改进的局面。面向对象编程提出了一种全新的思路,让计算机语言结构像人类思维方式一样简单和清晰。
面向对象的软件开发中将世界上的事物均看成对象,任一对象有两个特征,行为与状态 。每个对象可以通过自身的行为来改变自己的状态。在面向对象的世界中,通过对象间的协作与交互来运作。由于将对象的操作封闭在对象内,外部要与对象进行交互只能通过给对象发送“消息”,这个消息实际上就是调用对象的某个行为方法,消息中还包括方法的参数。
Java程序设计与应用
2009年 7月 27日星期一 10
2.面向对象程序设计的特性
封装性面向对象的第一个原则是把数据和该数据的操作都封装在一个类中,比如说笔记本电脑就是一个类 。 笔记本电脑这个类有许多属性,有些是静态的 ( 数据 ),比如:显示屏的亮度,本身的重量;有些是动态的 ( 对数据的操作 ),比如
:可以按下组合键,ctrl+F4” 或,ctrl+F5” 来调整显示器的亮度,可以卸掉它的外挂光驱来减轻它的重量 。
对象是类的一个实例化结果,对象具有类所描述的所有的属性以及方法 。 比如不同品牌,不同样式的笔记本电脑之间的共同属性就是它们所属的类 —— 笔记本电脑类的属性 。
只不过类是抽象的东西,而对象是具体的,对象具有它隶属类的所有属性,包括静态的和动态的 。
Java程序设计与应用
2009年 7月 27日星期一 11
每个对象都有自己的存储空间,可容纳其他对象,或者说通过封装现有的对象,可以产生新型对象。 因此,尽管对象的概念非常简单,但是经过封装以后却可以在程序中达到任意高的复杂程度。
每个对象都属于某个类。 根据语法,每个对象都是某个“类”的实例。一个类的最重要的特征就是“能将什么消息发给它?”,也就是类本身有哪些操作。面向对象程序设计就是设计好相关的类,类中有静态的域,和动态的方法。
继承性继承是在类、子类、以及对象之间自动地共享属性和方法的机制。类的上层可以有父类、下层可以有子类,形成一种层次结构。一个类将直接继承其父类的属性和行为
Java程序设计与应用
2009年 7月 27日星期一 12
,而且继承还具有传递性,因此,它还将间接继承所有祖先类的属性和行为。
继承最主要的优点是重复使用性,通过继承可以无限繁衍出更多的类,这样的结果可让软件的开发加速,同时可达到程序共享的好处。通过继承可以直接继承系统提供的或他人写作的类,并加以改写,进而得到功能的不断扩充。
继承的另一个优点是在于接口的一致性 。当超类繁衍出许多子类时,它的行为接口通过继承可以传给其所有子类。因此可以通过统一的行为接口去访问不同的子类对象的方法,但不同子类中行为的具体实现可能时不一样的。
Java程序设计与应用
2009年 7月 27日星期一 13
多态性多态是指在表示特定功能时,有多种不同的形态或实现方法。常见的多态形式有两种:
方法的重载:即在同一个类中某个方法有多种形态,其方法名相同,但参数不同,所以也称参数多态。
方法的覆盖:在子类中重新定义一个与父类有相同形态的方法,这样,在子类中将覆盖从父类继承来的那个方法。
多态为描述客观事物提供了极大的能动性。参数多态提供了方法的多种使用形态,方便使用者的调用;而覆盖多态则使得用户可以用同样的方式对待不同的对象
,不同的对象可以用它们自己的方式响应同一消息。用户可以通过父类去引用子类的对象,执行方法时则表现出每个子类对象各自的行为。
Java程序设计与应用
2009年 7月 27日星期一 14
抽象性这里的抽象有两个层次的含义,一是体现在类的层次设计中,高层类是底层类的抽象表述 。类层次设计体现着不断抽象的过程。 第二体现在类与对象之间的关系上,类是一个抽象的概念,而对象是具体的 。面向对象编程的核心是设计类,但实际运行操作的是对象。类是对象的模板
,对象的创建是以类为基础。同一类创建的对象具有共同的属性,但属性值不同。
Java程序设计与应用
2009年 7月 27日星期一 15
1.2 程序设计语言概述
Java语言有下面一些特点:
简单性
Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念
,就可以用它编写出适合于各种情况的应用程序。 Java
略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外,Java也适合于在小型机上运行。
1.2.1 Java语言的特色
Java程序设计与应用
2009年 7月 27日星期一 16
面向对象
Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。
分布性
Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议,用户可以通过 URL地址在网络上很方便地访问其它对象。
Java程序设计与应用
2009年 7月 27日星期一 17
鲁棒性
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时,
Java提示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。
Java程序设计与应用
2009年 7月 27日星期一 18
安全性用于网络、分布环境下的 Java必须要防止病毒的入侵。 Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊
”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
体系结构中立
Java解释器生成与体系结构无关的字节码指令,只要安装了 Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟机中的表示
,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
Java程序设计与应用
2009年 7月 27日星期一 19
可移植性与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由
Java语言实现的,Java运行时系统由标准 C实现,这使得
Java系统本身也具有可移植性。
解释执行
Java解释器直接对 Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。
高性能和其它解释执行的语言如 BASIC,TCL不同,Java字节码的设计使之能很容易地直接转换成对应于特定 CPU的机器码,从而得到较高的性能。
Java程序设计与应用
2009年 7月 27日星期一 20
多线程多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
动态性
Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且 Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。
Java程序设计与应用
2009年 7月 27日星期一 21
1.2.2 Java的应用背景
1.Java语言对软件开发技术的影响
Java语言将对未来软件的开发产生影响,可从如下几个方面考虑,
软件的需求分析,可将用户的需求进行动态的、可视化描述,以提供设计者更加直观的要求。而用户的需求是各色各样的,不受地区、行业、部门、爱好的影响,都可以用 Java语言描述清楚。
软件的开发方法,由于 Java语言的面向目标的特性,
所以完全可以用面向对象的技术与方法来开发,这是符合最新的软件开发规范要求的。
Java程序设计与应用
2009年 7月 27日星期一 22
Java语言的动画效果远比 GUI技术更加逼真,尤其是利用
Internet提供的巨大动画资源空间,可以共享全世界的动态画面的资源。
软件最终产品,用 Java语言开发的软件可以具有可视化、可听化、可操作化的交互、动画与动作,要它停就停,要它继续就继续,而这是在电影与电视播放过程中难以做到的。
其它,使用 Java语言对开发效益、开发价值都有比较明显的影响。
Java程序设计与应用
2009年 7月 27日星期一 23
2.Java语言的应用前景
Java语言有着广泛的应用前景,大体上可以从以下几个方面来考虑其应用:
所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等。
计算过程的可视化、可操作化的软件的开发。
动态画面的设计,包括图形图像的调用。
交互操作的设计 (选择交互、定向交互、控制流程等 )。
Internet的系统管理功能模块的设计,包括 Web页面的动态设计、
管理和交互操作设计等。
Intranet(企业内部网 )上的软件开发 (直接面向企业内部用户的软件 )。
与各类数据库连接查询的 SQL语句实现 。
其它应用类型的程序。
Java程序设计与应用
2009年 7月 27日星期一 24
1.3 程序设计语言简介用 Java可写两种类型的程序:小程序(又叫 Java
Applet)和应用程序( Java applicatian)。
小程序是嵌入在 HTML文档种的 Java程序;而 Java应用程序是从命令行运行的程序。对 Java而言,Java小程序的大小和复杂性都没有限制。
由于 WWW使小程序的发布十分便利,因此小程序更适合作为 Internet上的应用程序。
应用程序( Java Application)是可以独立运行的
Java程序,有 Java解释器控制执行。 Applet则不能独立运行,而是被嵌入到 Web页中,有 Java兼容浏览器控制执行。
Java程序设计与应用
2009年 7月 27日星期一 25
Java程序在编译后生成的不是某种 CPU的指令码,而是 Java语言特有的字节代码。 Java字节代码运行在 Java虚拟机上。
每一个操作系统的 Java解释器是不同的,但实现 Java
虚拟机时相同的,这就是 Java语言与平台无关的关键所在
。 Java虚拟机由五部分组成:一组指令集、一组寄存器、
一个堆栈、一个无用内存单元收集器、一个方法区域,这五个部分是 Java虚拟机的逻辑抽象成分,不倚赖于任何实现技术或组织,但是它们的功能必须在真实机器上以某种来实现。 Java虚拟机内存区域不倚赖实现内存的位置,也不要求连续,但要求逻辑的长度固定。
1.3.1 Java的虚拟机
Java程序设计与应用
2009年 7月 27日星期一 26
Java虚拟机支持 240多个字节代码,每个字节代码执行一种基本的 CPU运算。 Java语言指令集相当于 Java语言程序的“汇编语言”,Java语言指令集的一条指令有一个操作码、领个或多个操作数。操作数指定实施的操作
,操作数是操作码所需要的参数。 Java语言的操作码均为一个字节长,操作数没有限制。
Java虚拟机的寄存器用于保存机器的运行状态。
Java虚拟机寄存器有四种,Java语言程序计数器;指向操作数栈顶端的指针;指向当前执行方法的执行环境的指针;指向当前执行方法局部变量的区第一个变量的指针。 Java虚拟机是用堆栈来处理数据传递的,它不定义或使用寄存器来传递或接受参数。目的是为了保证指令集的简洁性和实现时的高效性。
Java程序设计与应用
2009年 7月 27日星期一 27
Java虚拟机的堆栈有三个区域:局部变量区、执行环境区和操作数区。
Java虚拟机的堆栈是运行时刻动态分配的对象存储区域。 Java语言可以进行自动的无须内存单元的收集,程序无须显示释放占有的内存空间,无须内存单元自动回收的算法倚赖于虚拟机最终实现的硬件环境。
Java虚拟机的方法区是编译后的代码区域,包含方法代码、符号表等。
Java程序设计与应用
2009年 7月 27日星期一 28
1.3.2 Java的运行环境的配置
Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的 Java开发工具集 (Java Developers Kits
,简称 JDK,也称 SDK)。编程人员和最终用户可以利用这些工具来开发 Java程序或调用 Java内容。
SUN的 Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的 Java开发工具集 (SDK)。开发人员和最终用户可以利用这个工具来开发 Java程序。
SDK简单易学,可以通过任何文本编辑器编写 Java源文件,然后在 DOS状况下利通过 javac命令将 Java源程序编译成字节码,通过 Java命令来执行编译后的 Java文件。
Java程序设计与应用
2009年 7月 27日星期一 29
SDK的另一个显著特点是随着 Java ( J2EE,J2SE以及
J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级 Java应用开发非常困难,不能进行复杂的 Java软件开发,也不利于团体协同开发。
1.建立 Java开发环境
2.JDK开发环境中常用工具介绍在 Java环境中的 Java工具主要有:
*appletviewer 小应用程序浏览器
*java 解释器
*javac 编译器
*javah 头文件生成器
*javadocAPI 文档生成器
*javap 类文件反汇编器
*sdb Java语言调试器
Java程序设计与应用
2009年 7月 27日星期一 30
1.3.1 Java的虚拟机目前可供开发人员选择得 Java语言开发工具有很多,
例如,Sun公司的 SDK(命令行方式的) Java语言编辑器,
用 Java语言开发的图形化界面的 Java WorkShop,
Symmatec公司的 Visual Café,微软公司的 Visual J++
,Borland公司的 JBuilder等等。
开发人员选择开发工具可以根据以下原则:开发界面是否友好,编译效率是否高,是否有可视化的调试器,能否在浏览器中调试 Java语言小程序,能否为使用者完成一些重复的劳动等。
Java程序设计与应用
2009年 7月 27日星期一 31
1.4简单 Java程序的创建、编译及运行步骤
Java是解释型的高级编程语言,所以 Java程序的开发通常需要编写源程序、编译生成字节码和运行几个过程。
1.编写源程序编写源程序是程序开发的第一步,我们只需要简单的文字编辑器,如 Edit或记事本或集成开发环境中的编辑窗口,利用这些文字编辑器将源程序录入到计算机中,形成一个文件保存起来。注意必须要保证 Java程序是无格式的纯文本文件。
Java程序设计与应用
2009年 7月 27日星期一 32
2.编译和运行 HelloWorld应用程序我们利用 Java的编译器系统软件,一般采用 Sun公司提供的 javac.exe。
如果编译成功,则生成以类命名、以 class为后缀的字节码文件;否则报告错误。
要运行一个编译好的 Java字节码程序,还需要调用
Java的解释器软件 java.exe。
Java程序设计与应用
2009年 7月 27日星期一 33
1.5 本章小结本章介绍了 Java语言的产生和特点。给出了两种
Java程序,Java应用程序和 Java Applet程序的调试步骤
。 Java Application在命令方式下进行调试,而 Java
Applet在浏览器的环境下运行。 Java语言是一门纯面向对象的编程语言。
面向对象编程的思路认为程序都是对象的组合,因此要克服面向过程编程的思路,直接按照对象和类的思想去组织程序,面向对象所具有的封装性、继承性、多态性等特点使其具有强大的生命力。
Java程序设计与应用
2009年 7月 27日星期一 34
Sun公司为全世界 Java开发人员提供了一套免费的软件开发包 Java2 SDK,也称为 JDK,它不仅是
Java的开发平台,还是 Java的运行平台。 Java源程序存放在,java文件中,可以通过任意一个文本编辑器编辑产生,源程序经过,javac” 命令编译过后,
就生成了相应的,class文件。