日期:2014-05-17  浏览次数:21021 次

JavaSpace 介绍

JavaSpaces技术的应用

?

一、概述

JavaSpaces技术是进行分布式计算的一种简单机制,在分布式计算应用程序中,JavaSpaces 提供了对象的提供者和请求者可用来方便地进行通信的共享虚拟空间,这允许以Java对象的形式对任务、请求和信息进行简单的交换。Javaspaces提 供了永久地建立和保存对象的能力,Javaspaces是建立在Jini之上的一种技术,它作为一种共享分布式通信的机制,还可作为一种存储对象的机 制;JavaSpaces是一种Jini技术服务,这表示使用Javaspaces的开发人员也可以利用各种Jini服务比如说利用事务处理和通知等。 JavaSpaces以一种非常简单的接口提供了这些功能,但是,有效地利用这种简单的接口需要大量的概念和工具。?
在分布式系统中,对象之间应 当能够相互通信、共享信息。JavaSpace服务(JavaSpace service)利用对象的分布式存储(distributed repository)和三个简单操作(读、写和取),实现了一个简单的、构建分布式系统的高层体系结构。JavaSpace服务通过Jini事务管理器 和通知机制来支持事务,当与某个给定模板相匹配的条目写入JavaSpace服务时,通知机制能够通知某个对象。

二、JavaSpaces 概念

1、JavaSpaces 概念?
可以从以下几个方面来理解JavaSpace概念:纯对象风格;作为Jini服务;具有共享分布式通信的机制;?对象存储机制。?
从纯对象的观点,所有JavaSpace都是我们所说的JavaSpace接口的实现。它确实是得出那些有趣结果的一个非常小的接口。从Jini的观点来看,JavaSpace是一个利用Jini基础结构并向其他Jini客户机和服务提供其功能的一个Jini服务。?
JavaSpaces提供了一种完成共享分布式计算的机制。这可能是它所提供的一种最重要的功能了。JavaSpaces还提供了一个非常有趣且简单的对象存储机制。这并不是说它们是一种对象数据库,但这确实是一个非常有用的功能。

2、JavaSpace服务?
? JavaSpace服务为Java对象提供分布式的共享存储器。任何与Java兼容的客户端都可以将共享对象放进这个存储器中。然而,对于这些Java对 象有几个限制条件。首先,保存在JavaSpace服务的对象都必须实现接口Entry(在net.jini.core.entry软件包中)。 JavaSpace服务Entry附加到Jini Entry的方式定义在Jini核心规范中。一个Entry对象能够有多个构造函数并需要相当数量的方法。其他的需求包括一个public的无参数的构造 函数、public字段和非基本数据类型的字段。?
JavaSpace服务代理使用无参数的构造函数在反串性化过程中实例化匹配的Entry对 象。所有的用于模板对Entry对象进行匹配的字段都必须是public的。Jini核心规范中定义,一个Entry对象不能包含基本数据类型的字段。这 个对象类型的字段要求简化了匹配的模板模型,因为基本的数据类型不能有null值,该值在模板中作为通配符。?
同Jini一样,JavaSpace技术需要几个底层的服务。JavaSpace服务依赖于Jini查询服务,在需要事务时,必须启动Jini事务服务,JavaSpace服务还依赖于一个Web服务器和RMI活动守护程序rmid。

?
三、JavaSpaces 技术

分布式环境中的很多应用程序和在本地环境下类似,需要持久地存储数据,JavaSpaces服务以完整的Jini服务的形式提供这一功能;和其他 Jini服务一样,使用者可以通过查找过程使用其代理找到它,JavaSpaces采用了以Java为中心的策略,它不是数据存储服务,而是对象存储服 务,也就是说,它保存完全的、有效的Java对象;事实上,它也只能保存Java对象,JavaSpaces彻底理解Java类型系统,可利用类型语义使 需要存储、寻找和取出Java对象的应用更加自然贴切。

1、JavaSpaces的起源?
创建JavaSpaces的很多工作是基于David Gelernter的早期研究,Gelernter是耶鲁大学的计算机科学家,他曾设计了一个称为Linda的系统,这个系统在很多方面都是 JavaSpaces的前身。Linda中的中心概念是元组(tuple)和元组空间,元组是把数据组合在一起的集合,而元组空间是供应用存进和取出元组 的“共享黑板区”。这两个概念很显然与JavaSpaces中的项目(entry)和空间(space)概念相仿,不过尽管JavaSpaces很大程度 上继承了Linda,但二者还是有些重要的区别。

第一,Linda元组不具有Java语言提供的强类型,也就是说,尽管元组中单个的元素(element)可被赋以类型,但整个元组不行。JavaSpaces提供的强类型不仅可用于Entry对象,而且可用于Entry指向的对象。?
强 类型对于JavaSpaces来说很重要,它使JavaSpaces可很好地满足那些希望使用Java平台强类型的应用。更进一步,JavaSpaces 的Entry对象不仅可以使用强类型,而且它们可以进一步利用Java的类型系统,这意味着客户可基于超类关系进行搜寻,而Linda只允许值匹配。

第二,Entry对象在JavaSpaces中是真正的对象,也就是说,它们不仅可以有相关的数据,而且可以有方法。由于完整的对象可存储在JavaSpaces中,因此客户不仅可以取出“无生命”的数据,而且可以取出所需代码来操作这些数据。?
最 后,JavaSpaces很好地遵循了Jini规范和范型。Linda系统一般是用一个很大的、单独的Linda元组空间,而Jini群体通常可以有多个 活跃的JavaSpaces服务,每个服务都可以支持自己单独的对象存储区。JavaSpaces的Entry对象是由存储它们的客户租借的,因此 Jini的自修复能力也很好地应用到这里。?
Java的兴趣引起人们对Linda沿续下来的系统产生了新的兴趣,其中之一是IBM研究中心的 TSpaces系统。TSpaces在很多方面都与JavaSpaces相似,但要大得多。Tspaces支持通过下载的程序修改元组空间的行为,支持数 据库风格的索引和查询,还允许用户对元组设置访问控制安全策略。

2、对象的文件系统?

3、基于属性的搜寻?

4、JavaSpaces编程模型?

四、JavaSpaces技术的应用

1)信息共享?

2)计算服务

3)工作流?

以上内容转载于:ghq123 ? ?的 ?个人blog, 地址为: http://blog.ccw.com.cn/blog.php?do-showone-uid-128532-itemid-5029-type-blog-type-blog.html