BT

面向Flex/Java EE应用的全新企业平台

作者 Jean-Jacques Dubray ,译者 张龙 发布于 2011年7月28日 | 被首富的“一个亿”刷屏?不如定个小目标,先把握住QCon上海的优惠吧!

上周,Granite Data Services发布了其用于构建富Internet应用的企业平台(后端使用Flex与Java EE)。整个Granite DS框架都是开源的,基于LGPL v2许可。

Granite DS是由一个客户端开发框架(Tide)构成的,这将人们所熟知的Java EE概念引入到了Flex领域:依赖注入、上下文管理、认证与安全访问以及Bean验证等等。它集成了所有主流的Java EE应用服务器、框架与JPA引擎:JBoss、GlassFish、WebLogic、WebSphere、Tomcat及Jetty;Hibernate、EclipseLink、OpenJPA及DataNucleus。它还带有一个高效的实时模块(Gravity),该模块基于Comet实现,支持可伸缩的数据推送。

InfoQ有幸采访到了Granite DS的CEO与联合创始人Frank Wolff以了解他对RIA的看法。

InfoQ:由于可伸缩性、移动性以及HTML5等的影响,企业软件栈,特别是RIA的发展异常迅猛,Granite DS在这场变革中处于什么位置呢?

Frank:在集群环境下,Web应用的可伸缩性主要是通过负载平衡实现的。新的GraniteDS企业平台目前运行在JBoss 5.1(Community或EAP)上,它带有开箱即用的集群支持(负载平衡与故障恢复)。对于其他服务器来说(WebLogic、GlassFish、Tomcat及Jetty等),我们在JBoss上所做的工作是可以复用的,可以实现所有集群结点的会话与认证复制。可伸缩性的另一方面与连接/线程管理有关:GraniteDS使用了异步的Servlet(也叫做Comet)来处理实时消息,与传统的同步Servlet模型相比,这极大地提升了系统的可伸缩性。

最近,Adobe通过新的Flex与Flash Builder 4.5不断强化Flex开发,但移动却是Flex开发所面临的一个问题。基本上,Flex开发者可以创建适合于尺寸较小的移动屏幕的特定的Flex皮肤,然后针对Android/iOS平台将其Flex/Flash软件编译为Air应用。这是个好消息(现在iPhone/iPad也支持了),但这么做却有一些限制:应用依旧是Flash应用,需要运行在Flash虚拟机上,看起来并不像原生的Android/iOS应用,并且无法利用目标平台提供的所有原生特性。最近,GraniteDS发布了原生库(Java/Objective-C))以克服这些限制:你现在可以创建连接到GraniteDS服务器上的原生Android/iOS应用,并且通过AMF3格式交换数据(AMF3是Flex应用所用的一种非常紧凑的二进制序列化格式)。目前,这项工作还在进行当中(这两个库都是Beta版),但它已经为这两种平台和语言提供了AMF3远程访问手段。

HTML5距离企业级应用还有一段距离。规范直到明年末才会发布,浏览器提供商一时半会儿还不会完全支持它,人们不可避免地会担心围绕着规范会掀起新一轮的浏览器大战:主要厂商对于规范的第一步并没有达成一致,那就是视频格式。除了所有HTML开发者所熟知的浏览器兼容性问题外,HTML5目前还没有类型安全的编译型语言可用:你只能使用当前版本的JavaScript,在开发大型的客户端应用时,你会发现它是一种有很多限制且比较弱的语言。最后,并没有真正的IDE可用于这种开发(除了GWT以外,因为它使用了一种相当聪明的办法绕过了这种限制:JavaScript是通过Java代码生成的)。相比较而言,Flex/ActionScript3/Flash Builder能够提供一个真实、强大的开发环境,这在HTML世界中是没有对手的。然而,HTML5还在路上,它代表了过去十年间巨大的技术变迁:GraniteDS计划发布一个JavaScript库以便让人们能够构建HTML5应用以连接到GraniteDS服务器并充分利用平台所提供的AMF3格式、实时消息以及高级的数据管理特性。

InfoQ:从上世纪90年代中期ORM出现以来,持久化已经走过了漫长的征途。JPA似乎是每个人都在寻求的解决方案,对此你有什么看法?

Frank:GraniteDS最初的一个目标就是利用JPA引擎的所有特性,从延迟加载和Hibernate开始。在GraniteDS 5年的开发过程中,完整的JPA支持已经延伸到了所有主流的引擎中:TopLink/EclipseLink、OpenJPA与DataNucleus。GraniteDS的JPA支持使用非常广泛,随着时间的流逝已经变得很成熟了。透明的延迟加载也可以通过Tide客户端框架得以实现:当在客户端首次访问时,延迟初始化的数据就可以自动获取到(比如说通过Flex绑定)。

一般来说,GraniteDS旨在集成所有主流的Java EE框架与特性:EJB3、Spring与JBoss/Seam、JPA引擎、Bean Validation等。主要目标在于让Java开发者熟悉Flex开发,这是通过集成他们钟爱的框架并在Flex端替换掉Java EE概念而实现的(依赖注入、客户端实体管理器、带有观察者的事件总线等等)。

InfoQ:双向与实时协议在RIA与移动应用中变得越来越重要。你如何看待复合应用世界中远程访问的前景?

Frank:实时协议为Web开发者提供了新的、有趣的可能,在过去十年间的使用率不断增长。这当然非常棒了,因为用户体验会从这种变化中受益,人们也可以在任何地方访问其应用与数据,但Web开发者与框架提供者还要面临两个主要的挑战:

  1. 服务器的可伸缩性:HTTP中并没有所谓的“数据推送”。客户端应用需要发送请求,该请求会在服务器端暂停,等待可用的数据。服务器需要处理成百上千个同时发出的持续连接,异步模型(在Servlet 3.0规范中成为了标准)有助于减少资源的消耗。然而,HTTP协议的扩展可以让客户端作为服务器,这样服务器就可以将真正的数据推送给客户端,这是个伟大的变革。
  2. 网络拥塞:蜂窝网络无法满足需要几个持续HTTP连接的应用的需要。用于创建智能手机应用的远程API必须要提供限制打开连接数量的方式,而且要尽可能地使用特定于平台的通知机制来处理实时消息。否则,3G或4G网络就会被这些新应用完全淹没。

我们的平台开发注意到了这些问题,比如说原生(Java/Objective-C)移动库实现就负责通过典型的HTTP连接查询所有的远程调用。在实现适合于新的复合应用世界所有设备一致的远程解决方案前,我们还要不少工作要做,还要不断学习。

查看英文原文:A New Enterprise Platform for Flex/Java EE Applications

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

关注 by 韩 冬

没有接触过Granite DS,不过j2ee 与flex的结合开发现在已经很紧密了Spring + Spring BlazeDS Integration +BlazeDs 整合Spring 与BlazeDs个人感觉开发已经很happy了不过以前有一个遗留问题,就是Hibernate1对多延迟加载的问题,无法解决,不知道这个能不能解决

Re: 关注 by zhou leon

相当的可以,虽然我没用这个项目,但是Grantie我一直在关注,两个特点:
1、进展非常快,开发者非常活跃
2、文档非常好

希望越来越好 by niu Vniu

在2007年的时候用过granite,还不错,但是功能支持不是很多,跟Blazeds比各有所长,现在两个结合着用

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论
提供反馈
错误报告
商务合作
内容合作
Marketing
InfoQ.com及所有内容,版权所有 © 2006-2016 C4Media Inc. InfoQ.com 服务器由 Contegix提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司 京ICP备09022563号-7 隐私政策
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.