Jini设备及其应用实例

Jini技术的出现,使得Java在成功地为网络设备的计算提供了合适的平台之后,更为网络设备,尤其是家庭网络下的消费类电子设备提供了一个全新的网络计算结构,从而实现了人们期待已久的网络设备的即插即用。

对Jini设备的硬件要求

虽然Jini本身是一个软件系统,但是一个真正投入使用的Jini系统则由一系列软件和相应的硬件组成。显然,以往一般的电子设备是不可能直接加入到Jini系统中来的。我们只有全面了解支持Jini技术的硬件规范,才会对Jini技术的未来有一个更深入的了解。

Jini结构需要以Java语言中的数据类型定义服务,且以服务的不同实例来以不同方法实现该数据类型。一个服务可以是不同类型的成员,允许了一个服务实例可以为客户提供不同功能。这是一个标准的面向对象软件的方法。Jini系统分布式的特点允许了Java语言的数据类型可以以一个软件和硬件的结构来唯一地实现。

实现这种功能的思想核心十分简单。服务以一个接口定义,支持接口的代理对服务客户是可见的,代理的功能模块由服务提供者上载到查找服务上,随后以客户所发现的服务的一部分被下载到客户方。这种服务相关的功能模块需要用Java语言编写以保证可移植性。但是,既然这代码来自被使用服务的个体实例,它的代理就可以详细地知道特定服务功能模块的细节。下载的代码不但知道实现这种服务的软件,还可知道服务所在的硬件。在极端情况下,硬件就是服务的全部,下载的软件是一个网络级的设备驱动程序,在得到来自客户方的Java语言的方法调用后,在网络连线的另一端产生了对硬件的特定硬件代码调用。

对查找服务(Lookup Service)的要求

一个服务提供的实际功能对提供这个功能的实体要求很少,实际上,Jini软件服务可以用这样一种方式来运行设备:客户方下载的Jini程序直接向硬件发送相应的二进制代码直接执行。在这种情况下,Jini设备所需的智能是最少的。Java程序与设备控制器交互的方式与设备在一局部计算机总路线下的交互是十分类似的(当然,还须在通信方面对网络中心做一些修改)。

但是,提供服务仅是对Jini服务要求的一部分。要成为Jini系统的一个部件,服务还必须参加到Jini的发现协议中来,并向Jini查找服务注册其自身信息。

这两方面的需要是密切联系的。Jini发现协议的主要目标是使得设备、服务或获得本地Jini查找服务的一Jini远程方法调用(RMI)的引用。一旦这个引用被得到,服务需在Jini查找服务中注册,允许Jini系统中的其它成员发现和使用这个服务。

Jini查找服务的接口是一个完全的RMI接口,服务的实现使用了RMI所有的机制,包括分布的垃圾回收和代码的动态下载。因此,服务被假定有一个对Jini查找服务的引用,该查找服务运行在一个完全的或是至少支持RMI的Java虚拟机之上。

当我们考虑到Jini查找服务的另一个实现方案,即除Jini查找服务自已定义的接口之外还支持其它远程接口,(net.jini.core.lookup.ServiceRegistrar)因为这种方案有一个不同的RMI代理而不是像现在的方案那样:一个有完全JVM和RMI的设备可以下载它。一个没有完全JVM和RMI的设备需要一个处理这种服务实现的不同方法。

除此之外,服务的注册还需要net.jini.core.lookup.ServiceItem对象的产生,这个对象由一系列的Jini对象组成。在查找服务包含这些入口则需要net.jini.core.entry.Entry的Jini对象的产生,所有这些对象最简单的产生方式就是由一JVM构造。

最后,Jini查找服务的注册被租用,返回的租用需要续租以使服务继续在查找服务中显示。查找服务规范没有包括由注册返回的租用对象。所有这些被定义成Jini语言中的接口,必须被以租用返回的(本地)对象支持。因而查找服务的设计需要那些类代码下载到注册的服务中以使租用可以被续租,实现了net.jini.core.lease的租用接口。

时间: 2024-08-01 19:11:12

Jini设备及其应用实例的相关文章

嵌入式 使用udev高效、动态地管理Linux 设备文件

本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那些需要高效地.方便地管理 Linux 设备的用户受益匪浅,这些用户包括 Linux 最终用户.设备驱动开发人员.设备测试人员和系统管理员等等.   概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等.通过观察这些设备的内核设备名称,用户通常能

OSGi规范介绍

OSGi(Open Service Gateway Initiative)最初的目的就是为各种嵌入式设备提供通用 的软件运行平台,即可以屏蔽设备操作系统与硬件区别的中间件平台.PC基本上被 Wintel架 构垄断,运行在PC上的应用程序完全可以在另一台PC上运行:但对于其他设备来说就不同, 它们的硬件平台可能完全不同,其操作系统也是来自不同厂商,所以任何设备上的应用程序 都需要定制,于是就产生了对中间件平台的需求. OSGi并不是专为家庭网络而制定的,除了住宅网关,像车载电脑等其他移动嵌入式设备

史上最全的android学习资料

一.开发环境搭建 (已完成) 负责人:kris 状态:已完成 所整理标签为:搭建 SDK JDK NDK Eclipse ADT 模拟器 AVD 调试器(DEBUG) DDMS 测试 日志 Logcat ADB 复制代码 汇总帖子:汇总主帖Android开发环境搭建详尽教程实例 :http://www.eoeandroid.com/thread-165622-1-1.html 分帖: 1. [eoeAndroid社区索引]android开发环境搭建篇详尽的教程实例汇http://www.eoea

H3C交换机的配置命令

本文简要的介绍了H3C交换机的基本配置命令(原文参考<H3C交换机操作手册>). 更详细命令请参考[url]http://www.h3c.com.cn/Service/Document_Center/IP_Network_Product/Switches/S[/url] 5500/S5500-EI/ 配置终端操作密码: [ST-ZC501-LSW-R4C14.I.S2403]user-interface aux 0     进入用户0模式 [ST-ZC501-LSW-R4C14.I.S2403

JMF捕获音频和视频(一)

相关文章:JMF捕获音频和视频(二) 1.捕获媒体数据的步骤: l 查询CaptureDeviceManager,来定位你需要使用的媒体采集设备. l 得到此设备的CaptureDeviceInfo实例. l 从此CaptureDeviceInfo实例获得一个MediaLocator,并通过它来创建一个DataSource. l 用此DataSource创建一个Player或Processor. l 启动此Player或Processor开始捕获媒体数据. 2.CaptureDeviceMana

Linux下串口驱动解析

原文 一.核心数据结构 串口驱动有3个核心数据结构,它们都定义在<#include linux/serial_core.h> 1.uart_driver uart_driver包含了串口设备名.串口驱动名.主次设备号.串口控制台(可选)等信息,还封装了tty_driver(底层串口驱动无需关心tty_driver). struct uart_driver {     struct module     *owner;           /* 拥有该uart_driver的模块,一般为THIS

编写C++程序使DirectShow进行视频捕捉_C 语言

视频捕捉Graph的构建一个能够捕捉音频或者视频的graph图都称之为捕捉graph图.捕捉graph图比一般的文件回放graph图要复杂许多,dshow提供了一个Capture Graph Builder COM组件使得捕捉graph图的生成更加简单.Capture Graph Builder提供了一个ICaptureGraphBuilder2接口,这个接口提供了一些方法用来构建和控制捕捉graph. 首先创建一个Capture Graph Builder对象和一个graph manger对象

企业数据中心虚拟化安全架构的三个重点

[天极网服务器频道5月29日消息]目前数据中心中普遍采用http://www.aliyun.com/zixun/aggregation/13883.html">虚拟化技术,而虚拟平台增加了额外的一层安全要求.当引进新的虚拟化技术时,数据中心增加了新的安全风险,例如,在一个管理管理程序中运行多个虚拟机的风险.同时还有虚拟机镜像和客户操作系统的安全以及物理安全设备的虚拟实例,例如,从一个物理防火墙和入侵防御系统进入运行同样的服务的虚拟镜像. 虚拟安全市场正在迅速解决与客户虚拟机有关的安全问题.

谈一谈Cocos2d-x中的某些“大小”

这里说的"大小",包括了以下一些内容: (1).窗口的大小 (2).分辨率的大小 (3).影幕的大小 (4).视口的大小 (5).裁剪区域的大小 我们先来看(1),窗口的大小 窗口的大小,即是Windows窗体大小.我们以HelloCpp为例,打开main.cpp,.找到这两句代码: 源码copy to clipboard打印? <SPAN style="FONT-FAMILY: SimSun; FONT-SIZE: 14px">CCEGLView* e