仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 497|回复: 12
打印 上一主题 下一主题

[学习教程] 了解下JAVA的用RMI完成基于Java的散布式盘算

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:19:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。
Java2EnterpriseEdition(J2EE)远程办法挪用(RemoteMethodInvocation,RMI)框架同意你创立通明的、散布式的服务和使用程序。基于RMI的使用程序由Java对象组成,这些对象互相挪用,同时疏忽对方的地位。换言之,一个Java对象可挪用另外一个假造机上的某个Java对象的办法,全部历程和挪用统一个假造机上的某个Java对象的办法无异。驻留在分歧假造机上的对象为了互相取得援用,可使用RMI的查找服务,大概将对象援用作为办法挪用的一个参数大概前往值来吸收。参数和前往值借助Java的对象序列化机制由RMI来举行封送。
远程对象和接口
Java供应了一个完整限制称号为java.rmi.Remote的接口。任何对象要想介入和另外一个Java对象的远程会话,就必需间接或直接地完成该接口。特别要注重的是,任何由java.rmi.Remote接口来标识的对象都表示着它的办法可从其他任何假造机举行挪用。完成了java.rmi.Remote接口的对象一般称为“远程对象”,必需接纳以下体例来声明它的办法:
每一个撑持远程挪用的办法都必需在其throws子句中声明java.rmi.RemoteException。
关于一个可远程挪用的办法,它的每一个非基础(nonprimitive)参数大概前往值都必需间接或直接地声明为完成了java.io.Serializable接口。
除完成java.rmi.Remote接口和准确声明任何远程办法以外,远程对象必需供应一个无参数的机关函数,它能激发一个java.rmi.RemoteException非常。这就包管了对象可基于一种序列化形态来远程机关。
远程对象必需导出,以吸收传进的远程办法挪用。为此,你一般必要扩大java.rmi.server.UnicastRemoteObject大概java.rmi.activation.Activatable。经由过程对个中任何一个类举行扩大,远程对象便可在创立时主动导出。
以下接口界说展现了java.rmi.Remote接口最典范的用法:
importjava.rmi.Remote;
importjava.rmi.RemoteException;
publicinterfaceTimeKeeperextendsRemote
{
publicStringcurrentDate()throwsRemoteException;
publicStringcurrentTime()throwsRemoteException;
}
因为String类声明为完成了java.io.Serializable接口,以是String是远程办法的无效前往范例。
以下代码展现了怎样完成TimeKeeper接口,以便界说一个无效的远程对象:
importjava.rmi.RemoteException;
importjava.util.Calendar;
importjava.util.GregorianCalendar;
publicclassTimeKeeperImplimplementsTimeKeeper
{
publicTimeKeeperImpl()
throwsRemoteException
{
}
publicStringcurrentDate()throwsRemoteException
{
Calendarcal=newGregorianCalendar();
StringretVal=(cal.get(Calendar.MONTH)+"/"+
cal.get(Calendar.DAY_OF_MONTH)+"/"+
cal.get(Calendar.YEAR));
returnretVal;
}
publicStringcurrentTime()throwsRemoteException
{
Calendarcal=newGregorianCalendar();
StringretVal=(cal.get(Calendar.HOUR_OF_DAY)+":"+
cal.get(Calendar.MINUTE)+":"+
cal.get(Calendar.SECOND));
returnretVal;
}
}

大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-20 20:28:23 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
简单生活 该用户已被删除
板凳
发表于 2015-1-21 07:40:14 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
兰色精灵 该用户已被删除
地板
发表于 2015-1-24 21:05:25 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
5#
发表于 2015-1-28 07:55:24 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
小魔女 该用户已被删除
6#
发表于 2015-2-4 16:06:29 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
透明 该用户已被删除
7#
发表于 2015-2-7 17:01:27 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
乐观 该用户已被删除
8#
发表于 2015-2-8 08:57:06 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
爱飞 该用户已被删除
9#
发表于 2015-2-25 06:47:11 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
变相怪杰 该用户已被删除
10#
 楼主| 发表于 2015-2-27 07:47:18 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
不帅 该用户已被删除
11#
发表于 2015-3-8 23:46:29 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
再现理想 该用户已被删除
12#
发表于 2015-3-11 15:56:41 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
老尸 该用户已被删除
13#
发表于 2015-3-26 19:24:58 | 只看该作者
是一种突破用户端机器环境和CPU
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 15:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表