没有合适的资源?快使用搜索试试~ 我知道了~
网址:http://www.elsevier.nl/locate/entcs/volume62.html14页X-KLAIM和KLAVA:编程移动代码Lorenzo Bettini,Rocco De Nicola,Rosario PuglieseDipartientodiSistemieInformatica,Universita`diFirenze{bettini,denicola,pugliese}@ dsi.unifi.it摘要高度分布式网络已经成为一种新型广域分布式应用的通用基础设施,其关键设计原则是网络感知,即能够处理网络环境的动态变化。网络感知计算要求新的编程语言,利用移动性范式作为基本的交互机制。本文介绍了用于编写移动代码应用程序的KLAIM(KernelLanguageforAgentInteractionandMobility)框架,即X-KLAIM编程语言和基于Java的运行时系统KLAVA。特别是,我们说明了K LAVA如何处理移动代码。最后给出了一个使用该框架实现的实例1介绍高度分布式的网络现在已经成为许多应用的通用基础设施,这些应用使用网络设施来访问远程资源和服务。互联网和万维网无疑为这种增长做出了贡献,使每个人都可以使用网络连接,而不局限于研究实验室或大型企业。程序员和用户都必须处理一种新的广域分布式应用,其关键设计原则是网络感知,即处理网络环境动态变化的 能 力 。网络感知计算需要新的编程语言和范式,以支持迁移应用程序作为客户端和服务器之间交互的新模型。移动代码,即可以被发送到远程站点并且可以在到达时执行的软件已经被提倡为支持网络感知编程的基本范例(参见,例如,[23,12])。在文献中,术语移动性用于表示不同的机制,从简单的机制,仅提供下载代码执行的能力(例如,[3]),到更复杂的,支持整个计算的迁移(例如,[25,1,21])。2002年由ElsevierScienceB出版。 诉 操作访问根据C CB Y-NC-N D许可证进行。2在本文中,我们提出的框架,它依赖于Java,为亲,语法在KLAIM,其中移动代码应用程序和它们的交互策略是可以自然规划的。 Agent核心语言Interaction and Mobility)[14]是一种实验性的内核语言,被设计为对由通过多元组空间和移动代码交互的若干组件组成的分布式系统进行编程。X-KCLAIM(eXtendedKCLAIM)[6]是一种命令式编程语言,通过扩展KCLAIM获得变量声明,超时操作,赋值,条件,顺序和迭代过程组合。KLAIM的实现由两层组成:• 一个Java包,称为KLAVA,它包含实现X-KLAIM运行时系统和操作的所有类• X-KLAIM编译器,将X-KLAIM程序转换为使用KLAVA包的Java程序。KLAIM框架的结构如图1所示。X-KLAIM和K LAVA可在www.example.com在线http://music.dsi.unifi.it。 KLAVA是[6]中的[6]和[7]中的[4]中的[7]详细介绍了brie-brief。克拉X-Klaim程序X-Klaim编译程Java程序Klava软件包Java应用程序Java程序javac编译器Java解释器图1:X-K权利要求的框架。让我们简单地展示一下如何使用这个框架如果X-K激光源代码存储在一个名为foo.xklaim的文件中,它可以通过X-K声明编译器,结果将是文件foo.java。 最后一个文件可以通过标准的jdk命令编译和执行当当程序被执行时,必须指定Net服务器的主机和端口号,它是包KLAVA中的一个类。该服务器跟踪作为网络一部分的节点的物理位置,并且必须在任何其他节点之前启动。 进一步的细节将提供 在接下来的部分中。因此,X-KLAIM可用于写入最高层而KLAVA可以被看作是一个中间件,X-KLAIM程序,并作为Java框架,用于根据KLAIM范式进行编程。本文的其余部分组织如下。第二节介绍了KLAIM语言及其实现X-KLAIM。Java包Klava及其一般架构在第3节中介绍,而与代码移动性有关的特性在第4节中描述。在第5节中,我们将展示如何编写一个依赖于移动代理的简化新闻采集器3为了检索远程站点上的信息,我们将在X-KLAIM和KLAVA中实现这个例子。第六部分得出了一些结论,并对未来的工作提出了一些建议。2Klaim和X-KlaimX-KLAIM(eXtendedKLAIM)[6]是一种实验性的编程语言专门设计用于编程由多个COM组成的分布式系统ponents 通 过 多 元 组 空 间 和 移 动 代 码 进 行 交 互 。 它 基 于 内 核 语 言KLAIM[14],并受到协调语言Linda [18]的启发,因此它依赖于元组空间的概念。元组空间是元组的多重集合;这些元组是信息项的容器,称为字段。有两种类型的字段:实际字段,即。表达式、过程、局部、常量、标识符和形式域,即变量。在语法上,一个正式的字段表示为!ide,其中ide是标识符。元组是匿名的,内容可寻址的,模式匹配用于在元组空间中选择元组。两个元组匹配,如果他们有相同数量的字段和相应的字段匹配:一个形式字段匹配任何相同类型的值,两个实际字段匹配,只有当他们是相同的(但两个形式永远不匹配)。例如,如果Val是一个整数变量,那么元组(Val)和(匹配后,形式字段的变量得到匹配字段的值:在前面的例子中,匹配后,Val将包含整数值300。在Linda中只有一个全局共享元组空间;KLAIM通过处理多个分布式元组空间来扩展Linda。元组空间放置在节点(或站点)上,节点(或站点)是网络的一部分。每个节点包含一个元组空间和正在执行的进程,并且可以通过其局部性进行访问。局部性有两种:物理局部性是标识符,通过它可以在网络中唯一地标识节点;逻辑局部性是节点的符号名称。进程可以使用保留的逻辑局部性self 物理位置具有绝对的在网络中的意义,而逻辑位置有一个相对的意义,取决于他们被解释的节点,可以被认为是别名网络资源。逻辑位置通过分配环境与物理位置相关联,表示为部分函数。每个节点都有自己的环境,特别是将自我与物理环境相关联。节点的位置权利要求过程可以在相同节点或不同节点处同时运行,并且可以在元组空间和节点上执行以下操作。• in(t)@l:评估元组t并在位于l的元组空间中寻找匹配元组tJ。只要找到匹配的元组tJ,就将其从元组空间中移除。然后将tJ的相应值赋给t的形式域,操作终止。如果没有匹配的元组,4如果找到了,则操作将挂起,直到有一个可用。• read(t)@l:仅因为通过模式匹配选择的元组tJ没有从位于l的元组空间中移除,所以从in(t)@l中移除。• out(t)@l:将从t的求值得到的元组添加到位于l的元组空间。• eval(P)@l:生成进程P,在l处执行。• newloc(l):在网络中创建一个新节点并绑定其物理位置去洛该节点可以被认为是在元组计算期间,计算表达式并将逻辑位置转换为物理位置。 评估过程意味着替换它与它的闭包(即过程以及正在进行评估的节点的环境)。这意味着,例如,out(P)@l将P的闭包添加到位于l的元组空间,而eval(P)@l发送P,而不是它的终结,在洛杉矶执行。因此,如果节点s1执行out(P)@s2,则当在s2执行P时,self实际上将引用s1。这意味着使用静态作用域相反,如果s1执行eval(P)@s2,则不发送闭包:当使用self和动态作用域时,P将引用s2。X-KCLAIM扩展了KCLAIM的高级进程语法:它提供了变量声明、超时操作、赋值、条件、顺序和迭代进程组合。 超时是通过提供KLAIM阻塞操作(读和入)的变体来添加的,这些操作将等待限制在固定的时间内。在广域网上运行时,这对于处理故障和性能下降是必要的。X-KLAIM完整语法可以在KLAIM网站上在线找到http://music.dsi.unifi.it,而在表1中,我们仅报告了涉及工艺的部分。我们只是简单地回忆一下更相关的特征。如果timeout(以毫秒表示)是为一个操作指定的,通过关键字within,我们得到一个布尔表达式,可以测试它以确定操作是否成功:如果在(!x,!2000年内,...成功! 别的...发生超时endif注释以符号#开头,进程的局部变量在进程定义的declare部分中定义。提供标准的基本类型(str、int等)以及X-K要求的典型类型,例如用于局部变量的loc、用于过程变量的process和用于借助于元组空间(例如列表)实现数据结构的ts(即元组空间),所述元组空间可以通过标准元组空间操作来访问逻辑位置是使用locname类型声明。X-K权利要求中的I/O操作被实现为元组空间操作。例如,逻辑位置屏幕实际上连接到输出设备。因此,操作out(5RecProcDefs::=recid formalparams procbody::= recid formalparamsextern|[paramlist ]|[ paramlist]paramlist::=参数列表|id:type |paramlist,paramlist proc body::=declpart begin procenddeclpart::=declpart |decl声明decl::=const id:= expression|locnameid|var idlist : type|decl , declidlist::=id |idlist,idlistproc::=KAction|无|过程|proc ; proc|if expression then proc else proc endif|while expression do proc enddo|if KAction within expression then proc else proc endif|呼叫id|(proc)|( proc)KAction::=out(tuple)@ id |in(tuple)@ id |go@ id|read(tuple)@ id|newloc(id)|newloc(id)tuple::=表达式|Proc|!ID|tuple,tupleprocCall::=id(actuallist)actuallist:: =|表达|Proc |ID |actuallist,actuallist id::=string类型::=int |str |loc|过程|ts |bool表1:X-KLAIM进程语法。屏幕上X-KLAIM 还提供了强大的流动性,通过行动的手段go@l[5],使代理迁移到l,并在l处从迁移之后的指令的KLAIM 和X-KLAIM 琳达式的沟通模式适合于协调异构、分布式和移动应用程序。 联合国分层协调模型允许通信对象的全空间解耦,因为它需要单个接口:元组空间上的操作。这种方法也被称为对象流[2],与方法调用相对,方法调用需要许多接口来执行远程对象提供的操作。Linda异步通信模型,称为生成通信[18],也允许时间解耦,因为它使元组 此外,消息选择是关联的(通过模式匹配)和匿名的,因此只需要知道消息的结构。3Klava包及其架构KLAVA(Java中的KLAIM)是一个Java包,它包含所有用于实现X-KLAIM操作的运行时系统支持的Java类。钾质熔岩可以看作是一个中间件,X-KLAIM 作为一个Java根据KLAIM范式进行编程的框架6Java [3]已被选为X-KLAIM的实现语言因为它为分布式应用程序的编程提供了自然的支持用手机码。事实上,Java提供了架构独立性,即在线可移植性[11],网络编程的类库,同步工具,动态类加载和可定制的安全机制。KLAVA网络由KLAVA网络服务器实现,该服务器通过让网络的一部分KLAVA节点相互通信来协调它们。为了成为KLAVA网络的一部分,节点必须通过指定自己的物理位置登录到网络服务器,通过该位置,它将是唯一的。在这个网络中识别和处理。在本节的其余部分,我们将介绍Klava包的 其中一些类已经可以直接使用(例如Tuple类),而另一些类则必须通过继承和方法重写进行专门化(例如KlavaProcess类)。Tuple类提供了处理元组的方法(创建元组,向元组添加元素,获取元组的元素等)。一个元组可以通过传递一个Vector对象,包含所有的元组元素,到Tuple构造函数,或者首先创建一个空的元组,然后使用方法add(Object o)添加元素来创建。要表达一个形式字段,可以使用Class对象例如,要创建一个具有String类型的形式字段和值为10的String类型的实际字段的元组,可以写Tuple t1 =new Tuple((newString()).getClass(),newString(10));或Tuple t1 =new Tuple(Class.forName(“java.lang.String”),newString(10));Tuple类的另一个方法是match,它获取一个元组作为参数并检查与当前元组的匹配。 例如,前tuple匹配以下内容:Tuple t2 =new Tuple(newString(“Hello”),newString(10)); t2.return(t);match还执行形式的绑定;匹配后,绑定到形式字段的值可以使用Object getItem(int index)方法检索。TupleItem接口也可以用于处理元组字段。它的方法被匹配算法使用:isFormal用于测试元组字段是否是形式字段,setValue用于用实际值更新形式字段,而equals用于测试两个实际字段是否匹配。通常,这些方法的语义必须由实现接口的类指定Klava包提供了一些实现此接口的标准数据类型的类:KString,KBoolean和KVector。假设实现TupleItem的类的对象已经用默认构造函数(即,没有参数)是形式的。没有必要使用getItem来检索formals的值:如果TupleItem的7作为正式字段,字段值通过方法setValue自动更新。当然,由于类型用于匹配,KString永远不会匹配String。类TupleSpace提供了将元组放入元组空间和从元组空间检索元组的方法。特别是,out、in、read操作及其非阻塞版本都是作为该类的方法实现的。在KLAVA中,位置(包括逻辑和物理)只不过是字符串:唯一需要知道的Internet地址是网络服务器运行的主机的地址(和端口)有三 个 类 处 理 局 部 性 。 抽 象 类 Locality 是 基 类 。 其 他 两 个 类LogicalLocality和PhysicalLocality都是从这个基类派生的。一表示局部性的变量应始终声明为Locality因此多态性可以被广泛使用。物理位置不是IP地址,而只是Node对象注册到Net对象的名称。这样我们就有了一个额外的抽象层,节点独立于它的IP地址。所有与位置相关的类都实现了接口TupleItem,因此位置可以在元组中使用Node类实现了KLAVA网的一个节点。Node对象包含一个元组空间,并导出访问该元组空间的方法。这些方法将操作重定向到节点的元组空间的相应方法。 不同之处在于这些方法也具有局部性 作为参数。此外,Node类还提供了方法newloc,它在网络中创建一个新节点并返回其位置,以及方法eval,它产生一个新的进程以供执行。Node对象必须登录网络服务器,因此必须知道后者(主机)的确切IP地址端口号)。它还必须指定自己的物理位置;如果如果所提议的位置已经在网络中,则网络服务器将拒绝注册该节点。两个节点可以在同一台机器上启动,只要它们指定两个不同的物理位置;实际上,物理位置只是一个名称,而不是Internet地址。 每个节点都有两个字段:self(of classLogicalLocality)和here(属于类PhysicalLocality)。 这里表示网 络 中 节点 的 物 理 位 置 Node 的 环 境 可以 通 过 方 法 void addToEnv(String logLoc,String phyLoc)指定。由于网络延迟带宽,网络通信可能非常慢,因此,检索信息可能需要比人们愿意等待的时间更多的时间。 此外,缺少元组可能会阻止进程执行 输入/读取操作。 要解决这些问题,可以使用超时: 如果在操作返回之前过期,则会出现KlavaTimeOutException异常将被抛出。 因此,可以在尝试中处理超时...抓住块 例如,进程可以执行8{}个字符。尝试in(s,loc1,5000); //不超过5秒System.out.println(“我找到了“+ s +“at locality“+ loc 1);...catch(KlavaTimeOutException toe)System.out.println(“TIME OUT!“);...}节点通过消息和流(连接到套接字)进行通信。类NodeMessage实现了在KLAVA系统中交换的消息(消息的内容可以是任何可序列化的Object)。消息还包含发送方和接收方的物理位置类KlavaProcess是一个抽象类,必须派生到cre-ate进程。派生类必须实现在进程执行时调用的execute方法(就像线程的run一样)。一个进程必须在一个节点内执行,这使得它的执行环境[12]。要在新Node中启动一个进程,可以调用addProcess(KlavaProcess P)方法,如下所示:Node n =new Node(.)的情况下;n.开始();newMyProc();KlavaProcess还编译了所有访问元组空间的方法;这些方法透明地调用Node类的homepage方法。甚至进程也可以拥有局部的分配环境。当一个逻辑局部性必须转换为物理局部性,首先使用进程的环境(如果有),然后,如果解释失败,则使用节点的环境。因此,发送一个闭包(如第2节所解释的)包括在设置其环境之后发送一个进程Net类实现了管理KLAIM网的服务器。Net对象跟踪网络中节点的物理位置。它是一个多线程服务器,也可以看作是一个名称注册服务器。 每K个熔岩网络都有一个网络服务器。 当一个网对象从节点接收登录请求时,将生成一个新的Node线程来处理连接。Node Server将是节点的代理在网内,并将处理节点的消息传递这种形式的节点间通信如图2所示,其中节点是一个将节点物理位置映射到Node的表。在这种情况下,通信通过网络服务器间接进行。也允许直接连接:一个节点可以向网络服务器请求另一个节点的IP地址,然后它可以建立直接连接到该节点;在这种情况下,消息被直接传递到接收节点。请注意,在防火墙或网络限制的情况下,只能通过网络服务器访问远程站点:例如, 在默认情况下,applet只能打开到它已下载的计算机的网络连接9净节点2.aB2.bA一团糟B314一团糟一团糟节点B节点A图2:通过节点间通信。从. 如果在后一台计算机上有一个网络服务器在运行,applet仍然能够间接地与所有节点通信,可能的话,applet是K lava网络的一部分。在www.example.com applet上可以找到一个用K lava构建的applet的例子http://music.dsi.unifi.it/klava。4Klava中的代码迁移进程可以与消息一起发送,并在目的地站点执行,但是它们的Java类(即他们的代码)可能是未知的。有必要使这样的代码可在远程主机上执行。与按需方法不同(在需要时,将代码请求到下载代理的服务器),我们更倾向于在分发过程之前收集流程所需的所有代码。这种方法更好地符合移动代理范例:在迁移期间,代理将带来以后执行可能需要的所有信息。此外,我们的选择具有简化断开操作的处理的优点[22]。因此,一个进程必须与它的类二进制代码一起发送,并且与该进程使用的所有对象的类代码一起发送显然,只有用户的代码必须发送定义的类,因为其他代码(例如Java和Klava类)对每个KLAVA应用程序都是通用的。用户定义的类的名称可以通过类内省(Java反射API)来检索就在将进程调度到远程站点之前,调用递归过程用于收集进程在声明数据成员、方法/构造函数返回或传递给方法/构造函数的对象、方法抛出的异常、内部类、类实现的接口、类的基类然后,这些类的字节码将与迁移过程一起发送所有愿意接受远程进程的节点(由于安全问题,节点可能会拒绝接受远 程 进 程 执 行 ) 必 须 有 一 个 自 定 义 类 加 载 器 : Klava 包 中 提 供 的NodeClassLoader10NewsGatherer(item,retLoc)=read(item,!itemVal)@ self。out(itemVal)@ retLoc. 无+read(item,!nextLoc)@ self. eval(NewsGatherer(item,retLoc))@ nextLoc. 无年龄当需要一个类代码时,如果类加载器不能在本地包中找到代码,它将尝试在自己的类二进制数据的本地表中找到它。因此,当从网络接收到一个进程时,在使用它之前,节点必须添加类数据(与进程一起接收) 到它的类加载器出于安全考虑,Java不允许动态检查字节码堆栈;这使得不可能保存执行状态供以后使用。出于这个原因,K熔岩只能允许必须在迁移后重新启动,而X-K声称,通过依赖源级别transformation [5]也通过go@l操作提供了强大的移动性(the移动代理从迁移之后的点自动恢复执行)。关于流动形式的更详细的描述见[13,20]。从网上下载代码使执行机器暴露于安全风险,因为该代码可能执行可能损坏系统或其他执行进程的危险操作。Klava提供了一个KlavaSecurityManager,如果由节点激活,则不允许亲-cesses,从网络下载,或由远程节点发送,以执行opera-系统资源(如文件和系统属性)。我们将实现新的安全机制,利用新的Java安全模型[19]。5流动性的一个例子:新闻收集者在本节中,我们将展示如何使用我们的框架编写一个新闻采集器,它依赖于移动代理来检索远程站点上的信息。特别地,我们将在X-KLAIM和KLAVA中实现这个示例。我们假设一些数据分布在K熔岩网的节点上,每个节点要么包含我们正在搜索的信息,要么包含网络中下一个要访问的节点的位置。这个例子取自[14],在KLAIM中可以指定1,如清单1所示。清单1:KLAIM中指定的新闻收集器。代理NewsGatherer尝试读取两个可能的元组之一:第一个元组包含我们正在搜索的信息,第二个元组包含要访问的下一个节点的位置在第一种情况下,代理人将结果1P1+P2同时产生进程P1和P2,但只有一个进程会继续执行。11ngS1“价值”ngS3S2(“item”,ng(“项目”,s2)(“项目”,第3条)应用recNewsGatherer[ item:str,retLoc:loc]宣布varitemVal:str;varnextLoc:locbegin如果读取(项,!itemVal)@selfwithin2000then out(itemVal)@retLoc其他read(item,!self);eval(NewsGatherer(item,retLoc))@nextLoc恩迪夫恩德在另一种情况下,它只是将自己生成到下一个节点(图3)。图3:新闻采集器示例(ng是新闻采集器代理)。中的实现X-KLAIM 据报道,在K熔岩中,在清单2和3中,如果查询的结果是locality,则会生成一个新实例进程NewsGatherer通过eval远程生成。我们使用超时来测试包含信息的元组的存在:如果在两秒内没有找到,我们将检索下一个要访问的节点的位置。请注意,同样在KLAVA中,为了在远程站点上生成一个新进程,只需要eval调用:下划线系统将负责通过网络序列化进程以及代码和它将使用的所有类的代码及其字段的值。这两个实现非常相似,实际上X-KLAIM编译器生成的代码与清单3所示的代码没有太大区别清单2:X-KLAIM中的新闻收集器的实现。在X-KCLAIM中,可以利用强移动性,因此可以使用go@l操作实现相同的示例,如清单4所示12recNewsGatherer[ item:str,retLoc:loc]宣布varitemVal:str;var nextLoc :loc;varfound :bool开始found:=false;while notfounddo如果读取(项,!itemVal)@self在 2000内然后out(itemVal)@retLoc;returntrue;其他read(item,!self);go@nextLoc恩迪夫恩多端classNewsGathererextends KlavaProcess{protectedKStringitemVal ;protected KStringitem ;protected LocalityretLoc ;publicint findDuplicate(int findDuplicate){this.item =项目;this.retLoc = retLoc;}public voidrun(){int n =new String();尝试{ read(itemVal,self,2000);int findDuplicate();}public voidrun(){System. out. println();read(item,nextLoc,self);eval(newNewsGatherer(item,retLoc),NextLoc);}}}清单3:KLAVA中的新闻收集器的实现。清单4:利用强移动性的X-KLAIM6结论和今后的工作我们介绍了KLAIM 框架. 底层编程模型实现空间解耦、时间解耦和目的地解耦,异步、关联和匿名通信。 我们相信,K LAIM框架是适合编程分布式应用程序,移动代理,更一般的,移动代码。一个有趣的旋转13我们的方法是,因为它是基于KLAIM形式模型,系统的一些属性可以被形式化地建立。事实上,一个模态逻辑,KLAIM 正在研究[17],一个系统可以自动证明KLAIM系统属性正在开发中。对原始版本进行了多次扩展KLAIM 模型的计算。在[15,16]中,KLAIM被扩展为基于能力的类型为表达和使用控制对资源和数据的访问的策略提供直接支持的系统。在[8]中,KLAIM得到了丰富,以便将底层的网络模型转换为分层模型,从而允许对结构化网络进行建模,并且在[9,10]中,节点连接是显式的。我们计划在不久的将来实现所有这些新功能引用[1] Acharya , A. , M. Ranganathan 和 J.Saltz , Sumatra : A Language forResource-aware Mobile Programs,in:Vitek and Tschudin [24],pp.111-130[2] Arnold,K.,E. Freeman和S.Hupfer,[3] Arnold,K.,J. Gosling和D.Holmes,[4] 贝蒂尼湖, 信息系统学院 di Firenze(1998).[5] 贝蒂尼湖和R.De Nicola,将强移动性转换为弱移动性,在:第五届IEEEInt.Conf.on Mobile Agents(MA 2001)会议论文集,2001年,即将出版。[6] 贝蒂尼湖,R. De Nicola,G.Ferrari和R.Pugliese,交互式移动代理在X-K索赔,在:P. Ciancarini和R。Tolksdorf,editors,Proc. of the 7th Int. IEEEWorkshops on Enabling Technologies:Infrastructure for Collaborative Enterprises(WETICE)(1998),pp. 110-115[7] 贝蒂尼湖,R. De Nicola和R. Pugliese,KLAVA:A JavaFrameworkforDistributed and Mobile Applications.报告,迪普。 Sistemi e Informatica,Univ. di Firenze(2001),available athttp://music.dsi.unifi.it/papers.html.[8] 贝蒂尼湖,M. Loreti和R.Pugliese,Structured Nets in K LAIM,in:Proc.ACM SAC 2000,关于协调模型,语言和应用程序的特别跟踪(2000年),pp.174-180。[9] 贝蒂尼湖,M. Loreti和R.李文,动态演化网络中节点连通性的建模,载于:国际并行与协调研讨会论文集,北京,2001。14[10] 贝 蒂尼 湖,M. Loreti和 R. Pugliese,An Infrastructure Language for OpenNets,in:Proc. of ACM SAC 2002,Special Track on Coordination Models,Languages and Applications,2002,to appear.[11] 卡尔代利湖,Mobile computation,in:Vitek and Tschudin [24],pp.三比六[12] Carzaniga,A.,G. Picco和G. Vigna,使用移动代码范例设计分布式应用程序 , 在 : R 。 Taylor , editor , Proc. of the 19th Int. Conf. on SoftwareEngineering(ICSE22-33.[13] Cugola,G.,C.盖齐湾Picco和G. Vigna,分析移动代码语言,在:Vitek和Tschudin [24]。[14] 德尼古拉河,G. Ferrari和R.Pugliese,KLAIM:一种用于Agent Interaction and Mobility,IEEE Transactions on Software Engineering24(1998),pp.315-330[15] 德尼古拉河,G. Ferrari和R. Pugliese,作为访问策略规范的类型,在:J.Vitek和C. Jensen,editors,Secure Internet Programming:Security Issuesfor Distributed and Mobile Objects,number 1603 in LNCS(1999),pp.117-146[16] 德尼古拉河,G. 费拉里河,巴西-地Pugliese和B.Venneri,Types for AccessControl,Theoretical Computer Science240(2000),pp.215-254[17] 德尼科拉河和M.Loreti,A Modal Logic forKLAIM,in:T.罗斯,编辑,Proc of Algesthetics Methodology and Software Technology,8th Int. Conf. AMAST2000,number 1816 in LNCS(2000),pp. 339-354.[18] Gelernter,D.,生成式通信,Linda,ACM Transactions on ProgrammingLanguages and Systems7(1985),pp. 80比112[19] 贡湖,“Inside Java 2 platform security: architecture, API design, andimplementation,” Addison-Wesley, Reading, MA, USA,[20] Hohlfeld,M.和B.Yee,How to Migrate Agents(1998),可在http://www.cs.ucsd.edu/www.example.com[21] Lange,D.和M.Oshima,[22] 帕克A.和p.李国忠,无线通讯系统之研究,国立成功大学无线通讯研究所硕士论文,民国98年[23] 索恩,T.,Programming Languages for Mobile Code,ACM Computing Surveys29(1997),pp. 213-239,也是技术报告1083,雷恩大学IRISA。[24] Vitek,J.和C. Tschudin,编辑,[25] 怀特,J。E、Mobile Agents,in:J.Bradshaw,编辑,Software Agents(1996)。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 电力电子系统建模与控制入门
- SQL数据库基础入门:发展历程与关键概念
- DC/DC变换器动态建模与控制方法解析
- 市***专有云IaaS服务:云主机与数据库解决方案
- 紫鸟数据魔方:跨境电商选品神器,助力爆款打造
- 电力电子技术:DC-DC变换器动态模型与控制
- 视觉与实用并重:跨境电商产品开发的六重价值策略
- VB.NET三层架构下的数据库应用程序开发
- 跨境电商产品开发:关键词策略与用户痛点挖掘
- VC-MFC数据库编程技巧与实现
- 亚马逊新品开发策略:选品与市场研究
- 数据库基础知识:从数据到Visual FoxPro应用
- 计算机专业实习经验与项目总结
- Sparkle家族轻量级加密与哈希:提升IoT设备数据安全性
- SQL数据库期末考试精选题与答案解析
- H3C规模数据融合:技术探讨与应用案例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功