写点什么

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

  • 2011-07-28
  • 本文字数:2406 字

    阅读完需:约 8 分钟

上周,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

2011-07-28 08:093199
用户头像

发布了 88 篇内容, 共 266.5 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

OpenHarmony新增两个分布式能力!快来了解~

科技汇

npm install xxxx --legacy-peer-deps命令是什么?

华为云开发者联盟

前端 npm install 依赖树 对等依赖关系

【堡垒机】2022年网络安全堡垒机厂商排名看这里!

行云管家

网络安全 堡垒机 移动云 网络安全堡垒机

Java中当对象不再使用时,不赋值为null会导致什么后果?

爱好编程进阶

Java 程序员 后端开发

web前端培训React 中Router的必备知识点

@零度

前端开发 React

蒙牛乳业加入星策开源社区,携手推动企业智能化转型建设

星策开源社区

人工智能 机器学习 企业数智化 智能化转型

蚂蚁三面被挂,幸获内推,历经5轮终于拿到口碑offer

Java架构追梦

java面试 后端开发 程序员面试 大厂Offer

【三级等保】三级等保办理流程经验大分享

行云管家

网络安全 等保 等级保护 等保三级 等保2.0

HDI硬件设备接口介绍

科技汇

我以为自己MySQL够牛逼了,直到看到了Alibaba的面试题,是我不配了。。

Java架构追梦

Java 后端开发 MySQL 运维 程序员面试

秒云 (元来云志)获邀加入中国开源云联盟,共筑开源生态

MIAOYUN

开源 开源生态 开源中国

使用APICloud & MobTech SDK 快速实现分享到社交平台功能

YonBuilder低代码开发平台

APP开发 APICloud MobTech袤博科技 社交分享

低通信量是筛选分布式多方安全计算常用安全协议方案的先决条件

易观分析

安全多方计算 低通信量

大数据培训Spark SQL知识点与实战分析

@零度

spark 大数据开发

原生JavaScript灵魂拷问(二),你能全部答对吗?

战场小包

JavaScript 前端 4月月更

划重点,2022 常见的面试题和八股文都为大家总结出来了

Java架构追梦

程序员 java面试 后端开发 Java面试八股文

神秘男嘉宾登场,引爆全场灯光?

龙智—DevSecOps解决方案

Atlassian Confluence confluence插件

与多家机构战略合作,背后彰显PlatoFarm元宇宙龙头的实力

西柚子

助力提升研发效能的“黄金三角”

博文视点Broadview

DM 是如何处理 DML 的丨TiDB 工具分享

PingCAP

【架构视角】一篇文章带你彻底吃透Spring

潘大壮

spring 后端 springboot 后端开发

netty系列之:可能有人听过ThreadLocal,但一定没人听过ThreadLocal对象池

程序那些事

Java Netty 程序那些事 4月月更

java不使用客户端授权密码直接用账号密码发送带附件的邮件

爱好编程进阶

程序员 后端开发

云电脑的四重守护,安全有谱

天翼云开发者社区

安全 云电脑

简述数仓的时间域函数

华为云开发者联盟

数据库 时间 时间戳 GaussDB(DWS) 时间域函数

使用xdebug调试php详细教程

CRMEB

华为云持续快速增长,IaaS市场排名中国第二、全球第五

科技热闻

【高并发】如何使用互斥锁解决多线程的原子性问题?这次终于明白了!

冰河

并发编程 多线程 协程 异步编程 精通高并发系列

总结JAVA全栈知识点,七面阿里成功斩获P8Offer

Java架构追梦

程序员 java面试 后端开发

Java8新特性-Optional

爱好编程进阶

Java 程序员 后端开发

面向Flex/Java EE应用的全新企业平台_Java_Jean-Jacques Dubray_InfoQ精选文章