BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 宋玮 关注 0 他的粉丝 发布于 2008年4月3日. 估计阅读时间: 9 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

与jboss seam的区别 by shao stone

可以请教一下AOM与jboss seam的区别?

英雄会,tnnd by 冯 尚

Apusic OperaMasks在英雄会上讲话那家伙就纯属一傻x,敲源代码敲了二十多分钟,对台下举提示牌的工作人员视若不见。就好像大家多愿意听他讲话似的。动不动就……这样我们就创建了一个User Bean,然后……

Re: 英雄会,tnnd by 冯 尚

哦,刚看了一下议程,就是被采访的那个张勇,无聊的很,无趣的很

Re: 与jboss seam的区别 by 周 全

jboss seam的RichFaces与AOM都提供了与JSF集成的Internet富客户端组件。其主要区别在:

1. AOM引入了IoVC思想,增强了服务器端对展示层的控制能力。在允许用户继续使用原有在页面写EL,由页面负责发起系统行为的编程习惯的基础上,允许用户选择通过IoVC绑定,在后台向页面绑定EL,或者发起行为。让页面可以只负责展示效果,让服务器端控制器负责页面行为,增强了聚合度。并且通过引入多个绑定标注,大大方便了编程人员,提高了开发速度。

2. AOM引入了动态语言elite。作为一个与静态类型语言Java相辅相成而又紧密结合的语言工具,elite使原本偏重的JSF框架变得更为灵活,使AOM本身可以适应由重量到轻量各种场景的需求。

3. AOM吸收了Facelet的优点,鼓励用户基于Facelet形式编写页面。并在此基础上提出了无状态视图的技术。可以最大限度地消除JSF中冗长的ViewState。提高传输效率并节省服务器资源。

4. 目前AOM暂未包括Seam所提供的工作流等高层业务功能,但支持与Seam集成使用。

Re: 与jboss seam的区别 by Bai Hantsy

aom目前只是一组高级的jsf组件,与icefaces , richfaces类似。
不是一个完整的框架。

Re: 与jboss seam的区别 by sen firefly

AOM本来是不错的。
但是做人呢,要低调点。不要搞的像天下无敌一样好不好。
AOM啊。只是一个JSF的实现版本嘛。也没有做什么事情,基于sun的jsf的参考实现,在这之上扩展了一些列的组件,而这些组件的皮肤都是ext的………………
就这些了。哦对了,还有就是配置文件改成注解了。
就这些。
不过~~老玩这些什么新鲜概念没有意义啊。
哎~~~无聊~~无趣的很

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

6 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT