OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

AOM 2.0 M2 版本融入 IoVC 编程思想和 Elite 语言

  • 2008-04-02
  • 本文字数:2837 字

    阅读完需:约 9 分钟

Apusic OperaMasks (简称 AOM)是由 OperaMasks.org 组织(由金蝶中间件公司创建的一个独立的非盈利性法人实体)所提供的开箱即用的 Web Framework,它以 JSF 为基础引擎,辅以独创的原生 Ajax 技术,同时提供丰富的组件和集成开发环境,使 Web 开发变得简单方便。其网站上是这样描述 AOM 的:

无论是后台的事务、存储、分布式计算等基础服务,还是前端的 UI 展现与用户交互,以及后台与前端的会话过程,Apusic OperaMasks 都提供了完整的解决方案,有效解决 Web 开发所面临的问题:- 开箱即用:使用 Apusic OperaMasks 进行 Web 开发,开发人员只需掌握基础的 J2EE 知识!

  • 引擎:提供标准的 JSF 引擎,JSF 是已经得到业界认同的一种主流组件技术,能够很容易适应各种未来需求的变化,其精髓就是“与表现层无关的表现层技术”;
  • 原生 Ajax 支持:从容器级别对 Ajax 予以支持,对 Apusic OperaMasks 用户来说,要使应用具备 Ajax 特性,付出的成本是零;
  • Rich Component:Apusic OperaMasks 提供给用户丰富的 Rich Components,用户可以用各种组件来组织数据、展现数据、编辑数据;
  • 开发工具:提供开发工具 Apusic Studio 的支持,“所见即所得”的可视化设计,一体化的开发、配置、部署、调试、监控的集成开发环境;
  • 跨浏览器支持:Apusic OperaMasks 完全兼容业界主流浏览器,如 IE、Firefox 等;
  • 开源社区:所有源码甚至是开发过程自身,全部通过 OperaMasks.org 开放,代表了 J2EE 社区开放和敏捷的力量!

3 月 28 日 AOM 发布了 2.0 M2 版本,InfoQ 中文站在 29 日 CSDN 举办的软件技术英雄会期间与其技术总监张勇进行了交流,并就 AOM 的现状及未来发展对他进行了采访。

AOM 所要解决的问题是什么?> 如果将网站基于 BS 架构的分成两类,第一类是以信息浏览为主要的,比如搜狐、新浪这样的,我们称之为 Web Site;第二类是以 BS 架构为载体,但所承载的是一种应用,强调的是客户和系统之间的高交互性,他有非常复杂的操作和流程逻辑,我们将这种应用称为 Web Application。而 AOM 就是适合做 Web Applicationd 的一种工具。

为什么 AOM 要选择 JSF 作为基础框架?> 这是一个机缘巧合的问题,之所以选择 JSF,这是由金蝶当初的定位决定的。作为一家 J2EE 服务器提供厂商,在通过了 Java EE 5.0 认证之后,那么金蝶就需要有 JSF 的实现,因为 JSF 已经是 Java EE 5.0 的一部分。在做 JSF 的时候,我们认识到 JSF 的优雅之处,但是也感觉到其过于理想化和不现实的地方,这也是那些批评 JSF 的人所引以为诟病的地方。JSF 是一个服务器端编程模型,而 AJAX 是客户端的,后来袁红岗创造性地用 Render Kit 将 JSF 和 AJAX 结合起来,应用在 AOM 中。其实 AJAX 并没有什么什么创新之处,开发人员在做 AJAX 应用的时候还是要写大量的 JS 代码。而 AOM 解决了这个问题,通过 JSF 的 Render 将 AJAX 进行封装,对开发人员透明,从而只需要关注业务逻辑。这也是 J2EE Without AJAX 这个口号的由来。现在通过 AOM,你可以做到应用基于 JSF,但同时具备 AJAX 特性。

为什么 JSF 没有形成主流?> 第一 JSF 规范没有得到业界的接受。因为在规范的制定上,JSF 是基于 HTTP 的,一个很简单的 Hello World 示例,都需要传递几十 K 的字节,而我们一个普通的 Hello World 应用几 K 就可以了。这一点导致了 JSF 没有迅速成为主流。第二是 Java 世界已经有了很多可以解决类似问题的框架。

AOM 如何克服 JSF 的弊端?为什么 AOM 并没有被更多人所接纳?金蝶在 AOM 方面有没有可以分享的案例?> 我们对规范的细节做了改进。在状态方面我们花了很大的力气来消除状态。在 JSF 规范里面状态是有 6 步的,而 AOM 里面又多加了一步 Build Tree。在生命周期这一部分做了动作。现在这个数据的传输量就比较小。虽然现在我们在 JSF 之上做了很多的扩充,但基本没有违背 JSF 这个规范。至于日后 AOM 是否要脱离 JSF,发展成一个独立的解决方案,还是继续遵循 JSF,我们在考虑,但还没有做最终的决定。我们希望其他更多的个人和企业参与到这个决定中来。

至于 AOM 为什么目前没有被更多人所接纳,我认为有两个因素,第一个因素是推广力度不够;第二是国人对国人自己的民族软件还缺乏信任。

在网上我们已经放了一些关于使用 AOM 的案例;金蝶规划的下一代 ERP 产品会考虑基于 JSF 来设计。

为什么 AOM 是开源的框架,但是却只放在自己的网站上,而没有放在大家更为常用的国际性的网站,如 SourceForge 上等?AOM 采取的是什么开源协议?> 之所以放在自己的网站上是因为当时考虑到在国内访问 SourceForge 等这样的网站速度很慢,而且稳定性也不是特别好。而我们自己的网络环境比较好,另外大部分开发人员是金蝶自己的员工。其实 AOM 的 CVS 是对外公开的,我们很希望有更多的人能够参与进来,而不是成为金蝶一家公司的事情。而且,我们也没有提供比较好的英文文档,因为我们的团队里面绝大部分人员都是中国人,虽然有一些海归人士,但是使用的语言还是中文,这是我们比较欠缺的地方。另外因为开发上的压力比较大,所以在文档化方面做的并不理想。即使我们将 AOM 国际化了,我在也没有能力在国际上去推广。我们计划在 08 年 7 月份正式走向国际化,有可能会任命一个国际化产品经理。

AOM 现在采用的是 LGPL 。从前是 GPL,但因为有很多厂商不习惯用这个协议,即自己在 AOM 之上做了开发要必须将自己的源代码再次公开,限制比较多。所以现在改用 LGPL 了。

AOM 下一步打算做哪些事情?> 最近我们发布了一个里程碑式的版本,也就是 AOM 2.0M2,包含以下新的特点: 1. 组件更加丰富。不仅有 Tree、Table 等这些常用的组件,还有各种各样的布局组件。要知道在 HTML 里面写布局是非常麻烦的,Table、DIV 等嵌来嵌去,很罗嗦,通过我们提供的布局组件可以很好地解决这些问题。

  1. AOM 2.0 里面融入了我们新的编程思想—— IoVC (Inversion of View-Control,即“视图控制反转”,换言之:它能够把对“View【即 UI 视图】的控制力”注入到你的后台业务逻辑中。这样一来,你在编写业务逻辑的过程中,对 View 拥有足够的控制力,从而能够将展现层与业务逻辑完全的解耦),这是我们想着重强调的。通过这个编程思想,能够让你的整个系统可维护性和可扩展性得到显著增强。
  2. 然后就是和 Elite 这个语言的结合,这是一个集命令式和函数式风格为一身的面向对象的程序设计语言,既有高阶函数(first-class functions)、列表推导(list-comprehension)、模式匹配(pattern-matching)、延时求值(lazy-evaluation)等函数式语言所具有的语言特征,又具有和 Java 相近的语法结构。
  3. 最后就是对 AOM 2.0 从前的一些不足之处做得修正。

另外,AOM 2.0M2 中包含了一个 Apusic Studio 5.1 M5,它是一个 All In One 的版本。由于 2.0 里面包括了很多创新性的地方,目前我们不会在上面再做创新,而是要将 2.0 稳定下来。我们现在在规划 3.0,比如是否要往 Web Site 方面努力,以及是否要让 ELite 和 AOM 有更好的结合等。

如果想进一步了解 Apusic OperaMasks,可以从他们的网站上阅读更多的信息。

2008-04-02 19:511049
用户头像

发布了 150 篇内容, 共 43.3 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

一文说尽 Linux 系统的 swap 交换空间

看山

Linux 6月日更

应对全场景AI框架部署挑战,MindSpore“四招”让你躺平

华为云开发者联盟

深度学习 AI mindspore 算子 ai框架

欧洲杯发布首座区块链奖杯:中国设计师创作,灵感来源小篆

CECBC

【21-3】PowerShell 环境

耳东@Erdong

PowerShell Windows Server 6月日更

MySQL 亿级数据分页的优化

xcbeyond

MySQL 数据库优化 6月日更

智慧组工系统搭建,组织部干部任免系统

算法训练营 - 学习笔记 - 第九周

心在飞

平阴玫瑰×浪潮云洲:见证一朵玫瑰的绽放

浪潮云

云计算

【Vue2.x 源码学习】第十篇 - 数组数据变化的观测情况

Brave

源码 vue2 6月日更

开发感想 初学51单片机建议用C语言

万里无云万里天

开发感想 8051

5000字 | 详解 Java 中的 21 种锁

悟空聊架构

Java 读写锁 锁升级 6月日更

区块链如何赋能数字城市建设?

CECBC

读深入ES6记[四]

蛋先生DX

ES6 6月日更

缓存与数据库的双写一致性

leonsh

MySQL redis 缓存

Pandas之:深入理解Pandas的数据结构

程序那些事

Python 数据分析 pandas 程序那些事

跨域背后的故事(一)-----同源策略

卢卡多多

浏览器 同源策略 6月日更

时代变了,程序员の老冤家IE浏览器离场啦?!

空城机

JavaScript 微软 大前端 IE 6月日更

☕【JVM技术探索】Class字节码指令方法调用初探

洛神灬殇

Java JVM 6月日更 字节码指令

Kubernetes手记(7)- 控制器配置清单

雪雷

k8s 6月日更

Fork原项目新增分支的同步和推送

Skysper

git

5分钟速读之Rust权威指南(二十)

wzx

rust

Alibaba大佬用了3个月,把Java后端95%的技术体系都整理出来了!

Java架构师迁哥

关于 JavaScript 是否加分号的问题

KooFE

6月日更

如何在手机上保护自己的隐私?

石云升

隐私保护 数据安全 6月日更

绿色数据时代,全闪存与数据中心的注定邂逅

脑极体

你真的很忙么?

escray

学习 极客时间 朱赟的技术管理课 6月日更

常见词向量模型

Qien Z.

6月日更 词向量 SkipGram 矩阵分解 Glove

react源码解析11.生命周期调用顺序

全栈潇晨

react.js

MySQL基础之八:外连接

打工人!

myslq 6月日更

百度创新发布“炫瞳活体”技术!起底金融级人脸实名认证方案背后的硬实力

百度大脑

人工智能

☕️【Java技术之旅】带你实战使用String的功能特性

洛神灬殇

Java string 字符串 6月日更

AOM 2.0 M2版本融入IoVC编程思想和Elite语言_Java_宋玮_InfoQ精选文章