xSocket 力求保持 NIO 的简单性

  • Craig Wickesser
  • 王丽娟

2008 年 5 月 4 日

话题:JavaDevOps语言 & 开发文化 & 方法

Gregor Roth 最近发布了xSocket 2.0,这是一个基于 NIO 的用来构建高性能、可扩展网络应用的 Java 库。InfoQ 有机会采访了 Gregor,并了解到xSocket的历史、最新发布、及今后的计划。

InfoQ:xSocket 的发展历史是怎样的?

Gregor Roth:xSocket 的最初版本是一个高性能 SMTP 服务器评测项目的副产品。通用的、NIO 相关的网络代码被重新实现了一下,成为了 xSocket。2006 年 7 月发布了 xSocket 的第一个公开版本(V0.8)。在 xSocket 1.0 中,API 已被完全重新设计。xSocket 随后的一些的版本(V1.1 和 1.2)通过添加新的方法、类、功能增强了 API。

InfoQ:2.0 中主要的新功能或修复的缺陷是什么?

GR:除了一些细微的变化、重命名、及移除废置的工件之外,xSocket V2.0 主要的 API 与 xSocket V1.2 的 API 是一致的。最重要的变化是新扩展的模块和重新实现的内部组件。

xSocket V2.0 主要的发布说明有:

  • [API] 通过移除废置的工件和细微的变化整理了 API。
  • [API] 新的执行注释支持。基于新的执行注释,用户能清楚地规定其网络处理器中的回调函数应该以单线程的模式执行还是多线程的模式执行。
  • [部署]xSocket 二进制包现在符合 OSGi。
  • [监控] 改进的 JMX-Monitoring。
  • [性能] 重新实现了 xSocket 的底层代码,以此获得显著的性能提升。
  • [SSL] 重新实现的 SSL 支持。
  • [资源] 通过自动分离、重新连接 Socket 的 SelectionKey 到 Selector 来提升挂起和恢复读支持,这能减少所需的资源。
新扩展的模块有(预览版):

  • xSocket-multiplexed,支持一个物理 TCP 连接之上运行的多个逻辑连接。
  • xSocket-http,支持编写同步、异步的 HTTP 客户端和服务器组件。xSocket–http 包括一个 HttpClient,而且通过提供异步的、流技术的 API,有利于编写像 HTTP 代理、COMET 服务器应用程序一样的基于事件的 HTTP 网络组件。

InfoQ:xSocket 今后的计划是什么?

GR:Socket 2.x:

  • 更进一步的的性能优化(改进的 NIO 级文件流支持,……)
  • [xSocket-http] 改良的 COMET 支持(支持 Bayeux 协议,……)
xSocket 的下一个主版本(V3.0)将使用 NIO.2 的特性(NIO.2 将会成为JSE 1.7的一部分)。

InfoQ: 是否打算与JBossGlassfish等进行集成?就像Grizzly已经做的那些?

GR:目前还没有具体的集成计划。

如果你有任何关于 xSocket 的问题,或是想向 Gregor 反馈信息,你可以通过邮件 gregor.roth[at]googlemail.com 联系他。你也可以找到更多的使用 xSocket 进行异步 HTTP 和 Comet 架构的信息。

查看英文原文:xSocket Aims to Keep NIO Simple

JavaDevOps语言 & 开发文化 & 方法