论坛首页 编程语言技术论坛

Java/Flex/.Net 三国演绎 之 关公战秦琼

浏览 1948 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-01   最后修改:2009-06-02

今天终于调试成功!后台是Java,前台是 Flex or .Net 同时工作

 

    功能强大而稳定,有着跨平台、集群化优势的Java,就像勤劳勇敢的“牛郎”;极具用户亲和力与体验感、天生与Office系列有着良好关系的.Net,就像美貌的“织女”,这样的强强联手是多么美好呀!但是,只是用户和我们这些人觉得美好,人家MS就不觉得美好。以至于如此有生命力的组合,至今还是隔着银河,很难牵手。

 

    当 Java 和 .Net 正在为这出“关公战秦琼”的好戏迟迟不能开台而各自暗地里较劲的时候,半路杀出个程咬金,Adobe 挟 Flex 主动示好 Java,希望组成“统一战线”对抗 MS。

 

Adobe带来的结盟书是这样写的:

在Java领域,为寻求创建用户界面的最佳方式所作的努力从未停止过。Java作为一门高级编程语言,其强大的语言特性,丰富的数据结构,浩瀚的各类API支持及成熟的跨平台能力使其成为IT行业的领跑者和事实上的行业标准之一。

基于Java三大平台(J2EE/J2SE/J2EE或JavaEE)所开发的各类产品和项目在各个行业都拥有无数成功的案例。然而,与Java数十年辉煌的行业地位极不协调的是,在UI(User Interface)设计领域,无论是基于AWT或Swing的桌面应用,还是以JSP(Servlet)或JSF为前端的企业级应用,都或多或少地让人们感觉到了Java在界面展现和用户体验方面有点力不从心。

AWT和Swing最为让人诟病的就是程序的响应速度和内存泄露等诸多问题,而JSP在“富客户端”的互联网应用盛行的今天并没有提供多少可供开发人员使用甚至扩展的页面组件,JSP程序员仍然需要花大量的时间去开发标签库,需要在并不熟悉的JavaScript上面耗费大量的开发和调试时间,因此多年来JSP始终只能作为各种商业控件的“载体”,始终在JSP+标签库+表达式语言的前端开发模式中扮演“绿叶”。

而JSF技术,是Sun公司力图使Java互联网应用从“请求-响应”机制向“事件处理”机制进化跨出的革命性的一步,其特点为强大的事件处理功能和界面组件支持及其对Request和Response对象处理细节的隐藏,应该说JSF代表了未来互联网应用的方向,但是JSF对开发人员的角色区分较为细致,例如分网页设计人员、应用程序设计人员和组件设计(集成)人员等,要想精通JSF,就必须深入了解JSF标准标签的使用、自定义标签开发、事件驱动模型、UI组件开发等技术细节,学习的难度较大,周期较长。

在RIA领域,最近几年最为风生水起的技术就要算是Flex了。

在当今流行的RIA解决方案中,不乏Applet这样“沉”熟稳“重”的老兵,也不乏Ajax这样风风火火的新贵,而Flex却是独树一帜,稳健而不失犀利。Flex会在未来几年成为RIA平台的领航者,理由有两条:  

第一是其基于Flash Player的开发模型。

Flash Player提供了Flex应用在不同操作系统和不同浏览器之间整合的能力。据统计,全世界84%的个人计算机上安装有Flash Player,并保有80%的升级率。这使我们在几乎所有的互联网用户的运行时中发布跨平台的RIA应用成为可能,因为应用的最终形式只是一个swf文件,而这个文件能在任何安装了Flash Player的浏览器中运行,无论用户使用的是Windows、Linux还是Mac OS。

第二是框架的成熟度。

Flex开始进入人们的视野是在2004年,最初作为企业级应用服务器打入市场。从那时起,Flex根据技术和市场的需要进行了一系列的改进。升级了Flash运行时、ActionScript语言和服务器组件的Flex 2.0于2006年6月发布,Adobe于2007年4月宣布Flex框架开源。

Flex使得软件开发人员为增强用户体验开发健壮,开源的框架成为现实。开源社区也会为Flex技术的成熟与高速发展提供强大的技术支撑。

 

    经过断断续续的研究,发现BlazeDS已经为Flex与Java的协同作战铺平了的道路,RemotingService的使用方法简单到几乎是傻瓜式的。加之AS3带来的 绑定事件触发器异步 等“新”特性,使我一下子就喜欢上了Flex。预览版的应用框架和事例应用系统雏形,很快就出来了,而且我的小组开始扩展Flex的控件,编写自己的Remoting应用框架。

 

    但终于我们认识到,Flex不可避免地受制于浏览器的安全沙箱,全屏且相应键盘、快捷键、本地文件 等都是问题。这时候Adobe AIR又进入我的眼帘,幸运的是,几乎不用做什么动作,就可将Flex应用制成AIR。有了AIR运行库的支持,刚刚的问题就都好解决了。

 

    然而,AIR的普及程度远远不及FlashPlayer,而且Adobe RIA方案虽然比起Ajax来对于企业应用系统来说实现了用户体验感质的飞跃,但总归还是赶不上MS的界面。更重要的一点是,在企业应用系统中,与Office系列软件尤其是Excel的紧密结合是必不可少的,虽说几乎各个系统下都有第三方的Excel解决方案,但是毕竟都不如MS自家来的直接(可以在Office里录下宏,然后直接在程序中使用(非VB语言要“翻译”一下))。

 

    在RIA领域,MS其实N年前就推出了WPF和后来的SilverLight(银光),但却迟迟没有市场的相应。也见过网络上有人试图将Java和.Net做连接,但结论都是:相当困难 + WebService性能极差

 

    前日,偶见国人制作的一个名为PHPRPC的中间工具,号称可在十几种开发语言所开发的系统间做连接,眼前一亮!首先是佩服作者能掌握十几种开发语言。然而,此技术刚刚出炉,目前只有发起人一人来维护代码,感觉付之实战还有待时日。

 

    就在研究网友们对PHPRPC性能测试的帖子时,才知道原来早有一个Hessian存在,恕我无知!恰恰SpringFramework中已经集成了对Hessian的支持,而我的服务器框架又恰好是搭建在Spring的基础上的,这不是正合适吗。于是我把橄榄枝伸向了.Net。

 

    Hessian之初应该是专门Java—Java通讯的,后来才加入了对C#等语言的支持。所以网上大多是将Java—Java如何使用Hessian的,而官方网站上下载的C#的例子又是C#—C#的。想找一个Java—C#的例子可真难,找到的也仅限于“Hello World”级别,就更不用说结合Spring了。

 

    于是,只能自己抠,终于,就在今(jin4)天(tian0),调试成功了。现在我的后台服务,只要在web.xml配置文件中同时写上对Flex和.Net的服务Servlet就可以同时对二者提供服务,一行代码也不用动。现在我同时拥有两个版本的客户端程序,哈哈。.Net的可以做成WF也可以做成WPF,PC机上使用,MAC上可以用AIR版的,Mobile上都可以用(AIR马上将支持Mobile),未来可能还有Linux、Palm.... 哈哈

 

    今天没有贴一行代码,只是“讲了个故事”,也许以后进一步整理稳妥了,再将些关键的代码吧。

 

未完,待续...

 

   发表时间:2009-06-02  
不错的经历!
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics