`

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

分享到:
评论

相关推荐

    高级java2大学教程 源代码

    讨论了分布式编程,其中包括RMI、Jini、Jiro、JMX、CORBA以及JavaSpace的相关概念;介绍了有关网络服务的内容,并通过实例讲解了servlet和JSP的应用,然后列举了与其他Web服务相关的技术,例如WML、SOAP等。本书还...

    Java语言编码规范

    1 介绍(INTRODUCTION) 3 1.1 为什么要有编码规范(WHY HAVE CODE CONVENTIONS) 3 1.2 版权声明(ACKNOWLEDGMENTS) 3 2 文件名(FILE NAMES) 4 2.1 文件后缀(FILE SUFFIXES) 4 2.2 常用文件名(COMMON FILE NAMES) 4 3 ...

    如何解决项目中java heap space的问题

    主要介绍了如何解决项目中java heap space的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java语言编码规范(Java Code Conventions) txt版

    1 介绍(Introduction) 2 文件名(File Names) 3 文件组织(File Organization) 4 缩进排版(Indentation) 5 注释(Comments) 6 声明(Declarations) 7 语句(Statements) 8 空白(White Space) 9 命名规范(Naming ...

    图文详解Java环境变量配置方法

    主要以图文结合的方式详细介绍了Java环境变量配置方法,感兴趣的小伙伴们可以参考一下

    Java编程之多线程死锁与线程间通信简单实现代码

    主要介绍了Java编程之多线程死锁与线程间通信简单实现代码,具有一定参考价值,需要的朋友可以了解下。

    Java 堆内存溢出原因分析

    主要介绍了Java 堆内存溢出原因分析,任何使用过基于 Java 的企业级后端应用的软件开发者都会遇到过这种报错,java.lang.OutOfMemoryError:Java heap space。,需要的朋友可以参考下

    Spinvader:具有Space Invader基础知识的Java 2D游戏

    Spinvader是一款Java 2D游戏,通过添加一些功能来融合传奇游戏Space Invader的基础知识。 它仍处于开发阶段。 控制 : 机芯:ZQSD 拍摄:太空 Show Hitbox:F4 调试Mod:F3 资源 : 音乐: 菜单:复杂的B-美丽...

    婚恋交友系统java源码-java-mysql-s-1k-:java-mysql-s-1k-

    项目介绍 java mysql婚恋交友网站源码+论文(原订做价1k) 系统说明 设计说明     关键字:交友网站,Java编程语言,MySQL数据库   Design specification The transformation of the network in communication ...

    spaceblaster:SpaceBlaster是一种免费的未经许可的“太空侵略者”,例如用Java编写的游戏

    SpaceBlaster是一种免费的未经许可的“太空入侵者”,例如用Java编写的游戏。 我变得更好地了解了LibGDX,我希望至少会有一个人将从我的工作中受益。 演示视频: 内容: 目前,游戏包含: 小范围的敌人类型,...

    word源码java-sparkstreaming:SparkStreaming实时流处理项目实战

    课程介绍 Spark版本升级 第2章 初识实时流处理 一、业务现状分析 二、离线与实时对比 三、框架对比 四、架构与技术选型 五、应用 第3章 分布式日志收集框架Flume 一、业务现状分析 二、Flume架构及核心组件 三、...

    java.txt.zip_Java编程_Java_

    this file for how to program the vector space model2031752本文介绍TMS320C6000系列中断设置的简明方法。通过示例定时器中断,MCBSP串口接收中断及外部中断这三种中断实现过程,介绍如何实现中断各个寄存器的配置...

    GetImgExtraInfo.java

    介绍了两种方式获取图片的拓展信息,简单获取可以使用ImageInfo,获取更多内容信息可以使用JpegMetadataReader.readMetadata(jpegFile) 简单获取结果 Format Details: Jpeg/DCM Bits Per Pixel: 24 Comments: 0 ...

    Space-Trader:太空商人混音

    基于旧游戏Space Trader的Java游戏。 有关原始游戏的更多信息,请访问 如何运行项目 Libgdx的介绍了如何将gradle项目导入IDE(Eclipse,Intellij等)或通过命令行运行游戏。 请注意,您需要下载才能通过命令行运行...

    精通Android游戏开发

    书中不仅通过Space Blaster和Asteroids这两个炫酷 的街机游戏深入介绍了如何从头构建纯Java游戏,更详细展示了如何将PC上的3D经典游戏Doom和Wolfenstein 3D移植到Android,阐释了在Java和C中混合使用OpenGL 3D图形和...

    JavaScriptMinifier(Minify)v2.1.3

    介绍: 提到多CSS或Java语言文件经常遭受更慢的页装载的网页,因为浏览器必须单独地请求每个参考文件。 多数浏览器只将做二个同时请求到一台唯一服务器。 在开头倍数请求和等待他们介入的潜伏在做新的请求之前完成...

    java7源码翻译-androidlibs:列出一些有用的回购

    java7源码翻译让你的东西在机器人 介绍 来自 github 的 android 库 系统要求 安卓 注意 如果不再维护该库,请不要在此处添加。 如何贡献 步骤 1. 添加一个项目,如下所示: **Library Name**[one space]Short ...

    3d-bin-space-utilization:用于3d装箱算法的平方空间利用核心

    我向您介绍3d容器包装软件的空间利用率算法。 重要的! 库未提供有用的打包算法: 演示打包算法仅用于概述代码用法,它有助于开始编写自己的容器打包算法。 尽管它给您可靠的结果,但是每次它都会为您提供针对同一...

    Android Killer(Apk反编译)v1.2官方版.rar

    软件介绍: AndroidKiller是一款用于反编译安卓程序,可以签名转换编码打包APK等。支持编码转换,转换方式为文本到编码或编码到文本。编码格式为UTF8/UNICODE/ANSI。可自定义外部工具,需要设置好路径及参数。自动...

Global site tag (gtag.js) - Google Analytics