================================================================================
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

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

  1. 关于Qomo OpenProject的进度(2006.01.04)

    目前项目仍在初起阶段.许多事情是我一个人来做的,因此时间上实在不够用. 我目前的主要工作是撰写项目的相关文档和整理项目中的可公开代码.我需要从原有的WEUI项目中剥离出一些非商业的代码出来.--尽管这 ...

  2. Qomo OpenProject beta1 发布!

    Qomo离上一次发布FT4已经过去整整一个月了.这一段时间中,因为我个人的缘故,未能组织好Qomo的团队,导致UI组和DB组未能正常展开工作.因此截止beta 1发布,以上两个组仍未能释出代码. 一个 ...

  3. Qomo OpenProject Field Test 1发布!

    我终于从原公司得到有关公司WEUI项目相关内容的充分授权了.因此从今天开始我将陆续整理.公开Qomo的代码.--而不再是象原来那样"只能公开技术文档". Qomo项目的绝大多数代码 ...

  4. Qomo OpenProject Field Test 3发布!

    Qomo 项目的Field Test 3在团队的努力下终于发布了. 事实上,仅这个发布包中的代码,完成于--大概一周之前.但是我一直没有时间完成技术介绍方面的文档,所以就一直没有发布.很抱歉. FT3 ...

  5. Qomo OpenProject Field Test 4发布!

    Qomo 项目的Field Test 4将是这个项目的一个重要的里程碑! Qomo的FT4终于公开了对OOP提供支持的Object.js,以及大量相关的示例.这包括: ----------   - R ...

  6. Qomo OpenProject Field Test 2发布!

    Field Test 2发布中,包含一个命名空间和别名子系统的实现代码,以及一篇技术文档. 包括: /Framework/Names/* /Framework/DOCUMENTs/TestCase/T ...

  7. SAP SD基础知识之订单中装运相关的功能 II

    SAP SD基础知识之订单中装运相关的功能 II 一,计划Scheduling 当业务人员创建一张订单时,系统能够决定基于客户要求的delivery date的物料可用日期:需要交货的货物必须在该时点 ...

  8. SAP SD基础知识之订单中装运相关的功能 I

    SAP SD基础知识之订单中装运相关的功能 I 一,装运点决定Shipping Point Determination 每个订单行项目都会决定一个shipping point:系统会自动带出一个shi ...

  9. SAP SD基础知识之交货中的控制元素

    SAP SD基础知识之交货中的控制元素 一,交货类型Delivery Type Delivery type控制整个的交货,我们可以在delivery header中看到delivery type: D ...

最新文章

  1. 学了那么久的计算机视觉,竟然还不懂YOLO?!
  2. 「模型解读」“不正经”的卷积神经网络
  3. CO-类的本质、description方法
  4. 批量下载ABAP程序和表结构
  5. java中的五种排序方法_用Java排序的五种有用方法
  6. Spark2.3.1在Idea控制台调整日志等级
  7. C#中i=i++值不变的一个解释
  8. Linux下安装Nginx与配置
  9. 【预测模型-ELAMN预测】基于海鸥算法优化ELMAN神经网络实现数据回归预测
  10. CVE-2019-0708 微软补丁更新
  11. 《虚幻4 VR开发指南》视频教程
  12. 智能数据中心和智慧园区:华为的单点突破与全局效应
  13. streaming计算机技术,HTTP Live Streaming伪直播的设计与实现
  14. SpringBoot整合Docker实现一次构建到处运行
  15. 大兴机场临空区爆出大规划!
  16. Pycharm远程服务器无法显示图片
  17. 树莓派接手机屏幕_如何将树莓派连接到手机屏幕
  18. 测试基础---软件开发生命周期
  19. 图像拼接(一):柱面投影+模板匹配+渐入渐出融合
  20. 中国顶级门户网站架构分析1

热门文章

  1. 数据库系备份相关知识笔记
  2. 电脑计算机网络由基础到深入常用知识集锦!
  3. CSS实现垂直居中的5种方法
  4. 【收集】13款Linux系统有
  5. 两个不同网段的局域网如何互通_不同网段之间如何通信?
  6. R语言seqm_R语言seq()函数用法
  7. 保持危机感和紧迫感_什么是紧迫的:您需要知道的一切
  8. 整整4个月了,尽全力组织了源码共读活动~
  9. 常见的8个前端防御性编程方案
  10. opencv python 图像缩放/图像平移/图像旋转/仿射变换/透视变换