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