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

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,可以从他们的 网站上阅读更多的信息。

你可能感兴趣的:(AOM 2.0 M2版本融入IoVC编程思想和Elite语言)