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

阅读数:453 2008 年 4 月 2 日

话题:JavaWeb框架语言 & 开发

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 等嵌来嵌去,很罗嗦,通过我们提供的布局组件可以很好地解决这些问题。
  2. AOM 2.0 里面融入了我们新的编程思想——IoVC(Inversion of View-Control,即“视图控制反转”,换言之:它能够把对“View【即 UI 视图】的控制力”注入到你的后台业务逻辑中。这样一来,你在编写业务逻辑的过程中,对 View 拥有足够的控制力,从而能够将展现层与业务逻辑完全的解耦),这是我们想着重强调的。通过这个编程思想,能够让你的整个系统可维护性和可扩展性得到显著增强。
  3. 然后就是和Elite这个语言的结合,这是一个集命令式和函数式风格为一身的面向对象的程序设计语言,既有高阶函数(first-class functions)、列表推导(list-comprehension)、模式匹配(pattern-matching)、延时求值(lazy-evaluation)等函数式语言所具有的语言特征,又具有和 Java 相近的语法结构。
  4. 最后就是对 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,可以从他们的网站上阅读更多的信息。