AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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:531731
用户头像

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

关注

评论

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

JDK 从8升级到11,使用 G1 GC,HBase 性能下降近20%。JDK 到底干了什么?

毕昇JDK社区

Hbase 入门详解

Se7en

黄金圈法则解读数据中台(1):为什么需要数据中台

水滴

数据中台 黄金圈法则 8月日更

DDD领域驱动设计·学习应用·一

小诚信驿站

领域驱动设计 领域驱动模型DDD 中台架构 领域驱动

2020-2021京东Java面试真题解析

Geek_f90455

Java 程序员 后端

12年高级工程师的“飞升之路”

Geek_f90455

Java 程序员 后端

2021Java岗面试题知识点小结

Geek_f90455

Java 程序员 后端

停下来读读书

箭上有毒

生活随想 8月日更

Vue组件通信之ref

Augus

8月日更

Druid 通过 dsql 进行查询

HoneyMoose

2021Java者未来的出路在哪里

JVM调优资料

Java 程序员 后端

2021Java进阶者的新篇章

JVM调优资料

Java 程序员 后端

2021京东最新Java面试真题解析

JVM调优资料

Java 程序员 后端

关于 go run 命令执行过程中的“坑坑点点”

liuzhen007

8月日更

学习的细碎之处

Nydia

2021Java面试笔试总结

JVM调优资料

Java 程序员 后端

第一次凡尔赛,字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

编程菌

Java 编程 程序员 面试 计算机

我测了啊,我真测了!

QualityFocus

测试 质量保障 线上问题 缺陷

Linux之watch命令

入门小站

Linux

03 设计模式之工厂模式

陈皮的JavaLib

Java 面试 设计模式 工厂模式 8月日更

2021Java不死我不倒

Geek_f90455

Java 程序员 后端

2021大厂Java开发面试总结+解答

JVM调优资料

Java 程序员 后端

2021Java开发现状分析

Geek_f90455

Java 程序员 后端

Druid 通过 dsql 的服务器连接参数如何配置

HoneyMoose

2021大厂Java面试最火问题

JVM调优资料

Java 程序员 后端

2021大厂Java知识点总结

JVM调优资料

Java 程序员 后端

为什么需要数据库连接池

赖猫

MySQL 数据库 后端 连接池

缓存数据历险记(一)--被缓存警察上课一天

卢卡多多

redis 缓存 8月日更

在线网页快捷方式创建工具

入门小站

工具

2020-2021华为Java面试真题

Geek_f90455

Java 程序员 后端

2020-2021阿里巴巴Java面试真题解析

Geek_f90455

Java 程序员 后端

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