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
分享到:
相关推荐
本文将详细介绍导致该错误的原因、如何调整 JVM 参数以及最佳实践等,帮助开发者有效解决 Java Heap Space 错误。 #### 知识点解析: 1. **Java Heap Space 概念**: - **定义**:Java Heap Space 是 JVM 中用于...
通过上述的详细介绍,我们可以看出解决“Java heap space”问题的关键在于合理调整JVM的堆内存大小。无论是Windows还是Linux系统,都可以通过修改相应的启动脚本或环境变量来实现这一目标。正确地配置这些参数不仅...
为了解决这一问题,本文将详细介绍如何调整Java堆内存大小,确保程序能够正常运行。 #### 二、Java堆内存基础知识 Java堆内存是Java虚拟机管理的一部分,用于存储对象实例和数组。当一个Java应用程序启动时,会...
### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...
### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...
讨论了分布式编程,其中包括RMI、Jini、Jiro、JMX、CORBA以及JavaSpace的相关概念;介绍了有关网络服务的内容,并通过实例讲解了servlet和JSP的应用,然后列举了与其他Web服务相关的技术,例如WML、SOAP等。本书还...
UCS包含一个特殊的字符"ZERO WIDTH NO-BREAK SPACE"(U+FEFF),在作为BOM时,用于识别字节流的字节顺序。在Java中,如果使用无标记的UTF-16编码,Java会默认加上BOM(UTF-16BE),而在使用有标记的UTF-16编码时,会...
此外,还介绍了输入元素和标记(Input Elements and Tokens)、空白(White Space)、注释(Comments)、标识符(Identifiers)、关键字(Keywords)以及各种字面量(Literals)的定义和用法,包括整数字面量...
这份"java性能调优及原理介绍"的压缩包文件,很显然是为了帮助开发者深入理解并掌握这一技能。以下是根据标题和描述提炼出的Java性能调优的相关知识点。 一、Java性能调优的重要性 在大规模应用系统中,性能优化...
1. 介绍(Introduction) 编码规范对于程序员而言尤为重要,有以下几个原因:一个软件的生命周期中,80%的花费在于维护;几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护;编码规范可以改善...
本文将详细介绍如何解决项目中java heap space的问题,并提供了详细的示例代码和解决方案。 (java heap space问题的定义) java heap space问题是指Java虚拟机(JVM)中堆内存溢出,导致应用程序无法继续运行的错误...
本文将介绍通过Jconsole工具对Java应用程序进行监控,包括环境准备、操作步骤和监控内容等。 环境准备 要使用Jconsole对Java应用程序进行监控,需要在Linux机器上安装JDK,并配置JDK的环境变量。此外,还需要在...
1. **Java Heap Space**:当堆内存空间不足时,抛出`OutOfMemoryError: Java heap space`。 2. **PermGen Space**:当方法区(永久代)空间不足时,抛出`OutOfMemoryError: PermGen space`。在JDK 8中,由于永久代被...
Java中的OutOfMemoryError(内存溢出)是一种常见的错误,本文将详细介绍OutOfMemoryError的三种情况及其解决方法。 首先,我们需要了解JVM(Java虚拟机)的内存管理机制。JVM管理的内存大致包括三种不同类型的内存...
根据提供的信息,我们可以深入探讨Java环境下...通过上述介绍可以看出,DB2数据库提供了丰富的功能来处理XML数据,包括解析、存储和验证等功能。开发者可以根据具体需求灵活运用这些工具来高效地管理和操作XML数据。
本文将详细介绍如何解决Java内存泄漏问题,帮助开发者更好地理解和应对这一挑战。 #### 二、Java内存模型与内存区域 Java虚拟机(JVM)管理着多种不同类型的内存区域,包括堆内存(Heap Memory)、方法区(Method Area)...
例如,LTORG用于声明数据缓冲池,MAP用于定义内存表,FIELD定义内存表中的数据域,SPACE、DCB、DCD、DCDO、DCFD、DCFS等则用于分配不同类型的内存空间并初始化数据。 5. **嵌入式C语言程序设计**: - 嵌入式系统...
本文将详细介绍如何使用一款简单的Java IDE工具进行Java程序开发。 #### 一、IDE的选择与安装 1. **选择合适的IDE**:对于初学者而言,推荐使用Eclipse或IntelliJ IDEA Community Edition。这两款工具均免费且功能...