原文:Write Your First Google Wave Robot in Java
作者:Mark Watson
出处:http://www.devx.com/Java/Article/43342
为什么要学习Google Wave?如果你已经试过使用它,或者至少是已经看过介绍它的视频的话,那么你可能会只是把它当作另一个类似Gmail的富客户端Web应用而放过不提,这种看法并不完全正确,除此之外,Wave还是一个跨平台的开发和发布平台。
了解到创建有用的内容和服务的代价是多么昂贵和耗时,我们这些开发者当然希望通过把这些创造发布到多个平台上,这样就会使得我们的努力能够得到更多的回报,Wave平台刚好能够让你做到这一点(参见图1)。
图1. 整体框架:在多个客户端平台上重用数据和web service(全部托管在App Engine上)
Google Wave是一个协作平台,解决了在使用电子邮件协作时会存在的一些问题,通过允许多个合作者编辑某个位置上的同一个文档,使得保持整个文档(或者“wave”)完好变得更简单,而且文档更易于阅读。如果需要查看别人已经做了哪些改动的话,那么Wave观看器(Wave viewer)提供了一个滑动控制轴来按时间顺序回滚文档(wave),撤销所做的修改。如同在Wave演示视频中展示的那样,如果两个或多个人同时编辑一个wave的话,那么你几乎能够实时看到其他人的改动。
在创建了一个wave后,你可以邀请其他人读取和编辑该wave,本文解释了如何还能够邀请被称为Wave机器人(Wave Robot)的软件代理来读取和编辑wave,根据你对Wave机器人的配置情况,这些机器人会接收到其被邀请加入的wave的不同类型的事件通知。作为例子,你可以配置一个机器人来观察有人在编辑文档时每几次击键触发情况,或者是编辑者进行保存操作时的块修改触发情况。
如果你正在从事的项目需要支持多个面向用户的平台的话,那么花费一些额外的功夫来支持Wave将会非常有意义。(如果这不是学习Wave API和实际编写一些自己的Wave机器人的足够的理由的话,传闻在不久的将来Google会开一家Google Wave和Gadget的应用程序商店。)现在动心了吗?本文会帮助你走出第一步。
通过开发一个演示版的Wave机器人,本文展示了如何:
作为服务代理的机器人
如果你现在没有在Google App Engine上做开发,没有现有的托管在自己的服务器(或者是Amazon、RackSpace、虚拟私有服务器(VPS)、Engine Yard、Heroku等)上的web service和web应用的话,你可能会想尝试一下图2中展示的架构,其使用了App Engine作为托管在其之上的web service代理可替换掉(App Engine)的部署平台。
图2. 以现有的web service/应用来进行App Engine开发:使用App Engine的机器人作为部署在另一个平台上的web service的代理
图2反映了本文中的Wave演示机器人的用例,尽管其使用了托管在常见的服务器上的现有的web应用。当演示机器人被邀请加入一个Wave时,它使用Wave的标题作为cookingspace.com的web service的搜索串,cookingspace.com是托管在我自己的服务器上的一个门户网站。CookingSpace提供了一个web service API:给出一个查询串,它会返回一个食谱列表,列表中的每一项都带有营养资料的注解。机器人处理从web service返回的JSON数据,并把零个或多个食谱插入到wave中。(注:在本文中,当我提到Wave平台时,我大写Wave的首字母,而当我指的是单个文档时,我使用小写的wave。)
作者注:Google Gadget(用HTML和JavaScript编写的Wave UI组件)的开发超出了本文的范围。
|
因为演示机器人充当另一个web service代理的角色,所以它不需要数据存储,可参考我之前的这篇关于App Engine的文章“在Google的Java版App Engine上实现文档存储和搜索”,以了解使用App Engine数据存储的例子。如果你在AppEngine上实现了一个完整的机器人的话,那么什么是最有可能出现的情形呢?你可能想要保持Wave的一些持久数据——这不太可能,不过你可能会需要在服务器端维持一些状态信息。尽管如此,但机器人通常是无状态的,他们从Wave平台上接收事件通知消息,再从事件通知消息中获取所有他们需要处理的信息。
安装开发环境
按照以下这些建议来最大限度地利用本文中的演示:
1. 至少花费几分钟的时间来阅读一下Gooogle的文档“安装编写Java机器人所需的软件”,这些指南告诉你如何从头开始设置一个工程。
2. 使用安装了Google App Engine插件的Eclipse。(不是必须的,但就真正的机器人开发和一般的Java AppEngine开发而言,我强烈建议这样做。)
3. 下载演示机器人的代码和配置的压缩文件。
4. 参阅RobotMessageBundle接口的API文档,在开发Wave机器人时这是值得添加到书签中的一页,因为你所需要的大部分API或者在这一页面中,或者能通过该页面中的链接访问到。
图3展示了如何使用Eclipse中的Google插件来创建一个工程。
图3. 使用Goolge插件创建一个新的App Engine工程:这是一个使用Eclipse的Google插件来创建新的App Engine工程的屏幕截图。
在设置自己的工程时——即使是使用Eclipse的Google插件——一开始需要从Google的Robot Java Client Libraries上下载wave-robot-api.jar、jsonrpc.jar、和json.jar的文件拷贝,并把他们复制到你的工程目录下的war/WEB-INF/lib目录中。图4展示了Eclipse中的工程目录树,这是在创建了一个新的App Engine工程和拷贝了三个JAR文件到war/WEB-INF/lib目录之后的情况。(可以注意到wave-robot-api.jar的文件名中包含了一个日期戳:wave-robot-api-20090916.jar。)
图4. Eclipse IDE中的App Engine工程:这是在创建了一个新的App Engine工程和复制了所需的JAR文件到war/WEB-INF/lib目录后Eclipse中的工程目录树。
[译文]使用Java编写你的第一个Google Wave机器人(下)
图2. 以现有的web service/应用来进行App Engine开发:使用App Engine的机器人作为部署在另一个平台上的web service的代理
- 大小: 27.5 KB
- 大小: 32.3 KB
- 大小: 55.1 KB
- 大小: 22.7 KB
分享到:
相关推荐
《国际先进机器人技术(IARP)第十七次联合协调讨论会报告译文集》是一部集大成之作,它详尽地记录了全球机器人领域的最新研究成果和技术动态。在当今科技飞速发展的时代,机器人技术不再仅仅是科幻小说中的概念,...
圆柱坐标系机器人则能在由X和Y方向的两个线性运动以及Z轴上的一个角旋转定位的圆柱形工作空间内移动夹持器。球坐标系机器人的工作范围不规则,有垂直关节和水平关节两种变体,能够实现更为复杂的空间运动。 这些...
《国际先进机器人技术(IARP)第十七次联合协调讨论会报告译文集》是一部集大成之作,全面展示了全球机器人技术领域的最新进展和未来趋势。IARP,即International Advanced Robotics Program,是一个由世界各国...
JSP使用Java语言编写类似于XML的标签和脚本,以封装动态内容生成的逻辑。网页通过这些标签和脚本可以访问服务器端的资源和应用逻辑。因此,JSP促进了可重用组件的使用,比如Servlets、JavaBeans和基于Java的Web应用...
六足舞蹈机器人 外文翻译
本资源原文为java-for-Anylogic-user英文版,即面向Anylogic用户的Java开发,本人纯手工翻译,讲述以拖放方式以外的编程思路,对于建立复杂系统有很大...这是一个信息论,可以在模型中进行数据操作以及智能体的搭建。
随着Java技术的不断成熟和改进,1995年,Sun公司正式发布了Java 1.0版本,其跨平台、一次编写,到处运行的特性得到了广泛的认可。Java的虚拟机(JVM)允许编译后的Java代码在任何支持Java的设备上运行,这极大地推动...
它的设计目标是“一次编写,到处运行”(Write Once, Run Anywhere),这意味着用Java编写的代码可以在任何支持Java的平台上运行,无需重新编译。Java的特点包括垃圾回收机制、自动内存管理、丰富的类库和强大的网络...
在Java 5和Java 6中,JVM引入了大量的并发工具和改进,以支持多处理器和多核系统上的高性能应用程序。以下是这些知识点的详细说明: 1. **线程基础**:线程是操作系统分配CPU时间的基本单元,Java通过`Thread`类...
1. JAVA语言的重要性 JAVA语言之所以重要,是因为它可以解决传统的计算机编程问题,同时也能够解决互联网上编程问题。 2. 客户端编程 在传统的Web服务器-浏览器设计中,服务器提供静态页面,而客户端浏览器只是...
然而,由于混合动力机器人复杂的摩擦模型、强烈的耦合效应和动态时变特性,实现精确控制一直是一个极具挑战的问题。为了应对这一挑战,本文提出了一种精确的动态建模与控制参数设计方法,旨在提高混合喷涂机器人的...
Java 程序只需“一次编写,到处运行”(Write Once, Run Anywhere, WORA),这意味着开发者可以编写一次代码,就能在任何支持 Java 的平台上运行,无论是 Windows、Linux 还是 macOS,这极大地提升了开发效率和软件...
Java语言的设计目标是提供一个“Write Once, Run Anywhere”的平台,使得程序员可以轻松地develop和deploy应用程序。 在Java语言中,类和对象是基本的概念。类是一个模板,用于创建对象,对象是类的实例化。Java...
虽然"java2007【搜狗文档翻译_译文_英译中】1"这个标题没有直接指出Java在Twitter中的具体作用,但可以推测Java可能在构建和分析Twitter的基础设施、数据处理和用户交互方面发挥了重要作用。微博客和社交网络分析的...
在工业自动化领域,机器人技术的快速发展已经使得它们成为制造业不可或缺的一部分。工业机器人的轨迹规划作为核心环节之一,影响着机器人的运行效率和工作质量。本文介绍了一种基于遗传算法的工业机器人最优时间轨迹...
Java平台上的并发编程一直是一个重要的话题,特别是在多核处理器普及的今天。Fork/Join框架是Java SE 7引入的一项重要技术,它使得编写高效、并行的程序变得更加容易。本文将简要回顾Java中的并发编程基础知识,介绍...
《Java虚拟机规范第七版 中文版》是Java语言相关的重要文献,为程序员提供了一个关于Java虚拟机(JVM)的详尽介绍和参考。以下是详细介绍Java虚拟机规范的知识点: 一、Java虚拟机规范的重要性 Java虚拟机规范是...
第一章:基本概念 * public:公共的、公用的 * static:静的、静态的、静止的 * void:空的 * main:主要的、重要的 * class:类 * system:系统、方法 * out:出现、出外 * print:打印 * eclipse:Java编程软件 ...