关闭

关闭

关闭

封号提示

内容

首页 第1章 Java概述.ppt

第1章 Java概述.ppt

第1章 Java概述.ppt

上传者: 假面 2013-03-05 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《第1章 Java概述ppt》,可适用于人文社科领域,主题内容包含Java语言程序设计*Java语言程序设计冯松鹤计算机科学系*地点:号楼北Email:shfengbjtueducn课程考试*课程考试平时情况(上机符等。

Java语言程序设计*Java语言程序设计冯松鹤计算机科学系*地点:号楼北Email:shfengbjtueducn课程考试*课程考试平时情况(上机作业和平时表现)期末考试(以读程序和写程序为主)*思考题:自己查资料解决。编程题:事先编制好上机时调试并当场检查运行结果。同时需要提交源代码。每次作业的相关内容压缩到一个文件中。文件名的命名规则为:示例:第讲练习的作业将不包含*class的所有文件打包成名字为“学号Erar”的压缩文件。作业要求教学参考资料*教学参考资料徐保民陈旭东李春艳Java语言程序设计人民邮电出版社,(教材)耿祥义Java实用教程(第三版)清华大学出版社(有特色)朱仲杰Java全方位学习机械工业出版社(简单易懂)教学参考资料(续)*教学参考资料(续)BruceEckel著《Java编程思想》(第三版),机械工业出版社(内容深入)JSE在线帮助文档,http:downloadjavanetjdkdocsapi设计时要经常参考JSDKAPI文档(很重要!!!)教学参考资料(续)*教学参考资料(续)GoslingJavaProgrammingLanguage人民邮电出版社(中文版)Java核心技术机械工业出版社(中文版)。Java在线教程(http:javasuncomdocsbookstutorialindexhtml)(中文版人民邮电出版社)*)Web应用)手机游戏)机顶盒)智能卡)云计算(Hadoop)常见Java技术的应用领域*常见高级语言排行榜()*常见高级语言排行榜()*http:wwwtiobecomindexphpcontentpaperinfotpciindexhtml常见高级语言排行榜()*)C与C关系)CC主要用途=》C不是纯粹的OOL=》网络应用不足之处)NET=》单一平台上实现多种语言)Java=》多平台上实现统一语言CC、NET、Java特点*Q:如何学好Java语言?)运用CC知识)重点:差异)上机实践)充分利用帮助信息和googleQ:学习Java语言的目的?)进一步掌握OO思想及Java语言基础)为学习其它Java技术打基础教学内容*教学内容使用Java编程语言创建Java应用程序和applets。定义和描述垃圾搜集安全性和Java虚拟机(JVM)。描述和使用Java语言面向对象的特点。使用Java语言先进的面向对象特点,包括方法重载、方法覆盖、抽象类、接口、final、static和访问控制。开发图形用户界面(GUI)。利用Java支持多种布局管理。描述和使用Java的事件处理模式。使用Java语言的鼠标输入、文本、窗口和菜单窗口构件。使用Java的例外处理来控制程序执行和定义用户自己的例外事件。实现文件的输入输出(IO)。使用Java语言内在的线程模式来控制多线程。使用Java的Sockets机制进行网络通信。第章Java概述*第章Java概述Java发展历史及特点编辑、编译及运行Java应用程序的步骤Java应用程序的基本结构教学内容*年Sun的“绿色”工程启动主要目的是开发智能消费电子产品年“绿色”工程所需的独立于平台的程序设计语言“Oak”(JamesGosling博士领导)年竟标失败Oak无发展年浏览器Mosaic和netscape问世对Oak进行了改造推出Java编写HotJava年Sun在第届“JavaOne开发应用者大会”正式发布Java语言。Java发展历史*年成立Javasoft分公司,专门负责Java事宜。JDK版正式发表(AWT)。年JDK版问世(即时编译器JIT(JustInTime))。年Java即Java问世。(引入事件委托处理机制,分为JEE、JSE、JME)年,推出Java,并相继推出Linux和Solaris版。(类库改进,增加JNI)年,推出Java(对Hotspot锁机制进行改进)。Java发展历史(续)*年,推出Java。JDK(内部)JDK(易用)。(引入C#的一些特性,泛型、增强的for语句、可变数目参数、注解(Annotations)、自动拆箱和装箱)年,推出Java。JDK(许多实用和方便的功能如脚本、WebService、XML、编译器API)Java=>JSEJava发展历史(续)*JEE(JavaPlatformEnterpriseEdition)主要用于企业级应用开发如电子商务网站。运行在JVMJSE(JavaPlatformStandardEdition)主要用于桌面应用软件的编程。运行在JVMJME(JavaPlatformMicroEdition)主要应用于嵌入系统开发如手机和PDA的编程。运行在KVM*JavaONE(OpenNetEnvironment)*Java语言特点Java是一种简单的、面向对象的、分布式的、解释执行的、健壮的、安全的、结构中立的、可移植的、高效率的、多线程的和动态的语言。我们为什么要用Java我们为什么要用Java简单的Java最初是为对家用电器进行集成控制而设计的一种语言因此它必须简单明了。Java语言的简单性主要体现在三个方面:、Java的风格类似于C因而C程序员初次接触Java语言就会感到很熟悉。从某种意义上讲Java语言是C及C语言的一个变种因此C程序员可以很快地掌握Java编程技术。、Java摒弃了C中容易引发程序错误的一些特性如指针、结构、枚举以及内存管理等。、Java提供了丰富的类库可以帮助我们很方便的开发Java程序。我们为什么要用Java我们为什么要用Java面向对象的面向对象可以说是Java最重要的特性所以它支持继承、重载、多态等面向对象的特性。Java语言的设计是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。我们为什么要用Java我们为什么要用Java健壮的Java致力于检查程序在编译和运行时的错误。Java也是一种强类型的语言其类型检查比C还要严格。类型检查帮助我们检查出许多开发早期出现的错误。Java自己负责内存管理提供了垃圾内存回收机制有效的避免了C中最头疼的内存泄漏问题。我们为什么要用Java我们为什么要用Java安全的Java的安全性可从两个方面得到保证。一方面在Java语言里删除了指针和释放内存等C功能避免了非法内存操作。另一方面通过Java的安全体系架构来确保Java代码的安全性。当我们从网上下载Java代码在本地执行时Java的安全架构能确保恶意的代码不能随意访问我们本地计算机的资源例如:删除文件访问本地网络资源等操作都是被禁止的。我们为什么要用Java我们为什么要用Java解释的Java代码是解释执行的我们使用Java编译器将Java代码编译成字节码这是一种中间代码然后由Java解释器解释执行。而C程序是编译执行的C程序代码被编译为本地机器指令然后执行。我们为什么要用Java我们为什么要用Java与平台无关的Java作为一种网络语言其源代码被编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。Java源程序被编译成一种与机器无关的字节码格式在Java虚拟机上运行。我们为什么要用Java我们为什么要用Java多线程的Java语言的一个重要特性就是在语言级支持多线程的程序设计。多线程就好像我们做一张桌子如果你一个人完成这张桌子就好像单线程那么你需要先做桌面做完桌面后再做个桌子腿如果现在有个人来做桌子在程序中开辟个线程其中个人做桌面另外个人分别做个桌子腿那么这两种方式效率的高低相信大家都能区分出来。我们为什么要用Java我们为什么要用Java动态的Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类这是我们采用C语言进行面向对象程序设计所无法实现的。在C程序设计过程中每当在类中增加一个实例变量或一个成员函数后引用该类的所有子类都必须重新编译否则将导致程序崩溃。Java从以下几个方面采取措施来解决这个问题。Java编译器不是将对实例变量和成员函数的引用编译为数值引用而是将符号引用信息在字节码中保存下来传递给解释器再由解释器在完成动态连接类后将符号引用信息转换为数值偏移量。我们为什么要用Java我们为什么要用Java动态的一个在存储器中生成的对象不在编译过程中决定而是延迟到运行时由解释器确定。这样对类中的变量和方法进行更新时就不至于影响现存的代码。解释执行字节码时这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次随后代码便可以全速执行。在运行时确定引用的好处是可以使用已被更新的类而不必担心会影响原有的代码。如果程序连接了网络中另一系统中的某一类该类的所有者也可以自由地对该类进行更新而不会使任何引用该类的程序崩溃。Java开发环境*Java开发环境集成开发环境Eclipse(http:wwweclipseorg)NetBeans(http:wwwnetbeansorgdownloads)初学者首次上机:SUN提供的JDK*安装JDK直接运行“jdkeabinbwindowsijulexe”按照安装向导进行安装。例如安装到D:ProgramsJavajdk目录下下载http:javasuncom。该下载页面提供有针对不同操作系统平台的不同JDK版本Java开发环境(续)*安装JDK后目录结构:bin目录:Java编译器、解释器等demo目录:一些实例程序lib目录:Java程序要用到的类库jre目录:Java运行环境包括Java虚拟机、运行类库等db目录:Java语言实现的ApacheDerby数据库include目录:本地方法文件JNIJava开发环境(续)JDK安装目录下的srczip*Java开发环境(续)常用工具*JAVAHOME值:D:ProgramsJavajdk方法(Windowsxp):鼠标右击“我的电脑”然后依次选取“属性”“高级”“环境变量”Java开发环境(续)设置环境变量*Java开发环境(续)*path值:JAVAHOMEbinJava开发环境(续)*Classpath值:JAVAHOMElibtoolsjarJava开发环境(续)*验证环境变量的配置Java开发环境(续)*功能:在屏幕上显示出“Hello,World!”字符串信息。然后等待用户键盘输入并在屏幕上显示用户输入的信息Java应用程序编辑、编译、运行(参考:节)编辑源程序*编辑源程序Java应用程序编辑、编译、运行(续)文本编辑器UltraEdit、Notepad或Wordpad等*importjavautilScanner*本程序功能是:首先输出“Hello,World!"然后等待用户输入并显示用户输入的信息。*publicclassHelloWorld{***方法main()是Java应用序的唯一入口*paramargs输入参数*exception没有异常抛出*publicstaticvoidmain(Stringargs){Systemoutprintln("Hello,World!")输出"Hello,World!"*printf和scanner是JSE的新功能*Scannerscanner=newScanner(Systemin)Systemoutprint("请输入您的名字:")Systemoutprintf("ss这是您的第d个Java程序!n","您好!",scannernext(),)}}保存源程序*保存源程序Java应用程序编辑、编译、运行(续)保存于目录D:javabookchap下并命名为HelloWorldjava编译源程序在Windows开始菜单中执行“运行”命令在运行对话框中键入“cmd”命令可进入命令行界面。*D:javabookchap>javacHelloWorldjavaJava应用程序编辑、编译、运行(续)编译源程序D:javabookchap下产生一个扩展名为class的文件HelloWorldclass观察:小小窍门:javac*java*Java应用程序编辑、编译、运行(续)执行class文件D:javabookchap>javaHelloWorld屏幕上则显示如下信息:Hello,World!请输入您的名字:小张您好!小张这是您的第个Java程序*Java应用程序开发步骤*importjavautilScanner*本程序功能是:首先输出“Hello,World!"然后等待用户输入并显示用户输入的信息。*publicclassHelloWorld{***方法main()是Java应用序的唯一入口*paramargs输入参数*exception没有异常抛出*publicstaticvoidmain(Stringargs){Systemoutprintln("Hello,World!")输出"Hello,World!"*printf和scanner是JSE的新功能*Scannerscanner=newScanner(Systemin)Systemoutprint("请输入您的名字:")Systemoutprintf("ss这是您的第d个Java程序!n","您好!",scannernext(),)}}Java应用程序分析(参考:节)*Java应用程序分析(续)import语句程序基本结构import语句publicclass类名{}publicstaticvoidmain(Stringargs){……各种功能语句}*Java应用程序分析(续)import语句用途:导入已定义好的类库位置:位于类定义之前数量:可以有多个import语句与CC中#include区别*Java应用程序分析(续)注释语句用途单行注释:双斜杠符“”标记种类多行注释:符号“*”和“*”文档注释:***注释文字**Java应用程序分析(续)类定义publicclassHelloWorld{类体}访问修饰符:public含义:任何程序可以使用该类关键字:class作用:声明一个新类名字:HelloWorldJava中:程序都是以类的方式组织一个源程序至少要有一个类只允许有一个用public修饰的类类名不能相同*Java应用程序分析(续)方法声明publicstaticvoidmain(Stringargs){……各种功能语句}public:可以从其他类中调用他static:可以通过类名直接使用他void:无须返回任何值。main:方法的名字Stringargs:方法的名为args的字符串数组参数列表*Java应用程序分析(续)屏幕输出语句Systemoutprintln(“Hello,World!”):自动换行Systemoutprint("请输入您的名字:")不自动换行。Systemoutprintf("ss这是您的第d个Java程序!n","您好!“,scannernext(),)通过格式控制符控制输出字符的格式*Java应用程序分析(续)键盘输入语句Scannerscanner=newScanner(Systemin)scannernext()scannernext()语句等待用户通过键盘输入数据,按“回车键”后,scannernext()语句会读取输入的内容*Java语言的编程风格文件名必须与类名相同且大小写要一致对于一个应用程序必须有一个main方法。Java程序中的每一条语句都以“”结束每条语句各占一行也可同一行中书写多条语句注释类名首字母要大写当由多个单词合成时每个单词的首字母大写方法名首字母要小写当由多个单词合成时中间的每个单词的首字母都要大写程序代码缩排思考题*思考题什么是Java虚拟机它的功能是什么(参考节)Java编译器的输入和输出分别是什么?Java程序可以在任何机器上运行吗?在计算机上运行Java需要什么?编辑编译和运行例系统环境变量Path值的设置*系统环境变量Path值的设置SDK平台提供的Java编译器(javacexe)和Java解释器(javaexe)位于Java安装目录的bin文件夹中为了能在任何目录中使用编译器和解释器应在系统特性中设置Path值。目的是为了让系统找到JSE所提供的那些工具程序(javac,java,javadoc,…)。系统环境ClassPath值的设置*系统环境ClassPath值的设置CLASSPATH是类解释器的加载搜索路径。(JVM、JSE、Java应用程序依照它来找到需要的类)。内建的类库放在jrelib目录中扩展类放在jrelibext目录中这两类不需要设定。在“系统变量”中单击“新建”按钮弹出的“新建系统变量”对话框中在“变量名”中写“CLASSPATH”在“变量值”中加“”即可把当前工作目录加入到CLASSPATH。*测试path的设置:点击开始运行运行cmd进入DOS环境,在命令行上输入javac如果出现javac的帮助信息则说明安装成功。*测试classpath的设置:例如:classHelloWorld{publicstaticvoidmain(Stringargs){Systemoutprintln("HelloWorld!")}}C:>javacHelloWorldjavaC:>javaHelloWorldExceptioninthread"main"javalangNoClassDefFoundError:HelloWorld原因:classpath中没有指明当前的工作目录只需在classpath中加上“”Java跨平台的原理Java跨平台的原理Java的跨平台是通过Java虚拟机(JVM)来实现的。Java跨平台的原理Java跨平台的原理Java源文件的编译过程Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译程序将Java源程序翻译为JVM可执行代码字节码。这一编译过程同CC的编译有些不同。当C编译器编译生成一个对象的代码时该代码是为在某一特定硬件平台运行而产生的。因此在编译过程中编译程序通过查表将所有对符号的引用转换为特定的内存偏移量以保证程序运行。Java编译器却不将对变量和方法的引用编译为数值引用也不确定程序执行过程中的内存布局而是将这些符号引用信息保留在字节码中由解释器在运行过程中创建内存布局然后再通过查表来确定一个方法所在的地址。这样就有效的保证了Java的可移植性和安全性。Java跨平台的原理Java跨平台的原理Java解释器的执行过程运行JVM字节码的工作是由解释器来完成的。解释执行过程分三步进行:代码的装入、代码的校验和代码的执行。装入代码的工作由“类装载器”(classloader)完成。类装载器负责装入运行一个程序需要的所有代码这也包括程序代码中的类所继承的类和被其调用的类。当类装载器装入一个类时该类被放在自己的名字空间中。除了通过符号引用自己名字空间以外的类类之间没有其他办法可以影响其它类。在本台计算机上的所有类都在同一地址空间内而所有从外部引进的类都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间获得较高的运行效率同时又保证它们与从外部引进的类不会相互影响。Java解释器的执行过程(续)当装入了运行程序需要的所有类后解释器便可确定整个可执行程序的内存布局。解释器为符号引用同特定的地址空间建立对应关系及查询表。通过在这一阶段确定代码的内存布局Java很好地解决了由超类改变而使子类崩溃的问题同时也防止了代码对地址的非法访问。随后被装入的代码由字节码校验器进行检查。校验器可发现操作数栈溢出非法数据类型转换等多种错误。通过校验后代码便开始执行了。*Java跨平台的原理Java跨平台的原理Java跨平台的原理Java字节码的两种执行方式、即时编译方式:解释器先将字节码编译成机器码然后再执行该机器码。、解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程序的所有操作。  通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性这使得将字节码翻译为机器代码的工作具有较高的效率。对于那些对运行速度要求较高的应用程序解释器可将Java字节码即时编译为机器码从而很好地保证了Java代码的可移植性和高性能。Java跨平台的原理Java跨平台的原理JVM规格描述JVM的设计目标是提供一个基于抽象规格描述的计算机模型为解释程序开发人员提供很好的灵活性同时也确保Java代码可在符合该规范的任何系统上运行。JVM对其实现的某些方面给出了具体的定义特别是对Java可执行代码即字节码(Bytecode)的格式给出了明确的规格。这一规格包括操作码和操作数的语法和数值、标识符的数值表示方式、以及Java类文件中的Java对象、常量缓冲池在JVM的存储映象。这些定义为JVM解释器开发人员提供了所需的信息和开发环境。Java的设计者希望给开发人员以随心所欲使用Java的自由。JVM是为Java字节码定义的一种独立于具体平台的规格描述是Java平台独立性的基础。Java跨平台的原理Java跨平台的原理Java程序执行与CC程序执行的对比分析如果把Java源程序想象成我们的C源程序Java源程序编译后生成的字节码就相当于C源程序编译后的x的机器码(二进制程序文件)JVM虚拟机相当于x计算机系统Java解释器相当于xCPU。在xCPU上运行的是机器码在Java解释器上运行的是Java字节码。Java解释器相当于运行Java字节码的“CPU”但该“CPU”不是通过硬件实现的而是用软件实现的。Java解释器实际上就是特定的平台下的一个应用程序。只要实现了特定平台下的解释器程序Java字节码就能通过解释器程序在该平台下运行这是Java跨平台的根本。当前并不是在所有的平台下都有相应Java解释器程序这也是Java并不能在所有的平台下都能运行的原因它只能在已实现了Java解释器程序的平台下运行。*

职业精品

热点搜索换一换

用户评论

0/200
    暂无评论

精彩专题

上传我的资料

热门资料

资料评价:

/68
1下载券 下载 加入VIP, 送下载券

意见
反馈

返回
顶部