当前位置: 首页 > news >正文

OperaMasks能否开创Java Web新格局

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还将面临更多挑战:

相关文章:

  • 机器学习预测的概率如何表示?
  • 外包误区:价格达成一致,怎么就那么难——外包实践(66)
  • 快速读懂词性标注和命名实体识别的区别
  • CCF 202012-1期末预测之安全指数
  • 从DOS到7 细说Windows成长历程
  • 为什么图像预处理矩阵要除以255?
  • 纹理映射
  • 21考研复试务必要注意的3点!
  • “微软技术魔鬼训练”二十天杂谈
  • 更改排序规则
  • 又入选Fractal Window Weekly了,Yeah!
  • QQ在夜间模式下聊天字体看不清
  • 外包的另类功能:培训员工——外包实践(67)
  • Python查找含任一关键词的文本片段
  • java中utf8编码的还原
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • centos安装java运行环境jdk+tomcat
  • go append函数以及写入
  • Javascript 原型链
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Java多线程(4):使用线程池执行定时任务
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 机器学习中为什么要做归一化normalization
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 判断客户端类型,Android,iOS,PC
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ###项目技术发展史
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (简单) HDU 2612 Find a way,BFS。
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法)N皇后问题
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET4.0并行计算技术基础(1)
  • .net经典笔试题
  • .NET企业级应用架构设计系列之应用服务器
  • ??javascript里的变量问题
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [Android] Android ActivityManager
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [BZOJ] 2044: 三维导弹拦截
  • [docker]docker网络-直接路由模式
  • [Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
  • [jQuery]使用jQuery.Validate进行客户端验证(中级篇-上)——不使用微软验证控件的理由...
  • [LeetCode]--61. Rotate List
  • [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'XXX' 无效
  • [MySQL]基础的增删改查
  • [nlp] id2str的vocab.json转换为str2id
  • [NOIP2005]过河