用RMI开发基于Java的企业分布式应用

摘 要 由于Java具有跨平台、代码可移植性、安全高效等广泛而强大的功能,因而在开发网络分布式应用的时候,可以用它自身的机制实现分布式计算,一种基于Java的远程方法调用(RMI)为我们开发企业分布式应用提供了行之有效的解决方案。

关键词 Java RMI 企业分布式应用

概述

随着电力企业信息化建设的不断深入和发展,企业内部和企业与企业之间对信息、对数据的交换量大大增加,这些信息与数据越来越需要在不同的计算机网络间传送和交流。同时,由于各单位、各部门之间的现存的计算机网络硬件设备与操作系统千差万别,应用水平也参差不齐,因此,开发出跨平台、可移植、高效安全的网络分布式应用来服务于电力企业,就显得尤为重要。

在当今的编程术语里,分布式计算已经成为很常见的词,它将企业的业务数据和程序分布在网络的不同物理位置上,通过调动网络上多台计算机的处理能力,发挥远程调用数据的功能。

远程方法调用(Remote Method Invocation ,RMI),可以在不同的Java虚拟机(JVM)之间实现对象与对象的通信。JVM可以位于相同或不同计算机上,在多个JVM中,一个JVM可以调用存储在其它JVM的对象的方法。

本文主要介绍RMI的特点,分析应用RMI进行企业分布式计算的原理,以及利用RMI实现基于Java的企业分布式应用的具体步骤。

远程方法调用(RMI)的特点

1、TCP编程的缺点

由于Java编程语言设计之初就是面向对象和支持网络的,因此,基于对象的RMI机制已经内置在Java平台中。

我们经常会在网络开发中使用TCP/IP编程,这样,自然而然地就会涉及到Socket(套接字)编程。但是,使用Socket编程需要大量重复编码,在复杂分布式操作时显得非常麻烦,而且易于出错。因此,如何快速、高效、安全、可扩展地进行网络分布式计算,是开发者们一贯追求和倡导的主题。直到RMI的出现,这种繁杂、低效的开发情况才有很大改观。

2、RMI编程的特点

当我们利用对象序列化在网络上分配对象时,RMI提供了非Java平台无法匹敌的独特而强大的分布式计算模型,RMI主要有以下特点:

客户机可以向本地方法一样调用远程服务器上的方法;

可以根据接口指定客户机/服务器编程合约;

可以从服务器对象缺省二进制类文件,自动生成调动/反调动代码;

将Java编程模型扩展到机器边界(和Java虚拟机(JVM)边界之外),不需要任何特殊语法;

还可以和一个远程方法调用中的数据同时传输行为(代码)。

尽管RMI不是唯一的企业级远程对象访问方案,但它却是最容易实现的。

3、RMI与CORBA

作为分布式应用程序框架的规范,COBRA首当其冲,它是由对象管理组织(OMG)开发的。与CORBA不同的是,CORBA能够利用不同编程语言(例如C/C++、Basic等)开发实现分布式应用,而RMI是一种纯Java解决方案。在RMI中,程序的所有部分都由Java语言编写,这样,开发出来的程序完全符合Java规范,便于实现跨平台访问、扩展和移植。按照笔者所在西北电力建设集团公司的情况看,服务器操作系统主要有Linux和Windows2000 Server,分别存在于公司和部门当中,它们是不同的系统平台;同时,公司下属各个工程项目部又距离很远,近的几十公里,远则达到上千公里甚至位于国外,因此跨平台和远程访问这两大功能在开发企业应用系统时就必须考虑,而RMI恰恰能够用它的自身特点来满足编程需要。

时间: 2024-10-01 20:48:20

用RMI开发基于Java的企业分布式应用的相关文章

使用SWT开发基于Java的图形用户界面

SWT(Standard Widget Toolkit)是IBM推出的"基于java"的图形界面开发库,我之所以说它是"基于java"的意思是程序员编写代码的时候是使用java语言,事实上SWT的底层实现是C语言完成的.但是这些对程序员是透明的. 我们使用SWT开发GUI程序的时候,直接用SWT API来写.事实上很多java的代码是通过JNI去掉用C代码来实现的.针对不同的平台每个类有不同的实现方式,这篇文章的目的不在于讲述SWT的设计原理,如果你对这些感兴趣的话

用Axis开发基于Java的Web服务

概述 本文介绍了一个比较简单实用的基于Java的SOAP引擎--Apache组织推出的 Axis--的安装.配置和应用开发方法,希望对有兴趣做基于Java的Web Services应用开发的朋友有所帮助. Axis简介 Axis是Apache组织推出的SOAP引擎,Axis项目是Apache组织著名的SOAP项目 的后继项目,目前最新版本是采用Java开发的1.1版本,C++的版本正在开发之中 .Axis v1.1软件包可以从http://ws.apache.org/axis/dist/1_1/

用RMI实现基于Java的分布式计算

Java 2 Enterprise Edition(J2EE)远程方法调用(Remote Method Invocation,RMI)框架允许你创建透明的.分布式的服务和应用程序.基于RMI的应用程序由Java对象构成,这些对象相互调用,同时忽略对方的位置.换言之,一个Java对象可调用另一个虚拟机上的某个Java对象的方法,整个过程和调用同一个虚拟机上的某个Java对象的方法无异.驻留在不同虚拟机上的对象为了相互获得引用,可以使用RMI的查找服务,或者将对象引用作为方法调用的一个参数或者返回值

开发基于Java的图形用户界面_JSP编程

SWT(Standard Widget Toolkit)是IBM推出的"基于java"的图形界面开发库我之所以说它是"基于java"的意思是程序员编写代码的时候是使用java语言事实上SWT的底层实现是C语言完成的.但是这些对程序员是透明的. 我们使用SWT开发GUI程序的时候直接用SWT API来写.事实上很多java的代码是通过JNI去掉用C代码来实现的.针对不同的平台每个类有不同的实现方式这篇文章的目的不在于讲述SWT的设计原理如果你对这些感兴趣的话可以参考h

开发基于Java的图形用户界面

SWT(Standard Widget Toolkit)是IBM推出的"基于java"的图形界面开发库,我之所以说它是"基于java"的意思是程序员编写代码的时候是使用java语言,事实上SWT的底层实现是C语言完成的.但是这些对程序员是透明的. 我们使用SWT开发GUI程序的时候,直接用SWT API来写.事实上很多java的代码是通过JNI去掉用C代码来实现的.针对不同的平台每个类有不同的实现方式,这篇文章的目的不在于讲述SWT的设计原理,如果你对这些感兴趣的话

arcgis 开发基于java oracle数据库

问题描述 java读取sde空间数据库在地图上展示有谁知道怎么实现吗 解决方案 解决方案二:这个发到java版问问吧,个人认为这本身和oracle关系不大解决方案三:引用1楼bw555的回复: 这个发到java版问问吧,个人认为这本身和oracle关系不大 谢谢喽

基于java 的OA 工作流

问题描述 寻求基于java的OA工作流 解决方案 解决方案二:用jbpm解决方案三:可以用泛微的工作流,个人觉得比较好.解决方案四:Willow由HuihooPower开发详细可到其中文主页查看.更多Willow信息OpenWFEOpenWFE是一个开放源码的Java工作流引擎.它是一个完整的业务处理管理套件:一个引擎,一个工作列表,一个Web界面和一个反应器(存放自动代理).它可以可以跟你的程序很好的给合.更多OpenWFE信息jBpmjBpm是一个灵活可扩展的工作流管理系统.作为jBpm运行

基于微服务的分布式应用开发

本文讲的是基于微服务的分布式应用开发[编者的话]本文是有关使用微服务开发分布式应用的经验之谈,包括微服务的优势以及Spring Cloud框架的简要介绍等. 微服务架构设计模式对于单块设计模式而言有很多优点.核心思想就是将单个巨大的应用划分成互联的不同应用.与单块应用类似,每个微服务都有其自己的层级架构. 使用下列的模式,微服务可以轻易取得如下优点: 可扩展性. 一款典型的应用会使用3个方向的扩展.X轴扩展是指横向扩展应用,Y轴扩展是指划分不同的应用功能,Z轴扩展是指对于数据的分区(partio

sae-新浪云支持maven吗 基于springmvc mybatis开发的java项目

问题描述 新浪云支持maven吗 基于springmvc mybatis开发的java项目 4C 用的ssm框架 本地测试很正常 部署到新浪云 点击左侧菜单右边的框架内容不显示 解决方案 Mybatis开发--SpringMVC-Mybatis-Maven项目整合(四)