资源描述
主讲老师:申雪萍主讲老师:申雪萍XuePing Shen21.教学目的教学目的2.教材简介教材简介3.教学计划教学计划4.实验环境实验环境5.考核方式考核方式XuePing Shen3以以J2SEJ2SE为平台,讲解其基本模块:为平台,讲解其基本模块:开发环境、开发环境、语言基础、面向对象技术、基本类块、小程序、语言基础、面向对象技术、基本类块、小程序、图型用户界面、异常处理、多线程、网络及数图型用户界面、异常处理、多线程、网络及数据库等据库等;通过本课程要求学生达到以下目的:通过本课程要求学生达到以下目的:了解最新的具有强大支持的计算机编程语言了解最新的具有强大支持的计算机编程语言JavaJava;树立面向对象的思考方法;树立面向对象的思考方法;掌握掌握JavaJava语言编程的方法和技术;语言编程的方法和技术;加深对加深对JavaJava语言的平台无关性、多任务、多线程等语言的平台无关性、多任务、多线程等深奥技术的理解,深奥技术的理解,为学生顺利学习为学生顺利学习JavaJava更深层次的更深层次的编程打下坚实的基础。编程打下坚实的基础。主要知识点本课将重点向学生介绍有关本课将重点向学生介绍有关JavaJava程序设计的如下程序设计的如下九大部分:九大部分:1.1.JavaJava程序设计基础篇;程序设计基础篇;2.2.JavaJava面向对象程序设计篇;面向对象程序设计篇;3.3.JavaJava的异常处理篇的异常处理篇4.4.JavaJava图形程序设计篇;图形程序设计篇;5.5.JavaJava的输入输出篇;的输入输出篇;6.6.JavaJava小应用程序小应用程序;7.7.JavaJava的多线程篇;的多线程篇;8.8.JavaJava的网络编程篇;的网络编程篇;9.9.JavaJava数据库程序设计篇。数据库程序设计篇。主要知识点学生通过对本课的系统学习,应对下列知识点理学生通过对本课的系统学习,应对下列知识点理解、掌握并应用:解、掌握并应用:1.1.JavaJava程序设计基础篇:程序设计基础篇:标识符、关键字、运算符、数据类型标识符、关键字、运算符、数据类型(简单数简单数据类型和复合数据类型据类型和复合数据类型)、控制流。、控制流。2.2.JavaJava面向对象程序设计篇:面向对象程序设计篇:类、接口、包、继承、重载、覆盖、多态、类、接口、包、继承、重载、覆盖、多态、内部类和匿名类。内部类和匿名类。3.3.JavaJava图形程序设计篇:图形程序设计篇:常用组件(基本控制组件和容器组件)、布常用组件(基本控制组件和容器组件)、布局管理器、菜单、事件响应。局管理器、菜单、事件响应。主要知识点4.4.JavaJava的异常处理篇的异常处理篇JavaJava的异常类及异常处理。的异常类及异常处理。5.5.JavaJava小应用程序小应用程序AppletApplet6.6.JavaJava的多线程篇的多线程篇多线程概念、线程类多线程概念、线程类(Thred)Thred)和和RunnableRunnable接口、线程的接口、线程的生命周期和基本控制。生命周期和基本控制。7.7.JavaJava的输入输出篇的输入输出篇JavaJava的输入输出类、字节流的输入的输入输出类、字节流的输入/输出、字符流的输输出、字符流的输入入/输出。输出。8.8.JavaJava的网络编程篇的网络编程篇UDPUDP网络程序、网络程序、TCPTCP网络程序、访问网络程序、访问InternetInternet网络资源。网络资源。9.9.JavaJava数据库程序设计篇数据库程序设计篇XuePing Shen7辅助教材辅助教材Java How To ProgramJava How To Program;Java Java 编程思想编程思想机械工业出版机械工业出版社;社;Java2 Java2 核心技术核心技术XuePing Shen8XuePing Shen9实验环境实验环境操作系统操作系统:Windows 2000/Windows XPWindows 2000/Windows XP软件要求软件要求:1.1.安装安装J2SDK 1.4J2SDK 1.4及以上版本;及以上版本;2.2.金山词霸(以便帮助学生阅读英文文档)。金山词霸(以便帮助学生阅读英文文档)。3.3.IDE:JCreatorIDE:JCreator、JBuilderJBuilder或或EclipseEclipseCore Java APICore Java APIXuePing Shen10期末:期末:考核办法:考核办法:考勤考勤10%10%,课程实践,课程实践40%40%,期末,期末50%50%。考试内容:考试内容:JavaJava语言的发展过程语言的发展过程XuePing Shen121.1.19911991年年,为了开拓,为了开拓消费类电子产品消费类电子产品市场,市场,SunSun成立了一个开发小组,其领导人是成立了一个开发小组,其领导人是James James GoslingGosling。2.2.GoslingGosling给这种新语言起的名字叫给这种新语言起的名字叫OAKOAK,原因是他办公室窗外原因是他办公室窗外3.3.OakOak已经是另一个产品的注册商标,已经是另一个产品的注册商标,JavaJava本是本是产于太平洋某岛屿的一种咖啡的名称产于太平洋某岛屿的一种咖啡的名称。(Java_LabJava_Lab)James GoslingJames Gosling认为该计算机语言是非常好的东西,认为该计算机语言是非常好的东西,所以把他认为最好的名字给了她。所以把他认为最好的名字给了她。XuePing Shen13XuePing Shen14JavaJava与互联网与互联网(Internet)(Internet)的渊源的渊源4.4.JavaJava在经过了在经过了1717个月个月的努力开发完成后,虽的努力开发完成后,虽然有多方好评然有多方好评崭新的、大胆的、令人印象崭新的、大胆的、令人印象深刻的深刻的但面对它的初衷但面对它的初衷“开拓消费类电开拓消费类电子产品市场子产品市场”在当时的情况下,却面临着在当时的情况下,却面临着失败失败;5.5.19941994年,随着年,随着MOSICMOSIC浏览器浏览器(browser)(browser)的流行,的流行,WWWWWW得到了空前的发展。得到了空前的发展。GoslingGosling意识到了这意识到了这一点,于是用一点,于是用JavaJava语言开发了一个浏览器语言开发了一个浏览器WebRunnerWebRunner,在在19951995年年5 5月月2323日以闻名于世的日以闻名于世的Hot JavaHot Java发表发表,从而一举奠定了,从而一举奠定了JavaJava的地位的地位;6.6.19961996年,年,Java JDK 1.0 Java JDK 1.0 正式发表正式发表.XuePing Shen15JavaJava的版本进展的版本进展1.1.JavaJava的早期版本称为的早期版本称为JDK(Java Development JDK(Java Development Kit)Kit)1.1.19961996年,年,Java JDK 1.0 Java JDK 1.0 正式发表正式发表2.2.相继推出相继推出JDK1.02JDK1.02、JDK1.1JDK1.1、JDK1.1.5JDK1.1.52.2.19991999年改称为年改称为Java2Java2(J2SDKJ2SDK)1.1.19991999年升级为年升级为1.21.2版版2.2.20002000年年9 9月升级为月升级为1.31.3版版3.3.20012001年年7 7月升级为月升级为1.41.4版版XuePing Shen16Java2Java2的三个体系(重点的三个体系(重点)按照按照javajava的应用环境划分成的应用环境划分成:1.J2SE(Java 2 Software Development Kit,Standard Edition);2.J2EE(Java 2 Software Development Kit,Enterprise Edition);3.J2ME(Java 2 Software Development Kit,Micro Edition);XuePing Shen17什么是什么是JDK(Java Development Kit)JDK(Java Development Kit)开发工具:提供开发工具:提供javacjavac及其基础核心类及其基础核心类运行环境:提供运行环境:提供javajava及其基础核心类及其基础核心类XuePing Shen18XuePing Shen19JavaJava是与平台无关的是与平台无关的;JavaJava是以是以WebWeb为中心的为中心的;JavaJava是简洁的语言是简洁的语言;人们对人们对javajava的好感犹如人们对的好感犹如人们对googlegoogle的钟情一的钟情一样,他总是能够给人们耳目一新的感觉,让我们样,他总是能够给人们耳目一新的感觉,让我们感觉这项技术后劲十足感觉这项技术后劲十足;XuePing Shen201.1.JavaJava应用极其广泛:应用极其广泛:桌面系统;桌面系统;(MIS)MIS)WebWeb部署;部署;(web service)web service)手机、手机、PDAPDA、家用电器及游戏。、家用电器及游戏。举世瞩目的举世瞩目的“勇气勇气”号和号和“机遇机遇”号全部是采用号全部是采用JavaJava技术开发的,是迄今为止跑的最远、最成功技术开发的,是迄今为止跑的最远、最成功的火星车。的火星车。2.2.就业前景乐观就业前景乐观;3.3.JavaJava语言无疑会给您未来的工作带来机遇语言无疑会给您未来的工作带来机遇(opportunity)opportunity)。JavaJava语言开发工具简介语言开发工具简介XuePing Shen221.1.http:/ Shen23q JDKJDK提供了一组预先构造好的类库、一个运行环境和一提供了一组预先构造好的类库、一个运行环境和一组开发工具组开发工具qjavajava解释器解释器qjavacjavac编译器编译器qjavahjavah头文件生成器头文件生成器qJavadocJavadoc API API文档生成器文档生成器qjavapjavap类文件反汇编器类文件反汇编器qjdbjdb调试器调试器q appletviewerappletviewerJava AppletJava Applet测试浏览器测试浏览器XuePing Shen241.1.修改修改autoexec.bat;autoexec.bat;2.2.打开打开 控制面板控制面板,双击其中的,双击其中的 系统图标系统图标,然后选择然后选择 高级高级 选项卡。进而单击选项卡。进而单击 环境变量环境变量 按钮。按钮。3.3.重新设置重新设置PathPath项和项和 classpathclasspath 项。项。class path:class path:指定指定java java 虚拟机要查找的类的路径虚拟机要查找的类的路径(类名所在的目录)(类名所在的目录)path:path:指定要执行的命令的路径(所在的目录)指定要执行的命令的路径(所在的目录)XuePing Shen25XuePing Shen26作业作业安装安装J2SDKJ2SDK并设置环境变量并设置环境变量;JavaJava程序及其执行过程程序及其执行过程XuePing Shen28两类两类javajava程序程序JavaJava应用程序应用程序(Application)Application)JavaJava小程序小程序(Applet)Applet)开发开发JavaJava应用程序和小程序应用程序和小程序都要经过三个基本都要经过三个基本步骤:步骤:编辑编辑JavaJava源程序是由一些文本文件组成,所以源程序是由一些文本文件组成,所以NotepadNotepadUltraEditUltraEditIDEIDEJBuilderJBuilderEClipseEClipseJCreaterJCreater等等编译编译:javac javac*.java .java (重点)(重点)运行运行:java java*或或AppletviewerAppletviewer/浏览器(重点)浏览器(重点)XuePing Shen29XuePing Shen30XuePing Shen31/*简单的应用程序简单的应用程序HelloJavaApp.java*/import java.util.*;public class HelloJavaApp public static void main(String args)System.out.println(Hello World!);编译编译:javac HelloJavaApp.java 运行:运行:Java HelloJavaAppXuePing Shen32注意事项注意事项1.1.import:import:导入类库;导入类库;2.2.public class public class HelloJavaAppHelloJavaApp/每个应用每个应用程序只有一个公共类;程序只有一个公共类;3.3.public static void main(String public static void main(String argsargs)/)/入口函数;入口函数;4.4.System.out.printlnSystem.out.println();/();/输出函数输出函数/文件名文件名ValueOfChar.javaimport java.io.*;public class ValueOfChar public static void main(String Args)char ch=;System.out.print(请输入一个字符请输入一个字符:);try/异常处理块异常处理块 ch=(char)System.in.read();catch(IOException e)System.out.println(字符字符+ch+的的ASCII值为值为:+(int)ch);编译编译:javac ValueOfChar.java 运行:运行:java ValueOfCharXuePing Shen34注意事项注意事项(重点重点)编译编译:javacjavac *.java.java 运行:运行:javajava *import java.awt.*;import java.applet.Applet;public class HelloAppletApp extends Applet public void paint(Graphics g)g.drawString(Hello everyone,50,200);g.drawString(Thank you for choosing Java!,200,200);1.以以HelloAppletApp.java为文件名保存为文件名保存2.Javac HelloAppletApp.java 生成生成HelloAppletApp.classJava Appletn以以HelloAppletApp.htm/HelloAppletApp.html 为文件名保存为文件名保存n调用调用3.appletviewer HelloAppletApp.htm OR4.ie浏览器。浏览器。XuePing Shen37Java AppletJava Applet程序(步骤)程序(步骤)1.1.编写编写HelloAppletAppHelloAppletApp.java.java;2.2.编写编写HelloAppletApp.htm;HelloAppletApp.htm;3.3.javac HelloAppletApp.javajavac HelloAppletApp.java4.4.appletviewer HelloAppletApp.htm appletviewer HelloAppletApp.htm OROR 在在ieie浏览器调用浏览器调用XuePing Shen38注意事项注意事项(总结总结)1.1.一个源程序中可以声明多个类,一个源程序中可以声明多个类,但仅允许有一个公共类但仅允许有一个公共类,对于,对于包含多个类的应用程序,应把包含包含多个类的应用程序,应把包含main()main()方法的类声明为方法的类声明为publicpublic类,其它类不能用关键字类,其它类不能用关键字publicpublic修饰。修饰。2.2.源程序的文件名和程序中定义的主类名应保持一致,包括字母源程序的文件名和程序中定义的主类名应保持一致,包括字母大小写的匹配大小写的匹配;3.3.JavaJava严格区分大小写严格区分大小写,例如,例如appletapplet和和AppletApplet代表了不同的含义;代表了不同的含义;4.4.语句以分号结束;语句以分号结束;5.5.程序中可加注释,用双斜杠程序中可加注释,用双斜杠“/”/”引导,引导,“/*/”/”可包含多行可包含多行注释;注释;6.6.语句体(类体、方法体、结构体等)以大括号界定。语句体(类体、方法体、结构体等)以大括号界定。7.7.保持良好的书写风格,不同级别的语句最好采取缩进的方法来保持良好的书写风格,不同级别的语句最好采取缩进的方法来表示它们的差异表示它们的差异。XuePing Shen39Java Java 程序的开发过程程序的开发过程编写源文件编写源文件主类名主类名.javajava字节码文件字节码文件主类名主类名.classclass应用程序由应用程序由JavaJava解释器执行解释器执行小程序由小程序由WebWeb浏览器执行浏览器执行编译编译运行运行编译:编译:javac javac*.java.java运行运行1 1:java java*运行运行2 2:appletviewerappletviewer/浏览器浏览器 *.htmhtm/*.html.html常见错误常见错误(编译错误(编译错误)错误提示内容:错误提示内容:javacjavac:Command not found:Command not found解释:包含解释:包含javacjavac编译器的路径变量设置不正确编译器的路径变量设置不正确错误提示内容:错误提示内容:HelloWorldApp.java:3:Method HelloWorldApp.java:3:Method printl(java.lang.String)not found in class printl(java.lang.String)not found in class java.io.PrintStream.System.out.printljava.io.PrintStream.System.out.printl(“Hello World!”);(“Hello World!”);解释:解释:键入的方法名键入的方法名printlprintl不正确,方法不正确,方法printlnprintln()()的名字的名字被写成被写成printlprintl错误提示内容:错误提示内容:HelloWorldApp.java:1:Public class HelloWorldApp.java:1:Public class HelloWorldappHelloWorldapp must be defined in a file called must be defined in a file called“HelloWorldappHelloWorldapp.java.java”.public class HelloWorldapp”.public class HelloWorldapp 解释:文件解释:文件HelloWorldAppHelloWorldApp.java.java中定义的公有类中定义的公有类HelloWorldappHelloWorldapp的名字和文件名不匹配的名字和文件名不匹配常见错误常见错误(运行时错误)(运行时错误)错误提示内容:错误提示内容:Cant find class HelloWorldAppCant find class HelloWorldApp解释:(当键入解释:(当键入java HelloWorldAppjava HelloWorldApp时发生该错误。)系统找不到时发生该错误。)系统找不到名为名为H HelloWorldAppelloWorldApp的类文件的类文件错误提示内容:错误提示内容:In class HelloWorldAppIn class HelloWorldApp:main must be public and:main must be public and staticstatic解释:如果解释:如果main()main()方法的左侧缺少方法的左侧缺少staticstatic或或publicpublic,会发生这个错,会发生这个错误误文件中含有的类个数错误文件中含有的类个数错误解释:解释:按照按照JavaJava规则规则,在一个源文件中最多只能定义一个公有类在一个源文件中最多只能定义一个公有类,否则会发生运行时错误。如果一个应用系统中有多个公有类,则要否则会发生运行时错误。如果一个应用系统中有多个公有类,则要把它们分别放在各自不同的文件中。把它们分别放在各自不同的文件中。文件中非公有类的个数不限文件中非公有类的个数不限层次错误层次错误解释:一个解释:一个.java.java源文件可以含有三个源文件可以含有三个“顶层顶层”元素,这三个元素元素,这三个元素是:是:1.1.一个包说明,即一个包说明,即packagepackage语句,包说明是可选的。语句,包说明是可选的。2.2.任意多个引入语句,即任意多个引入语句,即importimport语句。语句。3.3.类和接口说明类和接口说明XuePing Shen42使用使用JavaJava核心核心APIAPI文档文档在各种在各种JavaJava的的APIAPI中,中,程序员使用最多的是程序员使用最多的是JavaJava核心核心APIAPI核心核心APIAPI文档是按文档是按层设计层设计的,以的,以主页方式主页方式提供提供给用户。类文档中主要包括:给用户。类文档中主要包括:类层次结构类层次结构、类类及其及其一般目的的说明一般目的的说明、成员变量表成员变量表、构造函构造函数表数表、方法表方法表、变量详细说明表变量详细说明表XuePing Shen44XuePing Shen45JavaJava语言的特点语言的特点JavaJava语言是由语言是由C+C+语言发展而来的,是一种彻底的纯面语言发展而来的,是一种彻底的纯面向对象的程序设计语言向对象的程序设计语言JavaJava去掉了去掉了C+C+语言中容易引起错误的特性,如指针,语言中容易引起错误的特性,如指针,指针型运算,多重继承机制等。字符串和数组都成了指针型运算,多重继承机制等。字符串和数组都成了对象对象Java=“C+”-“Java=“C+”-“复杂性和奇异性复杂性和奇异性”+“+“安全性安全性和可移植性和可移植性”JavaJava语言语言是一种面向对象的、能跨平台使用的、安全是一种面向对象的、能跨平台使用的、安全的、解释执行的网络编程语言的、解释执行的网络编程语言封装性、多态性、继承性、动态链接封装性、多态性、继承性、动态链接JavaJava语言支持语言支持多线程多线程JavaJava语言具有语言具有内存内存“垃圾垃圾”自动收集机制自动收集机制,它扫描内,它扫描内存,并自动释放那些不在使用的内存块存,并自动释放那些不在使用的内存块XuePing Shen46不再有不再有#include#include 和和#define#define 等预处理功能等预处理功能不再有不再有structure,unionstructure,union及及typedeftypedef不再有函数、不再有指针、不再有多重继承不再有函数、不再有指针、不再有多重继承不再有不再有gotogoto不再有操作符重载不再有操作符重载(Operator Overloading)Operator Overloading)XuePing Shen47代码安全(代码安全(1 1)Java源程序源程序Java编译器编译器Java字节码字节码类下载器类下载器字节码校验器字节码校验器解释器解释器实时运行部件实时运行部件硬件硬件代码代码生成器生成器网络网络编译时编译时运行时运行时XuePing Shen48由由“类装载器类装载器”具体完成字节码的装载,装载具体完成字节码的装载,装载时运行系统确定程序的内存分配时运行系统确定程序的内存分配“字节码检验器字节码检验器”对字节码进行安全性检查,对字节码进行安全性检查,这种检查可以排除字节码可能存在的违法访问这种检查可以排除字节码可能存在的违法访问权限,不规则数据类型和非法调用问题权限,不规则数据类型和非法调用问题完成字节码的翻译和执行完成字节码的翻译和执行一种是走运行系统左边的路径一种是走运行系统左边的路径另一种是走运行系统右边的路径另一种是走运行系统右边的路径XuePing Shen49编译编译,没有绝对地址没有绝对地址调入包含调入包含,继承所用继承所用道的所有类道的所有类,内存内存分配确定分配确定,编程真正编程真正可执行的机器码可执行的机器码 Java源程序源程序(.java文件文件)Java编译器编译器Java Bytecode(.class文件文件)系统执行平台系统执行平台Bytecode 解释器解释器Bytecode 载入器载入器字节码校验器字节码校验器不存在伪造的指针不存在伪造的指针不违反访问权限不违反访问权限不非法访问对象不非法访问对象不导致操作栈溢出不导致操作栈溢出 XuePing Shen50Java虚拟机JavainterpreterJust-in-timecompilerRuntime SystemOperating SystemHardware不同的操作系统有不同的虚不同的操作系统有不同的虚拟机。它类似一个小巧而高效的拟机。它类似一个小巧而高效的CPU。byte-code代码是与平台无代码是与平台无关的是虚拟机的机器指令关的是虚拟机的机器指令.Java字节代码运行的两种方式字节代码运行的两种方式:interpreter(解释方式解释方式)Just-in-time(即时编译即时编译):由代码由代码生成器将字节代码转换成本机生成器将字节代码转换成本机的机器代码的机器代码,然后可以以较高速然后可以以较高速度执行度执行.XuePing Shen51代码安全(代码安全(2 2)Java AppletJava Applet是从其他机器上下载到本机执行是从其他机器上下载到本机执行的,在的,在 AppletApplet运行之前,系统要对之进行严运行之前,系统要对之进行严格的三级代码安全检查,即格的三级代码安全检查,即验证验证、分析分析和和跟踪跟踪监测监测XuePing Shen52代码安全(代码安全(3 3)JavaJava解释器解释器:JavaJava解释器只能执行为解释器只能执行为JVMJVM编编译的代码。译的代码。JavaJava解释器有三项主要工作解释器有三项主要工作下载代码由下载代码由类下载类下载器完成。器完成。校验代码由校验代码由字节码校验器字节码校验器完成。完成。运行代码由运行代码由运行时解释器运行时解释器完成。完成。类下载器类下载器当当JavaJava运行时系统从运行时系统从InternetInternet网上下载类文件时,网上下载类文件时,它使用类下载器来下载它使用类下载器来下载类下载器把本地文件系统的类名空间和网络源输类下载器把本地文件系统的类名空间和网络源输入的类名空间区分开来,以增加安全性入的类名空间区分开来,以增加安全性XuePing Shen53代码安全(代码安全(4 4)字节码校验器:程序通过字节码校验器检查字节码校验器:程序通过字节码校验器检查代码的安全性代码的安全性 。校验器主要检查以下几项内。校验器主要检查以下几项内容容类遵从类遵从JVMJVM的类文件格式。的类文件格式。不出现访问违例情况。不出现访问违例情况。代码不会引起运算栈溢出。代码不会引起运算栈溢出。所有运算代码的参数类型总是正确的。所有运算代码的参数类型总是正确的。不会发生非法数据转换。不会发生非法数据转换。对象域访问是合法的。对象域访问是合法的。XuePing Shen5400110110机器语言代码程序设计师语言翻译程序(JVM)虚拟机代码虚拟机代码虚拟机实时支持系统 JVM Runtimex86RuntimePowerPCRuntimeMIPSRuntimeALPHARuntimeMIPS机器ALPHA机器PowerPC机器x86机器程序设计师语言翻译程序x86机器码PowerPC机器码MIPS机器码ALPHA机器码MIPS机器ALPHA机器PowerPC机器x86机器程序语言代码语言翻译程序与硬件有关性Java虚拟机原理示意图Println(“Hello!”)中高级程序语言代码每一种操作系统的每一种操作系统的JavaJava解释器是不同的,但实现解释器是不同的,但实现JavaJava虚拟机的过程是相虚拟机的过程是相同的,这就是同的,这就是JavaJava语言与平台无关的关键所在语言与平台无关的关键所在XuePing Shen55JavaJava是跨平台的是跨平台的为了使为了使JavaJava程序在网络的任何地方都能运行,程序在网络的任何地方都能运行,JavaJava编译器生成的编译器生成的目标代码是目标代码是结构中立结构中立的,的,即任何安装了即任何安装了JavaJava运行环境的计算机都运行环境的计算机都能执行这种代码。能执行这种代码。字节码:这种目标代码称为字节码(字节码:这种目标代码称为字节码(bytecodebytecode),它和计算),它和计算机平台无关机平台无关很多软件都要针对不同的平台(如很多软件都要针对不同的平台(如IBMIBM、苹果机等)开发不同的、苹果机等)开发不同的版本,而版本,而JavaJava程序的同一个版本就可运行在任何平台上程序的同一个版本就可运行在任何平台上JVM JVM(Java virtual machineJava virtual machine):是在一台真正的机器上用软件是在一台真正的机器上用软件方式实现的一台假想机方式实现的一台假想机JavaJava虚拟机虚拟机:是运行是运行Java Java 程序必不可少的机制。程序必不可少的机制。JVMJVM是是编译编译后的后的Java Java 程序程序和和硬件系统之间硬件系统之间的接口,程序员可以把的接口,程序员可以把JVMJVM看看作一个虚拟的处理器作一个虚拟的处理器它不仅解释执行编译后的它不仅解释执行编译后的JavaJava指令,而且还进行安全检查。指令,而且还进行安全检查。它是它是JavaJava程序能在多平台间进行无缝移植的可靠保证,同时程序能在多平台间进行无缝移植的可靠保证,同时也是也是Java Java 程序的安全检验引擎程序的安全检验引擎XuePing Shen56JavaJava基本软件基本软件(基本类和扩展类)(基本类和扩展类)JavaJava虚拟机虚拟机(JVM)实际计算机实际计算机(硬件和操作系统)(硬件和操作系统)适配器适配器(Adapter)Java应用程序接口应用程序接口(API)XuePing Shen57JavaJava程序的开发过程程序的开发过程源源文文件件Java编编译译器器字字节节码码文文件件由由Web浏览器浏览器执行执行由由Java解释解释器执行器执行文件名文件名.java产生产生.class对于对于 java小应用程序小应用程序对于对于java应用程序应用程序AppletApplicationXuePing Shen58垃圾收集垃圾收集在在JavaJava中,程序员不必亲自释放内存,它提供中,程序员不必亲自释放内存,它提供了后台系统级线程,记录每次内存分配的情况,了后台系统级线程,记录每次内存分配的情况,并统计每个内存指针的引用次数;并统计每个内存指针的引用次数;在在JavaJava虚拟机运行时环境闲置时,垃圾收集线虚拟机运行时环境闲置时,垃圾收集线程将检查是否存在引用次数为程将检查是否存在引用次数为0 0的内存指针;的内存指针;如果有的话,则垃圾收集线程把该内存如果有的话,则垃圾收集线程把该内存“标记标记”为为“清除清除”(释放)(释放)XuePing Shen59多线程多线程数据的输入输出以及针对此数据所进行的其他数据的输入输出以及针对此数据所进行的其他处理都是同时进行的,这是一个典型的多线程处理都是同时进行的,这是一个典型的多线程例子例子多线程的概念就是让计算机同时运行多个程序多线程的概念就是让计算机同时运行多个程序段段JavaJava提供了一套复杂的线程同步化机制,程序提供了一套复杂的线程同步化机制,程序员可以方便的使用基于这种机制设计的方法,员可以方便的使用基于这种机制设计的方法,编写出健壮的多线程程序编写出健壮的多线程程序XuePing Shen60所有面向对象的应用开发所有面向对象的应用开发计算过程的可视化、可操作化的软件开发计算过程的可视化、可操作化的软件开发动态画面的设计动态画面的设计交互操作的设计交互操作的设计InternetInternet的系统管理功能模块的设计、的系统管理功能模块的设计、WebWeb页页的动态设计、管理交互操作设计的动态设计、管理交互操作设计与各种数据库连接查询的与各种数据库连接查询的SQLSQL语言实现语言实现
展开阅读全文