Java教材课件01绪论.ppt
第1章 绪论,1.了解Java的发展简史;2.理解Java 对软件开发技术的影响;3.了解Java的应用前景及特点;4.理解面向对象程序设计的基本概念;5.为本课程后续的学习打下思想和认识的基础。,教学目的要求,1.1 Java发展简史 在 Internet上出现的特别吸引人的事件就是Java语言和用Java编写的浏览器 HotJava。1991年,SUN MicroSystem公司的 Jame Gosling、Bill Joe等人,为在电视、控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件(是一种橡树的名字),但当时并没有引起人们的注意,直到 1994年下半年,Internet的迅猛发展,环球信息网 WWW的快速增长,促进了 Java语言研制的进展,使得它逐渐成为 Int ernet上受欢迎的开发与编程语言,一些著名的计算机公司纷纷购买了 Java语言的使用权,如 MicroSoft、IBM、Netscape、Novell、Apple、DEC、SGI等 等。,有心栽花花不成,无心插柳柳成荫,1.2 为什么要学习Java,高层评价PC Magazine评Java为1995年十大优秀科技产品;比尔盖茨(Bill Gates)“Java是长时间以来最卓越的程序设计语言”;环球信息网WWW的创始人Berners-Lee说:“计算机事业发展的下一个浪潮就是 Java,并且将很快会发生的”。,主要特点 1.简单性 Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。2.面向对象 Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。3.分布性 Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议,用户可以通过 URL地址在网络上很方便地访问其它对象。,1.2 为什么要学习Java,4.鲁棒性 Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时出现不匹配问题。5.安全性 用于网络、分布环境下的 Java必须要防止病毒的入侵。Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。6.体系结构中立 Java解释器生成与体系结构无关的字节码指令,只要安装了 Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。,7.可移植性 与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由 Java语言实现的,Java运行时系统由标准 C实现,这使得Java 系统本身也具有可移植性。8.解释执行 Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。9.高性能 和其它解释执行的语言如BASIC不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。,10.多线程 多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据 的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实 时交互行为。11.动态性 Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且 Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。,Java Applet Java语言的特性使它可以最大限度地利用网络。Applet是 Java的小应用程序,它是动态、安全、跨平台的网络应用程序。Java Applet嵌入 HTML语言,通过主页发布到 Internet。网络用户访问服务器的 Applet时,这些Applet从网络上进行传输,然后在支持 Java的浏览器中运行。由于 Java语言的安全机制,用户一旦载入 Applet,就可以放心地来生成多媒体的用户界面或完成复杂的计算而不必担心病毒的入侵。虽然 Applet可以和图像、声音、动画等一样从网络上下载,但它并不同于这些多媒体的文件格式,它可以接收用户的输入,动态地进行改变,而不仅仅是动画的显示和声音的播放。,丰富的类库 1.语言包提供的支持包括字符串处理、多线程处理、例外处理、数学函数处理等,可以用它简单地实现Java程序的运行平台。2.实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。3.输入输出包用统一的“流”模型来实现所有格式的 I/O,包括文件系统、网络输入。4.低级网络包用于实现 Socket编程。5.抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得 Java可以移植到不同平台的机器。6.网络包支持 Internet的 TCP/IP协议,提供了与 Internet的接口。它支持 URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。,Java程序运行流程,Java虚拟机及运行机制,应用前景Java语言有着广泛的应用前景,大体上可以从以下几个方面来考虑其应用:1.所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等;2.计算过程的可视化、可操作化的软件的开发;3.动态画面的设计,包括图形图像的调用;4.交互操作的设计(选择交互、定向交互、控制流程等);5.Internet的系统管理功能模块的设计,包括 Web页面的动态设计、管理 和交互操作设计等;6.Intranet(企业内部网)上的软件开发(直接面向企业内部用户的软件);7.与各类数据库连接查询的 SQL语句实现;8.其它应用类型的程序。,Java和 C、C+的比较,1.全局变量 Java程序中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用、静态的变量来实现一个全局变量。例如:Class GlobalVar public static global_var;在类 GlobalVar中定义变量 global_var为 public static,使得其它类可以访问和修改该变量。Java对全局变量进行了更好的封装。而在 C和 C+中,依赖于不加封装的全局变量常常造成系统的崩溃。,对于变量声明、参数传递、操作符、流控制等,Java使用了和 C、C+相同的传统,使得熟悉 C、C+的程序员能很方便地进行编程。同时,Java为 了实现其简单、鲁棒、安全等特性,也摒弃了 C和 C+中许多不合理的内容。,3.指针指针是 C、C+中最灵活,也是最容易产生错误的数据类型。由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个 C+中的私有成员,从而破坏安全性,造成系统的崩溃。而 Java对指针进行完全的控制,程序员不能直接进行任何指针操作,例如把整数转化为指针,或者通过指针释放某一内存地址等。同时,数组作为类在Java 中实现,良好地解决了数组访问越界这个C、C+中不作检查的错误。,2.GotoJava中不支持 C、C+中支持的 goto语句,而是通过例外处理语句 try、Catch、final等来代替 C、C+中用 goto来处理遇到错误时跳转的情况,使程序更可读且更结构化。,4.内存管理在 C中,程序员通过库函数 malloc()和 free()来分配和释放内存,C+中则通过运算符 new和 delete来分配和释放内存。再次释放已释放的内存块或未被分配的内存块,会造成系统的崩溃;同样,如果忘记释放不再使用的内存块也会逐渐耗尽系统资源。而在 Java中,所有的数据结构都是对象,通过运算符new为它们分配内存堆。通过new得到对象的处理权,而实际分配给对象的内存可能随程序运行而改变,Java对此自动地进行管理并且进行垃圾收集,有效防止了由于程序员的误操作而导致的错误,并且更好地利用了系统资源。,5.数据类型在C、C+中对于不同的平台,编译器对于简单数据类型如 int,float 等分别分配不同长度的字节数,例如:int在 IBM PC中为16位,在VAX-11中为32位,这导致了代码的不可移植性,但在Java中,对于这些数据类型总是分配固定长度的位数,如对int型,它总占32位,这就保证了Java的平台无关性。,6.类型转换在 C、C+中,可以通过指针进行任意的类型转换,常常带来不安全性,而 Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。,8.结构和联合C、C+中的结构和联合中所有成员均为公有,这就带来了安全性问题。Java中不包含结构和联合,所有的内容都封装在类中。,7.头文件C、C+中用头文件来声明类的原型以及全局变量、库函数等,在大的系统中,维护这些头文件是很困难的。而 Java不支持头文件,类成员的类型和访问权限都封装在一个类中,运行时系统对访问进行控制,防止对私有成员的操作。同时,Java中用 import语句来与其它类进行通讯,以便使用它们的方法。,9.预处理C、C+中用宏定义来实现的代码给程序的可读性带来了困难。在 Java 中,不支持宏,它通过关键字 final来声明一个常量,以实现宏定义中广泛使用的常量定义。,1.3 面向对象程序设计的有关概念简介,对象抽象类封装继承多态性,主要参考资料建议,Bruce Eckel:Thinking in Java(Second Edition)James Gosling:The Java Programming Language(Third Edition)(有翻译版)侯捷/王建兴合译Java编程思想(有电子书)H.M.Deitel&P.J.Deitel:Java程序设计教程实验手册注册大学生Java/Solaris协会()Java的有关网站或社区:,建议到网上看看小议学习Java的浮躁心态我们共勉,