仓酷云

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

[学习教程] JAVA网页编程之An Overview of RMI Applications

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

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

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

x
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。application
AnOverviewofRMIApplications

RMIapplicationsareoftencomprisedoftwoseparateprograms:aserverandaclient.Atypicalserverapplicationcreatessomeremoteobjects,makesreferencestothemaccessible,andwaitsforclientstoinvokemethodsontheseremoteobjects.Atypicalclientapplicationgetsaremotereferencetooneormoreremoteobjectsintheserverandtheninvokesmethodsonthem.RMIprovidesthemechanismbywhichtheserverandtheclientcommunicateandpassinformationbackandforth.Suchanapplicationissometimesreferredtoasadistributedobjectapplication.

Distributedobjectapplicationsneedto

Locateremoteobjects:Applicationscanuseoneoftwomechanismstoobtainreferencestoremoteobjects.AnapplicationcanregisteritsremoteobjectswithRMIssimplenamingfacility,thermiregistry,ortheapplicationcanpassandreturnremoteobjectreferencesaspartofitsnormaloperation.

Communicatewithremoteobjects:DetailsofcommunicationbetweenremoteobjectsarehandledbyRMI;totheprogrammer,remotecommunicationlookslikeastandardJavamethodinvocation.

Loadclassbytecodesforobjectsthatarepassedaround:BecauseRMIallowsacallertopassobjectstoremoteobjects,RMIprovidesthenecessarymechanismsforloadinganobjectscode,aswellasfortransmittingitsdata.

ThefollowingillustrationdepictsanRMIdistributedapplicationthatusestheregistrytoobtainareferencetoaremoteobject.Theservercallstheregistrytoassociate(orbind)anamewitharemoteobject.Theclientlooksuptheremoteobjectbyitsnameintheserversregistryandtheninvokesamethodonit.TheillustrationalsoshowsthattheRMIsystemusesanexistingWebservertoloadclassbytecodes,fromservertoclientandfromclienttoserver,forobjectswhenneeded.





Thislessoncontainsthefollowingsections:

AdvantagesofDynamicCodeLoading

RemoteInterfaces,Objects,andMethods

CreatingDistributedApplicationsUsingRMI

BuildingaGenericComputeEngine

AdvantagesofDynamicCodeLoading

AdvantagesofDynamicCodeLoading

OneofthecentralanduniquefeaturesofRMIisitsabilitytodownloadthebytecodes(orsimplycode)ofanobjectsclassiftheclassisnotdefinedinthereceiversvirtualmachine.Thetypesandthebehaviorofanobject,previouslyavailableonlyinasinglevirtualmachine,canbetransmittedtoanother,possiblyremote,virtualmachine.RMIpassesobjectsbytheirtruetype,sothebehaviorofthoseobjectsisnotchangedwhentheyaresenttoanothervirtualmachine.Thisallowsnewtypestobeintroducedintoaremotevirtualmachine,thusextendingthebehaviorofanapplicationdynamically.ThecomputeengineexampleinthischapterusesRMIscapabilitytointroducenewbehaviortoadistributedprogram.

RemoteInterfaces,Objects,andMethods

Likeanyotherapplication,adistributedapplicationbuiltusingJavaRMIismadeupofinterfacesandclasses.Theinterfacesdefinemethods,andtheclassesimplementthemethodsdefinedintheinterfacesand,perhaps,defineadditionalmethodsaswell.Inadistributedapplicationsomeoftheimplementationsareassumedtoresideindifferentvirtualmachines.Objectsthathavemethodsthatcanbecalledacrossvirtualmachinesareremoteobjects.

Anobjectbecomesremotebyimplementingaremoteinterface,whichhasthefollowingcharacteristics.

Aremoteinterfaceextendstheinterfacejava.rmi.Remote.

Eachmethodoftheinterfacedeclaresjava.rmi.RemoteExceptioninitsthrowsclause,inadditiontoanyapplication-specificexceptions.

RMItreatsaremoteobjectdifferentlyfromanonremoteobjectwhentheobjectispassedfromonevirtualmachinetoanother.Ratherthanmakingacopyoftheimplementationobjectinthereceivingvirtualmachine,RMIpassesaremotestubforaremoteobject.Thestubactsasthelocalrepresentative,orproxy,fortheremoteobjectandbasicallyis,tothecaller,theremotereference.Thecallerinvokesamethodonthelocalstub,whichisresponsibleforcarryingoutthemethodcallontheremoteobject.

Astubforaremoteobjectimplementsthesamesetofremoteinterfacesthattheremoteobjectimplements.Thisallowsastubtobecasttoanyoftheinterfacesthattheremoteobjectimplements.However,thisalsomeansthatonlythosemethodsdefinedinaremoteinterfaceareavailabletobecalledinthereceivingvirtualmachine.

CreatingDistributedApplicationsUsingRMI

WhenyouuseRMItodevelopadistributedapplication,youfollowthesegeneralsteps.

Designandimplementthecomponentsofyourdistributedapplication.

Compilesourcesandgeneratestubs.

Makeclassesnetworkaccessible.

Starttheapplication.

DesignandImplementtheApplicationComponents

First,decideonyourapplicationarchitectureanddeterminewhichcomponentsarelocalobjectsandwhichonesshouldberemotelyaccessible.Thisstepincludes:

Definingtheremoteinterfaces:Aremoteinterfacespecifiesthemethodsthatcanbeinvokedremotelybyaclient.Clientsprogramtoremoteinterfaces,nottotheimplementationclassesofthoseinterfaces.Partofthedesignofsuchinterfacesisthedeterminationofanylocalobjectsthatwillbeusedasparametersandreturnvaluesforthesemethods;ifanyoftheseinterfacesorclassesdonotyetexist,youneedtodefinethemaswell.

Implementingtheremoteobjects:Remoteobjectsmustimplementoneormoreremoteinterfaces.Theremoteobjectclassmayincludeimplementationsofotherinterfaces(eitherlocalorremote)andothermethods(whichareavailableonlylocally).Ifanylocalclassesaretobeusedasparametersorreturnvaluestoanyofthesemethods,theymustbeimplementedaswell.

Implementingtheclients:Clientsthatuseremoteobjectscanbeimplementedatanytimeaftertheremoteinterfacesaredefined,includingaftertheremoteobjectshavebeendeployed.

CompileSourcesandGenerateStubs

Thisisatwo-stepprocess.Inthefirststepyouusethejavaccompilertocompilethesourcefiles,whichcontaintheimplementationoftheremoteinterfacesandimplementations,theserverclasses,andtheclientclasses.Inthesecondstepyouusethermiccompilertocreatestubsfortheremoteobjects.RMIusesaremoteobjectsstubclassasaproxyinclientssothatclientscancommunicatewithaparticularremoteobject.

MakeClassesNetworkAccessible

Inthisstepyoumakeeverything--theclassfilesassociatedwiththeremoteinterfaces,stubs,andotherclassesthatneedtobedownloadedtoclients--accessibleviaaWebserver.

StarttheApplication

StartingtheapplicationincludesrunningtheRMIremoteobjectregistry,theserver,andtheclient.

Therestofthislessonwalksthroughthestepstocreateacomputeengine.

BuildingaGenericComputeEngine

Thistrailfocusesonasimpleyetpowerfuldistributedapplicationcalledacomputeengine.Thecomputeengine,aremoteobjectintheserver,takestasksfromclients,runsthem,andreturnsanyresults.Thetasksarerunonthemachinewheretheserverisrunning.Thissortofdistributedapplicationcouldallowanumberofclientmachinestomakeuseofaparticularlypowerfulmachineoronethathasspecializedhardware.

Thenovelaspectofthecomputeengineisthatthetasksitrunsdonotneedtobedefinedwhenthecomputeengineiswritten.Newkindsoftaskscanbecreatedatanytimeandthengiventothecomputeenginetoberun.Allthatisrequiredofataskisthatitsclassimplementaparticularinterface.Suchataskcanbesubmittedtothecomputeengineandrun,eveniftheclassthatdefinesthattaskwaswrittenlongafterthecomputeenginewaswrittenandstarted.ThecodeneededtoaccomplishthetaskcanbedownloadedbytheRMIsystemtothecomputeengine,andthentheenginerunsthetask,usingtheresourcesonthemachineonwhichthecomputeengineisrunning.

TheabilitytoperformarbitrarytasksisenabledbythedynamicnatureoftheJavaplatform,whichisextendedtothenetworkbyRMI.RMIdynamicallyloadsthetaskcodeintothecomputeenginesJavavirtualmachineandrunsthetaskwithoutpriorknowledgeoftheclassthatimplementsthetask.Anapplicationlikethis,whichhastheabilitytodownloadcodedynamically,isoftencalledabehavior-basedapplication.Suchapplicationsusuallyrequirefullagent-enabledinfrastructures.WithRMIsuchapplicationsarepartofthebasicmechanismsfordistributedcomputingontheJavaplatform



不得不提一下的是:.net是看到java红,而开发出来的工具。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 09:31:15 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
山那边是海 该用户已被删除
板凳
发表于 2015-1-24 13:49:52 来自手机 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
变相怪杰 该用户已被删除
地板
发表于 2015-1-27 06:49:22 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
只想知道 该用户已被删除
5#
发表于 2015-2-4 19:50:43 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
深爱那片海 该用户已被删除
6#
发表于 2015-2-5 23:51:40 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
第二个灵魂 该用户已被删除
7#
发表于 2015-2-14 08:24:31 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
小魔女 该用户已被删除
8#
发表于 2015-2-17 03:48:34 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
再见西城 该用户已被删除
9#
发表于 2015-2-23 08:26:46 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
不帅 该用户已被删除
10#
发表于 2015-3-7 06:07:43 | 只看该作者
是一种突破用户端机器环境和CPU
11#
发表于 2015-3-9 13:23:26 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
爱飞 该用户已被删除
12#
发表于 2015-3-10 03:41:47 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
小妖女 该用户已被删除
13#
发表于 2015-3-10 18:23:44 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
admin 该用户已被删除
14#
发表于 2015-3-14 15:49:53 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
金色的骷髅 该用户已被删除
15#
发表于 2015-3-19 15:01:04 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
老尸 该用户已被删除
16#
发表于 2015-3-26 16:15:21 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
因胸联盟 该用户已被删除
17#
发表于 2015-4-11 08:08:50 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
若相依 该用户已被删除
18#
发表于 2015-4-16 17:10:31 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
飘飘悠悠 该用户已被删除
19#
发表于 2015-4-30 05:33:31 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-16 02:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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