Atmosphere 1.0:支持Java/JavaScript的异步通信框架

标签: atmosphere 1.0 java | 发表时间:2012-12-11 13:47 | 作者:
分享到:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

Atmosphere 1.0是一个新的Java/Scala/Groovy框架,它试图将Web浏览器与应用服务器之间的通信抽象出来。在Web Socket、HTML5服务器端事件和其他特定于应用服务器的解决方案可用时,该框架可以透明地支持,此外还可将长轮询作为一种备选方案。

最初,Web应用程序是采用客户端/服务器模型构建的,始终由客户端向服务器发起连接。对于特定类型的应用,如仪表板(Dashboard)、报价器和在线聊天等,它们都需要实时通信功能,而传统的HTTP请求/响应循环无法满足其要求。在这些情况下,服务器必须能够以异步方式(当事件可用时)向客户端(Web浏览器)推送数据。

随着基于AJAX 的富互联网应用( rich internet applications,RIA)的出现,这种需求变得尤为明显。RIA不再刷新整个页面,而是采用了一种更为动态的方法,当应用服务器上有新数据可用时,仅更新页面的某些部分。最基本的解决方案是使用轮询:客户端连续不断地向服务器询问更新信息(可能基于一定的时间间隔)。这种方法非常简单,不需要特殊的支持,但是可能存在带宽方面的问题。而且如果有很多客户端的话,即使没有新数据可用,服务器也很容易就不堪重负了。

异步通信的另一种实现方式是 HTTP流(也称Comet)。这种方案强制浏览器连接到服务器,而且在指定时间(也可以不限制时间)内保持连接。当服务器有事件需要推送到浏览器时,就可以使用这一持久连接。该方案也有些限制。持久连接是资源密集型的,可能被代理和防火墙意外关闭,而且浏览器对连接到每个应用服务器的连接数也有限制。

以上方法都不是标准的解决方案。本质上,Comet是一个宽泛的术语,包含了遵循上述理念的一些实现。目前已经有些努力致力于 WebSocket的标准化。WebSocket是一种新的网络协议,它从一开始就是为支持异步通信而设计的。然而该协议需要Web浏览器和应用服务器双方提供显式地支持。只要双方都支持WebSocket,就可以将HTTP连接“升级”为 web socket。针对WebSocket的编程也有其自身的问题,因为当前每种应用服务器都有自己的API,这很容易导致供应商的封闭。

Atmosphere是一个Java框架(也支持 GroovyScala),可以作为以上各种方案之上的一个抽象层,使开发者无需处理底层的通信细节,从而将精力集中在实际的业务逻辑上。开发者只需利用统一的Atmosphere API编程即可,由该API在背后提供对以下各场景的支持:

同时,Atmosphere也提供了一个 JavaScript模块(支持 jQuery),该模块位于客户端,负责将Web浏览器的异步支持功能抽象出来。这种抽象的核心理念是控制连接的两端。详细文档参见:支持的应用服务器和浏览器( supported application servers and browsers)。

Atmosphere的主要特性是在可行的情况下(比如可以使用WebSocket),能够自动选择最高效的方案,还支持一种备选方案(比如长轮询)。它也有可能提前发现 客户端和服务器之间支持的方式。请注意:使用 Nettosphere时,Atmosphere可以运行在 非servlet的容器中。

除基本API之外,Atmosphere也提供了一些 插件或扩充,能够与以下框架集成:

  • REST/Jersey
  • GWT/Vaadin
  • Socket.io
  • Spring
  • Guice
  • Wicket
  • PrimeFaces/RichFaces

更多信息,请访问该项目的 Wiki示例FAQJavadocs

作者 Kostis Kapelonis是软件工程师,专注于企业级应用开发。

查看英文原文Atmosphere 1.0: Asynchronous Communication For Java/JavaScript

您可能也会喜欢

相关 [atmosphere 1.0 java] 推荐:

Atmosphere 1.0:支持Java/JavaScript的异步通信框架

- - InfoQ cn
Atmosphere 1.0是一个新的Java/Scala/Groovy框架,它试图将Web浏览器与应用服务器之间的通信抽象出来. 在Web Socket、HTML5服务器端事件和其他特定于应用服务器的解决方案可用时,该框架可以透明地支持,此外还可将长轮询作为一种备选方案. 最初,Web应用程序是采用客户端/服务器模型构建的,始终由客户端向服务器发起连接.

Atmosphere 2.4.1 发布,异步 WebSocket 框架

- - 开源中国社区最新新闻
Atmosphere(大气)框架中包含用于构建异步Web应用程序客户端和服务器端的组件. 大多数 流行的框架要么支持Atmosphere要么那个框架提供本地支持. Atmosphere框架支持所有主要的 浏览器和服务器. Atmosphere透明地支持WebSockets、服务器发送的事件(SSE, Server Sent Events)、长轮询(Long-Polling)、HTTP流(永远帧)和JSONP.

[转]反向Ajax,第4部分:Atmosphere和CometD

- - 高味儿在这写写有点漏味的技术文章
在本文中,我们了解Atmosphere和CometD——这是最知名的用于Java技术服务器的开源反向Ajax库. 即使客户端的JavaScript代码很简单,但你需要用到一些异常处理、重连接和确认功能. 在服务器端,全局性API的缺失和多种web服务器API导致了对框架的需求,这带来了一层抽象,第3部分内容还谈到了Socket.IO.

Java中的锁(Locks in Java)

- - 并发编程网 - ifeve.com
原文链接 作者:Jakob Jenkov 译者:申章 校对:丁一. 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂. 因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字( 译者注:这说的是Java 5之前的情况).

Java PaaS 对决

- 呆瓜 - IBM developerWorks 中国 : 文档库
本文为 Java 开发人员比较了三种主要的 Platform as a Service (PaaS) 产品:Google App Engine for Java、Amazon Elastic Beanstalk 和 CloudBees RUN@Cloud. 它分析了每种服务独特的技术方法、优点以及缺点,而且还讨论了常见的解决方法.

Java浮点数

- d0ngd0ng - 译言-电脑/网络/数码科技
Thomas Wang, 2000年3月. Java浮点数的定义大体上遵守了二进制浮点运算标准(即IEEE 754标准). IEEE 754标准提供了浮点数无穷,负无穷,负零和非数字(Not a number,简称NaN)的定义. 在Java开发方面,这些东西经常被多数程序员混淆. 在本文中,我们将讨论计算这些特殊的浮点数相关的结果.

Qt——转战Java?

- - 博客 - 伯乐在线
编者按:事实上,在跨平台开发方面,Qt仍是最好的工具之一,无可厚非,但Qt目前没有得到任何主流移动操作系统的正式支持. 诺基亚的未来计划,定位非常模糊,这也是令很多第三方开发者感到失望,因此将导致诺基亚屡遭失败的原因. Qt的主要开发者之一Mirko Boehm在博客上强烈讽刺Nokia裁了Qt部门的决定,称其为“绝望之举”,而非“策略变更”.

java 验证码

- - ITeye博客
// 创建字体,字体的大小应该根据图片的高度来定. // 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到. // randomCode用于保存随机产生的验证码,以便用户登录后进行验证. // 随机产生codeCount数字的验证码. // 得到随机产生的验证码数字. // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同.

java面试题

- - Java - 编程语言 - ITeye博客
 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面. 抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节. 抽象包括两个方面,一是过程抽象,二是数据抽象.  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法. 对象的一个新类可以从现有的类中派生,这个过程称为类继承.

Java使用memcached

- - 互联网 - ITeye博客
首先到 http://danga.com/memcached下载memcached的windows版本和java客户端jar包,目前最新版本是memcached-1.2.1-win32.zip和java_memcached-release_1.6.zip,分别解压后即可. 然后是安装运行memcached服务器,我们将memcached-1.2.1-win32.zip解压后,进入其目录,然后运行如下命令:c:>;memcached.exe -d install<br>c:>memcached.exe -l 127.0.0.1 -m 32 -d start.