50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Grizzly 与新的 Atmosphere Comet 框架:采访项目领导者 Jean-Francois Arcand

  • 2008-07-14
  • 本文字数:2685 字

    阅读完需:约 9 分钟

Grizzly 框架已经用在很多产品中了,如 GlassFish Sailfin RESTlet OpenESB 等等,通过采取 Java 新的 I/O API (NIO)它使得开发者能够编写出可伸缩的服务器端应用。Grizzly 的下一代—— Atmosphere 是一个基于 POJO 的框架,它的目标是将 Comet 带给大家。Jean-Francois 向 InfoQ 谈到了这一新变化。

InfoQ: 你能否向我们介绍一下使用 Grizzly 这样的框架的好处以及通常人们使用它的方式吗?

Jean-Francois Arcand (JFA): 编写可伸缩的客户端或者服务器端应用不是一件容易的事情。使用 Grizzly 框架的好处就在于你可以不用考虑底层的 NIO 细节就能构建强大的应用。Grizzly 使你能以非常简单的方式编写应用,从而加快客户 / 服务器应用的开发速度。Grizzly 社区也很活跃,他们回答问题的速度非常快,这使得开发体验也非常好。对于任何开源项目来说,活跃的社区总是一剂催化剂,这几年下来我们不断成长并且从社区中学到了很多。

InfoQ: 在新发布的 1.8 版中,Grizzly 框架包装了各种可以共存或者独立安装的模块。你能否简要描述一下这些模块以及当前发布的总体架构?

JFA: Grizzly 模块可分成两类:第一类是 NIO 框架及其扩展。NIO 框架可用来构建强大的服务器端应用。例如,我曾在爱立信(通过 Sailfin 项目)从事 Grizzly 框架模型上的 SIP 协议支持。SIP 协议支持 TLS、UDP 及 TCP 作为传输层,因此唯一可行的方案就是采用 Grizzly 框架。另一个例子是 Sun 的 Shared Shell 产品,它也构建在 Grizzly 框架之上。第二类我称之为嵌入式组件,如 http、jruby 及 comet 扩展。他们能直接使用,也能以嵌入式的方式使用。一个好的例子就是 GlassFish v3,它是构建在 http 模块之上的。我们还有一个实验性的功能不完全的 Servlet 容器(尚未完成),它可被用于测试目的(比如通过 junit)。Jersey 项目使用它完成自动化测试,到目前为止,作为一个微型的类似于 Servlet 容器的实验品,它的用处还是非常大的。

InfoQ: 很多开源项目都使用了 Grizzly,无论在 Sun 内部还是外部,其中最著名的当属 GlassFish 应用服务器。你能否再举一些例子来说明该框架的强大?

JFA: 因为开源,所以很难说出谁在使用你的东西。我知道的有下面这些:(Sun 外部)4homemedia.com、RESTlet、Jetty、Alt-mobile、Mediafed/blog-city、T-mobile、Yahoo Brazil、Bindows Ajax 框架等等。(Sun 内部)GlassFish、JXTA、Phobos、JavaCaps open-esb http binding、Jersey、GlassFish v3 Grail 实现、 Netbeans、Sailfin、Sun Shared Shell、Sun Instant Messenger,构建在 Grizzly 的 JRuby on Rail 扩展之上的 GlassFish JRuby gems。ICEFaces 和 DWR 提供支持的用于客户端的 Grizzly Comet。也许还有很多,但他们不告诉我们 :-)

InfoQ: 你怎样看待 Grizzly 所面对的来自 Tomcat 或者 Jetty 的竞争?

JFA: Grizzly 与 Tomcat/Jetty 的主要区别在于后者完全支持 Servlet 2.5 规范,而 Grizzly 还没有 :-)。Grizzly 的优势在于嵌入式领域。我认为一个容易定制的小型 http 运行很有市场。而这也是 Grizzly 优于 Jetty/Tomcat(更小、容易扩展等等)的地方。Jetty 是该领域的领导者,但是我们看到越来越多的应用从 Jetty 迁移到了 Grizzly 上。Grizzly 的一个优点是其异步的请求处理机制,这可在 http 层进行定制。这种机制非常适合小型的异步代理。Grizzly 的 http 扩展使你能编写基于 Comet 的应用而无需 Servlet 支持,有时我们需要这样。

InfoQ: Servlet 3.0 规范(JSR 315)要为 Comet 提供继承支持,你怎么看待这一点?

JFA: 对,Servlet 3.0 准备为 Comet 添加官方的 API 支持。他们主要在讨论挂起 / 继续请求的方式。

InfoQ: 你能否向我们介绍一下 Atmosphere 框架及其产生的驱动力吗?

JFA: 两年前我曾发表了一篇关于 Grizzly Comet 框架的博文,从那时起我就打造了一个关于它的社区。Grizzly Comet 框架的一个缺点是它只能与 Grizzly 运行时和 GlassFish 协同工作,这是个严重的限制。很多人曾建议该框架支持其他容器,如 Tomcat、Jetty 以及 Resin。因此,Atmosphere 的目标就是吸收 Grizzly Comet 框架的精华(一个叫做 Grizzlet 的组件)并支持所有容器(无论支持 Comet 与否)。不必等到 Servlet 3.0 规范发布人们就能编写轻巧的 Comet/Ajax 推应用(Push application)。它还会提供 Servlet 3.0 规范之外的很多东西。

InfoQ: Grizzly 和 Atmosphere 对 Bayeux 的发布 / 订阅协议的支持如何?

JFA: Bayeux 实现可以构建于 Atmosphere 之上。但是现在,我将专注于 Atmosphere 本身,并打造一个关于它的社区。一旦 1.0 版发布,我们就会留意能否在其上应用 Bayeux 协议。

InfoQ: 关于 Atmosphere,Grizzly 有何打算呢?新框架能完全代替旧的吗?

JFA: Atmosphere 仅仅是将 comet 从 Grizzly 迁移到了新项目中。最近我们将 grizzly-jruby 扩展迁移到了叫做 GlassFish scripting 的新项目中了。Atmosphere 将成为一个新项目的第二个扩展。

Grizzly 的主要组件、NIO 框架及其 http 扩展仍旧保留在 Grizzly 下。我们现在正从事于 Grizzly 2.0 的开发(有新的领导,所以我能专注于 Atmosphere)并且很多活动也要在其上展开了。

InfoQ: Atmosphere 和 Grizzly 的下一个版本发布的时间表是怎样的?

JFA: Grizzly 2.0 将在今年 12 月发布。至于 Atmosphere,主要看 web 社区反映和参与的程度如何了。因为现在关于 Comet API 还没有一个标准,还需要很多特定于容器的代码,社区的帮助会加快进度并提高稳定性。到目前为止,我可以确定的是 0.1 版(我开始的提议和第一版)会在明年夏天发布。

InfoQ: 有支持这个新框架的新工具发布吗?或许 NetBeans 插件可以?

JFA: 确实,IDE 支持非常值得关注。我还想有 Maven 支持。

InfoQ: 你如何看待 Grizzly 和 Atmosphere 项目的不断发展,最后能提供可伸缩的应用和 Comet 编程范式吗?

JFA: Atmosphere 的一个好处就是它使我能将 Grizzly Comet 的性能与其他容器进行比较。我想 Grizzly 会从中受益,因为通过与其他框架比较发现的任何性能问题都会有助于改进 Grizzly。

Grizzly 社区可能会继续独立于 Atmosphere 发展,因为嵌入式市场也在不断发展,grizzly 就是为数不多的非常方便的嵌入式容器之一。我最近看到的一个示例就是运行在 iPhone 之上的 grizzly comet,我对此惊讶不已。我相信在未来几年中越来越多的惊喜会涌现出来。

InfoQ: Jean-Francois,非常感谢你接受我们的采访。

你可以访问 http://www.infoq.com/news/2008/01/comet-scalability 以了解关于 Comet 和反向 Ajax 的更多信息。

查看英文原文: Grizzly and the New Atmosphere Comet Framework: Q&A with Project Lead Jean-Francois Arcand

2008-07-14 00:531784
用户头像

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

关注

评论

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

Any to Any 实时变声的实现与落地丨RTC Dev Meetup

声网

音频 RTC Dev Meetup 生态专栏 语音处理

在线JSON转YAML工具

入门小站

工具

uni-app进阶之创建组件/原生渲染【day9】

恒山其若陋兮

6月月更

Larix真正的去中心化借贷平台,并开启double Mining活动

鳄鱼视界

Discourse 新用户可插入媒体的数量

HoneyMoose

稳住了,别抖!—— 看GetX 的Worker如何防抖

岛上码农

flutter ios 前端 安卓开发 6月月更

Android 修改系统音量及监听

yechaoa

android 6月月更 AudioManager

linux之我常用的20条命令( 之三)

入门小站

Linux

Java Core 「13」ReentrantReadWriteLock 再探析

Samson

学习笔记 Java core 6月月更

数据资产管理

奔向架构师

数据资产 数据管理 6月月更

喜讯!云效度量能力获信通院先进级评估

阿里云云效

云计算 阿里云 DevOps 研发效能 研发

透过华为军团看科技之变(四):互动媒体(音乐)

脑极体

flutter系列之:flutter中的builder

程序那些事

flutter 程序那些事 6月月更

统一日志

卢卡多多

日志 6月月更

vue导航路由

小恺

6月月更

leetcode 221. Maximal Square 最大正方形(中等)

okokabcd

LeetCode 动态规划 数据结构与算法

客户案例|观测云助力合思信息升级新一代可观测平台

观测云

百度安全再次亮相高性能计算国际顶会SC 2022 — 采用Fuzzing技术防护高性能计算静默数据损坏安全风险

百度安全

百度安全 百度安全实验室 高性能计算国际顶会 SC 2022 Fuzzing技术防护

AWS的运营管理类服务

冯亮

云计算 AWS

一问带你彻底了解JVM-Java虚拟机内存区域详解

派大星

JVM

攻防演练中红队的内网横向扩展

穿过生命散发芬芳

6月月更 攻防演练

小红书严打买卖账号及刷量作弊行为:必须维护平台的公信力

石头IT视角

服务治理的工作内容

阿泽🧸

微服务 6月月更

JVM调优简要思想及简单案例-新生代回收算法

zarmnosaj

6月月更

携手腾竞体育后,英特尔IMC如何加速电竞生态正循环?

科技之家

在线文本列表批量添加行号工具

入门小站

工具

浅谈融云即时通讯服务「日志优化」

融云 RongCloud

新课上线 | 每次 5 分钟,轻松玩转阿里云容器服务!

阿里巴巴云原生

阿里云 云原生 容器服务

接口测试(apipost、jmeter和python脚本)——测试工具

Xd

Java 后端 接口测试

军体拳代码

工程师日月

6月月更

数据库每日一题---第18天:每天的领导和合伙人

知心宝贝

数据库 大数据 前端 后端 6月月更

Grizzly与新的Atmosphere Comet框架:采访项目领导者Jean-Francois Arcand_Java_Dio Synodinos_InfoQ精选文章