OperaMasks能否开创Java Web新格局

news/2024/7/7 15:12:57
  OperaMasks全国巡演拉响了国产Web框架反击的号角,也让沉寂了很久的Java Web领域喧闹了起来。

那么什么是OperaMasks? 它是一个以JSF为基础引擎、基于JSF规范的、开箱即用的Java Web层框架。选择JSF为基础引擎,在我看来,至少有三大优势。一是Sun的官方标准;二是JSF得到了包括ibm、BEA在内的众多大牌产商的支持,三是JSF是一种与具体显示技术无关的技术,这有助于适应RIA技术的变化。

一.J2EE Without Ajax梦想终成现实

很早以前采访Apusic首席架构师袁红岗的时候,就听到过”J2EE Without Ajax”,在当时我的理解只是一句广告语而已,逆潮流发展这的确是一个挑战,但今天这个梦想成为了现实,也成为了OperMasks的王牌特色。

著名的Rod.Johnson曾提出了J2EE Without EJB,成就了Spring框架。相对于Without EJB的震撼,OperaMasks的J2EE Without Ajax,同样极具吸引力。

近几年,Ajax技术发展迅猛,与之相关的框架也层出不穷,单在Java方面就有DWR、DOJO、GWT、jMaki、Ajax4jsf等等。一方面,这样的框架提高了开发效率、改善了用户体验;另一方面,这些框架都存在一个问题:相对独立。这样的独立,会造成两个问题,一是更高的学习成本。为了在你的应用中加入Ajax功能,你需要另外学习这些Ajax框架;二是与既有Web技术的绑定问题。以jMaki为例,如果想将它应用到JSF程序中,你需要将用到的一些JSF标签换成jMaki标签,这无疑增加了开发者的工作量,并且增加了出错的机会。

OperaMasks提供了“原生”的Ajax支持,无疑是意义重大的。利用OperaMasks开发具有Ajax功能的Web应用,你不需要掌握额外的Ajax框架技术。通过OperaMasks,你只需要采用标准的JSF组件的写法,你唯一需要做的就是指定该组件的Render Kit是Ajax,或者在配置文件faces-config.xml中将全局Render Kit设置为Ajax。

另外OperaMasks提供了丰富的组件库,用于组织、显示和编辑数据,并且集成了强大的YUI-EXT组件库功能。当然,你也可以通过更换Render Kit来使用别的组件库功能。

想一想,只要掌握基础的J2EE知识,就可以进行Ajax开发,这是怎样的美妙?!

二. Apusic Studio和应用服务器

“工欲善其事,必先利其器”。单单有OperaMasks还是不够的,Apusic还提供了一体化的开发、配置、调试、监控的集成开发环境——Apusic Studio,它是一个基于Eclipse的IDE工具。通过Apusic Studio,你可以进行“所见即所得”的可视化设计。Apusic Studio提供了Ajax、Graph、Layout和Widget等控件集。通过简单的拖放,就可以实现很好的Ajax效果。

与其他一些Ajax框架没有提供相应的IDE支持相比,OperaMasks无疑是有一定优势的。当然,Apusic Studio解决的是显示层的问题,那么在业务逻辑层中涉及到的事务、安全等问题,我们又该如何应对呢?

Apusic 提供了应用服务器,该服务器通过了Sun的Java EE5.0最新规范的认证,通过时间在全世界都比较靠前(金蝶宣称是第4个)。

OperaMasks是遵循JSF 1.2规范的,所以基于OperaMasks的应用,都可以运行在支持JSF 1.2规范的服务器上,当然,Apusic应用服务器为OperaMasks提供了一些额外的特性,例如基于NIO的多路复用技术提升并发处理能力、基于gzip形式的状态压缩技术降低网络流量、支持在Managed Bean中通过Annotation进行资源注入等等。所以相比其他的一些Ajax框架,OperaMasks侧重的是一个完整的解决方案,这点对于企业级应用来说,至关重要。

以上两点,是我认为OperaMasks能否引领下一代Java Web开发潮流的机遇所在,当然,笔者认为,OperaMasks还将面临更多挑战:



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1727101



http://www.niftyadmin.cn/n/3660505.html

相关文章

JPA:好与坏?常见问题解答

问题:EJB专家团队是如何摆脱事务描述符的?回答:在会话bean和消息驱动bean中,可以通过描述符和注释来控制事务的行为。此外,我们将默认的事务属性更改为“REQUIRED”,这个默认值比以前的值“SUPPORTS”更常用。因此&am…

指针和多维数组的应用

#include <iostream> using namespace std; int main() {int ia[3][4] { 1 ,2 ,3,4 ,5 ,6 ,7, 8, 9 ,10, 11 ,12 };int(*p)[4] ia; //p指向含4个整数的数组for (auto p begin(ia); p ! end(ia); p){for (auto q begin(*p); q ! end(*p); q)cout &…

使用 EJB 3.0 Java Persistence API 设计企业应用程序

本文将介绍 Java™ Platform, Enterprise Edition (Java EE 5) 的一种设计方法&#xff0c;它利用了 Enterprise JavaBeans™ (EJB) 3.0 新的 Java Persistence API (JPA)。JPA 提供了一种标准的对象关系映射解决方案&#xff0c;该解决方案避免了依赖第三方框架&#xff08;如…

java基础设计 开源框架

有关java各种框架的基础设计,笔者经验之谈,算是小结吧!:)一&#xff0c;Hibernate部分1,简述hibernate映射继承关系和映射组成关系有何异同?映射继承关系&#xff1a;类和类之间除了关联和聚集关系外&#xff0c;还可以有继承关系。什么时候需要映射继承关系呢&#xff0c;举个…

基于java技术的软件开发架构总结

在具体的实现中&#xff0c;表现层可为Struts/JSF等&#xff0c;业务层、访问层可为JavaBean或EJB等&#xff0c;资源层一般为数据库。 宏观上的层次就是这样&#xff0c;在具体现实中&#xff0c;有如下几种实现形式&#xff1a;1&#xff0c; 轻量级实现表现层使用基于MVC的框…

using的使用

32.using的使用 using std::cin; 这就是一个using声明&#xff0c;就像一个普通的声明。以后提到cin时就指的是std里面的。 using namespace std&#xff1b;这就是一个using指令&#xff0c;导入所有std里面的应用。 “一般来说&#xff0c;使用using声明会更安全。因为&…

使用条件运算符从vector<int>中找到那些元素的值是奇数,然后将这些奇数翻倍

#include <iostream> using namespace std; #include<vector> int main() {int cont1,cont20;vector<int>tor{ 1,2,3,4,5,6,7,8,9,10 };for (int i 0; i < 10; i){cont1 tor[i] % 2;cont2 (cont1 1 ? tor[i] * 2 : ); //条件运算符if (cont1 1)…

JSSE应用

数据在网络的传输是无所不在的&#xff0c;但是如果数据中包含了一些私有的信息&#xff0c;如&#xff1a;密码或信用卡号码&#xff0c;那么就要使数据对于那些未被授权的用户保密。同样&#xff0c;也要确信数据在传输过程中有没有被故意或无意更改。Secure Sockets Layer(S…