从基础开始:Qomo OpenProject中的一些关键词

================================================================================
Qomolangma penProject v0.9


类别    :Rich Web Client
关键词  :JS OOP,JS Framwork, Rich Web Client,RIA,Web Component,
          DOM,DTHML,CSS,JavaScript,JScript

项目发起:aimingoo (aim@263.net)
项目团队:aimingoo, leon(
pfzhou@gmail.com)
有贡献者:JingYu(
zjy@cnpack.org)
================================================================================


六、Qomo OpenProject中的一些关键词
~~~~~~~~~~~~~~~~~~

1. JScript与JavaScript
--------
JavaScript是最早由网景公司在它的浏览器产品Netscape Navigator 2.0提出并实现的脚本
语言。原名LiveScript。它最初出现的目的是给页面元素提供交互的能力,例如检查<FORM>表单
中的输入值的有效性,并在必要时弹出一个提示对话框。

JavaScript只是借用了当时开始红火的Java语言的名字,却实在与Sun的Java语言没什么关系。
后来Microsoft在自己的Internet Explorer(IE)浏览器中发展自己的脚本引擎的时候,不得已
地实现了当时已经成为事实标准的JavaScript脚本语言。事实上,如果不是Netscape的推动,
可能现在只能在IE里面使用VBScript。

后来,Netscape公司将JavaScript提交给ECMA制定为标准,称之为ECMAScript,编号ECMA-262。
目前最新版为ECMA-262 3th Edition,通常简称为ECMAv3。

但Microsoft并不满足于模仿或者重现Netscape的JavaScript,于是IE的开发团队扩展了Java
Script的语法和语言特性,并由此形成了JScript。随着IE在浏览器市场上的成功,JScript已
经成为JavaScript语言的事实标准,这也使得ECMAScript v3及以后的标准订制受到一定程度
的影响。

在IE中,尽管允许指定<SCRIPT>标签的Language属性来强制编译器解释时的语法检测,但IE默
认语言却总是JScript的(当前浏览器所支持的)最新版本。

下表给出JavaScript、JScript中的一个对照。更详细的资料可以查阅《JScript语言手册》。


(表一) JavaScript 与 JScript各版本对照
----------------------------------------------------------------------------------
Ver.  for NN      JScript  for IE/IIS in OS           JavaScript的主要特性
----------------------------------------------------------------------------------
1.0   2.0         1.0      IE3早期版本
1.1   3.0         2.0      IE3后期版本(WinNT4)        引入Array对象,消除大量错误
1.2   4.0-4.05                                        引入Switch语句、RegExp等
1.3   4.06-4.7x   3.0      IE 4.0,IIS 4.0,JSH 1.0   修正一些不兼容性,符合ECMAv1
                  5.0      IE 5.0(Win98 SE,WinMe)    (*JScript开始部分实现ECMAv3)
                  5.1      IE 5.01(Win2k)
                  5.5      IE 5.5(WinMe)
                  5.6      IE 6.0
1.4   (服务器端)  (未实现)
1.5   6.0         (未实现)                            引入了异常处理,符合ECMAv3
----------------------------------------------------------------------------------

(表二) ECMAScript 各版本及其实现
----------------------------------------------------------------------------------
Ver.     JavaScript    JScript     说明
----------------------------------------------------------------------------------
ECMAv1   1.1           1.0, 2.0    ECMA-262 v1 基于 JavaScript 1.1.
         1.2                       JavaScript 1.2发布时, ECMA-262 v1 时仍未能完成。
         1.3, 1.4      3.0         完整实现ECMA-262 v1
ECMAv2                             ECMA v1的维护版本,只添加了说明性描述。
ECMAv3   (x)           5.0         部分实现ECMA-262 v3
         1.5           5.5         完整实现ECMA-262 v3
         (x)           5.6         在客户端与JScript5.5没有区别。
----------------------------------------------------------------------------------


2. 面向对象
--------
(注:以下描述为非学术资料的)

对象是一种数据结构。它封装了所描述事物的属性和行为信息,并且通过继承来描述了事物
在现实(或执行环境中)的衍生关系。继承的另一层作用,是强化了信息的重用并为执行期逻
辑提供了多态的特性。

综上所述,一个面向对象的语言环境应当:
  1). 实现一个特定的“对象”这种数据结构
  2). 实现对象的继承性
  3). 在对象中实现信息的封装性
  4). 在编译器一级理解多态机制,并提供运行期的多态特性

对于对象的上述特性,标准的学术资料总结为:继承性、封装性和多态性。

此外,在强类型的语言环境(例如编译性语言)中,通常会在对象的基础上实现“类类型”。
在这种情况下,“类”是类型描述(type),而“对象”是变量声明(var)。更面向机器一层
的叙述是,“类”用于声明数据结构的布局;而“对象”则是在内存中按这种布局分配的
数据块(实例)。

一些强类型的语言会提供“类类型”来描述一个类的引用。这种情况下,“类”会具有在
内存中的一个描述结构(struct)。这也意味着“只有提供运行期信息(RTTI)的语言”才能
提供“类类型”这种语言特性。

与面向对象相关的一些概念包括:
  - 属性(property)
  - 特性(attribute)
  - 读写器(getter/setter)
  - 方法(method)
  - 虚方法(virtual method)
  - 动态方法(dynamic method)
  - 纯虚方法/抽象方法(abstract method)
  - 事件(event)
  - 多投事件(mutilcast event)

这些概念的具体含义请查阅相关资料。在Qomo OpenProject对OOP Core的实现过程中,将
经常性地提及这些概念。你也会清晰的看到:如何来实现完整的OOP的各种语言特性。


3. 面向对象与基于对象的语言
--------
一种提供了“对象”这种数据结构的语言,如果它不能完全实现面向对象的三种基本特
性“继承、封装和多态”的语言,就被认为是“基于对象的语言”。相应的,完整实现
了这三种特性的,被称为是“面向对象的语言”。

JavaScript是一种基于对象的语言,我们通常说它具有“不完整的OOP特性”。Qomo
OpenProject将在原生的JavaScript的基础上,实现更多的OOP特性,使得JavaScript
能够方便地描述更庞大的框架,以及开发更复杂的Rich Web Client / Application.

Qomo OpenProject对将从Delphi和C#中借用很多的OOP特性和语法特性。因此,如果你
需要深入了解QomoJS中OOP Core的实现技术,那么你可能需要了解一些Delphi或C#的基
础知识。

如果你只需要将 Qomo 应用在你的系统中,那么你只需要记住一些语法、规则,并仔细
阅读示例代码就可以了。^.^


4. 面向对象的开发架构
--------
开发架构的描述,与语言本身的语法描述是两回事的。QomoJS中OOP Core中只在语法
层面实现更多的OOP特性和支持能力。但OOP Core本身并不描述架构。

在.NET中,底层的.NET Framework是一个开发架构,而FCL(Framework Component Library)
则是一个组件库,这一点与Delphi的VCL(Visual Component Library)具有同一层次上的
含义。

但“架构”本身并不存在层次上的限制。也就说是说,可以有RTL这个层级上的Framework,
也可以有Class Library这个层级上的Framework,同样,也可以有“组件库”这个层级上
的架构。再往上,你可以发现“插件架构”,或“模块调度的架构”,更或者是象Ajax这
样一些被称为架构的东西。

所以在如果我们对FCL在组件库上的封装模式进行理解,那么也可以分析并得到它的架构
模式。——在《Inside VCL (深入核心-VCL架构剖析)》一书中,李维就从这个角度分析
了VCL的组件架构。

QomoJS底层的丰富的OOP特性的支持,使得它有能力去描述和实现各种底层架构、组件
架构和更加高(或低)层次的架构设计。在Qomo OpenProject中,我们将主要实现一个 Visual
Component架构,并在上面发展Delphi VCL / .NET FCL的一个子集。

此外,我们还会在底层架构上提供Template编程的支持,以及SOA的支持。这些属于底层架
构的范畴,有时候他们也被作为语言特性来理解。——当然,这取决于你的视角。

在Qomo OpenProject中非常轻松地实现一个Ajax的架构。不但如此,你还可以看到Qomo
OpenProject用更加快捷的手段集成了Atlas(Microsoft's Ajax toolkit),以及ActiveUI's Template框架。随后还会有一个SOA框架被整合进来。

这些框架及其实现,都可以在Qomo OpenProject中跑得很好。如果你希望将Qomo用于语言的研究
而不是应用开发的话,你可以按照类此的方法一层层地实现下去。

直到有一天,你发现一行代码就可以完成你所想的全部工作,而一台256位CPU的机器也跑
不动这行程序的时候,我想你会反省:B端开发应当是一个轻量级的架构。

转载于:https://www.cnblogs.com/encounter/archive/2005/12/30/2188730.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TabHost两种实现方式

第一种&#xff1a;继承TabActivity&#xff0c;从TabActivity中用getTabHost()方法获取TabHost。只要定义具体Tab内容布局就行了. <?xml version"1.0" encoding"utf-8"?> <FrameLayout xmlns:android"http://schemas.android.com/apk/re…

php正则过滤html标签_空格_换行符的代码,PHP 正则过滤 html 标签、空格、换行符的代码 (文章格式化)...

$strpreg_replace("/\s/", " ", $str); //过滤多余回车$strpreg_replace("/$strpreg_replace("//si","",$str); //注释$strpreg_replace("//si","",$str); //过滤DOCTYPE$strpreg_replace("//si",…

一文让你掌握单元测试的Mock、Stub和Fake

单元测试中有几个神秘的概念&#xff0c;它们就是Mock&#xff0c;模拟对象&#xff1b;Stub&#xff0c;存根&#xff1b;Fake&#xff0c;伪对象&#xff0c;它们听起来很类似&#xff0c;也很容易混淆&#xff0c;让我们通过这篇文章揭开它们神秘的面纱&#xff0c;探索其幽…

有些人还活着,被你一按就死了。。 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;视频源网络&#xff0c;侵权删&#xff09;学到了吗&#xff1f;↓ ↓ ↓

java 反射 本类,关于Java反射中基本类型的class有关问题

关于Java反射中基本类型的class问题1. 基本类型的class和其对应包装类的class是不同的&#xff0c;所以在获得Method指定参数的时候&#xff0c;需要精确指定参数的类型&#xff0c;即 setInt(int x) 无法使用 getMethod("setInt",Integer.class) 获得。2. 基本类型的…

Jafka源码粗略解读之二--关于JMX

2019独角兽企业重金招聘Python工程师标准>>> JMX Jafka里用到了JMX&#xff0c;之前也没用过&#xff0c;迅速突击了一下&#xff0c;感觉还是挺简单的&#xff1a; 有一篇文章用一个例子介绍JMX怎么使用的&#xff0c;简洁明了&#xff1a;http://www.javalobby.or…

参数化的RBAC模型

1 动机 基于角色的访问控制(RBAC)模型被普遍认为是一种有效的访问控制模型&#xff0c;它比传统的自主访问控制(DAC)和强制访问控制(MAC)具有更高的灵活性和更好的扩展性。 在实际应用中&#xff0c;随着企业规模以及信息系统规模逐渐扩大&#xff0c;系统中角色的数目也随之急…

使用 ML.NET 进行保险价格预测

此前通过多篇文章已充分介绍过&#xff0c;ML.NET是一个开源的跨平台机器学习框架&#xff0c;特别适合 .NET 开发人员。它允许将机器学习集成到 .NET 应用中&#xff0c;而无需离开 .NET 生态系统&#xff0c;甚至拥有 ML 或数据科学背景。ML.NET 现有的各种内置模型训练器可用…

送礼物给女生,她哭了是怎么回事?

全世界只有3.14 % 的人关注了青少年数学之旅中秋节快要到了&#xff0c;超模君说要给我准备个惊喜&#xff0c;what&#xff1f;结果我在桌面上发现了一个盒子和一大堆 垃圾 零件&#xff0c;清洁阿姨你在哪&#xff1f;我需要你。不过仔细一看&#xff0c;我去&#xff1f;&am…

oracle+11g+rda,Oracle RDA 4.20 初体验

RDA 全名RemoteDiagnostic Agent&#xff0c;是Oracle用来收集、分析数据库的工具&#xff0c;但统计信息远远大于只是数据库的&#xff0c;也可以说是现在一个Oracle dba 角色需要掌握的Oracle DB SERVER的信息&#xff0c;包含数据库安装、配置、性能、备份等信息、操作系统各…

室内设计品牌网站搭建的作用是什么

随着人们生活质量日益提升&#xff0c;对其自身的居住环境也有了较高要求&#xff0c;每个人审美不一样&#xff0c;无论自己居住的房屋还是公司办公/商场等场景都需要设计不同的内容&#xff0c;还有各种设施的摆放及类别等都有讲究&#xff0c;尤其对公司及商场等环境&#x…

面向.NET开发人员的Dapr- actors 构建块

原文地址&#xff1a;https://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/actors The actor model originated in 1973. It was proposed by Carl Hewitt as a conceptual model of concurrent computation, a form of computing in which several…

史上最严重的忘拿钥匙事件 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;视频源网络&#xff0c;侵权删&#xff09;难搞噢↓ ↓ ↓

magicAjax问题

如果web.config是requestEncoding"gb2312" responseEncoding"gb2312" 这样使用起来就会卡在loading...那里大家遇到过吗&#xff1f; 但是如果改成requestEncoding"utf-8" &#xff0c;那在搜索里面就不能搜索中文了&#xff0c;汗&#xff5e;…

oracle经常开关好吗,频繁开关机对电脑有什么影响吗?

2005-08-03 08:01:45没关系的哦&#xff0c;一天五六次正常&#xff0c;只要是正常开关机就OK。全部2005-08-03 08:01:452005-08-03 07:49:392005-08-03 05:21:09影响不大完全在合理范围内,等到坏的时候也应该淘汰了全部2005-08-03 05:21:092005-08-03 04:09:04原则上经常性的开…

老是担心数学学不好?这些基础是时候正视了!

我们都知道&#xff0c;数学是学生生涯的一门重要学科&#xff0c;与其担心三年级掉队&#xff0c;不如从小培养良好的学习兴趣和数感直觉&#xff0c;之后的学习就是水到渠成的事了&#xff0c;这可不是报个奥数班就万事大吉了&#xff0c;最关键的&#xff0c;还得从培养孩子…

在 .NET 应用中使用 ANTLR

什么是 ANTLR &#xff1f;ANTLR 是功能强大的解析器生成器&#xff0c;用于读取&#xff0c;处理&#xff0c;执行或翻译结构化文本或二进制文件。它被广泛用于构建语言&#xff0c;工具和框架。ANTLR从语法中生成一个解析器&#xff0c;该解析器可以构建和遍历解析树。ANTLR …

GDB调试程序实例演示

GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许&#xff0c;各位比较喜欢那种图形界面方式的&#xff0c;像VC、BCB等IDE的调试&#xff0c;但如果你是在UNIX平台下做软件&#xff0c;你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功…

ASP.NET程序中常用的三十三种代码(二)

21.读取DataGrid控件TextBox值 foreach(DataGrid dgi in yourDataGrid.Items){ TextBox tb (TextBox)dgi.FindControl("yourTextBoxId"); tb.Text....} 23.在DataGrid中有3个模板列包含Textbox分别为 DG_ShuLiang (数量) DG_DanJian(单价) DG_JinE(金额)分别在5.6…

oracle crontab e,Linux运维知识之通过crontab -e编辑生成的定时任务,写在哪个文件中...

本文主要向大家介绍了Linux运维知识之通过crontab -e编辑生成的定时任务&#xff0c;写在哪个文件中&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习Linux运维知识有所帮助。环境描述&#xff1a;操作系统&#xff1a;Red Hat Enterprise Linux Server releas…