Java的生旦净末丑!

最近,关于金蝶Apusic号称即将推出JSF开源社区“京剧脸谱”的消息炒得沸沸扬扬(http://java.csdn.net/n/20060829/94196.html ),在好奇之余,对京剧脸谱这个概念发生了点兴趣。说来惭愧,虽自己是中国人,但对号称“国粹”的京剧还真不怎么了解,“外事不知问Google”啦,看了一些关于京剧脸谱的资料后,就写下了下面的文字。

搞Java开发这么多年,说起J2EE Web开发,还真是百感交集、爱恨交加:
我爱J2EE服务器端编程带来的高可靠性、安全性和运行期的高效稳定性;
我恨以手工方式来编写JSP页面代码,我恨基于有限的HTML界面组件进行编程!
俺一向佩服的牛人袁红岗说得好:现状让人有时怀念VB、Delphi可视化编程的时代,有时甚至会羡慕微软的.net、Studio,因为它们的确使用起来很方便实用。
然而,Java世界所倡导的自由氛围“一切源于技术,一切源于开放”已进入我的血脉!我追求一种自由和完美的理想技术主义,希望Java中也能有一个功能强大的可视化工具!
我想,其实我和各位兄弟一样,要得很简单!

看了袁红岗关于“Ajax+JSF双剑合壁”的观点后,说实话我是比较赞赏的。倘若Apusic果真能实现他们的承诺,那J2EE的Web开发将发生渐进而深远的变化!!!
京剧脸谱大家都略有所知,分为生、旦、净、末、丑5种,那么,就以它为例吧:

“生”:容器级的Ajax支持
目前有JSF + Ajax这种思路的,恐怕也不是一家,但很多第三方的JSF + Ajax实现是提供一个组件库以及一个附加的Servlet 或Filter来处理Ajax请;而Apusic号称是直接由JSF容器来处理Ajax请求的,根据请求的类型来判断这是一个正常的HTTP请求还是一个 Ajax请求。Apusic JSF引擎号称实现了一个 AJAX Render Kit,可以在HTML文档中嵌入Java Script代码来实现Ajax特性,而替换Render Kit只需要修改配置文件即可。

“旦”:举重若轻的JSF引擎
常规JSF容器每进行一次客户端与服务器端的响应时,都需要把所有的状态传来传去,对系统运行性能带来较大的负面影响,而通过Apusic JSF号称的Ajax特性,能够只把发生变化的数据打包成Ajax请求发送给服务器端,而服务器端也只会将发生变化的数据打包成Ajax应答,从而大大提升系统的运行效率。并且,传统的JSF请求应答将刷新整个页面,而Apusic JSF号称将只更新发生变化的客户端组件,从而给客户带来更好的人机体验。

净:让Web开发更轻松
以前要写Ajax应用要写很多Java Script代码,开发、调试、维护这些 Script脚本都相当烦琐,如采用Apusic JSF技术,就不再需要编写任何Java Script代码,引擎已经帮你生成了这些代码。Apusic JSF所有的标准组件都是支持Ajax的,某些第三方组件可能本身并不支持 Ajax,但使用一个名为<ajax:renderGroup>的标签,可以立即将这个第三方组件转换成Ajax Enabled。

“末”:丰富的UI组件
据称Apusic JSF还提供了一个名为<ajax:status>的标签,可以接受在发送和完成一个Ajax请求时触发的事件,缺省的实现是在发送 Ajax请求之前显示一个HTML片段,在完成Ajax请求之后显示另一个HTML片段,这些HTML片段可以包含文字和图片。此外还实现了一个<ajax:invoke> 标签,可以以RPC方式调用服务器端Java对象的某个方法。

“丑”:随意拖曳的可视化设计
据Apusic开发部的人说,用Apusic JSF还包含其它一些差异特性,包括:控件的换肤功能,控件对IE、Mozilla(Firefox)、Opera等多浏览器的支持,以及强大的布局功能等。通过Apusic JSF,实现UI界面其实并不复杂,只需要通过简单的几行代码,就能够完成复杂的UI界面。

在JSF规范中,有这样一句话:“JSF is designed to be tooled”。换言之,JSF规范从设计初开始,就非常强调对工具支持的依赖。幸运的是,目前对JSF提供支持的开发工具也逐渐丰富了起来,包括Oracle JDeveloper、Sun Java Studio Creator等等。金蝶Apusic宣称也同样提供了一个基于Eclipse的集成式开发环境:Apusic Studio,并通过该工具,能够给JSF的开发带来良好的支持,包括:语法加亮、代码辅助、断点调试、可视化的设计等等。

总之:厂商靠产品说话。声势炒的这么大,Apusic到底有多少实力和老袁的一世英名就看这次了,呵呵。在中国作系统软件很不容易,希望Apusic的这个Java京剧脸谱能拿出点真东西。

>JSF规范从设计初开始,就非常强调对工具支持的依赖。
这就是又是那些厂商将老百姓误导到他们工具上的老伎俩。
其实表现层的技术衡量标准只有两个:
1. 是否安分的遵守表现层规范,不与任何业务层或数据库有关系。
2. 是否所见即所得?你只要告诉我你的工具是否完全所见即所得,我就知道你的工具先进与否?目前IBM的4GL产品也在完善中。

JSF也是臭裹脚布!
java世界就是这样,不断制造难度,不断勇敢克服,不断拥有体验技术快感的机会。
相信再过那么点时间,JSF又出师未捷身先死了。
Ruby,JRuby...........

我倒觉得JSF前途一片光明!