已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,网络程序设计,Java网络程序设计,2,自我介绍,姓名:辛明影电话:86413213xmy63xmy63,3,课程内容,第一章Java简介第二章Java基本程序设计第三章面向对象程序设计基础第四章图形编程第五章事件处理第六章Swing用户界面组件第七章异常第八章applet小应用程序第九章Java的多线程机制第十章流与文件第十一章分布式计算,4,参考书目,corejava2volume1,21基础知识2高级特性Java编程思想JavaTutorialfromSUNJava网络高级编程(人民邮电出版社)Java2实用教程,5,参考书目(其他),Java2图形设计卷1:AWT卷2:Swing-Graphicspecialeditionjava2(Java2编程详解)Java语言与面向对象程序设计,6,第一章JAVA简介,1.1JAVA起源1.2JAVA特点1.3JAVA和C/C+比较1.4JAVA基本编程环境1.5Helloworld应用程序1.6JavaApplet程序1.7Java资源,7,1.1JAVA产生,1990年,Sun公司开始了一个JamesGosling(Java创始人)项目,尝试用C+开发用于消费电器中的软件。Gosling用了一个新语言Oak来解决这个问题。Oak保留了熟悉的C+语法当Oak成熟时,因特网也正处于戏剧性增长的时期,Sun公司的开发小组认识到Oak非常适合Internet编程。1994年,他们完成了一个用Oak编写的早期Web查看器,称为WebRunner,后被改名为HotJava,8,1.1JAVA产生,Java让人联想到印度尼西亚有个重要的盛产咖啡的岛屿,开发人员为这种新的语言起名为Java,其寓意是为世人端上一杯热咖啡。1995年,Oak更名为Java,并在SunWorld95中发布,9,1.1JAVA产生,Java2!,从此,Java的知名度如日中天。甚至在1996年1月Java编译器第一版发布之前,Java已经成为Internet发行的行业标准。,98年末,Sun推出Java1.2(简称Java2),目前Java1.4是Java2平台的最新版本,10,1.1JAVA产生,目前常用的版本:J2EE(Java2PlatformEnterpriseEdition)J2SE(Java2PlatformStandardEdition)J2ME(Java2PlatformMicroEdition),11,Java语言对软件开发技术的影响软件的需求分析软件的开发方法Java语言的动画效果软件最终产品其它工业界对Java语言的评价工业界不少人预言:“Java语言的出现,将会引起一场软件革命”。Java将是网络上的“世界语”,今后所有的用其他语言编写的软件统统都将要用Java语言来改写。,Java的深远影响,12,所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等;计算过程的可视化、可操作化的软件的开发;动态画面的设计,包括图形图像的调用;交互操作的设计(选择交互、定向交互、控制流程等);Internet的系统管理功能模块的设计,包括Web页面的动态设计、管理和交互操作设计等;Intranet(企业内部网)上的软件开发(直接面向企业内部用户的软件);与各类数据库连接查询的SQL语句实现;其它应用类型的程序。,Java应用前景,13,1.2JAVA特点,Sun公司在“Java白皮书”中是这样对Java进行定义的:Java:Asimple,object-oriented,distributed,interpreted,robust,secure,architecture-neutral,portable,high-performance,multi-threaded,anddynamiclanguage。,即Java是一种具有:,简单的、,面向对象的、,分布式的、,解释型的、,强壮的、,安全的、,体系结构中立的、,可移植的、,高性能的、,多线程的、,动态的语言。,14,特性之一简单性,Java语言的简单性主要出于如下几种因素:,Java的风格类似于C+.因而对C+程序员而言是非常熟悉的;从某种意义上讲,Java语言本身是C及C+的一个变种,因此,C+程序员可以很快掌握Java编程技术;,Java摒弃了C+中容易引发程序错误的地方,如指针和内存管理;,Java提供了自动内存垃圾搜集机制,从而减轻了编程人员进行内存管理的负担,有助于减少软件错误;,Java是完全面向对象的,它是最容易学习的面向对象编程语言之一,同时它还提供了大量可重用的类库。,15,Java的简单性是以增加运行时系统的复杂性为代价的。以内存管理为例,自动内存垃圾处理减轻了面向对象编程的负担,但Java运行时系统却必须内嵌一个内存管理模块。但无论如何,对编程人员而言,Java的简单性只会是一个优点,它可以使我们的学习曲线更趋合理化,加快我们的开发进度,减少程序出错的可能性。,特性之一简单性,16,特性之二面向对象,所有面向对象的编程语言至少具备以下四个特点:,1.封装性(Encapsulation):必须有模块化(modularity)的性质以及信息隐藏(informationhiding)的能力。,2.多态性(Polymorphism):不同的对象对同一种信息,可以按照对象本身的性质加以回应。,3.继承性(Inheritance):可以定义一套对象之间的层次关系,下层的对象继承了上层对象的特性,籍此可以实现程序代码重复利用,并且有效的组织整个程序。,17,4.动态联编(Dynamicbinding):一旦对象生成以后,要使用这个对象只需简单地把信息传递给它,不再需要去参考对象当初设计时的规格。只在程序执行时,才会真正锁定需要的对象,这样的方式可以使程序设计具有最大的灵活性。,Java语言是一门面向对象语言,因此它具有以上四个特点。Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。,18,特性之三分布式,分布式包括数据分布和操作分布。,数据分布是指数据可以分散存放于网络上的不同主机;,操作分布则指把计算分散由不同主机进行处理。,Java支持WWW客户机/服务器计算模式。因此它可以支持所有这两种分布性。对于数据分布,Java提供了一个URL对象,利用此对象你可以打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。,对于操作分布,Java的客户机/服务器模式可以把运算从服务器分散到客户一端,提高整个系统的执行效率,避免瓶颈制约,增加动态可扩充性。,19,对于编程人员来说,Java的网络类库是对分布式编程的最好支持。Java网络类库是支持TCP/IP协议的子例程库。,特性之三分布式,20,字节码(ByteCode)提供了一种结构中立的对象文件格式,该格式设计成可在多种平台上有效运行的程序。Java语言的程序可在提供Java语言解释器和实时运行系统的任意环境上运行。Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时的信息,使得连接过程更加简单。,特性之四解释执行,源程序,编译,字节码,虚拟机,21,Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。,特性之五健壮性,22,特性之六安全性,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。,Java的安全模型有三个基本组成部分:,字节码校验器(ByteCodeVerifier):确保java程序的编译正确,遵循虚拟机的访问限制。,类装载器(ClassLoader):类装载器从网络上获取类时,它把来自不同服务器的类相互分开并与本地类区别开来。通过这样分离,类装载器就可以防止网上装入的类假扮成标准的内置/外置式类,或干扰从其他服务器装入类的操作。,安全管理器:确定虚拟机可以进行什么活动,在什么条件下进行。,23,Java程序被编译成一种与体系结构无关的字节代码,只要安装了Java运行时系统Java程序可以在任意的处理器上运行,Java解释器得到字节码后,对他进行转换使他能够在不同的平台上运行。,特性之七体系结构中立,“WriteOnce,RunAnywhere”,24,特性之八可移植性,Java采用多种机制来保证可移植性,其中最主要的有两条:,Java既是编译性又是解释型的。因为,Java编译人员在进行软件开发时,不必考虑软件运行平台。不仅开发的源代码是可移植的,甚至源代码经过编译之后形成的二进制代码-字节码,而不管这种字节码是在何种平台上生成的。,Java采用的是基于国际标准的数据类型。Java的数据类型在任何机器上都是一致的,它不支持特定于具体的硬件环境的数据类型。,25,此外,Java的可移植性还体现在Java的运行环境上。Java编译器是用Java语言本身所编写的,而其运行时环境则是用ANSIC编写的,整个运行时的环境体现了一个定义良好的可移植接口。,特性之八可移植性,26,Java作为一种解释型语言,其速度不会超过编译语言C,但远远超过交互式语言GUI等。和其他解释执行的语言如BASIC等不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而具有较高的性能。,特性之九高性能,27,多线程概念很象多任务,Java可以把一个程序分成多个任务以便使任务易于完成和最大限度利用CPU资源。多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。,特性之十多线程,28,Java自身的设计使她适合于一个不断发展的环境。在Java类库中可以自由的加入新的方法和实例变量而不会影响用户程序的执行。而且Java通过接口来支持多重继承使之比严格的类继承具有更灵活的方式和扩展性。,特性之十一动态性,29,Java特色,Java的特色主要表现在两个方面:,从语言角度来看:,1。完成同样工作的Java程序与C/C+程序相比要精简得多。,2。Java可被方便地当作组件来“搭建”大型软件,以达到重复使用的目的。,3。Java是一种最大限度上实现了与平台无关的编程语言。,4。Java内嵌对网络的强大支持,尤其适合分布式网络应用程序的开发。,5。Java的安全机制使其在开发Internet应用程序时更加安全。,6。Java为多线程和多道程序提供了广泛支持。,30,JavaAPI是SUN公司提供的使用Java语言开发的类库,分为基本核心类库和各种外加功能的扩展类库。,Java特色,从平台角度来看:,Java虚拟机是一种利用软件方法实现的抽象化的计算机,基于下层的操作系统和硬件平台,可以在上面执行Java的字节码程序。其设计原则是“小而精简”,能够在现有的各种操作系统平台上顺利执行,特别在今天针对Internet异构网络环境,可解决不少可移植性问题。如,Java电话、Java传真机、JavaPDA等。,31,1.3JAVA和C/C+比较,1.基本Java语法2Java程序的结构3Java数据类型4对象和类5集合类型6类层次和继承7语句8名字空间,32,Java为什么成功?,Java是开放的,由JCP联盟控制标准设计中充分考虑了开发者的需要,有强大、易用的类库自然而然地面向对象摒弃了一切容易让程序员养成不良习惯的特性,自然而然地软件工程对计算机进行了高度的抽象,需要的专业知识不多方便的异常处理、健壮机制,33,Java为什么失败?,执行速度慢初生的语言,变化多端,给人带来困惑Sun的市场能力不及Microsoft.NET直指Java,34,Java的前途,速度慢的问题在解决从电脑到电熨斗,Java无处不在越来越多的人开始喜欢她她也越来越招人喜欢就算不能一统天下,但也不会是昙花一现她的先进思想代表着方向,35,预言:,Java语言的出现,将会引起一场软件革命服务器端应用程序的标准不久的将来全世界90%的程序代码将用Java语言书写或改写在工业领域与C+平起平坐或替代C+,36,1.4Java编程环境,Java软件开发工具包JDK适于Windows98和WindowsNT/2000工作平台,由于Java的JDK版本是免费的,因此可以从因特网上免费下载,找到我们感兴趣的信息。JDK是Java语言最基本的开发工具。javac(Java编译器)java(Java解释器)jdb(Java调试器)javah(C语言标题文件和存根文件产生器)javap(Java反汇编器)javadoc(Java文档管理器)appletviewer(JavaApplet浏览器)。,37,JbuilderJBuildersintegrateddevelopmentenvironment(IDE)是Java的集成开发环境。它比较适合于projects和files的管理,提供可视化的设计用户界面、编译、调试和运行。VisualCafCafe是一个具有多种用法和多个用途的高级开发工具。它可为各种各样的开发人员用于完成一系列任务。主要特征是:独立于平台的开发和支持专家级和初学者开发人员。IBM公司的VisualAgeforJava,集成开发工具,38,ForteSUN提供的免费集成开发环境。VJ+VJ+使得熟悉Java的程序员能够快速的为Windows平台开发应用程序。很遗憾的是,VJ+不是一个优秀的Java应用程序开发工具,因为它不符合目前版本的Java标准。因此,如果你想学习Java的话,你应该彻底放弃VJ+。Jcreator,39,集成开发环境,优点界面友好易学易用适于开发大型应用系统缺点慢的出奇,掩盖对初学者很重要的细节烦人的工程,不适合开发小程序,40,开发环境选择,JavaSDK和你最中意的文本编辑器(如TextPad,UltraEdit,EditPlus)。在命令Shell里编译和执行程序。(推荐)使用JavaSDK和集成了JavaSDK的文本编辑器,比如记事本。在编辑器内部编译和执行程序。使用集成开发环境。(如JBuilder,Forte等),41,JDK的下载,网址:j2sdk-1_4_1_02_win.exe,42,安装,安装:直接运行文件j2sdk-1_4_1_02_win.exe,将其安装到一个子目录即可.如:c:jdk14,43,1.5Java程序开发过程,源程序,程序名.java,Java编译器,字节码文件,与平台无关,小应用程序,由Web浏览器执行,应用程序,由java解释器执行,44,1.5.1java应用程序,1.源程序的编辑:Java源程序是以Java为后缀的简单文本文件,可以用各种Java集成开发环境中的源代码编辑器来编写,也可以用其他文本编辑工具来编写。2.字节码的编译生成:高级语言程序由源代码到目标代码的生成过程称为编译。编译后生成目标文件(8位的ASCII码文件)。而Java程序中源代码经编译生成的目标码为两个字节的字节码(16位)。,45,字节码文件是二进制文件,编程人员无法直接读懂,要由Java语言的解释器来解释执行,编译字节码需要使用专用的Java编译器,在集成化的Java开发环境中,只要选择一个菜单命令或单击一个按钮就可以完成这个编译过程。而在JDK命令行开发工具中则需要运行独立的编译程序。,46,字节码不能直接运行在一般的操作系统平台上,而必须运行在称为“Java虚拟机“的在操作系统之外的软件平台上。运行Java程序时首先应该启动这个虚拟机,然后由它来解释、执行Java的字节码文件。显然可以看到:利用Java虚拟机就可以把Java字节码程序跟具体的软、硬件平台分隔开来。,3.字节码的解释:,47,为此只要在不同的计算机上安装针对其特定具体平台特点的Java虚拟机就可以把这种不同软硬件平台的具体区别隐藏起来,使得Java字节码程序在不同的计算机上能够面对相同的Java虚拟机,而不必考虑具体的平台差别,实现了真正的二进制代码级的跨平台可移植性。,48,1.5.2Java源程序的命名,如果源文件中有多个类,那么只能有一个类是public类。如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是.java如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就行了,49,1.5.3Java应用程序,1.编写源程序importjava.io.*;publicclassHellopublicstaticvoidmain(Stringargs)System.out.pringln(“你好!”),源程序名一定为Hello.java,50,2.Java应用程序的运行,javacHello.java,首先要用Java的编译器对Java的源程序进行编译,产生字节码文件。,Java应用程序是由独立的解释器程序来运行的,在JDK软件包中,用来解释执行Java应用程序字节码的解释器程序为,javaHello,51,程序分析,importjava.io.*;publicclassHellopublicstaticvoidmain(Stringargs)System.out.pringln(“你好!”),源程序编辑:每行语句前面的行号是为了解释程序而附加的。第一行语句import是用来加载已定义好的类或包以能够在本程序中使用。它的作用类似于C+语言程序中以#号打头的包含命令#include。,Java.io.*表示是把包中的所有类都引入当前程序;,52,第二行中的关键字class说明程序中首先定义了名称为Hello的一个类,该语句称为类头。由第3行到第8行两个大括号“”括起来的部分称为类体部分。任何一个Java程序都是由若干个类定义组成的。类体中通常有两种组成成分(称为类的成员),一种是域,包括变量、常量、对象数组等独立的实体;另一种是方法,是类似于函数的代码单元块。,importjava.io.*;publicclassHellopublicstaticvoidmain(Stringargs)System.out.pringln(“你好!”),53,第四行语句定义了方法main,该行为main方法的头,第5至第7句是main方法的方法体部分。其中main是方法的名称,小括号内是该方法使用的形式参数,方法名前面是用来说明这个方法属性的修饰符。方法体部分是由若干以分号结尾的语句组成的并由一对大括号括起来,注意:方法体内部不能再定义其他的方法。任何一个Java应用程序方法必须有而且只能有一个main方法,并且这个方法的方法头必须按照下面的格式来书写:publicstaticvoidmain(Stringargs),importjava.io.*;publicclassHellopublicstaticvoidmain(Stringargs)System.out.pringln(“你好!”),54,第6句是方法的方法体,其中System是系统内部定义的一个系统对象;out是System对象中的一个域,也是一个对象;println是out对象的一个方法,它的作用是向系统的标准输出设备输出其形参指定的字符串,并回车换行。执行该语句将由屏幕输出一个字符串“你好!”,importjava.io.*;publicclassHellopublicstaticvoidmain(Stringargs)System.out.pringln(“你好!”),55,1.6JavaApplet程序,JavaApplet在WWW中引入动态交互的内容,使网络更广泛地渗入社会生活的方方面面。JavaApplet的源代码编辑与字节码的编译生成过程与JavaApplication相同,但它不是可以独立运行的程序,它的字节码文件必须嵌入到HTML程序的文件中并由WWW浏览器来解释执行JavaApplet的字节码程序。,56,Java小应用程序,1.编写源程序importjava.applet.*;importjava.awt.*;publicclassMyjavaAppletextendsAppletpublicvoidpaint(Graphicsg)g.setColor(Color.red);g.drawString(“我在学JavaApplet!”);,57,程序分析,程序的第1,2行利用import关键字引入了程序需要的两个系统类Graphics和Applet;由于这两个系统类位于不同的系统包中,所以引入时要指明它们所在的包名;java.awt和java.applet第3行自定义了名为MyjavaApplet的类publicclassMyjavaAppletextendsApplet,58,JavaApplet中不需要有main方法。JavaApplet要求有一个类是系统类applet的子类,即必须有一个类的类头部分以extendsApplet结尾。其中extends表明新定义的类是它后面跟着的已经存在的父类的子类;Applet是父类名。为什么必须要以extendsApplet结尾?,59,因为系统类Applet中已经定义了很多的成员域和成员方法,它们规定了Applet如何与执行它的解释器WWW浏览器配合工作,所以当用户程序使用Applet的子类时,由于继承的特性,这个子类将自动拥有父类的有关成员,使WWW浏览器顺利地执行并实现用户程序所定义的功能。所以,当一个类被定义为已经存在的类的子类时,它将从其父类中继承一些成员,包括域和方法。其好处是子类可以利用父类已经定义了的功能而不必重复定义。,60,第4行到第9行是类MyjavaApplet的类体部分,类体中定义了一个方法paint,paint方法是系统类Applet中已经定义好的成员方法,它与其他的一些Applet中的方法一样,能够被WWW浏览器识别和自动调用。在此paint方法只有一条语句g.drawString(“我在学JavaApplet!”,10,20);该语句的功能是在屏幕的特定位置显示一个字符串“我在学JavaApplet!”,该语句实际调用了paint方法的形式参数g的一个成员方法drawString来完成输出功能的。g是系统类Graphics的一个对象,它代表了Web页面上Applet程序的界面区域的背景,在此背景上显示字符串。,61,字节码的嵌入,运行JavaApplet时必须将其字节码嵌入HTML文件中。即1:2:3:4:5:6:/HTML,文件名为:example.html,62,JavaApplet的运行:,运行JavaApplet程序首先要把编译好的字节码文件和编写好的HTML文件保存在Web服务器的合适路径下;当WWW浏览器下载HTML文件并显示时,它会自动下载指定的JavaApplet字节码,然后调用内置在浏览器中Java解释器来解释执行下载到本机的字节
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年太原市第四人民医院医护人员招聘笔试参考试题及答案详解
- 2026年上海东方医院医护人员招聘考试备考试题及答案详解
- 2026年益阳市中心医院益阳市第一人民医院医护人员招聘笔试备考试题及答案详解
- 2026年芜湖市中医医院医护人员招聘考试参考试题及答案详解
- 2026年中国人民解放军第171医院医护人员招聘笔试参考题库及答案详解
- 2026年萍乡市妇女儿童医院医护人员招聘笔试参考题库及答案详解
- 2026年昆明市延安医院医护人员招聘考试备考试题及答案详解
- 2026年湖南中医药大学第二附属医院医护人员招聘考试备考试题及答案详解
- 2026年六安市人民医院东院区医护人员招聘笔试备考题库及答案详解
- (2026年)药品不良反应监测报告管理制度和流程
- 市场营销专业知识全套题库(含标准答案+详细解析)
- 2026年招标采购从业人员《招标采购专业实务(初级)》考试真题(附答案解析)
- 第22课 活动课:中国传统节日的起源教学设计初中历史与社会部编版七年级下册-部编版
- DB62-T 5205-2025 光伏电站运行与维护规范
- 临床护理病历书写中的常见错误分析
- 眼部刮痧培训
- 2024年福建省龙岩市新罗区小升初科学试卷(含解析)
- 2026年重庆高考数学考试卷附答案
- 药品生产管理规范实施指南(2025版)
- 地坪裂缝修补工程实施方案
- 泌尿系结石中西医结合治疗
评论
0/150
提交评论