首页 > 编程语言 >Java RMI与RPC,JMS的比较

Java RMI与RPC,JMS的比较

时间:2023-04-17 20:35:50浏览次数:41  
标签:CORBA Java 对象 JMS RPC RMI 远程



Java RMI与RPC,JMS的比较




远程对象方法调用并不是新概念,远程过程调用(RPC)已经使用很多年了。远程过程调用被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。即RPC支持多种语言,而RMI只支持Java写的应用程序。[1]

另外RMI调用远程对象方法,允许方法返回Java对象以及基本数据类型。而RPC不支持对象的概念,传送到RPC服务的消息由外部数据表示(External Data Representation, XDR)语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。只有由XDR定义的数据类型才能被传递,RPC不允许传递对象。可以说RMI是面向对象方式的Java RPC。

Java消息服务( Java Messaging Service, JMS )是一种允许应用程序创建、发送、接受和读取消息的Java API。JMS与RMI的区别在于,采用JMS服务,对象是在物理上被异步从网络的某个JVM上直接移动到另一个JVM上。而RMI对象是绑定在本地JVM中,只有函数参数和返回值是通过网络传送的。

 

CORBA是90年代初有OMG组织提出的一个分布式互操作标准,属于语言中立的。而RMI直接把分布式对象模型嵌入到Java语言的内部,使得Java程序员可以自然的编写分布式程序,不必离开Java环境,或者涉及CORBA IDL以及Java到CORBA的类型转换。然而RMI不遵守CORBA标准,基本上是Java-to-Java技术,难以实现与其他语言编写的对象之间的互操作。[1]

RMI 和CORBA 常被视为相互竞争的技术,因为两者都提供对远程分布式对象的透明访问。但这两种技术实际上是相互补充的,一者的长处正好可以弥补另一者的短处。RMI 和CORBA 的结合产生了RMI-IIOP,RMI-IIOP 是企业服务器端Java 开发的基础。

1997 年,IBM 和Sun Microsystems启动了一项旨在促进Java 作为企业开发技术的发展的合作计划。两家公司特别着力于如何将Java 用作服务器端语言,生成可以结合进现有体系结构的企业级代码。所需要的就是一种远程传输技术,它兼有Java 的RMI(Remote Method Invocation,远程方法调用)较少的资源占用量和更成熟的CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)技术的健壮性。出于这一需要,RMI-IIOP问世了,它帮助将Java 语言推向了目前服务器端企业开发的主流语言的领先地位。

DCOM是从COM改造过来的,COM这一技术部分是作为规范,定义了对象实现的二进制标准,用于单机上应用之间的通信,对象实现与使用的语言无关。DCOM是COM的分布式扩展,在DCE RPC之上构造对象的远程过程调用层支持对远程对象的访问。一个DCOM对象是支持一个或多个接口的组件。DCOM对象不支持对象ID,因此,客户程序不能与某个特定的对象发生联系。


标签:CORBA,Java,对象,JMS,RPC,RMI,远程
From: https://blog.51cto.com/u_2198048/6196304

相关文章

  • rpc rmi区别
    1.RMI和RPC之间最主要的区别在于方法是如何别调用的。在RMI中,远程接口使每个远程方法都具有方法签名。如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口上,那么这个新方法就不能被RMI客户方所调用。在RPC中,当一个请求到达RPC服务器时,这个请求就包含了一个参......
  • 理解Android系统的进程间通信原理(一)----RPC中的代理模式
    理解Android系统的进程间通信原理(一)----RPC中的代理模式Android系统中的进程间通信是通过一个轻量级的RPC(RemoteProcedureCall远程进程调用)和AIDL(AndroidInterfaceDefininationLanguage)规范来生成两个进程之间可以相互访问的代码。其中RPC是以接口方式来实现,客户端与被......
  • gRPC入门
    1.gRPC简介gRPC是一种高性能、开源和通用的远程过程调用(RPC)框架,由Google开源并维护。它使用ProtocolBuffers(protobuf)作为接口定义语言(IDL),提供跨平台、跨语言的RPC调用支持。gRPC具有以下几个特点:高性能:使用HTTP/2协议,支持多路复用和流控制等特性,能够在客户端和服务器之间高效......
  • 从 HTTP 到 gRPC:APISIX 中 etcd 操作的迁移之路
    罗泽轩,API7.ai 技术专家/技术工程师,ApacheAPISIXPMC成员。原文链接ApacheAPISIX现有基于HTTP的etcd操作的局限性etcd在2.x版本的时候,对外暴露的是HTTP1(以下简称HTTP)的接口。etcd升级到3.x版本后,其对外API的协议从普通的HTTP切换到了gRPC。为了兼顾......
  • java反序列化(四) RMI反序列化
    RMIRMI(RemoteMethodInvocation),为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。注册中心是一个特殊的服务端,一般与服务端在同一主机上......
  • 腾讯云服务 运行Docker 命令 报错 -bash: /usr/bin/docker: Permission denied
    一、报错信息-bash:/usr/bin/docker:Permissiondenied二、解决方案网上的解决方案https://blog.csdn.net/Bingorl/article/details/123349837我试了但是无效最后究极解决方案:重置腾讯云服务重装Docker  SUCCESS!!!!!!!!!!!!!!!!!......
  • 给deepin-terminal提交的pr
    hello,[email protected]以下是给deepin-teminal提交的pr:终端增加透明与非透明切换快捷键[https://github.com/linuxdeepin/deepin-terminal/pull/268]因需求面问题,未通过终端增加加粗下划线光标设置选项[https://github.com/linuxdeepin/deepin-termina......
  • PdfSharpCore是MIT开源协议
    PdfSharpCore是MIT开源协议,不过他依赖Sixlabors.Fonts和Sixlabors.ImageSharp库,Sixlabors已经修改了协议,https://sixlabors.com/pricing/上面的说明是:IfyouareconsuminganySixLaborslibrariesasaDirectPackageDependencyforusageinClosedSourcesoftwareinthe......
  • GnuTLS recv error (-110): The TLS connection was non-properly terminated问题的解
    1. sudoapt-getupdate2.sudoapt-getinstallbuild-essentialfakerootdpkg-dev3.sudoapt-getbuild-depgit4.mkdir~/git-openssl5.cd~/git-openssl6apt-getsourcegit ......
  • platformio+esp32 编译时下载PACKAGES错误 Tool Manager ERROR
    如图,readtimeoutToolManegerl:Lookingforanothermirror.....  编译时一共需要三个[email protected](2.04)[email protected](3.0.0)[email protected]+2021r2-patch3都存在下载时超时,一直找寻......