研究生课程程序语言设计原理教程第15章课件

上传人:bin****86 文档编号:54722012 上传时间:2018-09-18 格式:PPT 页数:53 大小:191KB
返回 下载 相关 举报
研究生课程程序语言设计原理教程第15章课件_第1页
第1页 / 共53页
研究生课程程序语言设计原理教程第15章课件_第2页
第2页 / 共53页
研究生课程程序语言设计原理教程第15章课件_第3页
第3页 / 共53页
研究生课程程序语言设计原理教程第15章课件_第4页
第4页 / 共53页
研究生课程程序语言设计原理教程第15章课件_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《研究生课程程序语言设计原理教程第15章课件》由会员分享,可在线阅读,更多相关《研究生课程程序语言设计原理教程第15章课件(53页珍藏版)》请在金锄头文库上搜索。

1、第15章 平台无关语言,使用平台无关语言的需求 脚本语言 Java语言,15.1 使用平台无关语言的需求,高级程序设计语言本应是平台无关的 在高级语言中,数据、控制流等都是抽象的。 源程序经过编译生成的目标码是与本地机紧密相关的。表现在: 基本类型定义与及其字长相关; 各机指令集不一,操作效果相当,实现过程有微小的差别; 同一语言在相同编译和执行环境下,同一程序执行速度不一(硬件差异,优化次数); 已采用增加可移植手段。 设预定义环境(包)Ada; 分出头文件 - 宏 - 编译文件C;,单主机时代,需要解决的主要问题是高级语言程序可移植性,以减少应用程序的开发费用,缩短开发周期。这时对平台无关

2、性的要求不是十分迫切。,局域网时代,需要在局域网内实现信息共享,有协作计算需求。 网络协议栈实现了数据的平台无关; 以文件共享形式实现; 客户/服务器模式,程序可以不共享; 只要局域网内使用相同或相互兼容的平台,也可以实现程序的共享。,Internet时代,对资源共享提出了新的要求: 局域网的规模和结构是可控制的;但是,没有任何个人和机构可以控制Internet的构成。 Internet/Intranet包含各种类型计算机,是资源共享的平台。不论用户使用的是什么类型的计算机和操作系统,都可以浏览网络上的信息,使用网络中的资源。 WWW(World Wide Web)是Internet上最广泛的

3、信息发布/浏览方式。与FTP等以往的方式相比较,WWW具有较强的动态性和交互性,需要完成复杂的应用(如电子商务等)因此,共享资源不但包括数据,也应包括程序。这就需要一种平台无关的语言。 激烈的竞争迫使软件生产者不断降低开发成本,缩短开发周期。平台无关语言使开发者不需要为一个软件开发多个操作系统的版本,减少了开发费用和时间。,平台无关语言的实现: 传送源代码 将源代码传送到目标机,先经过编译,生成目标机代码,再执行。前提是必须有不同平台的编译器,这种情况往往在编译时缺乏源代码原有的环境信息(全程量),且只能先编译存入目标码再运行。局域网时代服务器已经做过了。要实时运行只能是解释(也要求有完整的信

4、息)型语言。 传送目标代码 只有在相同或相互兼容的平台之间才可以实现。如在Windows NT/9x组成的局域网中,可以在一台机器上调用执行其它机器上的应用程序。 传送中间代码 中间代码由源代码经过编译生成。中间代码经过优化。中间代码传送到目标机上由解释器解释执行。Java语言使用的是这种方式。,15.2 脚本语言,脚本语言的概述: 描述性语言(4GL); 直接解释执行; 操作系统界面语言的扩大泛shell; 辅助开发(不是设计,但引用内部过程、函数、对象);,常见的脚本语言有: 页面描述类:TELEX、Postscript、HTML、VPML; 场景描述类:JavaScript、VBScri

5、pt/ActiveX脚本、LotusScript(Lotus公司的Notes群件产品中的脚本语言),15.2.1 HTML(Hyper-Text Markup Language),用于描述Web主页,为所有OS上的浏览器所识; 设计编排多媒体主页(包括正文字体、图形、动画); 以超文本方式使用,可以链接任何网址上的各种多媒体文档,包括普通正文、HTML文档、GIF图形、TIFF图形;XBM位图、JPEG图形、Postscript文件、AIFF声音、AU声音、QuickTime影片、MPEG影片;,标签。以尖括号括出的成对或单个标签给出页面编排信息。 文档编排、引用描述:一个HTML文档文档简介

6、信息文档内容标题链接名第i层编排此前为一段由此换行产生一个视窗宽度的水平分行符,字符格式 逻辑描述:已定义单词重点词书或电影主题一段源代码由此键入状态信息特别强调 物理描述:此处黑体此处斜体此处打字机体,内联图形其它标签 列表:表项表项 (无号) (有号) 表项测试此表表项 (定义表) 预定义格式正文:此段文本格式已定 作者地址: ,扩展引用: 嵌入Java:嵌入其它描述语言: ,15.2.2 JavaScript语言,HTML语言是静态的,动态性和交互性不强。于是,Netscape公司开发了JavaScript(与之对应是Microsoft公司的VBScript),扩充HTML文档的功能。

7、Javascript嵌入在HTML文本中,由浏览器解释执行。,以下是一个HTML文本中嵌入JavaScript的例子:function welcome()var s = “Hello world!”;document.write(s); /document是HTML文档对象 /函数的定义 welcome() / 函数的调用,这个例子将在浏览器中显示“ Hello world!”字符串。 “document”是HTML文档对象,使用它的write方法可以在文档中写入文本。,JavaScript有以下特点: 与C、Java相似的语法,如常规的变量、表达式、函数和控制语句等。 弱类型。有数字、布尔、

8、字符串和空值类型。变量的确切类型取决于所赋给它数据的类型。 基于对象。把浏览器和HTML文档中的元素看作对象,对象有各自的属性。例如,浏览器对象是已被预定义的Navigator;HTML页面是document对象。程序员可以使用的对象及其属性是已经被浏览器定义和生成的,不能定义新的类和对象。因此,是基于对象而不是面向对象的。 事件驱动。定义了一组系统、鼠标事件。可以通过事件激活定义好的函数。 在客户端使用的小语言,一个统计HTML文档中超链接个数的程序:for(var i=0; i“);document.write(“There are “+document.links.length+“ li

9、nks.“);其中,document是整个HTML页面对象;links是document对象中的超链接对象数组,length、href又是links的属性,分别表示链接的数目、链接的内容,该HTML在浏览器中的显示如下图所示:,15.3 Java语言 15.3.1 Java是C+的网络应用的扩充和改造,保留了高级语言的主要机制 与C+基本相同的字符集、标识符、关键字、运算符、特殊符号 比C+更加强化类型。增加了布尔类型,只保留数组类型;使用真正的类型转换(C+中的类型转换是“伪”的,目的是为了通过编译器的检查;Java中的类型转换在运行时真正发生,如果不能转换,系统会抛出异常) 保留声明、作用

10、域、变量、表达式、语句、三种结构化控制; 保留并增强C+的异常;,与C+相似的面向对象机制:类作为特殊类型、构造函数、初始化序列、实例变量、this/super、方法的覆盖与重载、成员可见性。取消了C+不利于网络应用的机制: 指针。以对象引用代替指针; 取消头文件和预处理器(宏与机器相关); C+中原有冗余:struct、union都被类代替; 不支持模板,动态束定功能可实现; 取消typedef; 不支持运算符重载;,15.3.2 平台无关性的解决,编译解释执行。Java语言实现平台无关的关键是使用了“编译-解释”执行方式。Java源代码经过编译,称为Java字节代码(byte-code)。

11、Java虚拟机(VM)是字节代码的解释器。JavaVM是用软件构造的一个虚拟计算机,它由虚拟的寄存器、内存、堆栈等;字节代码就是这台虚拟计算机的指令。所有操作系统上的JavaVM执行一致的指令,这样,就屏蔽了各个平台之间的差异(如下图所示)。,Java虚拟机是平台无关性的关键,在不同的操作系统上有不同的Java虚拟机,向上有一致 的接口(虚拟机的指令字节代码),向下针对不同 的操作系统有不同的实现方式。,即时编译(JIT: Just-in-Time Compile)。使用即时编译是为了提高Java程序的执行效率,是对Java解释器的改进。即时编译在虚拟机解释执行Java字节代码时发生。当虚拟机

12、第一次调用某个方法时,不再直接解释这个方法的字节代码,而是用即时编译器将这个方法的字节代码编译成为本机目标代码,然后执行这些目标代码。即时编译不是将整个类的字节代码进行一次性编译,而是只编译正在执行的函数,“边执行,边编译”。,小程序(applet)的传递运行方式 小程序是可以在Web浏览器中执行的Java程序; Web浏览器中有一个Java虚拟机,和浏览器一起构成小程序的运行环境; 浏览器根据HTML文档中的标志,从指定的URL下载小程序的类字节码(.class文件),装入到Java虚拟机中运行; 小程序的出现提高了Web页面的交互性和动态性,使浏览器能够完成更加复杂的应用。 Java虚拟机

13、有内置的类装入机制,从文件系统或网络中下载类代码,然后在虚拟机中运行。浏览器下载运行小程序只是一个特例,这种机制可以被所有Java应用程序使用。,15.3.3 Java为应用增加的新特性,两层封装:包类 “包”是一组功能相近或联系紧密的类的集合,同一个包中的类之间有比较大的访问权限。包是一种对语言进行扩充的机制。Java的核心类库主要由以下几个包组成: java.lang - 基本类库 java.io - 读、写流,文件,管道 - 网络 java.awt - 界面、窗口,java.applet - 小程序类 java.util - 通用工具:向量表、哈希表、栈“类”与C+的基本相同。Java

14、只有单继承,类库呈树状结构,所有类都是java.lang.Object类的子类。,增加了接口(interface)的机制。 接口是一种特殊的类,在接口中只有函数的声明,而没有函数的具体定义(与C+的纯虚类相似)。接口可以继承,但不能直接由接口生成对象; 以类实现(implements)接口,即在类中定义所有接口中声明的函数。我们可以把一个接口看成某种功能的规定,实现了接口,就是实现了某种功能。类的继承和接口的实现是多态的基础。,以接口实现多态。接口将函数的声明和实现分离,允许几个类同时享有一个接口。调用者不需要了解接口的具体实现,以统一的方式使用这些类的对象。下面是一个简单的例子: inter

15、face Drawerpublic void draw(); / 定义接口 class Circular implements Drawerpublic void draw()画一个圆; / 类Circular实现了Drawer接口,class Rectangle implements Drawerpublic void draw()画一个矩形; / 类Rectangle实现了Drawer接口 class Uservoid paint(Drawer drawer)drawer.draw();,public static void main()Circular c = new Circular(

16、);Rectangle r = new Rectangle();User user = new User();user.paint(c);/ 画圆user.paint(r);/ 画方 / End of class Useruser对象的paint方法使用统一的方式调用对象c和r的draw方法,产生不同的结果。,接口实现多态示意图:,以接口实现多继承。一个类可以实现多个接口,间接实现多继承,同时不影响类的继承结构。,以synchronized控制模块的同步 Java使用监控器(Monitor)作为线程同步的机制。每一个对象都有一个监控器与之相对应。可以用synchronized关键字请求得到某个对象的监控器。在任何时刻,只能有一个线程可以拥有某个对象的监控器。如果有多个线程申请某个对象的监控器,系统会阻塞这些线程。如果监控器的使用者释放了监控器的拥有权,系统就会唤醒某个申请该监控器的阻塞线程。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号