组件

组件技术是提升软件复用度,进而提升软件开发效率的重要手段。 但目前的Web开发技术,缺乏一种统一、标准、并得到业界广泛认同的组件技术。 JSF诞生以后,J2EE的Web开发模型,总算是拥有了一个统一的工业标准,但人们对JSF的质疑,以及JSF自身的发展迟滞,使人们对这种组件模型的期望值日渐降低。

OperaMasks遵循JSF 1.2规范,并克服规范的一些局限与不足。 基于AOM内置的Ajax原生支持的JSF引擎之上,所有的组件都拥有完全的Ajax特性及丰富的人机体验。

AOM的组件分为两大类,分别是Rich Component及Lite Component。如果你需要开发拥有复杂业务逻辑及操作流程的Web Application, 那么,Rich Component是您的不二选择;如果你需要开发以浏览、信息发布为目的的Web Site,那么,Lite Component能够满足您的需求。 并且,这些组件都是面向数据的,可以用JPA、Hibernate、或直接用JDBC将数据准备好,交给这些组件去展现。 同一组数据可以用不同的组件来展现,无论是基于二维表格的DataGrid、 基于自定义模版展现的DataView还是图表组件Chart,对数据的展现过程都是一样的。 当数据需要更新时,通过AJAX和JSON完成与服务器的交互,而这种交互过程,对用户来说是透明的、无成本的。

我们有(但不局限于):

Data Grid组件,Ajax支持,表格数据展现
DataGrid:以表格形式展现你的数据
Tree View Grid组件,Ajax支持,树形数据展现
TreeView:用来组织你的数据
DataView组件,用你想到的任何方式展现
DataView:用任何你能想到的方式
Chart和Report组件,以图表形式展现数据
Chart&Report:以图表形式展现数据

组件技术带给我们的第一次进化:基于组件编程

长久以来,jsp/servlet带给我们的是:基于流的编程模型,由此导致的情况是:我们通过拼凑HTML/JavaScript代码片断来构建Web页面, 最终造成代码臃肿,开发与维护成本较高;而基于组件的编程模型,则是一种巨大的进步。

IoVC:视图控制反转

在Web编程中,一直很难克服的一个问题就是:展现层与业务数据纠缠在一起,无法进行良好的解耦,从而造成应用系统的扩展性差,维护成本高。 于是,出现了所谓的MVC框架,试图以Model-View-Control这种非常流行的设计模式,将两者有效的隔离开来。 但回顾目前主流的Web MVC架构,它们所做的绝大部分工作无非是:将页面中控件的值取出打包成Java Bean;再无非就是在完成页面导航的过程中,辅助你进行页面参数的传递与分析。 这样一种“简单MVC”架构,是无法完全解决“展现层与业务数据完全解耦”这个问题的。 一旦你的需求超越了框架的能力,那么,你将面对的依然是:不得不在展现层中嵌入大量的Script代码,可能是Java代码片断,也可能是大量tag-lib及EL表达式的引入。 IoVC——“Inversion of View-Control”,即“视图控制反转”,换言之:它能够把对“View(即UI视图)的控制力”注入到你的后台业务逻辑中。 这样一来,你在编写业务逻辑的过程中,对View拥有足够的控制力,从而能够将展现层与业务逻辑完全的解耦。

IoVC带给我们的第二次进化:展现层与业务逻辑的良好解耦

基于IoVC,我们的页面不再需要任何EL表达式或Java代码片断, 能够让展现层与业务逻辑之间进行良好的解耦,降低开发与维护成本。简而言之,IoVC是一种更好的MVC,是对MVC的一种高层次抽象。

AJAX的原生支持

Ajax的出现,带给直接用户的是一种喜悦,它能够有效提升Web应用的人机体验;带给程序员的,除了对一种“新技术”所带来的兴奋与憧憬之外, 它带来更多的是一种开发过程的烦躁与郁闷。作为一种并不“新鲜”的组装式技术,Ajax只是将JavaScript、XML、DHTML等技术拼凑在一起,解决了异步请求调用、页面局部刷新等问题。 但这几种技术放在一起,很难形成一种较高层次的解决方案,从而使Ajax的开发与维护成本过高。于是,人们又发明了若干的Ajax框架,以试图降低它的开发成本。譬如,客户端框架有Dojo、EXT-JS等,但这类客户端框架能够解决客户端组件化, 以及让Ajax的发送与响应变得简单,但它无法解决后台的数据提取与打包等问题;再譬如,服务器端框架有Ajax4jsf,DWR等,但这类解决方案又缺乏对UI层的有效控制。

OperaMasks,提供了原生Ajax支持的JSF引擎,它能够使Ajax的开发成本降为零!基于 OperaMasks开发的业务系统,程序员无需再关注什么是Ajax, 开发出来的应用是自然而然的Ajax-Enabled的应用;甚至于任何标准的JSF系统,迁移到 OperaMasks之上时,只需更改一个参数,即可拥有完整的Ajax特性!

AJAX原生支持带给我们的第三次进化:更好的人机体验

我们需要AJAX,因为AJAX能够使我们的Web应用变得更友好,人机体验更丰富; 但我们又不需要AJAX,因为AJAX带来较高的开发与维护成本。而 OperaMasks带给我们完整的AJAX体验,却没有任何成本的上升。

Elite,Java语言升级版

Java,曾经被称之为史上最优雅的语言,吸引了诸多程序员的目光,目前已经成为世界上使用率最高的语言。 但在Web 2.0浪潮的冲击下,在“简单、轻量、敏捷”压倒一切的态势下,Java也略显疲态,日益臃肿与复杂起来。人们即希望拥有Java语言自身的强大、健壮与稳定,又期望拥有类似于Ruby等动态语言的敏捷、高效与灵活。 由金蝶中间件公司自主研发并拥有完全自主知识产权的全新的动态语言,ELite,能够使您鱼与熊掌二者兼得。

ELite是一个集命令式和函数式风格为一身的面向对象的程序设计语言,既有高阶函数(first-class functions)、列表推导(list-comprehension)、模式匹配(pattern-matching)、延时求值(lazy-evaluation)等函数式语言所具有的语言特征,又具有和Java相近的语法结构。

有人说,在Web 2.0的冲击下,RoR(Ruby on Rails)正在侵占J2EE的领地,但ELite将成为J2EE中的Ruby,并且,与Ruby相比,ELite对Java程序员更自然,更亲切,也更强大。ELite是为Web而生,必将成为Java程序员最有力的武器!

Lite Bean

Lite Bean,脱胎于JSF中的Managed Bean(托管Bean),却又远超过Managed Bean的功能范围,它是展现层与业务层的粘接器。

在OperaMasks中,一个Lite Bean就是一个普通的POJO对象,它可以继承任何基类,也可以实现任何接口。 而Lite Bean的声明与配置,也遵循“Convention Over Configuration”的原则,只需一个简单的Annotation声明,使您从繁重的xml文件中解脱出来。 在Lite Bean中,您可以编写、调用、组合任何后台的业务逻辑,同时,遵循IoVC的编程思想,也使您拥有对UI的完全控制力。 在Lite Bean中,还可以注入任何其它资源,也可以再注入其它的Lite Bean。Lite Bean同时还是 OperaMasks与Spring、EJB3等其它已有编程模型的粘接器,一个Spring对象或EJB 3对象,同时也可以成为一个Lite Bean,而一个Lite Bean同时也能够轻松的被Spring对象或EJB 3对象所调用,这是一种神奇的魔力,通过Lite Bean,能够使您通过IoVC思想拥有对UI的完全控制力,又使您任意的调用、组装任何的后台逻辑,从而使您的工作轻松之极,并完全享受Web开发的乐趣。

OperaMasks 3.1.1版本
立即下载
相关文档
OperaMasks产品宣传手册
OperaMasks产品宣传手册
10 Pages

产品宣传手册,给您一个直观的OperaMasks...



[在线阅读] [下载]
OperaMasks新手入门教程
OperaMasks新手入门教程
46 Pages

从简单的示例开始说起,逐步带您步入OperaMasks的学习之旅...


[在线阅读] [下载]
OperaMasks开发指南
OperaMasks开发指南
74 Pages

深入介绍OperaMasks的框架体系,是您学习OperaMasks的最佳开发参考指南...


[在线阅读] [下载]
OperaMasks组件参考
OperaMasks组件参考
593 Pages

丰富翔实的OperaMasks组件API及参考使用手册...



[在线阅读] [下载]