`

Java RMI与RPC,JMS的比较

 
阅读更多

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 APIJMSRMI的区别在于,采用JMS服务,对象是在物理上被异步从网络的某个JVM上直接移动到另一个JVM上。而RMI对象是绑定在本地JVM中,只有函数参数和返回值是通过网络传送的。

 

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

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

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

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

分享到:
评论

相关推荐

    分布式环境下Java RMI与RPC,JMS,CORBA,DCOM的比较

    ### 分布式环境下Java RMI与RPC,JMS,CORBA,DCOM的比较 在分布式计算领域,各种远程通信协议和技术被广泛采用以实现不同系统间的交互与数据共享。本文将详细介绍Java RMI(Remote Method Invocation)、RPC...

    rmi和rpc Demo

    - **RMI**常用于Java应用间的通信,例如EJB(Enterprise JavaBeans)或JMS(Java Message Service)。 - **RPC**广泛应用于各种分布式系统,如Google的gRPC、Apache Thrift、Hadoop的HDFS和MapReduce等。 在开发...

    Java术语详解(JMS、RPC、Ajax、SOAP、WSDL、JPA、ORM、mvc和JNDI)

    在Java中,有多种实现RPC的框架,如RMI(Java Remote Method Invocation)和gRPC,它们简化了分布式系统中的跨网络通信。 3. **Ajax(Asynchronous JavaScript and XML)** Ajax不是一种单一的技术,而是一种使用...

    rmi远程接口调用

    RMI(Remote Method ...但是,RMI也存在一些限制,如不支持多线程调用、性能问题以及安全性考虑等,因此在现代Java开发中,通常会结合其他技术,如JMS、JAX-RPC或Web服务(RESTful API)来实现更复杂的分布式系统。

    Spring 实现远程访问详解——rmi

    1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...

    采用RMI分布式方式实现的java例子

    Java RMI(Remote Method Invocation,远程方法调用)是一种用于构建分布式系统的技术,它允许Java对象在不同的JVM(Java虚拟机)之间进行交互。在这个例子中,我们看到的是一个利用RMI实现实时数据同步的Java应用。...

    rmi-demo.zip

    在IT行业中,远程方法调用(Remote Method Invocation,简称RMI)是一种强大的...同时,RMI也可以与Java的其他特性,如EJB(Enterprise JavaBeans)、JMS(Java Message Service)等相结合,构建更复杂的分布式系统。

    RMI 远程方法调用.zip

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于在不同Java虚拟机之间进行通信的技术,主要用于构建分布式系统。它允许一个Java对象调用在另一个网络上运行的Java对象的方法,就像调用...

    java远程通讯技术及简单实现.docx

    在Java领域,有多种技术可以实现远程通讯,包括RMI(Remote Method Invocation)、XML-RPC、SOAP、JMS等。本文将重点介绍RMI及其在Java中的实现。 1. **远程服务基本原理** - **底层协议**:网络通信基于传输协议...

    Java远程通讯可选技术及原理.docx

    XML-RPC与RMI类似,但使用XML作为数据交换格式,因此支持跨语言通信。在XML-RPC中,请求信息被封装成XML文档,然后转化为流,通过网络协议(如HTTP)传输。服务器端解析XML,执行相应操作,并以XML格式返回结果。 *...

    distributed-java, Distributed Java.《分布式 Java》.zip

    2. **JMS(Java消息服务)**: JMS提供了一种标准的API,用于在Java应用程序之间发送和接收消息。在分布式环境中,它通常用于解耦组件,提高系统的可扩展性和容错性。 3. **EJB(企业级Java Bean)**: EJB是Java EE...

    Java通信方式总结例程

    - Dubbo是阿里巴巴开源的高性能RPC框架,支持服务注册与发现、负载均衡、故障切换等功能,广泛应用于大型分布式系统。 - gRPC是Google推出的一种现代的RPC框架,基于HTTP/2协议,使用ProtoBuf进行序列化,具有高...

    Java 分布式应用程序设计

    JDBC是Java访问数据库的标准API,它允许Java应用程序与各种数据库进行交互。在分布式环境中,JDBC可以用于在多个节点间共享和同步数据,实现数据的分布式存储和查询。 五、JTA(Java Transaction API) JTA是Java...

    Java远程通讯技术及原理分析共18页.pdf.zip

    除了RMI,Java还提供了其他远程通讯技术,如Java Naming and Directory Interface (JNDI)、Java Message Service (JMS) 和Java Remote Procedure Call (Java RPC)等。这些技术各有特点,适用于不同的场景。例如,JMS...

    Java远程技术.pdf

    在Java中,这种远程通信被称作远程过程调用(Remote Procedure Call, RPC)。以下是Java远程技术的一些关键知识点: 1. 远程方法调用(RMI):RMI是Java提供的分布式对象通信模型,它允许一个虚拟机上的对象通过...

    java的28个学习目标

    熟悉XML处理API,如JAXP(Java API for XML Processing)、JDOM、DOM4J等,掌握Java与Web服务的交互技术,包括JAX-RPC、SAAJ、JAXB、JAXM、JAXR等。 ### 13. 依赖注入与控制反转 学习常用的应用框架,如Spring、...

    _基于Java的中间件的设计与实现.doc

    基于Java的中间件设计与实现主要关注如何利用Java语言来构建这样的连接层,以实现跨平台、跨应用的互操作性。 Java作为一种多平台支持的编程语言,是开发中间件的理想选择。Java中间件通常利用Java的网络通信能力,...

    Java【分布式】学习笔记01分布式Java应用

    2. **JMS(Java Message Service)**:Java消息服务定义了一个与平台无关的API,用于在两个应用程序之间发送消息。 3. **Spring Cloud**:一套基于Spring Boot的微服务开发工具包,提供了构建分布式系统所需的各种...

Global site tag (gtag.js) - Google Analytics