Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaRMI和JMS之间的区别是什么?_Java_Jakarta Ee_Jms_Rmi_Distributed System - Fatal编程技术网

JavaRMI和JMS之间的区别是什么?

JavaRMI和JMS之间的区别是什么?,java,jakarta-ee,jms,rmi,distributed-system,Java,Jakarta Ee,Jms,Rmi,Distributed System,在用Java设计分布式应用程序时,似乎有几种技术可以解决同样的问题。我已经简单地阅读了和,但很难真正看到区别。JavaRMI似乎比JMS更紧密地耦合,因为JMS使用异步通信,但在其他方面我看不到任何大的区别 他们之间有什么区别 其中一个比另一个新吗 哪一种在企业中更常见/流行 他们之间有什么优势 什么时候一个优先于另一个 它们在实施的难度上有很大差异吗 我还认为Web服务和CORBA解决了同样的问题。你无法真正比较两者,苹果和橙子 RMI是远程过程调用(RPC)的一种形式。它是一个轻量级的、

在用Java设计分布式应用程序时,似乎有几种技术可以解决同样的问题。我已经简单地阅读了和,但很难真正看到区别。JavaRMI似乎比JMS更紧密地耦合,因为JMS使用异步通信,但在其他方面我看不到任何大的区别

  • 他们之间有什么区别
  • 其中一个比另一个新吗
  • 哪一种在企业中更常见/流行
  • 他们之间有什么优势
  • 什么时候一个优先于另一个
  • 它们在实施的难度上有很大差异吗

我还认为Web服务和CORBA解决了同样的问题。

你无法真正比较两者,苹果和橙子

RMI是远程过程调用(RPC)的一种形式。它是一个轻量级的、特定于Java的API,期望调用方和接收方在通信时可用

JMS是一个可靠的消息传递API。JMS提供程序适用于各种消息传递系统。即使其中一方不可用(如果提供程序实现),也可以传递消息。我熟悉的两个是TIBCO和IBM MQ

RMI不处理保证交付或异步响应,JMS可能会,这取决于提供者

JMS在可用性方面允许松散耦合。 “Web服务”允许协议和数据的松散耦合,但在可靠的消息传递方式方面没有做太多的规定,尽管有些实现包括这一点(Windows Communication Foundation),有些则没有


编辑:根据评论进行修订。当我在2010年写下这个答案时,我的经验实际上只有一个JMS提供程序,我并不知道没有默认的JMS提供程序。

您已经知道方法调用。如果要在其上调用方法的对象位于另一台计算机上,该怎么办?您可以使用RMI将呼叫从一台计算机(客户端)发送到另一台计算机(服务器)。客户端将等待(或“阻塞”),直到结果从服务器返回。这称为同步操作

JMS不同:它允许一台计算机向另一台计算机发送消息,就像电子邮件一样。第一个不必等待响应:它可以继续做它想做的任何工作。甚至可能没有回应。这两个计算机系统不一定完全同步工作,因此称之为异步

思考差异的另一种方式:RMI就像打电话,JMS就像发送短信

RMI比JMS稍早一点,但这并不重要。这两个概念比java要古老得多

在复杂性上没有太大的区别。我认为你应该试着对每一个都做一个教程。及


如果您从零开始一个项目,并且不确定使用哪一个,那么同步/异步问题可能是最佳决策因素。如果您正在使用现有系统,最好不要引入太多新技术。所以如果他们已经在用了,那么我建议最好还是坚持这一点。

这些听起来像是面试问题,因为你似乎把两个听起来相似但对任何理解它们的人来说都应该被认为是非常不同的术语放在了一起。它们不会“解决同一类问题”。JMS a既不是一个可靠的消息传递子系统,也不是一个可靠的消息传递子系统MQSeries的替代品。这是一个可以与MQSeries以及其他许多消息传递系统进行通信的消息传递API。@mrjoltcola:您好,您能看一下吗