Subject: Re: Java Grande 1999 Resent-Date: Fri, 06 Aug 1999 22:25:40 -0400 Resent-From: Geoffrey Fox ?gcf@npac.syr.edu? Resent-To: p_gcf@npac.syr.edu Date: Fri, 6 Aug 1999 09:16:31 -0400 (EDT) From: Tim Brecht ?brecht@bbcr.uwaterloo.ca? To: gcf@npac.syr.edu Here is the postscript. If/when you need the latex source just let me know. Thanks, tim ------- Tim Brecht, Dept of Computer Science, University of Waterloo, Waterloo Ontario CANADA N2L 3G1. phone: (519) 888-4567 x5892 fax: (519) 885-1208 email: brecht@cs.uwaterloo.ca http://www.cs.uwaterloo.ca/~brecht ---------------------------------------------------------------------- %!PS-Adobe-2.0 %%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software %%Title: paper.dvi %%CreationDate: Fri Aug 6 09:15:03 1999 %%Pages: 10 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: _dvips paper.dvi -o paper.ps %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1999.08.06:0914 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (/bcr1/.automount/u/brecht/research/papers/concurrency99/paper.dvi) @start /Fa 60 123 df?0003FE000E03001C0700180600380000380000380000700000 700000700007FFFC07FFFC00E03800E03800E03800E03800E07001C07001C07001C07001 C0E601C0E60380E60380E403806C038038078000070000070000660000E60000CC000078 00001821819916?12 D?387C7C7C3808081020204080060C78990C?39 D?000400180030006000C000C001800300030006000E000C001C001C0018003800380030 0070007000700060006000E000E000E000E000E000E000E000E000600060006000200030 00100008000E267B9B10?I?004000600020003000300018001800180018001800180018 0018001800380038003800380030007000700070006000E000C001C001C0018003800300 060006000C00180030002000400080000D267F9B10?I?FF80FF80FF0009037D880E?45 D?70F8F8F0E005057C840C?I?000800180030007001F00F700CE000E000E000E001C001 C001C001C003800380038003800700070007000700FFF0FFE00D187C9714?49 D?007C000186000303000603800483800C83801883801883801883801907001A07000C0E 00001C0000380000E00003C0000700000C01001803003003007C060067FE00C1FC00C0F0 0011187D9714?I?00060007000E000E000E001C001C001C003800380070007000E000C0 01C0018C031C061C0E381C3838387E38FFF081FF007E007000E000E000E000E000C0101F 7E9714?52 D?03018003FF0007FE0007F8000600000600000C00000C00000C00000FE000 1C1800181800001C00001C00001C00001C00201C00701C00E03800C0300060700061E000 3F80001E000011187C9714?I?001E00007F8001C1800383800603800E00001C00001C00 0038000039F0007218007C0C00780E00700E00F00E00E00E00E00E00E00E00E01C00E018 006038007070003FC0001F000011187C9714?I?0DC0601FE0C01FF3803E1F8038030070 0600600600C00C00001C0000180000380000300000700000600000E00000E00001C00001 C00001C00003800003800003800007000003000013187B9714?I?003E0000FF0001C380 0381C00701C00701C00F038007030007860003CC0001F00001F800077C000C3E00181E00 380F00700700700700E00E00E00E00701C007878003FF0000FC00012187D9714?I?007C 0001FE000787000E03000C03801C0380380380380380380380380780380700380F00181F 000C270007CE00000E00000C00001C00003800E03000E06000C1C000FF80003E00001118 7C9714?I?0000700000700000F00001F00001F0000370000370000670000670000C7000 1C7000187000307000307800603800603800FFF801FFF801803803003803003806003806 00381E0038FF01FFFF01FF181A7E991D?65 D?03FFF803FFFC00701E00700F00E00F00E0 0F00E00F00E00F01C01E01C01C01C03801C0F003FFE003807803803803803C07003C0700 3C07003C07003C0E00780E00780E00F00E03E0FFFFC0FFFF00181A7D991B?I?000F8200 7FE600F07E03C03E07801C0F001C1E001C1C001C3C0018380018780000780000F00000F0 0000F00000F00000F00060F00060F00060F000C07000C07001803803001E0E000FF80003 E000171A7A991B?I?03FFF80003FFFE0000701F000070070000E0038000E0038000E003 8000E003C001C003C001C003C001C003C001C003C0038007800380078003800780038007 0007000F0007000F0007000E0007001C000E003C000E0078000E00F0000E03E000FFFF80 00FFFE00001A1A7D991D?I?03FFFF03FFFF00700F00700700E00300E00300E00300E066 01C0C601C0C001C1C001FFC003FF8003818003818003818007030C07000C07000C070018 0E00180E00380E00700E01F0FFFFE0FFFFE0181A7D991A?I?03FFFF03FFFF00700F0070 0700E00300E00300E00300E00601C0C601C0C001C0C001C1C003FF8003FF800383800383 800703000703000700000700000E00000E00000E00000E0000FFC000FFC000181A7D9919 ?I?000FC1007FE300F83703C01F07800E0F000E0E000E1C000E3C000C38000C78000078 0000F00000F00000F00000F007FEF007FEF00070F00070F000707000E07800E03C00E01E 03E00FFF4003F840181A7A991E?I?03FF1FF803FE1FF0007003800070038000E0070000 E0070000E0070000E0070001C00E0001C00E0001C00E0001FFFE0003FFFC0003801C0003 801C0003801C00070038000700380007003800070038000E0070000E0070000E0070000E 007000FFC7FE00FF87FC001D1A7D991D?I?03FF03FE0070007000E000E000E000E001C0 01C001C001C0038003800380038007000700070007000E000E000E000E00FFC0FF80101A 7D990F?I?00FFC000FFC0000E00000E00001C00001C00001C00001C0000380000380000 380000380000700000700000700000700000E00000E00000E00000E00061C000E1C000E1 8000C380004700003C0000121A7C9914?I?03FF0003FF0000700000700000E00000E000 00E00000E00001C00001C00001C00001C000038000038000038000038000070030070030 0700300700600E00600E00E00E01C00E07C0FFFF80FFFF80141A7D9918?76 D?03FC003FC003FC003F80007C007C00007C007C0000DC00F80000DC01B80000DC01B800 00DC033800019C037000019C067000019C067000019C0C7000031C0CE000031C18E00003 1C30E000031C30E000061C61C000060E61C000060EC1C000060EC1C0000C0F8380000C0F 8380000C0F0380001C0E038000FF8E3FF000FF0C3FE000221A7D9922?I?03F00FF803F8 0FF0007801800078018000DC030000DC030000DC030000CC0300018E0600018E0600018E 06000187060003070C0003070C0003038C0003038C00060398000601D8000601D8000601 D8000C00F0000C00F0000C00F0001C007000FF806000FF0060001D1A7D991D?I?001F80 0070E001C03003803807001C0E001C1E001C1C001E3C001E38001E78001E78001EF0003C F0003CF0003CF00078F00078F00070F000F0F000E0F001C0700380700700380E001C3C00 07E000171A7A991D?I?03FFF003FFFC00701E00700E00E00F00E00F00E00F00E00F01C0 1E01C01E01C01C01C0380380F003FFC00380000380000700000700000700000700000E00 000E00000E00000E0000FFC000FF8000181A7D991A?I?03FFF003FFFC00701E00700E00 E00F00E00F00E00F00E00F01C01E01C01C01C03801C0F003FF800381800380C00380E007 00E00700E00700E00700E00E01E00E01E00E01E30E01E2FFC0F6FF807C181A7D991C?82 D?003F10007FB001E1F00180F003806007006007006007006007000007000007C00003F8 0001FE00007F00000F80000780000380000380300380300380700700700700700E007C1C 00CFF80087E000141A7D9916?I?1FFFFE1FFFFE1C0E0E380E06301C06301C06601C0660 1C0CC0380C00380000380000380000700000700000700000700000E00000E00000E00000 E00001C00001C00001C00001C0003FFC007FFC00171A7A991B?I?7FE1FF7FC1FE0E0030 0E00301C00601C00601C00601C00603800C03800C03800C03800C0700180700180700180 700180E00300E00300E00300E00600E00600E00C006018007070003FE0000F8000181A78 991D?I?FF807F80FF807F001C003C001C0030001C0030001C0060001C0060001C00C000 1C0180001C0180001E0300000E0300000E0600000E0E00000E0C00000E1800000E180000 0E3000000E7000000E6000000EC0000007C0000007800000078000000700000006000000 191A78991D?I?FF87FC3FC0FF07FC3FC03801E00E003803E00C003803E018003806E018 003806E03000380CE03000380CE060003818E060003818E0C0003830E0C0001830E18000 1C60E180001C60E300001CC0E300001CC0E600001D80E600001D80EC00001F00EC00001F 00F800001E00F800001E00F000001C00F000001C00E000001800C00000221A789926?I? 01FF07F803FE07F8003803C0003C0300001C0600001C0C00001E1800000E3000000E7000 0007E0000007C000000780000003800000078000000FC000001DC0000039C0000070E000 0060E00000C0F0000180700003007000070078000E003800FF80FF80FF01FF001D1A7E99 1D?I?03CC0E2E183C381C301C701CE038E038E038E038C073C073C0F360F263361E1C10 107C8F14?97 D?7E007E000E000E001C001C001C001C00380038003BC03E307830781870 187018E038E038E038E038C070C060C0E060C063801E000D1A7C9912?I?01E006180C18 1838301070006000E000E000E000E000E010E018607030E01F800D107C8F12?I?001F80 001F80000380000380000700000700000700000700000E00000E0003CE000E2E00183C00 381C00301C00701C00E03800E03800E03800E03800C07300C07300C0F30060F200633600 1E1C00111A7C9914?I?01E00E181C18381870187030FFE0E000E000E000E000E0106018 607030E01F800D107C8F12?I?000F00001980003B80003B000038000038000070000070 0000700000700007FF0007FE0000E00000E00000E00000E00001C00001C00001C00001C0 0001C000038000038000038000038000078000070000070000070000660000EE0000CC00 00780000112181990C?I?00F300038B80060F000E07000C07001C0700380E00380E0038 0E00380E00301C00301C00303C00183C0018F80007B800003800003800007000607000E0 E000C1C0007F000011177E8F12?I?1F80001F8000038000038000070000070000070000 0700000E00000E00000E7C000F86001F07001E07001C07001C0700380E00380E00380E00 381C00701CC0701CC07038C0703980E01900600E00121A7E9914?I?0180038003000000 000000000000000000001C0026006700C700CE00CE000E001C001C003800398039807180 730032001C0009197D980C?I?000C000E000C00000000000000000000000000E0033806 3804380C380C38007000700070007000E000E000E000E001C001C001C001C003806380E7 00CE0078000F2081980C?I?1F801F800380038007000700070007000E000E000E0E0E13 1C271C431C801F003C003F8039C038E070E370E370E370E6E0646038101A7E9912?I?1F 3F07070E0E0E0E1C1C1C1C3838383870707070E6E6E6ECEC38081A7D990A?I?383E1F00 6CC331804F83C1C0CF03C1C0CE0381C0CE0381C01C0703801C0703801C0703801C070700 380E0730380E0730380E0E30380E0E60701C0640300C03801C107D8F1F?I?383E006CC3 004F8380CF0380CE0380CE03801C07001C07001C07001C0E00380E60380E60381C60381C C0700C8030070013107D8F16?I?01F006180C0C180E300E700E600EE00EE00EE00CE01C E018E030606030C01F000F107C8F14?I?070F000D98C009E0C019E06019C06019C06003 80E00380E00380E00380E00701C00701800703800783000E8E000E78000E00000E00001C 00001C00001C0000FF8000FF00001317808F14?I?38786F8C4F1CCF0CCE00CE001C001C 001C001C003800380038003800700030000E107D8F10?114 D?03E00430083018701860 1C001F801FC00FE000E00060E060E060C0C061803E000C107D8F10?I?06000E000E000E 000E001C001C00FFC0FFC038003800380038007000700070007000E180E180E100E300E6 0038000A177C960D?I?1C0300260380670700C70700CE0700CE07000E0E001C0E001C0E 001C0E00381CC0381CC0381CC0183C801C6D8007870012107D8F15?I?1C0C260E670EC7 0ECE06CE060E0C1C0C1C0C1C0838183818381018200C6007800F107D8F12?I?1C060826 071C670E1CC70E1CCE0E0CCE0E0C0E1C181C1C181C1C181C1C1838383038383038382018 38600C7CC007878016107D8F19?I?1C0300260380670700C70700CE0700CE07000E0E00 1C0E001C0E001C0E00381C00381C00381C00183C001C780007B800003800003000307000 70E00060C0002380001E000011177D8F13?121 D?038607CC0FFC18181830006000C001 80030006000C0C180C301C7FF863F0C1C00F107E8F10?I E /Fb 26 120 df?FFFF080280870B?45 D?60F0F06004047E8309?I?00300000300000780000 7800007800009C00009C00019E00010E00010E0002070002070007FF8007FF8004038008 01C00801C01801E0FE07FCFE07FC16147F9319?65 D?1FF01FF001C001C001C001C001C0 01C001C001C001C001C001C001C001C041C0E1C0E18043803E000C147E9311?74 D?7FFFF07FFFF0607030407010C070188070088070088070080070000070000070000070 0000700000700000700000700000700000700007FF0007FF0015147F9318?84 D?3F8070E070602070007007F03C707070E070E072E07270FE3F3C0F0D7F8C11?97 D?F800F800380038003800380038003BE03C303818380C380E380E380E380E380E380C38 18343023E00F147F9312?I?0FE0187030706020E000E000E000E000E000600030101820 0FC00C0D7F8C0F?I?00F800F8003800380038003800380FB8187830386038E038E038E0 38E038E03860383038187E0FBE0F147F9312?I?0F8018C030606070E030FFF0E000E000 E0006000301018200FC00C0D7F8C0F?I?03C00EE01CE01C401C001C001C00FF00FF001C 001C001C001C001C001C001C001C001C007F807F800B1480930A?I?0F9C38E670707070 7070707038E02F80600060003FE03FF03FF8601CC00CC00CC00C601830300FC00F147F8C 11?I?F800F8003800380038003800380039E03A303C3838383838383838383838383838 383838FE7EFE7E0F147F9312?I?3078783000000000F8F8383838383838383838FEFE07 157F940A?I?060F0F06000000001F1F0707070707070707070707070747E6EE78081B82 940A?I?F800F80038003800380038003800387C387C386038C039003B003F803BC039C0 38E038F0FCFCFCFC0E147F9311?I?F8F838383838383838383838383838383838FEFE07 147F930A?I?F9F0F800FA190C003C1E0E00381C0E00381C0E00381C0E00381C0E00381C 0E00381C0E00381C0E00381C0E00FE7F3F80FE7F3F80190D7F8C1C?I?F9E0FA303C3838 383838383838383838383838383838FE7EFE7E0F0D7F8C12?I?0FC0186030306018E01C E01CE01CE01CE01C6018703838700FC00E0D7F8C11?I?FBC0FCE03CE038403800380038 003800380038003800FF00FF000B0D7F8C0D?114 D?3E806180C080C080F8007F003F80 0FC081C080C0C0C0E1809F000A0D7F8C0D?I?080008000800180018003F80FF80380038 00380038003800380038803880388018800F0009127F910D?I?F8F8F8F8383838383838 383838383838383838383838187E0FBE0F0D7F8C12?I?FC3CFC3C38103C301C201C200E 400E40078007800780030003000E0D7F8C11?I?FCFCF8FCFCF83838203838201C58401C 5C401EDCC00E8E800E8E80070700070700070700020200150D7F8C18?I E /Fc 1 50 df?18F818181818181818181818FF080D7D8C0E?49 D E /Fd 30 122 df?00C00180030007000E001E001C003C003C003800780078007800F8 00F000F000F000F000F000F000F000F000F000F80078007800780038003C003C001C001E 000E0007000300018000C00A257C9B11?40 D?C0006000300038001C001E000E000F000F 00070007800780078007C003C003C003C003C003C003C003C003C003C007C00780078007 8007000F000F000E001E001C00380030006000C0000A257E9B11?I?FFF0FFF0FFF0FFF0 0C04808A0F?45 D?78FCFCFCFC78000000000078FCFCFCFC7806117D900C?58 D?000300000007800000078000000FC000000FC000000FC000001FE000001FE000003FF0 000033F0000033F0000061F8000061F80000E1FC0000C0FC0000C0FC0001807E0001FFFE 0003FFFF0003003F0007003F8006001F8006001F800C000FC0FF807FFCFF807FFC1E1A7F 9921?65 D?001FE02000FFF8E003F80FE007C003E01F8001E01F0000E03E0000E07E0000 607C000060FC000060FC000000FC000000FC000000FC000000FC000000FC000000FC0000 607C0000607E0000603E0000C01F0000C01F80018007C0030003F80E0000FFFC00001FE0 001B1A7E9920?67 D?FFFFFCFFFFFC0FC03C0FC01C0FC00C0FC00E0FC0060FC0060FC186 0FC1800FC1800FC3800FFF800FFF800FC3800FC1800FC1800FC1800FC0000FC0000FC000 0FC0000FC0000FC000FFFE00FFFE00171A7E991C?70 D?FFFCFFFC0FC00FC00FC00FC00F C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FF FCFFFC0E1A7F9911?73 D?FFC0001FF8FFE0003FF80FE0003F800FE0003F800DF0006F80 0DF0006F800CF800CF800CF800CF800C7C018F800C7C018F800C7C018F800C3E030F800C 3E030F800C1F060F800C1F060F800C0F8C0F800C0F8C0F800C0F8C0F800C07D80F800C07 D80F800C03F00F800C03F00F800C01E00F800C01E00F80FFC1E0FFF8FFC0C0FFF8251A7E 992A?77 D?003FC00001FFF80007E07E000F801F001F000F803E0007C03E0007C07E0007 E07C0003E0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003F0FC0003 F07C0003E07E0007E03E0007C03F000FC01F000F800F801F0007E07E0001FFF800003FC0 001C1A7E9921?79 D?FFFFC000FFFFF8000FC07E000FC03F000FC01F000FC01F800FC01F 800FC01F800FC01F800FC01F000FC03F000FC07E000FFFF8000FFFF0000FC1F8000FC0FC 000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E0C0FC03F0CFFFC1F F8FFFC0FF01E1A7E9921?82 D?1FF0003FFC007C1F007C0F007C0F80380F80000F8003FF 801FFF807F0F807C0F80F80F80F80F80F80F807C3F803FF7E00FC3E013117F9015?97 D?FE0000FE00003E00003E00003E00003E00003E00003E00003E00003E3F803FFFC03F81 F03E00F83E00783E007C3E007C3E007C3E007C3E007C3E007C3E00783E00783F00F03F83 E038FFC0303F00161A7F9919?I?03FC000FFE001E1F003C1F007C1F00780E00F80000F8 0000F80000F80000F800007800007C00003C01801F03000FFE0003F80011117F9014?I? 0007F00007F00001F00001F00001F00001F00001F00001F00001F003F1F00FFFF01F07F0 3C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F03C03F03E0FF0 0FFDFC03F1FC161A7F9919?I?03F0000FFC001E1E003C0F00780700780780F80780FFFF 80FFFF80F80000F800007800007C00003C01801F03000FFE0003F80011117F9014?I?07 F3C01FFFE03C1EE0380EC0780F00780F00780F00780F00380E003C1E003FFC0037F00070 00007000003FFE003FFF801FFFC07FFFC0F003E0F001E0F001E0F001E07C07C03FFF8007 FC0013197F9016?103 D?FE0000FE00003E00003E00003E00003E00003E00003E00003E 00003E3F803EFFC03FC3E03F01F03F01F03E01F03E01F03E01F03E01F03E01F03E01F03E 01F03E01F03E01F03E01F0FF87FCFF87FC161A7F9919?I?3C007E007E007E007E003C00 0000000000000000FE00FE003E003E003E003E003E003E003E003E003E003E003E003E00 3E00FF80FF80091B7F9A0C?I?007800FC00FC00FC00FC0078000000000000000003FC03 FC007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C707CF8 7CF87CF8F87FF03F800E22839A0E?I?FE00FE003E003E003E003E003E003E003E003E00 3E003E003E003E003E003E003E003E003E003E003E003E003E003E00FF80FF80091A7F99 0C?108 D?FE3F81FC00FEFFC7FE003FC3EE1F003F01F80F803F01F80F803E01F00F803E 01F00F803E01F00F803E01F00F803E01F00F803E01F00F803E01F00F803E01F00F803E01 F00F803E01F00F80FF87FC3FE0FF87FC3FE023117F9026?I?FE3F80FEFFC03FC3E03F01 F03F01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F0FF87 FCFF87FC16117F9019?I?03F8000FFE003E0F803C07807803C07803C0F803E0F803E0F8 03E0F803E0F803E0F803E07803C07C07C03E0F800FFE0003F80013117F9016?I?FC78FD FC3FBE3F3E3F3E3E1C3E003E003E003E003E003E003E003E003E00FFC0FFC00F117F9012 ?114 D?1FD83FF87038E018E018FC00FFC07FF03FF81FFC01FCC03CC01CE01CF038FFF0 CFC00E117F9011?I?0600060006000E000E001E003E00FFF0FFF03E003E003E003E003E 003E003E003E003E183E183E183E183E301FF007C00D187F9711?I?FE07F0FE07F03E01 F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E01F03E03F03E07 F01FFDFC07F1FC16117F9019?I?FF83F0FF83F03F01C01F01801F83800F83000F830007 C60007C60003EC0003EC0003FC0001F80001F80000F00000F00000600014117F9017?I? FF83F0FF83F03F01C01F01801F83800F83000F830007C60007C60003EC0003EC0003FC00 01F80001F80000F00000F00000600000600070C000F8C000C18000C380007F00003C0000 14187F9017?121 D E /Fe 1 50 df?0C007C009C001C001C001C001C001C001C001C00 1C001C001C001C001C00FF8009107E8F0F?49 D E /Ff 41 122 df?F8F8F8F8F805057D840B?46 D?00E001E01FE0FFE0FFE067E007E007E007E007E007 E007E007E007E007E007E007E007E007E007E007E007E007E07FFCFFFC7FFC0E1A7D9915 ?49 D?0FE01FF03FFC7FFEF87E707F603F203F003F003F003E007E007C00F801F801E003 C007800F001E003C0038007FFFFFFFFFFF7FFF101A7E9915?I?0FE03FF87FFCFFFC787E 207E007E007E007E00FC07F807F007F8007C003E003F003F003F003F403F603FF87EFFFE 7FFC3FF80FE0101A7E9915?I?007E0000FE0000FE0001FE0001BE0003BE0007BE00073E 000F3E000F3E001E3E001E3E003E3E003C3E007C3E00783E00F83E00FFFFC0FFFFC0FFFF C0FFFFC0003E00003E00003E00003E00003E00121A7F9915?I?1FFF003FFF003FFF003F FF003F00003F00003F00003F00003F00003F00003FF8003FFC003FFE003E1F001C1F8000 1F80001F80001F80201F80601F80701F80F83F007FFF003FFE001FFC0007F000111A7F99 15?I?01E007F01FF01FF03F107E007E007C00FC00FDF0FFFCFFFCFE3EFC3FFC3FFC3FFC 3FFC3FFC3F7C3F7C3F7E3E3FFE1FFC0FF807E0101A7E9915?I?FFFFFFFFFFFFFFFF001E 003C007C00F800F801F001F003E003E007E007C00FC00FC00FC00F801F801F801F801F80 1F801F801F80101A7E9915?I?01FE0001FE0003FF0003FF0003FF0007DF8007DF8007CF 8007CF800FCFC00FCFC00F87C01F87E01F87E01F07E03F03F03F03F03FFFF07FFFF87FFF F87FFFF8FC01FCFC00FCFC00FCF800FCF8007C161A7E991B?65 D?007FC003FFF80FFFF8 1FFFF83FC0F03F00307E00107E00007E0000FC0000FC0000FC0000FC0000FC0000FC0000 FC0000FC00007E00007E00007E00083F00183FC0781FFFF80FFFF803FFF0007F80151A7E 991A?67 D?7FFF00FFFFE0FFFFF0FFFFF8FC03FCFC00FCFC007EFC007EFC003FFC003FFC 003FFC003FFC003FFC003FFC003FFC003FFC003FFC003FFC007EFC007EFC00FEFC03FCFF FFF8FFFFF0FFFFE07FFF00181A7D991E?I?7CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFCFCFCFCFC7C061A7D990C?73 D?7C00FC00FC00FC00FC00FC00FC00FC00FC00FC00 FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FFFFFFFFFFFF7FFF101A7D99 16?76 D?7E0001FCFF0003FCFF0003FCFF8007FCFF8007FCFBC00F7CFBC00F7CFBC00F7C FBE01F7CF9E01E7CF9E01E7CF9F03E7CF8F03C7CF8F87C7CF8F87C7CF878787CF87CF87C F87CF87CF83CF07CF83CF07CF83CF07CF81FE07CF81FE07CF80FC07CF80FC07C7807807C 1E1A7D9925?I?00FF800003FFE0000FFFF8001FC1FC003F007E003E003E007E003F007C 001F00FC001F80FC001F80FC001F80FC001F80FC001F80FC001F80FC001F80FC001F80FC 001F80FC001F807E003F007E003F007F007F003F007E001FC1FC000FFFF80007FFF00000 FF8000191A7E991E?79 D?7FFE00FFFF80FFFFC0FFFFE0FC07E0FC03F0FC03F0FC03F0FC 03F0FC03F0FC03F0FC03F0FC07E0FFFFE0FFFFC0FFFF00FC0000FC0000FC0000FC0000FC 0000FC0000FC0000FC0000FC00007C0000141A7D991A?I?7FFE00FFFF80FFFFC0FFFFE0 FC07E0FC03F0FC03F0FC03F0FC03F0FC03F0FC07E0FFFFE0FFFF80FFFE00FC7E00FC3F00 FC3F00FC1F80FC1F80FC0FC0FC0FC0FC07E0FC07E0FC03F0FC03F07C01F0141A7D991A? 82 D?07F8001FFF003FFF807FFF807C0F80F80300F80100F80100FC0000FF80007FF800 7FFC003FFF000FFF0007FF80007FC0000FC04007C04007C06007C0F007C0FC0F80FFFF80 7FFF001FFE0007F800121A7E9917?I?F001F800F0F803FC01F0F803FC01F0F803FC01F0 7C07FC03E07C07BE03E07C079E03E07C079E03E03E0F9E07C03E0F9F07C03E0F1F07C03E 0F0F07C01F1F0F0F801F1F0F8F801F1F0F8F801F1E0F8F800F9E078F000FBE079F000FBE 07DF000FBC07DF0007BC03DE0007FC03FE0007FC03FE0003F803FC0003F801FC0003F001 FC00241A7F9927?87 D?0FF03FFC3FFE383F203F003F00FF1FFF3F3F7E3FFC3FFC3FFC3F FC7F7FFF3FBF1F3F10117F9014?97 D?7C0000FC0000FC0000FC0000FC0000FC0000FC00 00FC0000FC0000FC7C00FFFF00FFFF80FE1F80FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0F C0FC0FC0FC0FC0FC0F80FE1F80FFFF00FFFE007CF800121A7F9915?I?07F81FFE3FFE7E 0E7C04FC00FC00FC00FC00FC00FC00FC007C027E0E3FFE1FFE07F80F117F9012?I?000F C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00FCFC01FFFC03FFFC07E0F C07C0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC07C0FC07E1FC03FFFC01FEF C00FCFC0121A7F9915?I?07F01FFC3FFE7E3E7C1FFC1FFC1FFFFFFFFFFC00FC00FC007C 017E0F3FFF1FFF03FC10117F9013?I?03FC0FFC1FFC1F0C3F003F003F003F003F007FE0 FFE0FFE03F003F003F003F003F003F003F003F003F003F003F003F003F001F000E1A8099 0D?I?0FF1C03FFFC07FFEC07C3E00FC3F00FC3F00FC3F00FC3F007C3E007FFE003FFC00 2FF0007000007FFC007FFF003FFF803FFF807FFFC0F007C0F003C0F003C0F807C07FFF80 3FFF000FFC0012197F9015?I?7C0000FC0000FC0000FC0000FC0000FC0000FC0000FC00 00FC0000FC7E00FCFF80FDFFC0FF0FC0FE0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0F C0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC07C0FC0121A7F9915?I?F8FCFCFCFCF800000000 7CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC7C061B7F9A09?I?03F003F003F003F003F003F0 000000000000000003F003F003F003F003F003F003F003F003F003F003F003F003F003F0 03F003F003F003F003F003F07FF0FFE0FFC03F800C22839A0B?I?7800F800F800F800F8 00F800F800F800F800F87EF8FCF9FCFBF8FFF0FFE0FFC0FFC0FFC0FFE0FFF0F9F0F9F8F8 FCF87EF87E783E0F1A7E9914?I?7CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFC7C061A7F9909?I?7C7E07E0FCFF8FF8FDFFDFFCFF0FF0FCFE0FE0FCFC0FC0FCFC 0FC0FCFC0FC0FCFC0FC0FCFC0FC0FCFC0FC0FCFC0FC0FCFC0FC0FCFC0FC0FCFC0FC0FCFC 0FC0FC7C07C07C1E117F9021?I?7C7E00FCFF80FDFFC0FF0FC0FE0FC0FC0FC0FC0FC0FC 0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC07C0FC012117F9015?I? 07F8001FFE003FFF007E1F807C0F80FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0 7C0F807E1F803FFF001FFE0007F80012117F9015?I?7C60FDE0FFE0FFE0FF00FE00FC00 FC00FC00FC00FC00FC00FC00FC00FC00FC007C000B117F900E?114 D?1FC03FF07FF0F070F020FC00FFC07FE07FF03FF84FF840F8E078F078FFF07FE01FC00D 117F9010?I?3E007E007E007E007E007FE0FFE0FFE07E007E007E007E007E007E007E00 7E007E007E007E207FF03FF01F800C167F950F?I?7C0FC0FC0FC0FC0FC0FC0FC0FC0FC0 FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC0FC3FC0FFFFC07FCFC03F8FC0 12117F9015?I?F00FF81FF81F7C3E7C3E7C3E7E3E3E7C3E7C3E7C1FF81FF81FF80FF00F F00FF007E010117F9013?I?F03E0780F87F0F80F87F0F80F87F0F807CFF1F007CFF9F00 7CEF9F007CEF9F003CE79E003EE7BE003EC7BE003FC7FE001FC7FC001FC3FC001F83FC00 1F83FC000F81F80019117F901C?I?F80FFC1F7C1F7C3E7E3E3E3E3E3C1F7C1F7C0F780F 780FF807F807F003F003F001E001E003E083C0FFC0FF80FF00FC0010187F9013?121 D E /Fg 57 126 df?20207070F078F078F078F078F07870707070707070700D0B7D9714 ?34 D?01C003C007000E001C001C003800700070007000E000E000E000E000E000E000E0 00E000E00070007000700038001C001C000E00070003C001C00A1D7A9914?40 D?C000E000700038001C001C000E00070007000700038003800380038003800380038003 8003800700070007000E001C001C0038007000E000C000091D7C9914?I?387C7E7E3E0E 1C7CF860070A7A8414?44 D?FFFEFFFEFFFE0F037E8C14?I?70F8F8F8700505798414?I? 0006000E000E001C001C003800380070007000E000E001C001C003800380038007000700 0E000E001C001C003800380070007000E000E000C0000F1D7E9914?I?0300030007000F 003F00FF00F70047000700070007000700070007000700070007000700070007007FF0FF F07FF00C177C9614?49 D?0FC01FF03FF8707CE01CF00EF00E600E000E000E001C003800 38007001E003C007000E001C0E380E7FFEFFFE7FFE0F177E9614?I?70F8F8F870000000 00000070F8F8F8700510798F14?58 D?387C7C7C3800000000000030787C7C3C1C3878F0 6006157A8F14?I?FFFF80FFFF807FFF800000000000000000007FFF80FFFF80FFFF8011 097F8F14?61 D?01E007F00FF81E1C38FC79FC73FE771EEF1EEE0EEE0EEE0EEE0EEE0EEF 1E771C73F879F038E01E0E0FFE07F801F00F177E9614?64 D?01C00003E00003E0000360 000360000770000770000770000770000630000E38000E38000E38000E38001E3C001FFC 001FFC001FFC001C1C00380E00FE3F80FE3F80FE3F8011177F9614?I?FFF0FFFCFFFE38 1E3807380738073807380E387E3FFC3FFC3FFE380E3807380738073807380F381EFFFEFF FCFFF810177F9614?I?01F18007FB800FFF801E0F803C0780780380700380700380E000 00E00000E00000E00000E00000E00000E000007003807003807803803C07001E0F000FFE 0007FC0001F00011177F9614?I?7FFF80FFFF807FFF801C03801C03801C03801C03801C 00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C01C01C01C01C01C01C 01C07FFFC0FFFFC07FFFC01217809614?69 D?7FFFC0FFFFC07FFFC01C01C01C01C01C01 C01C01C01C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00001C00 001C00001C00007F8000FF80007F80001217809614?I?FE3F80FE3F80FE3F80380E0038 0E00380E00380E00380E00380E00380E003FFE003FFE003FFE00380E00380E00380E0038 0E00380E00380E00380E00FE3F80FE3F80FE3F8011177F9614?72 D?FFF8FFF8FFF80700070007000700070007000700070007000700070007000700070007 0007000700FFF8FFF8FFF80D177D9614?I?7F8000FFC0007F80001C00001C00001C0000 1C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C03801C0380 1C03801C03807FFF80FFFF807FFF8011177F9614?76 D?7E0FC0FE0FE07E0FC03B1B803B 1B803B1B803B1B803BBB803BBB8039B38039B38039B38039F38038E38038E38038038038 03803803803803803803807C07C0FE0FE07C07C01317809614?I?FE3F80FE3F80FE3F80 3B0E003B0E003B0E003B0E003B8E00398E00398E0039CE0039CE0039CE0038CE0038CE00 38EE00386E00386E00386E00386E00FE3E00FE3E00FE3E0011177F9614?I?1FF07FFC7F FC701CF01EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00EF01E783C7F FC7FFC1FF00F177E9614?I?7FF800FFFE007FFF001C0F001C07801C03801C03801C0380 1C03801C07801C0F001FFF001FFE001FF8001C00001C00001C00001C00001C00001C0000 7F0000FF80007F00001117809614?I?FFE000FFF000FFF800383C00381E00380E00380E 00380E00381E00383C003FF8003FF0003FF800383800381C00381C00381C00381C00381C 80381DC0FE1FC0FE0F80FE070012177F9614?82 D?0FCC1FFC3FFC707CE01CE01CE01CE0 0070007E003FE00FF001F8001C000E000E600EE00EE00EF81CFFF8FFF0C7E00F177E9614 ?I?7FFF80FFFF80FFFF80E1C380E1C380E1C380E1C38001C00001C00001C00001C00001 C00001C00001C00001C00001C00001C00001C00001C00001C0000FF8000FF8000FF80011 177F9614?I?7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C0 1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800F078007FF0003FE00 00F8001517819614?I?FFFEFFFEFFFE0F037E7E14?95 D?1FC0003FF0007FF800783800 301C0000FC000FFC003FFC007F1C00F01C00E01C00E01C00F07C007FFF803FFF801F8F80 11107E8F14?97 D?FC0000FC0000FC00001C00001C00001C00001C00001CFC001FFE001F FF001F07801E03801C03C01C01C01C01C01C01C01C01C01E03C01E03801F0F801FFF001D FE000CF8001217809614?I?03F80FFC1FFE3C1E700C7000E000E000E000E000700E780E 3E1C1FFC0FF803E00F107E8F14?I?007E00007E00007E00000E00000E00000E00000E00 07CE001FFE003FFE007C3E00701E00F00E00E00E00E00E00E00E00E00E00F01E00701E00 783E003FFFC01FEFC0078FC012177F9614?I?07E00FF01FF83C3C701CF00EFFFEFFFEFF FEE000700E780E3E1C1FF80FF003E00F107E8F14?I?007C01FE03FE079E070C07000700 7FFEFFFEFFFE0700070007000700070007000700070007000700FFF8FFF8FFF80F177F96 14?I?07CF000FFF801FFF80383900701C00701C00701C00701C003838003FF0007FE000 77C0007000003FF8003FFE007FFF00700F00E00380E00380E00380E00380780F003FFE00 1FFC0007F00011197F8F14?I?FC0000FC0000FC00001C00001C00001C00001C00001CF8 001FFE001FFE001F07001E07001C07001C07001C07001C07001C07001C07001C07001C07 00FF8FE0FF9FE0FF8FE01317809614?I?030007800780030000000000000000007F80FF 807F8003800380038003800380038003800380038003807FFCFFFC7FFC0E187D9714?I? 006000F000F0006000000000000000001FF01FF01FF00070007000700070007000700070 0070007000700070007000700070007000706070F0E0FFC07F803E000C207E9714?I?FC 0000FC0000FC00001C00001C00001C00001C00001CFF801CFFC01CFF801C38001C70001C E0001DC0001FE0001FE0001E70001C38001C3C001C1C00FF1F80FF3FC0FF1F8012178096 14?I?FF80FF80FF80038003800380038003800380038003800380038003800380038003 80038003800380FFFEFFFEFFFE0F177E9614?I?FB8E00FFDF00FFFF803CF38038E38038 E38038E38038E38038E38038E38038E38038E38038E380FEFBE0FEFBE0FE79E01310808F 14?I?FCF800FFFE00FFFE001F07001E07001C07001C07001C07001C07001C07001C0700 1C07001C0700FF8FE0FF9FE0FF8FE01310808F14?I?07C01FF03FF8783C701CF01EE00E E00EE00EE00EF01E701C7C7C3FF81FF007C00F107E8F14?I?FCFC00FFFE00FFFF001F07 801E03801C03C01C01C01C01C01C01C01C01C01E03C01E03801F0F801FFF001DFE001CF8 001C00001C00001C00001C00001C0000FF8000FF8000FF80001218808F14?I?FE3E00FE FF00FFFF800FE7800F83000F00000E00000E00000E00000E00000E00000E00000E0000FF F000FFF800FFF00011107F8F14?114 D?0FD83FF87FF8F038E038F0007F803FF007F800 3C600EE00EF01EFFFCFFF8CFE00F107E8F14?I?06000E000E000E000E007FFCFFFCFFFC 0E000E000E000E000E000E000E0E0E0E0E0E0F1C07F803F001E00F157F9414?I?FC3F00 FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0F00 1FFFE00FFFE007E7E01310808F14?I?FE3F80FF7F80FE3F801C1C001C1C001C1C000E38 000E38000E380006300007700007700007700003E00003E00003E00011107F8F14?I?FE 3F80FF7F80FE3F80300600380E00380E003BEE003BEE003BEE003B6E003B6E001B6C001B 6C001E3C001E3C001E3C0011107F8F14?I?7E3F00FE7F807E3F000E780007700007E000 03E00001C00003C00003E0000770000E78000E3800FE3F80FF7F80FE3F8011107F8F14? I?FE3F80FF7F80FE3F801C1C001C1C000E1C000E38000E38000738000730000730000370 0003700003E00001E00001E00001C00001C00001C0007B80007F80007F00007E00003C00 0011187F8F14?I?3FFF7FFF7FFF701C7038707000E001C0038007000E071C073807FFFF FFFFFFFF10107F8F14?I?007E00FE01FE03800380038003800380038003800380038007 00FE00FC00FE00070003800380038003800380038003800380038001FE00FE007E0F1D7E 9914?I?7C00FE00FF0003800380038003800380038003800380038001C000FE007E00FE 01C0038003800380038003800380038003800380FF00FE007C000F1D7E9914?125 D E /Fh 2 104 df?003C00E001C0038003800380038003800380038003800380038003 800380038007001E00F8001E000700038003800380038003800380038003800380038003 800380038001C000E0003C0E257E9B13?102 D?F8001E00070003800380038003800380 0380038003800380038003800380038001C000E0003C00E001C003800380038003800380 0380038003800380038003800380038007001E00F8000E257E9B13?I E /Fi 83 128 df?00FE3C0383E60607CF0E078F1C07861C03801C03801C03801C03801C 0380FFFFF0FFFFF01C03801C03801C03801C03801C03801C03801C03801C03801C03801C 03801C03801C0380FF8FF0FF8FF0181A809916?11 D?00FC000383000603800E07801C07 801C03001C00001C00001C00001C0000FFFF80FFFF801C03801C03801C03801C03801C03 801C03801C03801C03801C03801C03801C03801C0380FF8FF0FF8FF0141A809915?I?00 FF800383800607800E07801C03801C03801C03801C03801C03801C0380FFFF80FFFF801C 03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF 9FF0FF9FF0141A809915?I?007C1F0001C370C00703C0E0060781E00E0781E00E0380C0 0E0380000E0380000E0380000E038000FFFFFFE0FFFFFFE00E0380E00E0380E00E0380E0 0E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E0 7F8FE3FC7F8FE3FC1E1A809920?I?01F000061C000E0E001C0F001C0F001C0F001C0F00 1C0E001C1C001C3800FCF000FC38001C1C001C0E001C0F001C07001C07801C07801C0780 1C07801C07801C07801CE7001CE700FCEE00FC7800111A809913?25 D?7070F8F8FCFCFCFC747404040404080808081010202040400E0C7F9913?34 D?1E0003003300070071800E0061E01C00E0DFEC00E0C01800E0C03000E0C03000E0C060 00E0C0C000E0C0C0006181800071830000330300001E060000000C0F0000181980001838 C0003030C0006070600060706000C0706001807060018070600300706006007060060030 C00C0038C01800198008000F001B1E7E9B20?37 D?70F8FCFC7404040808102040060C7D 990B?39 D?00800100020006000C00080018003800300030007000600060006000E000E0 00E000E000E000E000E000E000E000E0006000600060007000300030003800180008000C 00060002000100008009267D9B0F?I?8000400020003000180008000C000E0006000600 070003000300030003800380038003800380038003800380038003800300030003000700 060006000E000C0008001800300020004000800009267E9B0F?I?000C0000000C000000 0C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C000000 0C0000FFFFFF80FFFFFF80000C0000000C0000000C0000000C0000000C0000000C000000 0C0000000C0000000C0000000C0000000C0000000C0000191A7E951E?43 D?70F0F8F87808081010102040050C7D840B?I?FFC0FFC0FFC00A0380880D?I?70F8F8F8 7005057D840B?I?0004000C00180018001800300030003000600060006000C000C000C0 0180018001800300030003000600060006000C000C000C00180018001800300030003000 600060006000C000C0000E257E9B13?I?07E01C38381C381C700E700E700EF00FF00FF0 0FF00FF00FF00FF00FF00FF00FF00F700E700E700E381C381C1C3807E010187F9713?I? 03000700FF00FF0007000700070007000700070007000700070007000700070007000700 07000700070007007FF87FF80D187D9713?I?0F803FE070F0F078F83CF83CF83C703C00 3C00780078007000E001C00180030006000C0C180C100C20187FF8FFF8FFF80E187E9713 ?I?07E01FF8383C781C781E781E301E001E001C0038007007E00038001C000E000F000F 700FF80FF80EF01E703C3FF80FE010187F9713?I?001800380078007800F801B8033802 3806380C381838103830386038C038FFFFFFFF0038003800380038003803FF03FF10187F 9713?I?60187FF07FE07F80600060006000600060006FC07060607000380038003C003C 703CF03CF03CE038607870F03FE00F800E187E9713?I?01F807FC0F0E1C1E381E380C70 007000F000F3E0F438F81CF80EF00EF00FF00FF00F700F700F700E381E1C3C0FF807E010 187F9713?I?60007FFF7FFF7FFE600CC00CC018C0300060006000C001C0018003800380 07000700070007000F000F000F000F000F00060010197E9813?I?07E01FF83C3C301E70 0E700E780E7C0C3F181FB00FE007F00DFC38FE703E601FE00FE007E007E007700E3C1C1F F807E010187F9713?I?07E01FF03C38781C700EF00EF00EF00FF00FF00F700F701F381F 1C2F07CF000F000E000E301C781C783870703FE00F8010187F9713?I?70F8F8F8700000 0000000070F8F8F87005107D8F0B?I?70F8F8F87000000000000070F0F8F87808081010 10204005177D8F0B?I?000C0000001E0000001E0000001E0000003F0000003F0000003F 000000678000006780000067800000C3C00000C3C00000C3C0000181E0000181E0000181 E0000300F00003FFF00007FFF80006007800060078000E007C000C003C001E003C00FF81 FFC0FF81FFC01A1A7F991D?65 D?FFFF80FFFFE00F00F00F00780F003C0F003C0F003C0F 003C0F003C0F00780F00700F01E00FFFC00F00F00F00380F003C0F001E0F001E0F001E0F 001E0F001E0F003C0F003C0F00F8FFFFF0FFFFC0171A7F991B?I?007F0201FFC607E0EE 0F003E1E001E3C000E38000E780006780006F00006F00000F00000F00000F00000F00000 F00000F0000678000678000638000C3C000C1E00180F003807E07001FFC0007F00171A7E 991C?I?FFFF8000FFFFE0000F00F0000F0038000F001C000F000E000F000E000F000F00 0F0007000F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780 0F0007000F0007000F000F000F000E000F001C000F003C000F00F800FFFFE000FFFF8000 191A7F991D?I?FFFFF8FFFFF80F00780F00380F00180F001C0F000C0F030C0F030C0F03 000F07000FFF000FFF000F07000F03000F03000F03060F00060F00060F00060F000E0F00 0C0F001C0F007CFFFFFCFFFFFC171A7F991A?I?FFFFF8FFFFF80F00780F00380F00180F 001C0F000C0F000C0F030C0F03000F03000F07000FFF000FFF000F07000F03000F03000F 03000F00000F00000F00000F00000F00000F0000FFF000FFF000161A7F9919?I?007F02 0001FFC60007E0EE000F003E001E001E003C000E0038000E007800060078000600F00006 00F0000000F0000000F0000000F0000000F0000000F003FFC0F003FFC078001E0078001E 0038001E003C001E001E001E000F001E0007E07E0001FFE600007F82001A1A7E991E?I? FFF3FFC0FFF3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F003C00 0F003C000F003C000FFFFC000FFFFC000F003C000F003C000F003C000F003C000F003C00 0F003C000F003C000F003C000F003C000F003C000F003C00FFF3FFC0FFF3FFC01A1A7F99 1D?I?FFC0FFC01E001E001E001E001E001E001E001E001E001E001E001E001E001E001E 001E001E001E001E001E001E001E00FFC0FFC00A1A7E990E?I?07FF8007FF80003C0000 3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 3C00003C00003C00003C00703C00F83C00F83C00F8380070780030F0001FC000111A8099 14?I?FFF07FC0FFF07FC00F001E000F0018000F0030000F0060000F00C0000F0180000F 0300000F0600000F0C00000F1E00000F3F00000F6F00000FC780000F87C0000F03C0000F 01E0000F01F0000F00F0000F0078000F0078000F003C000F003E00FFF0FFC0FFF0FFC01A 1A7F991E?I?FFF000FFF0000F00000F00000F00000F00000F00000F00000F00000F0000 0F00000F00000F00000F00000F00000F00000F00180F00180F00180F00380F00380F0030 0F00700F01F0FFFFF0FFFFF0151A7F9918?I?FF8001FFFFC003FF0FC003F00FC003F00D E006F00DE006F00DE006F00CF00CF00CF00CF00CF00CF00C7818F00C7818F00C7818F00C 3C30F00C3C30F00C3C30F00C1E60F00C1E60F00C1E60F00C0FC0F00C0FC0F00C0FC0F00C 0780F01E0780F0FFC78FFFFFC30FFF201A7F9923?I?FF00FFC0FF80FFC00F801E000FC0 0C000DE00C000DE00C000CF00C000CF80C000C780C000C3C0C000C3E0C000C1E0C000C0F 0C000C0F0C000C078C000C03CC000C03CC000C01EC000C00FC000C00FC000C007C000C00 7C000C003C001E001C00FFC01C00FFC00C001A1A7F991D?I?007F000001C1C000070070 000E0038001C001C003C001E0038000E0078000F0070000700F0000780F0000780F00007 80F0000780F0000780F0000780F0000780F000078078000F0078000F0038000E003C001E 001C001C000E0038000700700001C1C000007F0000191A7E991E?I?FFFF80FFFFE00F00 F00F00780F00380F003C0F003C0F003C0F003C0F003C0F00380F00700F01E00FFFC00F00 000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000FFF000161A 7F991A?I?FFFF0000FFFFC0000F01F0000F0078000F0038000F003C000F003C000F003C 000F003C000F0038000F0070000F01E0000FFF00000F03C0000F00F0000F00F0000F0078 000F0078000F0078000F0078000F0078000F0078000F0078C00F0038C0FFF01C80FFF00F 001A1A7F991C?82 D?07C21FF6383E701E600EE006E006E006F000F8007F803FF01FF80F FC01FE001E000F0007C007C007C007E006F00EFC1CDFF887E0101A7E9915?I?7FFFFF00 7FFFFF00781E0F00601E0300601E0300E01E0380C01E0180C01E0180C01E0180001E0000 001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000 001E0000001E0000001E0000001E0000001E000003FFF00003FFF000191A7F991C?I?FF F0FFC0FFF0FFC00F001E000F000C000F000C000F000C000F000C000F000C000F000C000F 000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F 000C000F000C0007001800078018000380300001E0E00000FFC000003F00001A1A7F991D ?I?FFC03FC0FFC03FC01E000E001F000E000F000C000F000C00078018000780180007C0 380003C0300003C0300003E0700001E0600001E0600000F0C00000F0C00000F9C0000079 800000798000007F8000003F0000003F0000001E0000001E0000001E0000000C00001A1A 7F991D?I?FFC3FF0FF0FFC3FF0FF01E007803C01E007801801E007801800F00FC03000F 00FC03000F00FC030007819E060007819E060007819E060003C39F0C0003C30F0C0003C3 0F0C0003E30F1C0001E607980001E607980001E607980000FC03F00000FC03F00000FC03 F000007801E000007801E000007801E000003801C000003000C000241A7F9927?I?FFE1 FF80FFE1FF800F8078000780700003C0600003E0C00001E1C00001F1800000FB0000007F 0000007E0000003E0000001E0000001F0000003F0000007780000067C00000E3C00001C1 E0000181F0000380F0000300F80006007C000F003C00FF80FFC0FF80FFC01A1A7F991D? I?FFE01FF0FFE01FF00F8007000780060007C00E0003E00C0001E0180001F0380000F030 0000F8700000786000003CC000003FC000001F8000001F8000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000000F000000FFE00000FFE0001C1A80 991D?I?FFFFC0FFFFC0F80780F00780E00F00C01F00C01E00C03C00C03C0000780000F8 0000F00001E00001E00003C00007C0C00780C00F00C00F00C01E01C03E01803C01807803 80780F80FFFF80FFFF80121A7E9917?I?FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07257D9B0B?I?1010202040404040404080 808080F0F0F8F8F8F8787870700D0C7C9913?I?FEFE0606060606060606060606060606 06060606060606060606060606060606060606FEFE0725809B0B?I?1FC0007070007838 00781C00301C00001C0003FC001F1C003C1C00781C00F01C00F01D80F01D80F03D80785D 801F8F0011107F8F13?97 D?FC0000FC00001C00001C00001C00001C00001C00001C0000 1C00001C00001CFC001F07001E03801C03C01C01C01C01E01C01E01C01E01C01E01C01E0 1C01E01C01C01C03801E03001F060018F800131A809915?I?07F01C1C383C783C7018F0 00F000F000F000F000F0007000780C380C1C3807E00E107F8F11?I?003F00003F000007 0000070000070000070000070000070000070000070003E7000C1F00180F003807007007 00F00700F00700F00700F00700F00700F00700700700780700380F001C3FE007E7E0131A 7F9915?I?07C01C7038387038701CF01CFFFCF000F000F000F0007000780C38081C3807 E00E107F8F11?I?01F007180E3C0C3C1C181C001C001C001C001C00FFC0FFC01C001C00 1C001C001C001C001C001C001C001C001C001C00FF80FF800E1A80990C?I?0FC700387B 80703B80F03C00F03C00F03C00F03C007038003870006FC0004000004000006000007FF0 003FFC003FFE00600F00C00300C00300C00300C00300600600381C0007E00011187F8F13 ?I?FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001D 87001E03801E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C 0380FF9FF0FF9FF0141A809915?I?387C7C7C380000000000FCFC1C1C1C1C1C1C1C1C1C 1C1C1CFFFF081A80990A?I?01C003E003E003E001C00000000000000000000007E007E0 00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0E0 F1C061803E000B2183990C?I?FC0000FC00001C00001C00001C00001C00001C00001C00 001C00001C00001C3FC01C3FC01C3C001C38001C70001CC0001DE0001FE0001E70001C78 001C38001C1C001C1E001C0F00FF9FE0FF9FE0131A809914?I?FC00FC001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00 1C00FF80FF80091A80990A?I?FC7C1F00FD8E63801E0781C01E0781C01C0701C01C0701 C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7 F8FF9FE7F81D107F8F20?I?FC7C00FD87001E03801E03801C03801C03801C03801C0380 1C03801C03801C03801C03801C03801C0380FF9FF0FF9FF01410808F15?I?07E01C3838 1C700E700EF00FF00FF00FF00FF00FF00F700E700E381C1C3807E010107F8F13?I?FCFC 00FF07001E03801C03C01C03C01C01E01C01E01C01E01C01E01C01E01C01E01C03C01C03 801E07001F0E001CF8001C00001C00001C00001C00001C0000FF8000FF80001317808F15 ?I?03E3000E1B001C0F00380F00780700F00700F00700F00700F00700F00700F0070078 0700780700380F001C370007E700000700000700000700000700000700003FE0003FE013 177F8F14?I?FCF0FD1C1E3C1E3C1C181C001C001C001C001C001C001C001C001C00FF80 FF800E10808F0F?I?1F2060E04060C060C060F0007F003FC01FE000F0C070C030E030E0 20F0408F800C107F8F0F?I?18001800180018001800180038007FC0FFC0380038003800 3800380038003800386038603860386038601CC007800B177F960F?I?FC1F80FC1F801C 03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C07800E 0BF003F3F01410808F15?I?FE3F80FE3F803C0E001C0C001C0C000E18000E18000E1800 07300007300007700003E00003E00001C00001C00001C00011107F8F14?I?FE3F9F80FE 3F9F80381E0E001C3E0C001C360C001C370C000E7718000E6318000E6398000F63B80007 C1B00007C1F00007C1F0000380E0000380E0000380E00019107F8F1C?I?7F1FC07F1FC0 0E1E00071C0007980003B00001F00000E00000F00001F00003B800071C00061C001E0E00 FF1FE0FF1FE01310808F14?I?FE3F80FE3F803C0E001C0C001C0C000E18000E18000E18 0007300007300007700003E00003E00001C00001C00001C000018000018000618000F300 00F30000E6000078000011177F8F14?I?FFF8E070C070C0E0C1C0C1C00380070007000E 0C1C0C1C0C381870187038FFF80E107F8F11?I?FFFFC01201808913?I?70E0F9F0F9F0F9 F070E00C057D9913?127 D E /Fj 28 120 df?3C007E00FF00FF00FF80FF807F803D80 0180018003000300070006000C001C003800200009127C8710?44 D?3C7EFFFFFFFF7E3C0000000000003C7EFFFFFFFF7E3C08167C9510?58 D?00007000000000F800000000F800000000F800000001FC00000001FC00000003FE0000 0003FE00000003FE000000077F000000077F0000000F7F8000000E3F8000000E3F800000 1C1FC000001C1FC000003C1FE00000380FE00000380FE00000700FF000007007F00000F0 07F80000FFFFF80000FFFFF80001FFFFFC0001C001FC0001C001FC00038000FE00038000 FE00078000FF000700007F00FFF007FFF8FFF007FFF8FFF007FFF825227EA12A?65 D?FFFFFF8000FFFFFFF000FFFFFFFC0007F003FE0007F0007F0007F0003F8007F0001FC0 07F0000FE007F0000FE007F0000FF007F00007F007F00007F007F00007F007F00007F807 F00007F807F00007F807F00007F807F00007F807F00007F807F00007F807F00007F807F0 0007F807F00007F007F00007F007F00007F007F0000FE007F0000FE007F0001FC007F000 3F8007F0007F0007F003FE00FFFFFFFC00FFFFFFF000FFFFFF800025227EA12B?68 D?FFFFFFFCFFFFFFFCFFFFFFFC07F001FC07F0007C07F0003C07F0001C07F0001E07F000 1E07F01C0E07F01C0E07F01C0E07F01C0E07F03C0007F07C0007FFFC0007FFFC0007FFFC 0007F07C0007F03C0007F01C0707F01C0707F01C0707F01C0E07F0000E07F0000E07F000 1E07F0001E07F0003E07F0007E07F001FCFFFFFFFCFFFFFFFCFFFFFFFC20227EA125?I? 03FFFF03FFFF03FFFF0007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F03807F07C07F0FE07F0FE07F0FE07E07C0FE07C1FC01FFF0007FC0018227FA11D? 74 D?FFF800001FFFFFF800001FFFFFFC00003FFF07FC00003FE007FC00003FE0077E00 0077E0077E000077E0073F0000E7E0073F0000E7E0071F8001C7E0071F8001C7E0071F80 01C7E0070FC00387E0070FC00387E00707E00707E00707E00707E00703F00E07E00703F0 0E07E00703F00E07E00701F81C07E00701F81C07E00700FC3807E00700FC3807E007007E 7007E007007E7007E007007E7007E007003FE007E007003FE007E007001FC007E007001F C007E007000F8007E0FFF80F80FFFFFFF80F80FFFFFFF80700FFFF30227EA135?77 D?FFFFFF00FFFFFFE0FFFFFFF007F007F807F001FC07F001FE07F000FE07F000FF07F000 FF07F000FF07F000FF07F000FF07F000FF07F000FE07F001FE07F001FC07F007F807FFFF F007FFFFC007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 0007F0000007F0000007F0000007F00000FFFF8000FFFF8000FFFF800020227EA126?80 D?7FFFFFFF807FFFFFFF807FFFFFFF807E03F81F807C03F807807803F807807003F80380 F003F803C0F003F803C0E003F801C0E003F801C0E003F801C0E003F801C00003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003 F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8 00000003F800000003F8000001FFFFF00001FFFFF00001FFFFF00022227EA127?84 D?0FFE003FFF807E07E07E03F07E01F07E01F83C01F80001F80001F800FFF807FFF81FE1 F83F01F87E01F8FC01F8FC01F8FC01F8FC01F87E03F87E0EFF1FFCFF07F03F18167E951B ?97 D?FF800000FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F 8000001F8000001F8000001F8000001F8000001F8FE0001FFFF8001FF07C001FC03E001F 801F001F800F801F800F801F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F 800FC01F800FC01F800F801F801F801F801F001FC03E001FE07C001E7FF8001C0FC0001A 237EA21F?I?00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000 FC0000FC0000FC0000FC00007C00007E00007E00003E00381F00700FC0F007FFC000FF00 15167E9519?I?0001FF000001FF000001FF0000003F0000003F0000003F0000003F0000 003F0000003F0000003F0000003F0000003F0000003F0001FE3F0007FFBF000F81FF001F 007F003E003F007E003F007C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC 003F00FC003F00FC003F007C003F007C003F003E003F001F00FF000F83FFE007FFBFE001 FC3FE01B237EA21F?I?00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00 F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00381F00700FC0F003FF C000FF0015167E951A?I?001F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000F C0000FC0000FC0000FC0000FC000FFFE00FFFE00FFFE000FC0000FC0000FC0000FC0000F C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007F FC007FFC007FFC00142380A211?I?1E003F007F807F807F807F803F001E000000000000 00000000000000FF80FF80FF801F801F801F801F801F801F801F801F801F801F801F801F 801F801F801F801F80FFF0FFF0FFF00C247FA30F?105 D?003C007E00FF00FF00FF00FF 007E003C00000000000000000000000003FF03FF03FF003F003F003F003F003F003F003F 003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F783FFC3FFC3E FC7E78FC7FF01FC0102E83A311?I?FF80FF80FF801F801F801F801F801F801F801F801F 801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F 801F801F801F80FFF0FFF0FFF00C237FA20F?108 D?FF87F00FE000FF9FFC3FF800FFB8 7E70FC001FE03EC07C001FC03F807E001FC03F807E001F803F007E001F803F007E001F80 3F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F80 3F007E001F803F007E001F803F007E001F803F007E001F803F007E00FFF1FFE3FFC0FFF1 FFE3FFC0FFF1FFE3FFC02A167E952F?I?FF87E000FF9FF800FFB8FC001FE07C001FC07E 001FC07E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E 001F807E001F807E001F807E001F807E001F807E00FFF1FFC0FFF1FFC0FFF1FFC01A167E 951F?I?00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC00 7EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE001716 7E951C?I?FF8FE000FFFFF800FFF07C001FC03E001F801F001F801F801F801F801F800F C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F801F801F801F 801F803F001FC03E001FE0FC001FFFF8001F8FC0001F8000001F8000001F8000001F8000 001F8000001F8000001F800000FFF00000FFF00000FFF000001A207E951F?I?FF0F80FF 1FE0FF33F01F63F01FC3F01FC3F01FC1E01F80001F80001F80001F80001F80001F80001F 80001F80001F80001F80001F80001F8000FFF800FFF800FFF80014167F9517?114 D?07F3001FFF00781F00700F00F00700F00700F80000FF0000FFF0007FFC003FFE001FFF 0007FF00003F80E00F80E00780F00780F00780F80700FC1E00FFFC00C7F00011167E9516 ?I?01C00001C00001C00001C00003C00003C00003C00007C00007C0000FC0003FFF00FF FF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F C3800FC3800FC3800FC3800FC3800FC30007E70003FE0000FC0011207F9F16?I?FF83FE 00FF83FE00FF83FE001F807E001F807E001F807E001F807E001F807E001F807E001F807E 001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80FE001F80FE 000F83FFC007FF7FC001FC7FC01A167E951F?I?FFF03FE0FFF03FE0FFF03FE00FC00E00 0FE01E0007E01C0007E01C0003F0380003F0380003F8780001F8700001FCF00000FCE000 00FCE000007FC000007FC000007FC000003F8000003F8000001F0000001F0000000E0000 1B167F951E?I?FFE3FF8FF8FFE3FF8FF8FFE3FF8FF81FC07C03C00FC0FE03800FC0FE03 800FE0FF078007E1FF070007E1DF070003F1DF8E0003F38F8E0003F38F8E0001FB8FDC00 01FF07DC0001FF07FC0000FF07F80000FE03F80000FE03F800007E03F000007C01F00000 3C01E000003800E00025167F9528?I E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 259 36 a Fj(Ajen)n(ts:)25 b(T)-5 b(o)n(w)n(ards)21 b(an)e(En)n(vironmen)n(t)g(for)f(P)n(arallel,)j(Distributed)606 102 y(and)e(Mobile)g(Ja)n(v)m(a)g(Applications)725 208 y Fi(Matthew)13 b(Izatt,)g(P)o(atric)o(k)h(Chan)690 256 y(Departmen)o(t)g(of)f(Computer)g(Science)598 304 y(Y)m(ork)g(Univ)o (ersit)o(y)m(,)h(T)m(oron)o(to,)f(On)o(tario,)g(M3J)g(1P3)716 352 y Fh(f)p Fg(izatt,y-c)o(han)o Fh(g)p Fg(@cs)o(.yo)o(rk)o(u.c)o(a) 873 447 y Fi(Tim)h(Brec)o(h)o(t)690 495 y(Departmen)o(t)g(of)f (Computer)g(Science)527 543 y(Univ)o(ersit)o(y)i(of)d(W)m(aterlo)q(o,)j (W)m(aterlo)q(o,)f(On)o(tario,)f(N2L)g(3G1)754 591 y Fg(brecht@cs.u)o(wa)o(ter)o(loo)o(.c)o(a)-76 743 y Ff(Abstract)-76 822 y Fi(The)18 b(rapid)h(proliferation)h(of)e(the)g(W)m(orld-Wide)i(W) m(eb)e(has)h(b)q(een)-76 863 y(due)13 b(to)e(the)h(seamless)i(access)e (it)g(pro)o(vides)i(to)e(information)i(that)e(is)-76 905 y(distributed)h(b)q(oth)e(within)g(organizations)i(and)e(around)h (the)e(w)o(orld.)-76 946 y(In)i(this)g(pap)q(er,)g(w)o(e)f(describ)q(e) i(the)f(design)h(and)f(implemen)o(tation)i(of)-76 988 y(a)f(system,)h(called)h(Ajen)o(ts,)d(whic)o(h)i(pro)o(vides)h(the)f (soft)o(w)o(are)f(infras-)-76 1029 y(tructure)g(necessary)h(to)e(supp)q (ort)i(a)e(similar)j(lev)o(el)f(of)e(seamless)h(ac-)-76 1071 y(cess)f(to)f(organization)q(-wide)j(or)e(w)o(orld-wide)h (heterogeneous)g(com-)-76 1112 y(puting)i(resources.)-20 1154 y(Ajen)o(ts)j(in)o(tro)q(duces)i(class)f(libraries)i(whic)o(h)e (are)g(written)f(en-)-76 1195 y(tirely)c(in)f(Ja)o(v)n(a)g(and)g(that)f (run)h(on)g(an)o(y)g(standard)h(complian)o(t)g(Ja)o(v)n(a)-76 1237 y(virtual)i(mac)o(hine.)23 b(These)15 b(class)g(libraries)i (implemen)o(t)f(and)f(com-)-76 1278 y(bine)20 b(sev)o(eral)f(imp)q (ortan)o(t)h(features)f(that)g(are)f(essen)o(tial)i(to)f(sup-)-76 1320 y(p)q(orting)11 b(distributed)i(and)d(parallel)j(computing)e (using)h(Ja)o(v)n(a.)j(Suc)o(h)-76 1361 y(features)h(include:)24 b(the)15 b(abilit)o(y)j(to)d(easily)j(create)d(ob)r(jects)h(on)g(re-) -76 1403 y(mote)e(hosts,)g(in)o(teract)h(with)f(those)g(ob)r(jects)g (through)h(either)g(syn-)-76 1444 y(c)o(hronous)h(or)f(async)o(hronous) h(remote)f(metho)q(d)g(in)o(v)o(o)q(cations,)j(and)-76 1486 y(to)13 b(freely)h(migrate)g(ob)r(jects)f(to)g(heterogeneous)i (hosts.)-20 1527 y(Our)f(exp)q(erimen)o(tal)i(results)f(sho)o(w)f(that) g(in)h(our)f(test)g(en)o(viron-)-76 1569 y(men)o(t:)28 b(w)o(e)18 b(are)g(able)i(to)e(ac)o(hiev)o(e)i(go)q(o)q(d)f(sp)q(eedup) h(on)f(a)f(sample)-76 1610 y(parallel)c(applicatio)q(n;)g(the)e(o)o(v)o (erheads)h(in)o(tro)q(duced)g(b)o(y)f(our)g(imple-)-76 1652 y(men)o(tation)g(do)e(not)h(adv)o(ersely)h(a\013ect)e(remote)h (metho)q(d)g(in)o(v)o(o)q(cation)-76 1693 y(times;)21 b(and)e(\(somewhat)g(surprisingly)q(\))i(the)d(cost)g(of)g(migration) -76 1735 y(do)q(es)e(not)g(greatly)h(impact)g(the)f(execution)h(time)f (of)g(an)g(example)-76 1776 y(application)q(.)-76 1874 y Ff(1)41 b(Intro)q(duction)-76 1953 y Fi(One)12 b(of)g(the)h(comp)q (elling)i(reasons)e(for)f(implemen)o(ting)k(distributed)-76 1994 y(and)e(parallel)h(application)q(s)g(in)f(Ja)o(v)n(a)f(is)g(that)g (compiled)i(Ja)o(v)n(a)e(pro-)-76 2036 y(grams)j(pro)q(duce)g(b)o(yte)g (co)q(de)g(whic)o(h)g(ma)o(y)f(b)q(e)h(executed)g(or)g(in)o(ter-)-76 2077 y(preted)j(on)f(an)o(y)g(mac)o(hine)h(that)f(implemen)o(ts)i(the)e (Ja)o(v)n(a)g(Virtual)-76 2119 y(Mac)o(hine)f(\(JVM\))e([12].)24 b(This)16 b(frees)g(the)f(programmer)i(from)e(b)q(e-)-76 2160 y(ing)g(concerned)g(with)f(problems)h(due)g(to)e(di\013erences)j (in)e(arc)o(hitec-)-76 2202 y(ture)d(that)f(traditionall)q(y)j(plague)f (heterogeneous)g(distributed)h(and)-76 2243 y(parallel)i(application)q (s.)k(Additionall)q(y)m(,)c(the)e(standardized)h(virtual)-76 2285 y(mac)o(hine)j(pro)o(vides)f(for)f(new)g(opp)q(ortunities)j(to)d (migrate)h(ob)r(jects)-76 2326 y(b)q(et)o(w)o(een)g(heterogeneous)i (hosts.)26 b(Moreo)o(v)o(er,)16 b(the)g(Ja)o(v)n(a)g(securit)o(y)-76 2368 y(manager)f(pro)o(vides)h(functions)g(whic)o(h)f(are)g(esp)q (ecially)i(imp)q(ortan)o(t)1020 743 y(in)e(a)f(distributed)j(system)d (where)g(un)o(trusted)i(user)e(programs)h(are)1020 785 y(gran)o(ted)f(p)q(ermission)h(to)e(execute)h(on)f(unrelated)i(hosts.) 1076 826 y(Ajen)o(ts)1198 810 y Fe(1)1230 826 y Fi(is)g(a)f(collection) j(of)d(Ja)o(v)n(a)h(classes)g(and)g(serv)o(ers)g(\(also)1020 868 y(written)10 b(in)h(standard)g(Ja)o(v)n(a\))f(designed)i(to)e(pro)o (vide)h(a)f(seamless,)i(in-)1020 909 y(tegrated)g(en)o(vironmen)o(t)i (for)e(implemen)o(ting)i(distributed,)g(parallel)1020 951 y(and)e(mobile)g(Ja)o(v)n(a)f(application)q(s.)19 b(No)10 b(mo)q(di\014cations)k(are)d(made)g(to)1020 992 y(the)k(Ja)o(v)n(a)g(language)i(and)e(no)g(prepro)q(cessors,)i(sp)q (ecial)f(compilers,)1020 1034 y(or)i(sp)q(ecial)i(stub)e(compilers)i (are)e(required.)33 b(Therefore,)19 b(Ajen)o(ts)1020 1075 y(can)13 b(b)q(e)h(executed)g(on)f(an)o(y)h(standard)g(Ja)o(v)n(a) f(virtual)i(mac)o(hine.)1076 1117 y(With)k(Ajen)o(ts,)f(one)h(can)f(p)q (ermit)h(users)f(who)g(do)g(not)g(other-)1020 1158 y(wise)12 b(ha)o(v)o(e)g(access)h(to)e(outside)i(systems)f(to)g(utilize)i(these)e (systems,)1020 1200 y(while)i(Ja)o(v)n(a)e(securit)o(y)h(features)g (are)f(used)h(to)g(protect)f(hosts)h(whic)o(h)1020 1241 y(pro)o(vide)h(access)f(to)f(their)h(resources.)18 b(This)13 b(is)g(done)g(b)o(y)g(running)h(a)1020 1283 y(relativ)o(ely)g(small)f (and)f(simple)h(serv)o(er)f(\(called)h(the)f(Ajen)o(ts)f(serv)o(er\).) 1020 1324 y(It)16 b(acts)h(as)g(a)f(p)q(oin)o(t)i(of)f(con)o(tact)g (for)f(application)q(s)j(that)e(wish)g(to)1020 1366 y(utilize)e(or)e (access)h(resources)g(on)f(that)g(system.)1076 1407 y(The)g(com)o (bination)j(of)d(the)g(Ajen)o(ts)g(serv)o(er)h(and)f(class)i(libraries) 1020 1449 y(greatly)k(simpli\014es)h(the)e(task)g(of)g(writing)h (distributed)h(Ja)o(v)n(a)e(ap-)1020 1490 y(plications)g(b)o(y)e(supp)q (orting)i(sev)o(eral)f(k)o(ey)e(features)h(not)g(curren)o(tly)1020 1532 y(supp)q(orted)f(in)e(Ja)o(v)n(a:)1065 1612 y(1.)18 b Fd(Remote)c(Ob)r(ject)f(Creation:)18 b Fi(While)c(Ja)o(v)n(a)d(supp)q (orts)i(re-)1113 1653 y(mote)h(metho)q(d)g(in)o(v)o(o)q(cation)j(there) c(is)i(no)e(supp)q(ort)i(pro)o(vided)1113 1695 y(for)f(remote)h(ob)r (ject)f(creation.)22 b(While)16 b(it)e(is)h(p)q(ossible)h(to)f(in-)1113 1736 y(v)o(ok)o(e)g(metho)q(ds)f(of)f Fg(remote)e Fi(ob)r(jects)j(that) g(ha)o(v)o(e)g(b)q(een)h(stati-)1113 1778 y(cally)g(created)f(on)f(a)g (remote)h(mac)o(hine,)g(there)f(is)h(no)f(w)o(a)o(y)g(to)1113 1819 y(actually)j(create)d(an)g(ob)r(ject)g(on)h(a)f(remote)g(mac)o (hine)h(from)f(a)1113 1861 y(lo)q(cal)g(mac)o(hine.)k(Ajen)o(ts)10 b(pro)o(vides)i(facilities)h(for)d(the)h(remote)1113 1902 y(creation)k(and)e(referencing)i(of)e(standard)h(Ja)o(v)n(a)f(ob)r (jects.)1065 1974 y(2.)18 b Fd(Remote)12 b(Classloading)p Fi(:)17 b(In)11 b(order)f(to)h(b)q(e)f(able)i(to)e(instan-)1113 2015 y(tiate)17 b(ob)r(jects)g(on)f(an)o(y)g(remote)h(host,)f(Ajen)o (ts)g(implemen)o(ts)1113 2057 y(remote)e(class)g(loading.)19 b(When)14 b(creating)h(or)e(migrating)i(ob-)1113 2098 y(jects,)e(Ajen)o(ts)g(includes)j(the)d(relev)n(an)o(t)i(b)o(yte-co)q (de,)f(allo)o(wing)1113 2140 y(the)f(remote)g(serv)o(er)h(to)e (de\014ne)i(and)g(load)g(the)f(class)g(dynam-)1113 2181 y(ically)m(.)1065 2252 y(3.)18 b Fd(Async)o(hronous)12 b(Remote)g(Metho)q(d)f(In)o(v)o(o)q(cation)h(\(F)l(u-)1113 2294 y(tures\))p Fi(:)22 b(Although)16 b(Remote)f(Metho)q(d)h(In)o(v)o (o)q(cation)g(\(RMI\))1113 2335 y(is)11 b(supp)q(orted)h(in)f(Ja)o(v)n (a)f([21)q(],)f(all)j(in)o(v)o(o)q(cations)h(are)d(p)q(erformed)1113 2377 y(sync)o(hronously)n(.)23 b(Ajen)o(ts)14 b(supp)q(orts)i(the)f (abilit)o(y)h(to)f(o)o(v)o(erlap)1113 2419 y(comm)o(unication)j(with)e (computation)h(b)o(y)f(pro)o(viding)i(asyn-)1113 2460 y(c)o(hronous)12 b(remote)f(metho)q(d)g(in)o(v)o(o)q(cation.)19 b(The)11 b(in)o(v)o(oking)i(ob-)1113 2502 y(ject)g(is)h(then)f(free)g (to)g(con)o(tin)o(ue)h(execution)h(un)o(til)g(a)e(p)q(oin)o(t)h(at)1113 2543 y(whic)o(h)g(a)f(returned)h(v)n(alue)g(is)g(needed)g(\(if)f(an)o (y\).)p 1020 2575 399 2 v 1063 2599 a Fc(1)1080 2612 y Fb(The)f(name)g(Ajen)o(ts)h(w)o(as)g(c)o(hosen)g(b)q(ecause)f(w)o(e)h (b)q(eliev)o(e)f(that)g(this)h(en)o(vi-)1020 2645 y(ronmen)o(t)i(w)o (ould)f(mak)o(e)g(a)h(go)q(o)q(d)f(to)q(ol)g(for)h(building)f(mobile)f (agen)o(ts)i(using)1020 2678 y(Ja)o(v)n(a.)p eop %%Page: 2 2 2 1 bop -31 -34 a Fi(4.)19 b Fd(Ob)r(ject)g(Migration)p Fi(:)26 b(One)18 b(of)f(the)g(k)o(ey)h(comp)q(onen)o(ts)g(of)18 7 y(Ajen)o(ts)11 b(is)h(its)g(abilit)o(y)i(to)e(migrate)h(ob)r(jects)f (to)f(m)o(ultiple)j(het-)18 49 y(erogeneous)h(hosts.)21 b(In)14 b(an)h(en)o(vironmen)o(t)h(where)e(resources)18 90 y(are)e(b)q(eing)j(loaned)f(and)f(shared)h(b)o(y)f(a)g(n)o(um)o(b)q (er)g(of)g(users,)g(w)o(e)18 132 y(b)q(eliev)o(e)k(that)f(it)g(is)g (imp)q(ortan)o(t)h(to)e(b)q(e)h(able)h(to)e(migrate)i(an)18 173 y(ob)r(ject)d(while)i(it)f(is)h(executing.)23 b(Ajen)o(ts)15 b(is)g(able)h(to)e(accom-)18 215 y(plish)i(this)g(without)g(a)f(prepro) q(cessor,)i(and)e(without)h(mo)q(di-)18 256 y(fying)f(the)g(virtual)i (mac)o(hine,)f(compiler)h(or)d(stub)i(compiler.)18 298 y(This)10 b(is)g(implemen)o(ted)i(using)f(c)o(hec)o(kp)q(oin)o(ting,)i (roll)d(bac)o(k)h(and)18 339 y(restarting)19 b(mec)o(hanisms.)32 b(Th)o(us,)19 b(if)f(desired,)i(an)o(y)e(ob)r(ject)18 381 y(can)10 b(b)q(e)g(migrated)h(while)g(executing)g(b)o(y)g(in)o (terrupting)h(its)e(ex-)18 422 y(ecution,)15 b(mo)o(ving)h(the)e(most)g (recen)o(tly)i(c)o(hec)o(kp)q(oin)o(ted)g(state)18 464 y(of)i(the)g(ob)r(ject)h(and)g(restarting)g(the)g(curren)o(tly)g (executing)18 505 y(metho)q(d.)31 b(These)17 b(mec)o(hanisms)i(not)f (only)h(p)q(ermit)f(an)g(ob-)18 547 y(ject's)c(execution)k(to)d(b)q(e)h (in)o(terrupted)h(but)f(will)h(also)g(pro)o(v)o(e)18 588 y(useful)e(in)h(the)e(future)h(when)g(w)o(e)f(hop)q(e)i(to)e(add)h (fault)h(toler-)18 630 y(ance)d(and)h(p)q(ersistence.)-20 710 y(W)m(e)22 b(b)q(eliev)o(e)j(that)d(con)o(tin)o(ued)i(impro)o(v)o (emen)o(t)g(in)e(execution)-76 751 y(sp)q(eeds)h(of)e(Ja)o(v)n(a)g (applicatio)q(ns)j(due)e(to)g(just-in-time)g(compiler)-76 793 y(tec)o(hnology)j(and)e(the)g(com)o(bination)i(of)d(features)h(pro) o(vided)h(in)-76 834 y(Ajen)o(ts)11 b(mak)o(e)h(Ajen)o(ts)g(an)f (excellen)o(t)j(basis)f(for)e(dev)o(eloping)j(p)q(o)o(w)o(er-)-76 876 y(ful)g(distributed,)h(parallel)h(and)d(mobile)i(Ja)o(v)n(a)e (application)q(s.)-20 917 y(The)f(remainder)i(of)e(the)h(pap)q(er)g(is) g(organized)h(as)e(follo)o(ws.)18 b(Sec-)-76 959 y(tion)g(2)f (discusses)i(related)f(w)o(ork.)29 b(Section)18 b(3)f(describ)q(es)i (the)e(ar-)-76 1000 y(c)o(hitecture)c(of)e(Ajen)o(ts)h(and)g(the)g(mec) o(hanisms)h(used)g(to)e(implemen)o(t)-76 1042 y(remote)j(ob)r(ject)g (creation,)i(remote)e(class)h(loading,)h(async)o(hronous)-76 1083 y(remote)h(metho)q(d)h(in)o(v)o(o)q(cation,)i(and)d(ob)r(ject)g (migration.)30 b(In)17 b(Sec-)-76 1125 y(tion)d(4)f(w)o(e)g(ev)n (aluate)i(the)e(p)q(erformance)h(of)f(sev)o(eral)h(of)f(Ajen)o(ts)g(k)o (ey)-76 1166 y(comp)q(onen)o(ts)i(and)e(the)g(p)q(erformance)h(of)f (some)g(applicati)q(ons)j(that)-76 1208 y(ha)o(v)o(e)i(b)q(een)g (implemen)o(ted)i(using)f(Ajen)o(ts.)29 b(Section)19 b(5)e(discusses)-76 1249 y(some)e(of)e(the)i(issues)g(related)g(to)f (the)h(curren)o(t)f(design)i(and)f(imple-)-76 1291 y(men)o(tation)i (and)f(describ)q(es)h(p)q(ossibili)q(tie)q(s)h(for)d(future)g(w)o(ork.) 24 b(The)-76 1332 y(pap)q(er)14 b(is)g(concluded)h(with)e(a)g(summary)m (,)g(in)h(Section)h(6.)-76 1430 y Ff(2)41 b(Related)14 b(W)o(o)o(rk)-76 1509 y Fi(Muc)o(h)j(of)g(the)f(imp)q(etus)i(for)e(the) h(design)h(of)e(Ajen)o(ts)h(comes)f(from)-76 1550 y(exp)q(erience)23 b(with)e(P)o(araW)m(eb)h([4)o(],)g(a)f(Ja)o(v)n(a)g(based)g(en)o (vironmen)o(t)-76 1592 y(for)15 b(parallel)j(computing.)26 b(P)o(araW)m(eb)16 b(w)o(as)g(designed)h(and)f(imple-)-76 1633 y(men)o(ted)k(b)q(efore)f(remote)g(metho)q(d)g(in)o(v)o(o)q (cation)j([24])c(and)i(ob)r(ject)-76 1675 y(serializatio)q(n)e([18])c (w)o(ere)h(added)h(to)f(Ja)o(v)n(a.)23 b(Hence,)16 b(ob)r(jects)f(com-) -76 1716 y(m)o(unicate)f(through)h(the)e(a)o(wkw)o(ard)g(so)q(c)o(k)o (ets)g(in)o(terface.)-20 1758 y(Other)18 b(systems)g(dev)o(elop)q(ed)i (since)e(that)g(time)g(also)h(lev)o(erage)-76 1799 y(the)c(Ja)o(v)n(a)g (virtual)i(mac)o(hine)g(to)d(pro)o(vide)j(distributed)h(or)d(parallel) -76 1841 y(computing)h(platforms)g(on)e(heterogeneous)j(computing)f(en) o(viron-)-76 1882 y(men)o(ts)d([6,)g(3,)f(1)q(,)g(5,)h(15,)g(25,)f(19)q (].)-20 1924 y(Ja)o(v)n(aP)o(art)o(y)18 b([15])e(in)o(tro)q(duces)k (the)d Fg(remote)d Fi(class)19 b(mo)q(di\014er)f(to)-76 1965 y(the)f(Ja)o(v)n(a)f(language.)29 b(Adding)17 b(this)h(new)e(k)o (eyw)o(ord)h(to)f(the)g(class)-76 2007 y(de\014nition)21 b(denotes)d(that)h(the)f(class)h(should)g(b)q(e)f(used)h(in)g(a)e(dis-) -76 2048 y(tributed)e(fashion.)j(T)m(o)13 b(accomplish)i(this,)f(Ja)o (v)n(aP)o(art)o(y)g(uses)f(a)g(pre-)-76 2090 y(pro)q(cessor)f(whic)o(h) h(con)o(v)o(erts)e Fg(remote)e Fi(classes)k(in)o(to)f(pure)f(Ja)o(v)n (a)h(co)q(de)-76 2131 y(with)17 b(RMI)f(ho)q(oks.)27 b(The)16 b(c)o(hange)h(to)f(the)g(language)j(is)d(designed)-76 2173 y(to)h(simplify)i(RMI)e(programming,)j(placing)f(the)e(burden)h (of)e(cre-)-76 2214 y(ating)i(and)f(handling)i(remote)e(pro)o(xies)h (up)q(on)f(the)g(prepro)q(cessor.)-76 2256 y(This)i(greatly)g (simpli\014es)i(the)d(programming)i(task,)g(but)e(results)-76 2297 y(in)g(increased)h(complexit)o(y)g(in)f(the)f(actual)h(Ja)o(v)n(a) f(co)q(de)h(pro)q(duced)-76 2339 y(b)o(y)f(the)f(prepro)q(cessor.)29 b(Ho)o(w)o(ev)o(er,)17 b(the)g(main)g(dra)o(wbac)o(k)g(of)f(this)-76 2380 y(approac)o(h)d(is)f(that)f(it)h(in)o(tro)q(duces)h(mo)q (di\014cations)h(to)d(the)g(Ja)o(v)n(a)g(lan-)-76 2422 y(guage)h(and)f(therefore)g(necessitates)i(the)e(use)g(of)f(the)h (prepro)q(cessor.)-76 2463 y(The)h(mec)o(hanisms)j(supplied)g(b)o(y)d (Ajen)o(ts)g(p)q(ermits)i(users)f(to)f(create)-76 2505 y(remote)i(ob)r(jects)f(without)i(using)g(a)e(sp)q(ecial)i(compiler,)g (stub)f(com-)-76 2546 y(piler)i(or)f(prepro)q(cessor.)23 b(In)14 b(fact)h(Ajen)o(ts)f(is)h(able)h(to)e(supp)q(ort)i(the)-76 2588 y(creation)h(of)f(remote)g(ob)r(jects)h(for)e(whic)o(h)i(only)h (the)e(b)o(yte-co)q(de)h(is)-76 2629 y(a)o(v)n(ailable.)29 b(Suc)o(h)16 b(ob)r(jects)h(can)f(b)q(e)g(created)h(remotely)g(and)f (their)-76 2671 y(metho)q(ds)f(ma)o(y)g(b)q(e)f(in)o(v)o(ok)o(ed)i (sync)o(hronously)h(or)e(async)o(hronously)m(.)1020 -34 y(Ho)o(w)o(ev)o(er,)f(in)h(order)g(for)f(them)g(to)g(b)q(e)g(eligibl)q (e)j(for)d(migration)i(the)1020 7 y(original)h(ob)r(jects)d(m)o(ust)g (b)q(e)g(serializabl)q(e)j(\(and)d(if)h(they)f(aren't)g(it's)1020 49 y(relativ)o(ely)20 b(simple)f(for)f(a)f(programmer)i(to)e(extend)i (the)e(original)1020 90 y(ob)r(ject)c(so)g(that)h(it)f(is)h (serializable\).)1076 132 y(Ja)o(v)o(elin)i([5])e(and)h(Sup)q(erW)m(eb) h([1)o(])e(implemen)o(t)i(a)f(\\global)h(com-)1020 173 y(puting)f(infrastructure")h(whic)o(h)f(brings)g(together)f(three)g(t)o (yp)q(es)g(of)1020 215 y(en)o(tities:)20 b(clien)o(ts,)c(brok)o(ers)f (and)f(hosts.)21 b Fa(Clients)p Fi(,)12 b(who)i(seek)g(com-)1020 256 y(puting)20 b(resources,)g(register)g(with)f(a)f Fa(br)n(oker)f Fi(and)j(submit)f(their)1020 298 y(w)o(ork)e(in)h(the)f (form)g(of)f(an)i(applet.)30 b Fa(Hosts)p Fi(,)15 b(who)i(are)g (willing)j(to)1020 339 y(donate)e(resources,)g(con)o(tact)g(the)f(brok) o(er)g(and)h(run)f(the)g(applets.)1020 381 y(This)c(w)o(ork)f (emphasizes)i(metho)q(ds)f(for)e(bringing)k(together)d(clien)o(ts)1020 422 y(and)i(hosts,)f(and)h(fo)q(cuses)f(on)g(w)o(a)o(ys)g(of)g (bartering)i(for)e(CPU)f(time.)1076 464 y(The)19 b(goal)i(of)e (Charlotte)h([3,)e(9])h(is)h(to)f(supp)q(ort)i(distributed)1020 505 y(shared)14 b(memory)g(on)g(top)g(of)f(the)h(Ja)o(v)n(a)f(virtual)j (mac)o(hine.)k(It)13 b(pro-)1020 547 y(vides)e(classes)h(whic)o(h)f (encapsulate)h(the)e(b)q(eha)o(vior)j(of)c(a)i(distributed)1020 588 y(shared)j(memory)g(system.)j(All)e(accesses)e(to)g(shared)i (classes)f(m)o(ust)1020 630 y(b)q(e)g(done)g(through)h(the)e(pro)o (vided)j(in)o(terface)e(using)h(function)g(calls)1020 671 y(\(e.g.,)i Fg(myInt.get)o(\(\))p Fi(\).)25 b(Charlotte)18 b(pro)o(vides)g(an)g(abstraction)g(of)1020 713 y(DSM,)13 b(pro)o(viding)j(\014ne-grained)f(supp)q(ort)f(for)f(distributed)j(w)o (ork.)1076 754 y(Previous)24 b(w)o(ork)e(has)h(considered)i(mec)o (hanisms)f(for)e(imple-)1020 796 y(men)o(ting)17 b(async)o(hronous)g (remote)f(metho)q(d)g(in)o(v)o(o)q(cations)i([16].)24 b(In)1020 837 y(this)10 b(w)o(ork)g(a)f(mo)q(di\014ed)j(Ja)o(v)n(a)d (RMI)h(stub)g(compiler)h(\()p Fg(armic)p Fi(\))c(is)j(used)1020 879 y(to)15 b(implemen)o(t)h(async)o(hronous)h(remote)e(metho)q(d)h(in) o(v)o(o)q(cations.)25 b(If)1020 920 y(the)11 b(user)f(c)o(ho)q(oses)i (to)e(use)h Fg(armic)d Fi(\(instead)k(of)e(the)h(usual)h Fg(rmic)p Fi(\),)d(all)1020 962 y(stub)14 b(classes)i(created)e(will)h (b)q(e)f(mo)q(di\014ed)i(so)e(that)g(\(sync)o(hronous\))1020 1003 y(RMI)g(calls)g(are)g(made)g(b)o(y)f(a)h(separate)g(thread)g (resulting)h(in)g(asyn-)1020 1045 y(c)o(hronous)i(b)q(eha)o(vior)h(for) e(the)g(calling)j(ob)r(ject.)26 b(The)16 b(user)g(is)h(pro-)1020 1086 y(vided)12 b(with)e(the)g(option)i(of)e(allo)o(wing)i(all)g(RMI)e (calls)h(within)h(a)e(class)1020 1128 y(to)19 b(b)q(e)g(either)h(sync)o (hronous)g(or)f(async)o(hronous,)k(but)c(not)g(b)q(oth.)1020 1169 y(Ajen)o(ts)11 b(o)o(v)o(ercomes)i(this)f(problem)h(b)o(y)f(pro)o (viding)i(t)o(w)o(o)d(distinct)j(in-)1020 1211 y(terfaces)g(for)h(sync) o(hronous)h(and)f(async)o(hronous)i(metho)q(d)e(in)o(v)o(o)q(ca-)1020 1253 y(tions.)k(An)13 b(additional)k(b)q(ene\014t)e(of)e(our)g(approac) o(h)i(is)f(that)g(it)f(do)q(es)1020 1294 y(not)g(require)i(the)e(use)g (of)g(a)g(mo)q(di\014ed)i(stub)e(compiler.)1076 1336 y(Agen)o(t-orien)o(ted)20 b(Ja)o(v)n(a)f(systems,)h(some)f(examples)h (of)e(whic)o(h)1020 1377 y(include)g(Mole)e([19])f(and)i(Aglets)f ([11],)f(are)h(designed)h(to)f(supp)q(ort)1020 1419 y(Ja)o(v)n(a-based) k(autonomous)g(soft)o(w)o(are)f(agen)o(ts.)35 b(Remote)20 b(ob)r(jects)1020 1460 y(\(agen)o(ts\))11 b(ma)o(y)g(b)q(e)g(created,)h (and)f(are)g(pro)o(vided)i(with)e(mec)o(hanisms)1020 1502 y(for)i(mobilit)o(y)j(and)e(comm)o(unication.)20 b(This)14 b(indep)q(endence)i(allo)o(ws)1020 1543 y(ob)r(jects)f(free)f (reign,)h(but)g(limits)h(ties)f(to)f(the)g(original)j(clien)o(t)f(who) 1020 1585 y(created)f(the)g(ob)r(ject.)23 b(T)o(ypically)18 b(these)d(agen)o(t-orien)o(ted)i(systems)1020 1626 y(do)f(not)h(pro)o (vide)h(references)e(to)g(outside)i(ob)r(jects,)f(th)o(us)f(limiting) 1020 1668 y(the)f(user's)h(abilit)o(y)i(to)d(easily)i(p)q(erform)e (remote)h(metho)q(d)g(in)o(v)o(o)q(ca-)1020 1709 y(tions.)30 b(Generally)20 b(agen)o(t-orien)o(ted)e(systems)g(concen)o(trate)g(up)q (on)1020 1751 y(the)d(indep)q(enden)o(t)j(mo)o(v)o(emen)o(t)d(of)g(ob)r (jects,)g(while)i(pro)o(viding)g(less)1020 1792 y(supp)q(ort)e(for)f (in)o(teraction)i(and)f(con)o(trol)g(b)o(y)g(the)f(ob)r(ject's)g (creator.)1020 1834 y(In)g(suc)o(h)g(systems,)g(in)g(order)h(for)e (agen)o(ts)h(to)g(b)q(eha)o(v)o(e)g(in)o(tellig)q(en)o(tl)q(y)m(,)1020 1875 y(y)o(et)19 b(indep)q(enden)o(tl)q(y)m(,)k(their)d(b)q(eha)o(vior) h(m)o(ust)f(b)q(e)f(explicitl)q(y)j(pro-)1020 1917 y(grammed.)33 b(F)m(or)18 b(example,)j(it)d(is)h(t)o(ypical)h(for)e(suc)o(h)h (systems)f(to)1020 1958 y(require)c(a)f(stop)g(metho)q(d)g(to)f(b)q(e)h (called,)i(b)q(efore)d(migrating)j(an)e(ob-)1020 2000 y(ject.)18 b(Therefore,)13 b(eac)o(h)h(agen)o(t)f(m)o(ust)h(b)q(e)g (programmed)g(to)f(handle)1020 2041 y(a)18 b(stop)g(metho)q(d)g(in)g (whic)o(h)h(it)e(prepares)i(to)e(migrate,)j(including)1020 2083 y(ensuring)g(that)d(its)h(state)g(do)q(es)g(not)g(c)o(hange.)31 b(The)18 b(agen)o(t)g(m)o(ust)1020 2124 y(also)f(b)q(e)g(programmed)h (to)e(handle)i(a)e(restart)h(metho)q(d)g(after)f(mi-)1020 2166 y(gration)e(is)e(complete.)18 b(This)13 b(t)o(yp)q(e)g(of)e(in)o (tellig)q(en)o(t)k(b)q(eha)o(vior)f(places)1020 2207 y(the)h(burden)g(up)q(on)h(the)e(programmer,)i(rather)e(than)i(the)e (system.)1020 2249 y(Ajen)o(ts,)c(on)g(the)g(other)h(hand)g(is)f (targeted)h(to)o(w)o(ards)f(easily)i(building)1020 2290 y(distributed)19 b(ob)r(ject)d(applicati)q(ons)j(and)e(as)g(a)f(result) h(emphasizes)1020 2332 y(programming)e(simplicit)o(y)h(and)d(ob)r(ject) h(con)o(trol.)k(Unlik)o(e)c(existing)1020 2373 y(agen)o(t-orien)o(ted)h (systems,)f(Ajen)o(ts')e(ob)r(jects)i(are)f(not)h(exp)q(ected)g(to)1020 2415 y(exert)f(self-con)o(trol,)h(or)f(ha)o(v)o(e)h(kno)o(wledge)h(of)d (the)i(system.)1076 2456 y(Another)22 b(system,)i(ABC++)d([2],)i(whic)o (h)g(is)g(a)e(library)j(de-)1020 2498 y(signed)15 b(for)f(concurren)o (t)h(ob)r(ject-orien)o(ted)g(parallel)h(programming)1020 2539 y(in)f(C++,)f(has)h(in\015uenced)i(the)e(design)h(of)f(Ajen)o(ts') f(in)o(terfaces)h(for)1020 2581 y(remote)21 b(ob)r(ject)h(creation)g (and)g(async)o(hronous)h(RMI.)e(ABC++)1020 2622 y(do)q(es)14 b(not)g(supp)q(ort)g(ob)r(ject)g(migration,)h(nor)f(do)q(es)g(it)g (include)i(sp)q(e-)1020 2664 y(cial)e(features)g(for)f(heterogeneous)h (computing.)p eop %%Page: 3 3 3 2 bop -20 -34 a Fi(While)12 b(sharing)g(man)o(y)f(of)f(the)g(same)g (goals)h(as)g(the)f(systems)g(dis-)-76 7 y(cussed,)i(w)o(e)e(b)q(eliev) o(e)i(Ajen)o(ts)f(has)g(few)o(er)f(restrictions)i(up)q(on)g(its)f(use.) -76 49 y(Ajen)o(ts)f(is)g(built)i(en)o(tirely)g(up)q(on)f(the)f (existing)i(distribution)i(of)9 b(Ja)o(v)n(a)-76 90 y(to)q(ols)16 b(in)g(the)f(JDK.)f(No)h(mo)q(di\014cations)j(to)d(the)g(virtual)i(mac) o(hine)-76 132 y(are)12 b(necessary)m(,)h(the)f(Ja)o(v)n(a)h(language)h (has)e(not)h(b)q(een)f(c)o(hanged,)i(and)-76 173 y(w)o(e)f(do)i(not)f (require)h(the)e(use)i(of)e(mo)q(di\014ed)j(compilers,)f(stub)f(com-) -76 215 y(pilers)k(or)f(prepro)q(cessors.)28 b(W)m(e)17 b(b)q(eliev)o(e)h(that)f(Ajen)o(ts)f(is)h(capable)-76 256 y(of)12 b(supp)q(orting)i(most)d(of)h(the)f(features)h(included)j (in)d(other,)g(similar)-76 298 y(systems.)17 b(While)d(not)e (completely)i(transparen)o(t)f(to)f(the)g(program-)-76 339 y(mer,)h(Ajen)o(ts)g(do)q(es)h(pro)o(vide)h(these)e(features)h (more)f(transparen)o(tly)-76 381 y(in)f(some)f(cases)g(and)h(in)g (other)f(cases)g(with)g(few)o(er)g(restrictions)i(than)-76 422 y(existing)i(systems.)-76 520 y Ff(3)41 b(Ajents)14 b(Architecture)-76 599 y Fi(In)g(this)h(section,)h(w)o(e)d(describ)q(e) j(the)f(design)g(and)g(implemen)o(tation)-76 640 y(of)f(Ajen)o(ts.)21 b(W)m(e)15 b(describ)q(e)h(those)f(features)g(of)f(the)h(system)g(that) f(a)-76 682 y(programmer)h(uses)g(in)f(order)h(to)f(implemen)o(t)i(a)e (distributed,)i(par-)-76 723 y(allel)e(or)d(mobile)i(application)q(.)19 b(An)11 b(ob)r(ject)h(m)o(ust)g(b)q(e)f(created)h(\(Sec-)-76 765 y(tion)18 b(3.1\),)g(on)g(an)f(Ajen)o(ts)h(serv)o(er)f(\(Section)i (3.3\),)f(where)f(it)h(will)-76 806 y(b)q(e)13 b(instan)o(tiated)h (based)f(up)q(on)g(its)g(class)g(\014le)g(\(Section)h(3.2\).)i(F)m(rom) -76 848 y(there,)g(metho)q(ds)g(of)f(the)g(ob)r(ject)g(can)h(b)q(e)f (in)o(v)o(ok)o(ed)i(\(Section)g(3.4\),)-76 889 y(and)g(the)g(ob)r(ject) g(ma)o(y)f(b)q(e)h(migrated)h(to)e(other)h(serv)o(ers)g(\(Section)-76 931 y(3.5\).)-76 1024 y Ff(3.1)41 b(Remote)13 b(Object)g(Creation)-76 1090 y Fi(One)i(of)g(the)h(more)f(serious)i(limitations)h(with)e(resp)q (ect)g(to)f(imple-)-76 1132 y(men)o(ting)c(distributed)h(applicatio)q (ns)g(using)g(the)d(curren)o(t)i(de\014nition)-76 1173 y(of)j(Ja)o(v)n(a)h(\(JDK)f(1.1\))g(is)h(that)g(although)h(supp)q(ort)g (is)f(pro)o(vided)h(for)-76 1215 y(remote)e(metho)q(d)h(in)o(v)o(o)q (cation)h(there)e(is)h(no)f(supp)q(ort)h(pro)o(vided)g(for)-76 1256 y(remote)f(ob)r(ject)h(creation.)21 b(In)14 b(other)g(w)o(ords,)g (while)i(it)e(is)h(p)q(ossible)-76 1298 y(to)g(in)o(v)o(ok)o(e)i(metho) q(ds)f(of)f(existing)i(ob)r(jects)f(that)f(ha)o(v)o(e)h(b)q(een)f (stat-)-76 1339 y(ically)j(created)e(and)g(are)g(already)h(kno)o(wn)g (to)e(exist)i(on)f(a)f(remote)-76 1381 y(mac)o(hine)k(there)e(is)h(no)g (w)o(a)o(y)f(to)g(create)h(an)g(ob)r(ject)f(on)h(a)f(remote)-76 1422 y(mac)o(hine.)-20 1464 y(Ja)o(v)n(a)10 b(1.2)g(in)o(tro)q(duces)i Fg(Activatabl)o(e)7 b Fi(ob)r(jects.)16 b(An)10 b(activ)n(atable)-76 1505 y(ob)r(ject)h(describ)q(es)i(an)e(ob)r(ject)g(whic)o(h)h(is)f (statically)j(registered)e(with)-76 1547 y(a)f(daemon,)g(but)g(is)g (not)g(actually)h(created)f(un)o(til)h(a)f(remote)f(metho)q(d)-76 1588 y(is)k(in)o(v)o(ok)o(ed)g(up)q(on)g(the)g(ob)r(ject.)j (Registering)e(with)f(the)f(daemon)h(is)-76 1630 y(completed)f(b)o(y)e (using)h(a)f(\\setup")h(class,)g(whic)o(h)g(m)o(ust)f(b)q(e)g(executed) -76 1671 y(on)i(the)g(remote)g(host.)k(Later,)c(up)q(on)h(receiving)h (the)e(\014rst)g(RMI)g(re-)-76 1713 y(quest)i(to)f(the)h(registered)g (ob)r(ject,)g(the)f(daemon)h(instan)o(tiates)i(the)-76 1754 y(ob)r(ject.)h(While)e(this)e(reduces)g(the)f(need)h(to)g(ha)o(v)o (e)f(remote)h(ob)r(jects)-76 1796 y(p)q(ermanen)o(tly)20 b(activ)o(e)f(\(whether)f(they)h(are)f(curren)o(tly)h(in)g(use)f(or)-76 1837 y(not\),)c(it)h(still)h(do)q(es)e(not)g(pro)o(vide)i(the)e (\015exibili)q(t)o(y)j(of)c(dynamic)j(on-)-76 1879 y(demand)h(ob)r (ject)g(creation.)27 b(Activ)n(ation)18 b(is)f(mainly)h(in)o(tended)g (as)-76 1920 y(a)c(means)h(of)e(impro)o(ving)k(resource)d(con)o(trol)h (rather)g(than)f(for)g(sup-)-76 1962 y(p)q(orting)i(remote)f(ob)r(ject) g(creation.)23 b(In)14 b(Ajen)o(ts,)h(only)h(the)e(Ajen)o(ts)-76 2003 y(serv)o(er)g(m)o(ust)f(b)q(e)g(started)h(on)f(a)g(remote)g(host)h (and)f(once)h(it)f(is)h(run-)-76 2045 y(ning)k(it)f(pro)o(vides)i(the)d (facilities)k(necessary)d(to)g(create)g(an)o(y)g(user)-76 2086 y(de\014ned)d(remote)g(ob)r(ject.)-20 2128 y(In)9 b(Ajen)o(ts,)h(remote)f(ob)r(ject)h(creation)g(is)g(is)g(supp)q(orted)h (b)o(y)f(clien)o(t)-76 2169 y(and)i(serv)o(er)g(side)g(class)h (libraries.)18 b(The)12 b(k)o(ey)f(mec)o(hanisms)i(used)f(for)-76 2211 y(remote)18 b(ob)r(ject)f(creation)i(are)e(implemen)o(ted)j (inside)f(the)e(Ajen)o(ts)-76 2252 y(serv)o(er)e(whic)o(h)g(is)f (implemen)o(ted)j(in)e(Ja)o(v)n(a)f(and)h(executes)g(within)g(a)-76 2294 y(Ja)o(v)n(a)f(virtual)h(mac)o(hine)g(on)f(the)f(remote)h(host.)k (This)d(enables)g(an)o(y)-76 2335 y(mac)o(hine)c(whic)o(h)g(is)g (running)h(the)e(Ajen)o(ts)f(serv)o(er)h(to)g(act)g(as)g(a)g(target)-76 2377 y(for)16 b(remote)g(ob)r(ject)g(creation.)27 b(Figure)18 b(1)e(sho)o(ws)g(an)g(example)h(of)-76 2418 y(ho)o(w)e(a)f(user)h (creates)g(a)g(remote)f(ob)r(ject.)22 b(The)15 b(user)g(\014rst)f (informs)-76 2460 y(the)g(Ajen)o(ts)f(system)h(that)f(it)h(w)o(ould)g (lik)o(e)h(to)f(create)f(a)h(remote)f(ob-)-76 2501 y(ject)e(b)o(y)g (calling)i Fg(Ajents.re)o(gis)o(ter)o(\(\))o Fi(.)g(This)f(returns)f(a) g(reference)-76 2543 y(to)k(a)f(sc)o(heduler)i(ob)r(ject)f(whic)o(h)h (is)f(consulted)h(in)f(order)g(to)g(obtain)-76 2585 y(an)g(a)o(v)n (ailable)i(serv)o(er)e(\(note)g(that)f(the)h(actual)h(sc)o(heduler)g (ma)o(y)f(re-)-76 2626 y(side)f(on)e(a)g(di\013eren)o(t)i(host\).)j(F)m (our)c(parameters)g(are)f(passed)i(to)e(the)-76 2668 y Fg(Ajents.new)d Fi(metho)q(d.)17 b(These)c(represen)o(t)h(\(1\))e (the)h(fully)i(quali\014ed)1020 -34 y(class)e(name,)g(\(2\))f(a)g (user-sp)q(eci\014ed)j(name)e(for)f(the)g(ob)r(ject,)h(\(3\))f(the)1020 7 y(lo)q(cation)17 b(of)d(the)h(source)g(co)q(de,)h(and)f(\(4\))g(an)g (Ajen)o(ts)f(serv)o(er)h(up)q(on)1020 49 y(whic)o(h)e(the)g(ob)r(ject)f (will)i(b)q(e)f(created)f(\(in)h(this)h(case)e(obtained)i(from)1020 90 y(the)f(sc)o(heduler\).)1076 132 y(Once)h(a)g(user)h(calls)h Fg(Ajents.n)o(ew)p Fi(,)11 b(the)j(metho)q(d)h(call)g(is)g(trans-)1020 173 y(lated)i(in)o(to)f(an)g(RMI)g(call)h(to)f(the)f(remote)h(Ajen)o (ts)f(serv)o(er.)26 b(Here,)1020 215 y(using)19 b(Ja)o(v)n(a)e (re\015ection)h(mec)o(hanisms)h([22],)f(the)f(requested)h(class)1020 256 y(can)e(b)q(e)g(loaded)h(in)o(to)g(a)e Fg(Class)f Fi(ob)r(ject)h(at)h(the)g(remote)f(host)h(and)1020 298 y(then)d(instan)o(tiated.)19 b(The)12 b(Ajen)o(ts)g(serv)o(er)h(then)g (adds)g(the)g(new)f(ob-)1020 339 y(ject)e(to)g(its)h(ob)r(ject)f (table,)i(and)f(returns)g(a)f(remote)g(reference)h(to)f(the)1020 381 y(user.)17 b(F)m(urther)11 b(details)i(related)g(to)e(class)h (loading)i(are)d(pro)o(vided)i(in)1020 422 y(Section)h(3.2.)1076 464 y(The)h(ob)r(ject)h(returned)g(to)f(the)g(user)h(\(of)f(t)o(yp)q(e) g Fg(AjentsObj)p Fi(\))d(is)1020 505 y(actually)h(a)e(pro)o(xy)h(ob)r (ject.)17 b(This)11 b(is)h(done)g(to)f(shield)i(the)e(user)g(from)1020 547 y(the)j(in)o(ternal)i(complexities)h(of)d(Ajen)o(ts)f(and)i(Ja)o(v) n(a)f(RMI.)g(As)g(w)o(ell,)1020 588 y(it)g(allo)o(ws)h(Ajen)o(ts)f(to)f (main)o(tain)j(con)o(trol)f(o)o(v)o(er)f(the)g(actual)h(remote)1020 630 y(reference,)f(whic)o(h)h(is)f(required)i(in)f(order)f(for)g (migration)i(to)e(o)q(ccur)1020 671 y(async)o(hronously)22 b(and)d(indep)q(enden)o(tl)q(y)i(of)e(an)o(y)g(user)g(actions)h(\(if) 1020 713 y(desired\).)1076 754 y(The)12 b(range)g(of)g(ob)r(jects)g (that)g(ma)o(y)g(b)q(e)g(submitted)h(to)f(Ajen)o(ts)g(is)1020 796 y(limited)k(only)f(b)o(y)f(the)g(restriction)i(that)e(in)g(order)h (to)e(tak)o(e)h(adv)n(an-)1020 837 y(tage)h(of)f(Ajen)o(ts')h (migration)h(features,)g(submitted)g(ob)r(jects)f(m)o(ust)1020 879 y(b)q(e)f(serializabl)q(e.)23 b(While)16 b(the)e(mec)o(hanisms)h (implemen)o(ted)i(within)1020 920 y(the)d(Ajen)o(ts)g(class)h (libraries)i(rely)d(up)q(on)h(RMI)f(to)g(execute)h(remote)1020 962 y(metho)q(ds,)f(the)g(submitted)h(ob)r(jects)f(need)g(ha)o(v)o(e)g (no)f(kno)o(wledge)i(of)1020 1003 y(this.)23 b(Th)o(us)15 b(ob)r(jects)h(that)f(w)o(ere)f(not)h(originall)q(y)j(designed)f(or)e (in-)1020 1045 y(tended)i(to)f(op)q(erate)h(as)g(remote)f(ob)r(jects)g (can)h(b)q(e)g(treated)f(as)g(re-)1020 1086 y(mote)h(ob)r(jects)g(in)h (Ajen)o(ts.)28 b(This)18 b(means)g(that)f(existing)i(ob)r(jects)1020 1128 y(for)d(whic)o(h)h(only)h(b)o(yte-co)q(de)f(\(i.e.,)g(no)f (source\))h(is)g(a)o(v)n(ailable,)j(can)1020 1169 y(b)q(e)14 b(remotely)g(created,)f(used)h(and)g(ev)o(en)f(migrated)i(\(pro)o (vided)g(the)1020 1211 y(migrating)g(ob)r(jects)e(are)h (serializable\).)1020 1303 y Ff(3.2)41 b(Remote)13 b(Class)g(Loading) 1020 1369 y Fi(The)f(dynamic)i(class)g(loading)h(describ)q(ed)f(in)f (the)g(Ja)o(v)n(a)f(RMI)h(sp)q(ec-)1020 1410 y(i\014cation)h([21])e (requires)i(that)e(all)h(class)h(\014les)f(b)q(e)f(lo)q(cated)i(either) f(lo-)1020 1452 y(cally)m(,)i(in)g(the)f Fg(CLASSPATH)p Fi(,)c(or)k(at)g(a)g(pre-de\014ned)h(URL.)f(This)g(w)o(as)1020 1493 y(deemed)k(insu\016cien)o(t)i(for)d(Ajen)o(ts,)h(where)g(our)g (goal)g(is)g(to)g(allo)o(w)1020 1535 y(ob)r(jects)f(to)f(b)q(e)g (created)h(on)g(arbitrary)g(participatin)q(g)i(mac)o(hines.)1020 1576 y(In)f(order)g(to)g(utilize)i(remote)e(resources,)i(Ajen)o(ts)d (users)i(are)f(not)1020 1618 y(required)i(to)f(place)h(their)g(class)g (\014les)g(on)f(a)g(WWW)h(serv)o(er)f(nor)1020 1659 y(are)e(they)g(exp) q(ected)h(to)e(ha)o(v)o(e)i(accoun)o(ts)f(on,)h(or)f(ph)o(ysical)i (access)1020 1701 y(to)14 b(all)h(participating)i(hosts)d(in)h(order)f (to)g(pre-load)h(a)f(cop)o(y)g(of)g(the)1020 1742 y(b)o(yte-co)q(de.)19 b(Therefore,)13 b(in)h(order)f(to)h(ensure)g(complete)g(p)q(ortabil-) 1020 1784 y(it)o(y)e(w)o(e)g(transfer)g(the)g(Ja)o(v)n(a)g(b)o(yte-co)q (de)g(to)g(the)g(remote)g(host)g(at)g(the)1020 1825 y(time)h(of)f(ob)r (ject)h(creation.)18 b(T)m(o)12 b(accomplish)j(this,)e(Ajen)o(ts)f (requires)1020 1867 y(that)j(all)g(necessary)h(b)o(yte-co)q(des)f(b)q (e)g(placed)h(in)o(to)f(a)f(Ja)o(v)n(a)h(arc)o(hiv)o(e)1020 1908 y(\014le)f(\(JAR\),)e(whic)o(h)i(is)g(then)g(transferred)g(along)g (with)g(the)f(remote)1020 1950 y(ob)r(ject)i(creation)g(request.)22 b(Multiple)17 b(class)e(\014les)h(are)e(arc)o(hiv)o(ed)i(in)1020 1991 y(order)11 b(to)g(reduce)h(the)f(n)o(um)o(b)q(er)h(of)f(messages)g (needed)h(to)f(obtain)i(all)1020 2033 y(necessary)i(class)h(\014les)f (\(rather)f(than)h(using)h(individua)q(l)h(messages)1020 2074 y(for)h(eac)o(h)g(class)g(\014le\).)32 b(During)20 b(migration)f(a)f(cop)o(y)g(of)g(the)g(JAR)1020 2116 y(\014le)e(is)g(included)i(with)e(the)f(ob)r(ject)h(so)f(that)h(the)f (target)h(serv)o(er)g(is)1020 2157 y(able)d(to)e(also)h(obtain)h(the)f (class)g(\014les)g(\(if)g(necessary\).)17 b(This)12 b(is)g(done)1020 2199 y(b)o(y)j(implemen)o(ting)j(our)c(o)o(wn)h(class)h(loader)f(whic)o (h)h(is)f(a)g(relativ)o(ely)1020 2240 y(simple)g(extension)g(of)d(the)h (default)i(class)f(loader.)1020 2333 y Ff(3.3)41 b(Ajents)13 b(Server)1020 2398 y Fi(The)e(role)h(of)f(the)h(Ajen)o(ts)f(serv)o(er)h (is)g(to)f(pro)o(vide)i(a)e(p)q(oin)o(t)i(of)e(con)o(tact)1020 2440 y(for)j(creating)h(ob)r(jects)f(on)g(the)g(host)g(on)g(whic)o(h)g (the)g(Ajen)o(ts)g(serv)o(er)1020 2481 y(resides.)36 b(In)19 b(the)g(same)g(w)o(a)o(y)g(that)g(a)g(clien)o(t)h(W)m (orld-Wide-W)m(eb)1020 2523 y(bro)o(wser)13 b(is)h(not)f(able)h(to)f (access)g(information)i(stored)e(on)h(systems)1020 2564 y(that)c(are)g(not)h(executing)g(an)g(HTTP)e(serv)o(er,)h(Ajen)o(ts)g (is)h(not)f(able)h(to)1020 2606 y(utilize)16 b(resources)f(of)f (systems)h(that)f(are)g(not)h(running)h(an)e(Ajen)o(ts)1020 2647 y(serv)o(er.)35 b(The)19 b(Ajen)o(ts)f(serv)o(er)h(is)h(resp)q (onsible)h(for)e(securit)o(y)m(,)i(au-)1020 2689 y(thorization,)16 b(and)e(authen)o(tication.)22 b(In)13 b(addition,)j(it)e(implemen)o(ts) p eop %%Page: 4 4 4 3 bop 81 -4 a Fg(//)19 b(Register)d(to)j(get)g(a)g(scheduler)d (object)h(which)h(knows)g(about)f(available)g(servers)81 37 y(AjentsSche)o(du)o(ler)f(sched)i(=)h(Ajents.re)o(gis)o(te)o(r\(\))o (;)81 120 y(//)g(Create)e(a)i(remote)f(object)f(on)i(an)g(available)d (server)81 162 y(AjentsObj)g(obj)j(=)g(Ajents.ne)o(w\(")o(aj)o(ent)o (s.t)o(es)o(ts.)o(Ne)o(wOb)o(j",)d("NewObj_1)o(",)395 203 y("/home/aj)o(ent)o(s/)o(tes)o(ts/)o(my)o(obj)o(s.)o(jar)o(",)g (sched.Avai)o(lSe)o(rv)o(er\()o(\)\))o(;)574 286 y Fi(Figure)e(1:)j (Example)d(of)f(a)g(remote)g(ob)r(ject)g(creation.)-76 410 y(p)q(olicies)18 b(that)d(con)o(trol)h(who)f(is)h(p)q(ermitted)g (to)f(create)g(ob)r(jects)h(on)-76 451 y(the)d(lo)q(cal)i(mac)o(hine)f (and)g(when.)-20 493 y(The)i(Ajen)o(ts)g(serv)o(er)g(also)i(k)o(eeps)e (trac)o(k)g(of)g(ob)r(jects)h(curren)o(tly)-76 534 y(residing)i(on)e (it.)29 b(This)17 b(allo)o(ws)h(the)f(serv)o(er)g(to)g(trac)o(k,)g (limit,)j(and)-76 576 y(mo)o(v)o(e)10 b(ob)r(jects)g(when)g(resources)g (b)q(ecome)g(hea)o(vily)i(utilized.)18 b(It)9 b(also)-76 617 y(p)q(ermits)15 b(the)g(serv)o(er)f(to)g(k)o(eep)h(trac)o(k)f(of)g (where)g(migrated)i(ob)r(jects)-76 659 y(ha)o(v)o(e)h(b)q(een)g(mo)o(v) o(ed)f(to)g(\(this)h(is)g(explained)i(in)e(detail)h(in)f(Section)-76 700 y(3.5\).)-76 794 y Ff(3.4)41 b(Asynchronous)12 b(RMI)-76 860 y Fi(It)k(is)i(commonly)g(kno)o(wn)f(that)g(the)f(p)q(erformance)i (of)e(man)o(y)h(dis-)-76 901 y(tributed)j(and)f(parallel)i(applicati)q (ons)h(is)d(hindered)h(b)o(y)f(net)o(w)o(ork)-76 943 y(latencies.)k(A)14 b(common)h(tec)o(hnique)h(for)e(impro)o(ving)i(p)q (erformance)-76 984 y(is)j(to)g(o)o(v)o(erlap)h(comm)o(unication)h (with)e(computation.)36 b(Existing)-76 1026 y(tec)o(hniques)25 b(for)d(remote)h(metho)q(d)g(in)o(v)o(o)q(cation)j([21])c(cause)h(the) -76 1067 y(execution)e(of)f(the)f(requesting)i(ob)r(ject)f(to)f(b)q(e)h (susp)q(ended)i(un)o(til)-76 1109 y(the)16 b(metho)q(d)g(has)g (completed.)26 b(This)17 b(dela)o(y)f(is)h(incurred)g(regard-)-76 1150 y(less)i(of)e(when)h(or)g(if)g(the)g(in)o(v)o(oking)j(ob)r(ject)d (requires)h(the)f(return)-76 1192 y(v)n(alue.)f(Ajen)o(ts)10 b(pro)o(vides)i(a)d(means)i(for)f(p)q(erforming)h(async)o(hronous)-76 1233 y(remote)18 b(metho)q(d)h(in)o(v)o(o)q(cations,)j(th)o(us)c (enabling)j(applications)g(to)-76 1275 y(o)o(v)o(erlap)15 b(comm)o(unication)g(and)f(computation.)-20 1316 y(In)c(Ajen)o(ts,)g (when)g(the)f(user)h(p)q(erforms)g(an)g(async)o(hronous)i(RMI,)-76 1358 y(a)19 b(separate)i(thread)f(is)g(created)f(whic)o(h)i(p)q (erforms)e(the)h(RMI)f(\(a)-76 1399 y(p)q(ossible)14 b(optimization)h(w)o(ould)d(b)q(e)g(to)f(pre-fork)h(a)f(p)q(o)q(ol)i (of)e(threads)-76 1441 y(that)f(w)o(ould)h(b)q(e)g(reused,)g(th)o(us)f (reducing)i(o)o(v)o(erheads)f(due)g(to)f(thread)-76 1482 y(creation\).)30 b(As)16 b(a)h(result,)h(the)f(original)j(ob)r(ject)d (is)g(only)i(blo)q(c)o(k)o(ed)-76 1524 y(during)d(the)f(creation)h(of)e (the)g(thread,)i(and)f(thereafter)f(con)o(tin)o(ues)-76 1565 y(execution.)29 b(Mean)o(while,)18 b(the)f(new)f(thread)h(p)q (erforms)g(a)f(regular)-76 1607 y(sync)o(hronous)f(RMI.)-20 1648 y(T)m(o)c(supp)q(ort)h(return)g(v)n(alues,)g(w)o(e)f(use)g(the)h (concept)f(of)g(a)g(future.)-76 1690 y(In)j(essence,)g(our)g Fg(Future)d Fi(ob)r(ject)j(is)g(a)g(temp)q(orary)h(receptacle)f(for)-76 1731 y(the)c(return)h(v)n(alue.)17 b(The)9 b(return)i(v)n(alue)g (\(whic)o(h)g(ma)o(y)f(b)q(e)g(an)g(ob)r(ject\))-76 1773 y(is)g(held)g(inside)h(the)f Fg(Future)c Fi(ob)r(ject)k(un)o(til)g(a)f Fg(get\(\))e Fi(request)j(is)g(made)-76 1814 y(b)o(y)15 b(the)g(program.)23 b(When)16 b(a)f(call)h(to)f Fg(get\(\))e Fi(is)i(made,)g(the)g(result)-76 1856 y(of)g(the)g(async)o(hronous)i (RMI)d(is)i(returned)f(to)g(the)g(calling)i(ob)r(ject.)-76 1897 y(If)d(the)g(result)h(is)f(not)h(y)o(et)f(a)o(v)n(ailable,)i(the)e (ob)r(ject)h(will)g(blo)q(c)o(k)h(un)o(til)-76 1939 y(the)d(result)h (is)g(a)o(v)n(ailable.)-20 1980 y(Figure)i(2)f(con)o(tains)i(co)q(de)f (fragmen)o(ts)f(that)g(sho)o(w)g(ho)o(w)g(some-)-76 2022 y(one)i(programming)h(with)e(Ajen)o(ts)g(w)o(ould)h(p)q(erform)f(sync)o (hronous)-76 2063 y(and)j(async)o(hronous)h(remote)d(metho)q(d)i(in)o (v)o(o)q(cations.)34 b(Note)17 b(that)-76 2105 y(in)c(order)g(to)g (supp)q(ort)h(b)q(oth)f(sync)o(hronous)h(and)g(async)o(hronous)h(re-) -76 2146 y(mote)e(metho)q(d)h(in)o(v)o(o)q(cations)h(within)g(the)e (same)g(ob)r(ject)g(and)h(with-)-76 2188 y(out)d(mo)q(difying)i(the)d (Ja)o(v)n(a)h(language,)h(compiler,)h(or)d(the)h(Ja)o(v)n(a)f(RMI)-76 2229 y(stub)j(compiler,)i(w)o(e)d(supp)q(ort)i(sync)o(hronous)h(RMI)e (calls)h(using)g(the)-76 2271 y Fg(Ajents.rmi)o(\(\))h Fi(metho)q(d)k(and)g(async)o(hronous)i(RMI)e(calls)h(using)-76 2312 y(the)13 b Fg(Ajents.a)o(rmi)o(\(\))c Fi(metho)q(d.)17 b(Eac)o(h)c(of)f(these)g(metho)q(ds)h(is)g(o)o(v)o(er-)-76 2354 y(loaded)19 b(to)e(supp)q(ort)h(a)g(v)n(ariable)h(n)o(um)o(b)q(er) f(of)f(argumen)o(ts,)i(up)e(to)-76 2395 y(a)e(prede\014ned)h(maxim)o (um)g(n)o(um)o(b)q(er)f(of)f(argumen)o(ts.)23 b(Our)15 b(curren)o(t)-76 2437 y(implemen)o(tation)h(supp)q(orts)f(up)e(to)g (ten)g(argumen)o(ts)h(and)g(can)f(eas-)-76 2478 y(ily)h(b)q(e)e(mo)q (di\014ed)j(to)d(supp)q(ort)h(an)g(arbitrary)h(but)e(\014xed)h(n)o(um)o (b)q(er)g(of)-76 2520 y(argumen)o(ts.)-20 2561 y(In)23 b(order)h(to)f(handle)i(exceptions,)i(w)o(e)c(propagate)i(all)f(ex-)-76 2603 y(ceptions)19 b(from)e(an)g(async)o(hronous)j(remote)d(metho)q(d)h (in)o(v)o(o)q(cation)-76 2644 y(through)d(the)f Fg(Future)e Fi(ob)r(ject)i(bac)o(k)h(to)f(the)g(user)g(program.)21 b(This)-76 2686 y(allo)o(ws)10 b(the)f(metho)q(d)h(that)f(is)h(pro)q (cessing)h(the)e(result)h(of)e(the)h(metho)q(d)1020 410 y(in)o(v)o(o)q(cation)16 b(to)d(handle)i(whatev)o(er)f(exceptions)h(o)q (ccurred)f(\(includ-)1020 451 y(ing)c(in)o(v)n(alid)j(metho)q(ds)d(or)f (parameters\).)17 b(Figure)11 b(2)e(also)h(sho)o(ws)g(ho)o(w)1020 493 y(the)i(user)f(program)i(is)f(noti\014ed)h(of)e(and)h(handles)h (exceptions)h(when)1020 534 y(getting)i(return)f(v)n(alues)g(from)g (the)f(async)o(hronous)j(RMI)d(calls.)23 b(In)1020 576 y(the)18 b(case)g(of)f(sync)o(hronous)j(calls)f(the)f(exception)h(is)f (propagated)1020 617 y(bac)o(k)h(to)f(the)g(p)q(oin)o(t)h(where)f(the)g Fg(Ajents.rmi)o(\(\))c Fi(metho)q(d)19 b(is)g(in-)1020 659 y(v)o(ok)o(ed.)1020 752 y Ff(3.5)41 b(Object)13 b(Migration)1020 818 y Fi(An)f(imp)q(ortan)o(t)h(function)g(that)g(is)f(not)g(readily)i (a)o(v)n(ailable)h(in)e(man)o(y)1020 860 y(systems)h(designed)h(for)e (implemen)o(ting)k(distributed)f(applications)1020 901 y(is)i(the)g(abilit)o(y)i(to)e(easily)h(migrate)g(computation,)i(esp)q (ecially)f(in)1020 943 y(heterogeneous)15 b(en)o(vironmen)o(ts.)1076 984 y(The)c(di\016cult)o(y)h(of)e(migrating)j(pro)q(cesses)e(causes)h (serious)g(prob-)1020 1026 y(lems)j(in)g(a)f(net)o(w)o(ork)h(of)f(w)o (orkstations)h(en)o(vironmen)o(t)h(where)f(m)o(ul-)1020 1067 y(tiple)e(individ)q(ual)j(w)o(orkstations)d(are)f(shared)h(among)g (a)f(n)o(um)o(b)q(er)g(of)1020 1109 y(users.)17 b(The)11 b(main)h(problem)h(in)f(suc)o(h)g(en)o(vironmen)o(ts)h(o)q(ccurs)f (when)1020 1150 y(the)e(o)o(wner)f(of)h(the)f(w)o(orkstation)i(desires) g(sole)f(usage)h(of)e(their)h(w)o(ork-)1020 1192 y(station,)k(only)h (to)e(\014nd)h(that)g(its)g(resources)g(are)f(b)q(eing)i(utilized)h(b)o (y)1020 1233 y(someone)g(else.)25 b(Curren)o(t)16 b(approac)o(hes)h(to) f(this)g(problem)h(include)1020 1275 y(susp)q(ending)f(the)e(in)o (truding)i(job)e(un)o(til)h(the)e(user)h(is)g(no)g(longer)h(us-)1020 1316 y(ing)h(the)f(mac)o(hine)i(or)e(in)g(rare)g(instances)i(migrating) g(the)e(pro)q(cess)1020 1358 y(to)e(another)h(mac)o(hine)g(of)f(the)g (same)g(arc)o(hitecture.)1076 1399 y(Ajen)o(ts)j(pro)o(vides)i(a)d (simple)j(and)f(relativ)o(ely)h(e\013ectiv)o(e)g(means)1020 1441 y(for)c(migrating)i(Ja)o(v)n(a)e(ob)r(jects)h(b)q(et)o(w)o(een)f (di\013eren)o(t)i(op)q(erating)g(sys-)1020 1482 y(tems)9 b(and)h(ev)o(en)g(di\013eren)o(t)h(arc)o(hitectures.)17 b(Ob)r(jects)10 b(are)f(p)q(ermitted)1020 1524 y(to)j(migrate)h (themselv)o(es)g(or)f(to)g(ha)o(v)o(e)g(other)h(ob)r(jects)f(initiate)i (their)1020 1565 y(migration.)34 b(Some)19 b(of)f(the)g(mec)o(hanisms)i (required)g(in)f(order)f(to)1020 1607 y(migrate)d(Ja)o(v)n(a)e(ob)r (jects)h(are)g(partially)j(pro)o(vided)e(in)g(curren)o(t)f(Ja)o(v)n(a) 1020 1648 y(implemen)o(tations)f(in)d(the)f(form)g(of)g(ob)r(ject)h (serialization)j([20],)c(class)1020 1690 y(loaders)j(and)f(the)g (standardization)j(of)c(the)h(Ja)o(v)n(a)g(virtual)h(mac)o(hine.)1076 1731 y(Ajen)o(ts)f(supp)q(orts)i(three)e(forms)g(of)g(ob)r(ject)g (migration:)19 b(the)11 b(im-)1020 1773 y(mediate)k(migration)h(of)e (idle)h(ob)r(jects,)g(the)f(dela)o(y)o(ed)h(migration)h(of)1020 1814 y(executing)11 b(ob)r(jects,)g(and)f(the)f(immediate)j(migration)f (of)e(executing)1020 1856 y(ob)r(jects)k(using)i(c)o(hec)o(kp)q(oin)o (ting)h(and)e(roll)g(bac)o(k.)1076 1897 y(The)k(migration)h(of)f(idle)h (ob)r(jects)f(is)g(fairly)h(simple)h(since)f(w)o(e)1020 1939 y(do)d(not)h(need)g(to)f(concern)h(ourselv)o(es)g(with)g(the)f(p)q (ossibili)q(t)o(y)j(that)1020 1980 y(they)e(will)g(b)q(e)f(mo)q (di\014ed)i(during)g(or)e(after)g(migration.)28 b(This)17 b(can)1020 2022 y(b)q(e)22 b(accomplished)j(b)o(y)d(using)h(the)f (JDK's)f Fg(readObject\()o(\))d Fi(and)1020 2063 y Fg(writeObjec)o(t\() o(\))c Fi(serializati)q(on)20 b(metho)q(ds)e(in)h(com)o(bination)h (with)1020 2105 y(so)q(c)o(k)o(et)11 b(connections.)18 b(The)11 b(more)f(tec)o(hnically)k(c)o(hallenging)f(asp)q(ect)1020 2146 y(of)20 b(implemen)o(ting)i(migration)g(in)o(v)o(olv)o(es)g (ensuring)g(that)e(remote)1020 2188 y(metho)q(d)f(in)o(v)o(o)q (cations,)j(b)q(oth)c(sync)o(hronous)i(and)f(async)o(hronous,)1020 2229 y(con)o(tin)o(ue)12 b(to)e(op)q(erate)g(correctly)i(b)q(efore,)e (during)i(and)f(after)e(migra-)1020 2271 y(tion)14 b(\(this)g(is)f (discussed)i(in)f(more)f(detail)i(later)f(in)f(this)h(section\).)1076 2312 y(Ajen)o(ts)k(supp)q(orts)i(dela)o(y)o(ed)g(migration,)h(where)e (a)f(migration)1020 2354 y(request)d(gets)f(completed)i(only)f(once)g (the)f(ob)r(ject)h(is)g(idle.)22 b(T)m(o)13 b(ac-)1020 2395 y(complish)h(this,)f(an)o(ytime)g(a)f(metho)q(d)h(of)f(an)g(ob)r (ject)h(is)f(executed,)h(a)1020 2437 y(\015ag)h(is)h(set.)j(When)d(a)f (migrate)g(call)h(is)g(made,)f(it)g(c)o(hec)o(ks)g(the)g(\015ag,)1020 2478 y(and)h(calls)h Fg(wait\(\))c Fi(if)j(the)g(\015ag)g(is)g(set.)22 b(Up)q(on)15 b(completion)i(of)d(the)1020 2520 y(metho)q(d)i(in)o(v)o (o)q(cation)i(the)e(ob)r(ject)g(is)g(idle)h(so)e(the)h(\015ag)g(is)g (cleared,)1020 2561 y(and)i Fg(notify\(\))d Fi(w)o(ak)o(es)i(up)h(the)g (thread)g(that)g(in)o(v)o(ok)o(ed)i(migrate.)1020 2603 y(Once)14 b(the)g(ob)r(ject)f(is)i(idle,)g(w)o(e)e(follo)o(w)h(the)g (same)g(pro)q(cedure)h(as)e(in)1020 2644 y(the)g(case)g(of)g(an)h(idle) g(ob)r(ject.)p eop %%Page: 5 5 5 4 bop 81 -4 a Fg(try)19 b({)160 37 y(//)f(Make)g(synchronous)e(RMI)i (call)g(to)h(the)g(method)e(setName)160 79 y(//)h(Parameters:)35 b(object)18 b(reference)o(,)e(method)i(name,)f(and)i(\(optional)o(\))e (method)g(parameter)o(\(s\))160 120 y(Ajents.r)o(mi\()o(obj)o(,)f ("setName",)g("NewObj"\);)81 162 y(})j(catch)f(\(Exception)e(ex\))i({)h (...)g(})81 245 y(//)g(Make)f(asynchrono)o(us)e(RMI)i(calls)g(to)h(the) f(method)g(getName)81 286 y(Future)f(future)h(=)h(Ajents.ar)o(mi\()o (ob)o(j,)d("getName"\))o(;)81 369 y(//)j(Use)f(futures)f(to)i(get)g (the)f(results,)f(armi)h(exception)o(s)e(are)j(caught)e(here.)81 411 y(try)i({)160 452 y(String)e(name)h(=)h(\(String\))e(future.ge)o (t\()o(\);)81 494 y(})i(catch)f(\(Exception)e(ex\))i({)h(...)g(})266 577 y Fi(Figure)c(2:)h(Examples)f(of)e(Sync)o(hronous)i(and)f(Async)o (hronous)h(Remote)e(Metho)q(d)h(In)o(v)o(o)q(cations)-20 700 y(Dela)o(y)o(ed)19 b(migration)g(is)f(supp)q(orted)g(b)q(ecause)g (Ja)o(v)n(a)f(do)q(es)h(not)-76 742 y(pro)o(vide)g(for)f(the)g(abilit)o (y)i(to)e(sa)o(v)o(e)g(and)g(restore)g(the)g(state)f(of)h(an)-76 783 y(executing)k(ob)r(ject)e(\(e.g.,)g(there)g(is)h(no)f(access)h(to)e (the)h(program)-76 825 y(coun)o(ter)j(or)e(stac)o(k\).)41 b(Therefore,)22 b(it)f(is)h(not)f(p)q(ossible)i(to)e(fully)-76 866 y(supp)q(ort)13 b(the)g(migration)h(of)e(activ)o(ely)i(executing)g (ob)r(jects)e(without)-76 908 y(mo)q(difying)18 b(the)d(implemen)o (tation)k(of)c(the)g(virtual)i(mac)o(hine)g(\(i.e.,)-76 949 y(the)g(in)o(terpreter\))h([17])e(or)g(without)i(prepro)q(cessing)h ([7])d(the)g(Ja)o(v)n(a)-76 991 y(source)j(co)q(de.)32 b(As)17 b(a)h(result,)i(Ajen)o(ts)d(supp)q(orts)i(the)f(immediate)-76 1032 y(migration)j(of)d(ob)r(jects)h(whic)o(h)g(are)f(curren)o(tly)i (executing)g(meth-)-76 1074 y(o)q(ds)14 b(b)o(y)g(using)i(c)o(hec)o(kp) q(oin)o(ting)h(and)d(roll)h(bac)o(k.)20 b(Ajen)o(ts)13 b(is)h(able)h(to)-76 1115 y(accomplish)20 b(this)e(b)o(y)f(c)o(hec)o (kp)q(oin)o(ting)j(the)d(ob)r(ject)h(b)q(efore)f(b)q(egin-)-76 1157 y(ning)f(eac)o(h)f(remote)g(metho)q(d)h(in)o(v)o(o)q(cation,)h(in) o(terrupting)g(the)e(exe-)-76 1198 y(cuting)h(metho)q(d)g(when)f (migration)i(is)f(requested,)g(migrating)h(the)-76 1240 y(c)o(hec)o(kp)q(oin)o(ted)c(v)o(ersion)e(of)g(the)f(ob)r(ject)g(and)h (then)g(re-executing)h(the)-76 1281 y(metho)q(d)19 b(call)h(using)g (the)f(c)o(hec)o(kp)q(oin)o(ted)i(ob)r(ject)e(state.)33 b(Chec)o(k-)-76 1323 y(p)q(oin)o(ting)18 b(in)o(v)o(olv)o(es)g(storing) f(the)f(state)f(of)h(the)f(ob)r(ject)h(prior)h(to)e(a)-76 1364 y(metho)q(d)c(in)o(v)o(o)q(cation)i(\(this)e(is)f(done)h(b)o(y)f (serializi)q(ng)j(the)d(ob)r(ject)h(and)-76 1406 y(storing)h(it)f(in)g (memory\),)g(k)o(eeping)i(trac)o(k)d(of)h(the)f(metho)q(d)i(b)q(eing)g (in-)-76 1447 y(v)o(ok)o(ed,)g(the)e(parameters)h(b)q(eing)h(passed)g (to)e(that)h(metho)q(d,)g(and)g(the)-76 1489 y(thread)16 b(in)f(whic)o(h)h(the)f(ob)r(ject)g(is)g(executing.)25 b(If)14 b(a)h(migration)i(re-)-76 1530 y(quest)i(is)g(later)f(receiv)o (ed)i(during)g(the)e(execution)i(of)e(a)g(metho)q(d,)-76 1572 y(the)e(serv)o(er)g(is)h(able)g(to)f(susp)q(end)h(execution)h(of)e (the)g(thread,)h(and)-76 1613 y(mo)o(v)o(e)f(the)f(sa)o(v)o(ed)h(state) f(of)g(the)h(ob)r(ject)f(to)g(the)h(new)f(host.)24 b(Then)-76 1655 y(using)19 b(the)f(sa)o(v)o(ed)g(metho)q(d)g(name)g(and)g (parameters)h(the)e(Ajen)o(ts)-76 1696 y(serv)o(er)d(on)f(the)g(remote) g(host)h(con)o(tin)o(ues)g(execution)h(of)e(the)g(ob)r(ject)-76 1738 y(b)o(y)e(re-in)o(v)o(oking)h(the)e(metho)q(d)h(that)f(w)o(as)g (called)i(immediately)g(after)-76 1779 y(c)o(hec)o(kp)q(oin)o(ting.)20 b(\(Issues)12 b(related)h(to)f(c)o(hec)o(kp)q(oin)o(t)i(consistency)g (are)-76 1821 y(discussed)h(in)f(Section)g(5.\))-20 1862 y(Con)o(trol)21 b(o)o(v)o(er)e(whether)h(c)o(hec)o(kp)q(oin)o(ting)j(o) q(ccurs)d(lies)h(in)f(the)-76 1904 y(hands)k(of)f(the)h(user)f(program) h(whic)o(h)g(has)g(remotely)g(created)-76 1945 y(the)17 b(ob)r(ject)h(and)f(wishes)h(to)f(call)h(its)g(metho)q(ds.)30 b(The)17 b(user)g(ma)o(y)-76 1987 y(c)o(ho)q(ose)g(to)g(enable)h Fg(Ajents.se)o(tC)o(hec)o(kPo)o(in)o(t\(o)o(bj)o(ect)o(,tr)o(ue)o(\))13 b Fi(or)-76 2028 y(disable)h Fg(Ajents.set)o(Ch)o(eck)o(Poi)o(nt)o (\(ob)o(je)o(ct,)o(fal)o(se)o(\))8 b Fi(c)o(hec)o(kp)q(oin)o(t-)-76 2070 y(ing)i(for)f(eac)o(h)h(ob)r(ject.)16 b(Or)9 b(they)g(ma)o(y)h (wish)g(to)f(o)o(v)o(erride)h(the)g(curren)o(t)-76 2111 y(setting)15 b(prior)g(to)e(individ)q(ual)k(metho)q(d)e(in)o(v)o(o)q (cations.)22 b(By)13 b(default,)-76 2153 y(c)o(hec)o(kp)q(oin)o(ting)19 b(is)e(not)f(initially)j(activ)n(ated.)27 b(This)16 b(\015exibili)q(t)o (y)j(al-)-76 2194 y(lo)o(ws)14 b(for)f(the)h(ob)r(ject)f(to)h(b)q(e)f (c)o(hec)o(kp)q(oin)o(ted)j(only)f(at)e(k)o(ey)h(function)-76 2236 y(calls,)k(or)e(for)f(c)o(hec)o(kp)q(oin)o(ting)k(to)d(b)q(e)g(a)o (v)o(oided)h(when)f(consecutiv)o(e)-76 2278 y(read-only)f(functions)g (are)f(b)q(eing)h(executed.)20 b(Since)14 b(the)g(o)o(v)o(erhead)-76 2319 y(in)o(v)o(olv)o(ed)k(in)f(creating)g(a)e(duplicate)j(cop)o(y)f (of)e(larger)i(ob)r(jects)f(can)-76 2361 y(b)q(e)c(signi\014can)o(t,)i (the)e(user)g(con)o(trol)h(o)o(v)o(er)f(c)o(hec)o(kp)q(oin)o(ting)j(is) d(vital)h(to)-76 2402 y(Ajen)o(ts')f(e\016ciency)m(.)18 b(As)12 b(part)h(of)f(our)h(future)f(w)o(ork)h(w)o(e)f(plan)h(to)g(in-) -76 2444 y(v)o(estigate)h(metho)q(ds)f(for)g(pro)o(viding)i(the)e (programmer)g(with)g(more)-76 2485 y(and)20 b(\014ner-grained)i(con)o (trol)e(o)o(v)o(er)g(when)f(c)o(hec)o(kp)q(oin)o(ting)k(o)q(ccurs)-76 2527 y(\(see)16 b(Section)i(5\).)25 b(F)m(urthermore,)17 b(the)g(o)o(v)o(erhead)g(of)e(c)o(hec)o(kp)q(oin)o(t-)-76 2568 y(ing)e(is)g(only)h(needed)f(\(and)g(justi\014ed\))h(for)e (long-running)j(jobs.)i(F)m(or)-76 2610 y(these)10 b(cases,)g(c)o(hec)o (kp)q(oin)o(ting)j(o)q(ccurs)d(relativ)o(ely)i(infrequen)o(tly)m(,)g (and)-76 2651 y(substan)o(tial)17 b(roll)f(bac)o(ks)f(can)g(b)q(e)f (incurred)i(without)g(signi\014can)o(tly)1020 700 y(impacting)f(o)o(v)o (erall)g(execution)g(time.)1076 742 y(W)m(e)g(no)o(w)g(outline)i(eac)o (h)e(of)f(the)h(steps)g(in)o(v)o(olv)o(ed)j(in)d(migration)1020 783 y(using)g(c)o(hec)o(kp)q(oin)o(t)f(and)g(roll)g(bac)o(k)g(in)g (more)f(detail:)1065 862 y(1.)18 b(Chec)o(kp)q(oin)o(ting)h(\(making)e (a)e(cop)o(y)h(of)g(the)f(state)h(of)f(an)h(ob-)1113 903 y(ject\),)c(is)g(done)h(using)g(Ja)o(v)n(a)f(serializati)q(on)j (tec)o(hniques.)j(This)1113 945 y(creates)f(a)e(deep)i(cop)o(y)f(of)g (the)g(ob)r(ject,)g(meaning)h(all)g(mem-)1113 986 y(b)q(er)g(v)n (ariables)h(are)e(themselv)o(es)h(copied,)h(rather)f(than)f(just)1113 1028 y(their)e(references.)j(Ajen)o(ts)c(do)q(es)g(this)h(b)o(y)f(in)o (tercepting)i(eac)o(h)1113 1069 y(remote)d(metho)q(d)g(in)o(v)o(o)q (cation)i(\(at)d(the)g(serv)o(er)g(side\))i(in)f(order)1113 1111 y(to)e(c)o(hec)o(kp)q(oin)o(t)j(the)d(ob)r(ject)g(b)q(efore)h (allo)o(wing)h(the)e(metho)q(d)h(to)1113 1152 y(execute.)17 b(In)12 b(addition,)h(using)g(re\015ection,)g(Ajen)o(ts)e(is)h(able)g (to)1113 1194 y(store)e(a)g(cop)o(y)g(of)f(the)g(metho)q(d)i(name)f (and)g(its)g(parameters,)g(in)1113 1235 y(case)j(the)f(metho)q(d)h(is)g (in)o(terrupted)h(b)o(y)f(a)f(migration)i(request)1113 1277 y(and)f(the)f(metho)q(d)h(in)o(v)o(o)q(cation)i(needs)e(to)e(b)q (e)i(restarted)f(after)1113 1318 y(a)j(migration.)25 b(Finally)m(,)17 b(Ajen)o(ts)e(stores)g(a)g(reference)g(to)g(the)1113 1360 y(thread)i(whic)o(h)f(will)i(b)q(e)e(executing)h(the)f(metho)q(d)g (\(in)h(order)1113 1401 y(to)c(in)o(terrupt)i(the)e(thread)h(if)f (necessary\).)1065 1472 y(2.)18 b(Up)q(on)e(receiving)g(a)f(migration)h (request)g(the)e(Ajen)o(ts)h(serv)o(er)1113 1514 y(in)o(terrupts)22 b(the)d(curren)o(tly)i(executing)h(thread.)37 b(This)21 b(in-)1113 1555 y(terrupt)16 b(causes)f(an)h(exception,)g(whic)o(h)g (is)g(then)f(caugh)o(t)h(b)o(y)1113 1597 y(Ajen)o(ts)g(instead)i(of)d (b)q(eing)j(returned)e(to)g(the)g(user.)26 b(Ajen)o(ts)1113 1638 y(is)20 b(th)o(us)g(able)g(to)f(gain)h(con)o(trol)g(of)f(the)g (execution)i(of)e(the)1113 1680 y(thread)14 b(\(i.e.,)e(susp)q(end)j (execution\))f(and)g(can)f(then)g(pro)q(ceed)1113 1721 y(with)h(ob)r(ject)f(migration.)1065 1792 y(3.)18 b(Once)13 b(execution)h(of)e(the)h(thread)g(has)g(b)q(een)g(halted,)g(the)g(ob-) 1113 1834 y(ject)k(is)g(in)h(a)f(static)g(state,)h(ho)o(w)o(ev)o(er,)g (there)f(is)g(no)g(w)o(a)o(y)g(to)1113 1875 y(determine)g(where)f(the)f (thread)i(is)f(executing)h(or)e(the)h(state)1113 1917 y(of)f(the)f(stac)o(k.)22 b(As)14 b(a)g(result,)i(w)o(e)e(migrate)h (the)f(state)h(of)f(the)1113 1958 y(ob)r(ject)g(as)f(it)g(w)o(as)g(at)g (the)g(time)h(of)e(the)h(last)h(c)o(hec)o(kp)q(oin)o(t.)1065 2029 y(4.)k(F)m(ollo)o(wing)25 b(migration,)i(w)o(e)22 b(re-execute)i(the)e(in)o(terrupted)1113 2071 y(metho)q(d.)54 b(This)25 b(is)h(done)f(without)h(user)f(in)o(terv)o(en)o(tion,)1113 2112 y(since)20 b(Ajen)o(ts)f(already)i(has)e(all)h(the)f(information)i (needed)1113 2154 y(to)13 b(restart)h(the)f(metho)q(d)g(in)o(v)o(o)q (cation.)1076 2232 y(As)i(men)o(tioned)j(previously)m(,)g(the)e(Ajen)o (ts)g(serv)o(er)g(k)o(eeps)g(trac)o(k)1020 2274 y(of)11 b(the)h(ob)r(jects)g(curren)o(tly)g(residing)i(on)e(it)g(as)f(w)o(ell)h (as)g(main)o(taining)1020 2315 y(a)17 b(reference)h(to)f(the)g(new)g (home)h(of)f(an)o(y)h(ob)r(ject)f(that)h(has)f(b)q(een)1020 2357 y(migrated.)26 b(The)16 b(reference)g(to)g(the)f(new)h(home)g(of)g (the)g(ob)r(ject)g(is)1020 2398 y(main)o(tained)f(so)f(that)f (migration)i(can)e(b)q(e)g(implemen)o(ted)j(in)d(a)g(w)o(a)o(y)1020 2440 y(that)i(is)h(transparen)o(t)g(to)f(an)o(y)g(ob)r(ject)h(that)f (has)g(a)g(reference)g(to)g(a)1020 2481 y(remote)c(ob)r(ject)g(that)g (has)g(b)q(een)g(migrated.)18 b(This)11 b(is)g(in)h(con)o(trast)f(to) 1020 2523 y(other)f(approac)o(hes)h(\(e.g.,)f([19]\))f(where)h(the)f (user)i(program)f(receiv)o(es)1020 2564 y(an)j(exception)h(and)f(m)o (ust)g(up)q(date)g(an)o(y)g(references)g(to)f(the)h(remote)1020 2606 y(ob)r(ject)g(that)h(has)f(b)q(een)h(migrated.)1076 2647 y(Figure)23 b(3)e(sho)o(ws)h(the)f(steps)h(in)o(v)o(olv)o(ed)i(in) e(ensuring)h(trans-)1020 2689 y(parency)g(after)f(an)h(ob)r(ject)g(has) f(b)q(een)h(migrated)h(without)f(the)p eop %%Page: 6 6 6 5 bop -76 -34 a Fi(clien)o(t's)19 b(kno)o(wledge)g(\(e.g.,)f(b)o(y)g (the)f(serv)o(er)h(or)g(another)g(ob)r(ject\).)-76 7 y(In)13 b(this)g(\014gure,)g(the)g Fg(AjentsObj)c Fi(on)k(Host)f(A)g (is)h(used)h(to)e(remotely)-76 49 y(in)o(v)o(ok)o(e)g(a)f(metho)q(d)h (of)e Fg(Obj1)g Fi(on)h(Host)f(B.)h Fg(Obj1)e Fi(has)i(b)q(een)h (migrated)-76 90 y(previously)19 b(and)d(no)o(w)f(resides)i(on)f(Host)g (C.)e(Since)j(the)f(reference)-76 132 y(is)j(outdated,)i(the)e(Ajen)o (ts)f(serv)o(er)h(thro)o(ws)f(a)h(Mo)o(v)o(edException,)-76 173 y(whic)o(h)d(returns)g(a)f(reference)h(to)f(the)h(new)f(ob)r(ject)g (lo)q(cation.)26 b(The)-76 215 y Fg(AjentsObj)7 b Fi(up)q(dates)12 b(its)f(in)o(ternal)h(cop)o(y)g(of)e(the)h(remote)f(reference,)-76 256 y(then)i(pro)q(ceeds)g(to)f(in)o(v)o(ok)o(e)h(a)f(metho)q(d)h(of)e Fg(Obj1)f Fi(using)k(the)e(new)g(ref-)-76 298 y(erence)k(whic)o(h)h (correctly)g(p)q(oin)o(ts)g(to)f(the)g(new)f(lo)q(cation,)j(Host)e(C.) -76 339 y(This)e(is)g(all)h(done)f(inside)i(Ajen)o(ts)d(and)h(is)g (completely)i(transparen)o(t)-76 381 y(to)h(the)h(user,)g(who's)f(con)o (tact)h(with)f(the)h(remote)f(ob)r(ject)h(is)f(done)-76 422 y(through)e(the)f Fg(AjentsObj)p Fi(.)4 1114 y @beginspecial 0 @llx 0 @lly 428 @urx 307 @ury 2007 @rwi @setspecial %%BeginDocument: diagrams/mig.eps %Magnification: 1.00 /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -40.0 331.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.06000 0.06000 sc /Times-Roman ff 270.00 scf sf 975 1200 m gs 1 -1 sc (Ajents) col-1 sh gr /Times-Roman ff 270.00 scf sf 975 1500 m gs 1 -1 sc (Server) col-1 sh gr /Times-Roman ff 270.00 scf sf 5325 1200 m gs 1 -1 sc (Ajents) col-1 sh gr /Times-Roman ff 270.00 scf sf 5325 1500 m gs 1 -1 sc (Server) col-1 sh gr 7.500 slw % Ellipse n 2100 1275 1350 750 0 360 DrawEllipse gs col-1 s gr % Ellipse n 2700 1200 675 375 0 360 DrawEllipse gs col-1 s gr % Ellipse n 6386 1228 1350 750 0 360 DrawEllipse gs col-1 s gr % Ellipse n 6993 1208 675 375 0 360 DrawEllipse gs col-1 s gr % Ellipse n 3075 4500 967 537 0 360 DrawEllipse gs col-1 s gr % Polyline n 681 450 m 3518 450 l 3518 2399 l 681 2399 l cp gs col-1 s gr % Polyline n 1500 3540 m 4337 3540 l 4337 5489 l 1500 5489 l cp gs col-1 s gr % Polyline [66.7] 0 sd gs clippath 3670 3864 m 3668 4016 l 3611 3875 l 3648 4070 l 3707 4059 l cp clip n 3180 1485 m 3675 4050 l gs col-1 s gr gr [] 0 sd % arrowhead n 3670 3864 m 3668 4016 l 3611 3875 l 3640 3870 l 3670 3864 l cp gs 0.00 setgray ef gr col-1 s % Polyline [66.7] 0 sd gs clippath 3007 1761 m 3006 1608 l 3066 1749 l 3026 1554 l 2968 1566 l cp clip n 3480 3945 m 3000 1575 l gs col-1 s gr gr [] 0 sd % arrowhead n 3007 1761 m 3006 1608 l 3066 1749 l 3036 1755 l 3007 1761 l cp gs 0.00 setgray ef gr col-1 s % Polyline [66.7] 0 sd gs clippath 6826 1723 m 6963 1655 l 6863 1771 l 7020 1650 l 6984 1602 l cp clip n 3750 4125 m 6990 1635 l gs col-1 s gr gr [] 0 sd % arrowhead n 6826 1723 m 6963 1655 l 6863 1771 l 6844 1747 l 6826 1723 l cp gs 0.00 setgray ef gr col-1 s % Polyline n 4950 420 m 7787 420 l 7787 2369 l 4950 2369 l cp gs col-1 s gr /Times-Roman ff 270.00 scf sf 1605 5385 m gs 1 -1 sc (Host A) col-1 sh gr /Times-Roman ff 270.00 scf sf 750 2325 m gs 1 -1 sc (Host B) col-1 sh gr /Times-Roman ff 270.00 scf sf 3570 2865 m gs 1 -1 sc (\(2\) new) col-1 sh gr /Times-Roman ff 270.00 scf sf 3570 3090 m gs 1 -1 sc (reference) col-1 sh gr /Times-Roman ff 270.00 scf sf 5310 3150 m gs 1 -1 sc (\(3\) RMI \(second try\)) col-1 sh gr /Times-Roman ff 270.00 scf sf 2235 2910 m gs 1 -1 sc (\(1\) RMI) col-1 sh gr /Times-Roman ff 270.00 scf sf 2700 1125 m gs 1 -1 sc (Obj1) dup sw pop 2 div neg 0 rm col-1 sh gr /Times-Italic ff 240.00 scf sf 2175 1425 m gs 1 -1 sc (\(migrated\)) col-1 sh gr /Times-Roman ff 270.00 scf sf 5055 2265 m gs 1 -1 sc (Host C) col-1 sh gr /Times-Roman ff 270.00 scf sf 3120 4545 m gs 1 -1 sc (AjentsObj) dup sw pop 2 div neg 0 rm col-1 sh gr /Times-Roman ff 270.00 scf sf 7020 1275 m gs 1 -1 sc (Obj1) dup sw pop 2 div neg 0 rm col-1 sh gr $F2psEnd rs %%EndDocument @endspecial -76 1197 a(Figure)k(3:)23 b(Example)18 b(of)d(a)h(remote)g (metho)q(d)h(in)o(v)o(o)q(cation)i(after)c(a)-76 1239 y(third)f(part)o(y)g(migration.)-20 1363 y(Ob)r(ject)f(migration)h(is)f (accessible)i(to)e(the)f(user)h(using)h(the)f(syn-)-76 1405 y(tax)18 b(sho)o(wn)f(in)h(Figure)h(4.)29 b(In)18 b(this)g(example,)h(c)o(hec)o(kp)q(oin)o(ting)i(is)-76 1446 y(enabled)15 b(for)d(the)h(ob)r(ject)f(in)i(order)f(to)f(supp)q (ort)i(migration)h(during)-76 1488 y(execution.)j(The)11 b(ob)r(ject)f(is)i(migrated,)g(an)f(async)o(hronous)h(metho)q(d)-76 1529 y(is)17 b(in)o(v)o(ok)o(ed)g(and)g(the)f(ob)r(ject)g(is)h (migrated)g(a)f(second)h(time.)26 b(The)-76 1571 y(return)14 b(v)n(alue)h(is)f(obtained)h(from)e(the)g(future)h(and)g(a)f(\014nal)i (RMI)f(is)-76 1612 y(p)q(erformed)k(on)g(the)f(migrated)h(ob)r(ject.)30 b(This)18 b(example)h(demon-)-76 1654 y(strates)12 b(that)g(migration)i (o)q(ccurs)e(transparen)o(tly)i(to)e(the)g(program-)-76 1695 y(mer.)25 b(They)16 b(ma)o(y)g(still)h(use)f(the)g(same)g Fg(AjentsObj)c Fi(after)k(migra-)-76 1737 y(tion)g(and)g(are)g(una)o(w) o(are)g(of)f(whether)g(the)h(second)g(migration)h(o)q(c-)-76 1778 y(curred)12 b(b)q(efore,)f(or)g(after,)g(completing)j(the)d(async) o(hronous)i(remote)-76 1820 y(metho)q(d)h(in)o(v)o(o)q(cation.)-20 1861 y(Due)e(to)g(our)f(reliance)j(on)d(the)h(ob)r(ject)g (serialization)j(primitiv)o(es)-76 1903 y(in)i(Ja)o(v)n(a,)g(there)g (are)f(some)g(limitation)q(s)j(on)e(the)f(t)o(yp)q(e)h(of)f(ob)r(jects) -76 1944 y(whic)o(h)10 b(ma)o(y)g(b)q(e)f(c)o(hec)o(kp)q(oin)o(ted)j (and/or)e(migrated)h(b)o(y)f(Ajen)o(ts.)15 b(An)o(y)-76 1986 y(ob)r(ject)f(whic)o(h)h(is)g(not)f(serializabl)q(e)j(falls)e(in)o (to)g(this)g(category)m(,)g(and)-76 2027 y(ma)o(y)10 b(not)g(b)q(e)g(migrated)h(b)o(y)e(Ajen)o(ts.)16 b(This)10 b(includes)i(core)e(Ja)o(v)n(a)g(API)-76 2069 y(features)k(suc)o(h)g (as)f(threads)i(and)f(the)f(A)l(WT.)g(W)m(e)g(feel)h(this)g(limita-)-76 2111 y(tion)h(is)f(reasonable)i(since)f(the)f(serialization)j(\(and)e (migration\))g(of)-76 2152 y(threads)h(is)g(imp)q(ossible)i(in)e(the)f (curren)o(t)h(JDK,)e(and)i(w)o(e)f(can)g(\014nd)-76 2194 y(little)g(reason)f(to)f(w)o(an)o(t)f(to)h(migrate)h(an)o(y)g(part)f (of)g(the)g(A)l(WT.)-76 2291 y Ff(4)41 b(P)o(erfo)o(rmance)12 b(Results)-76 2370 y Fi(In)18 b(order)h(to)e(demonstrate)i(the)f (practical)i(relev)n(ance)g(of)d(Ajen)o(ts)-76 2411 y(w)o(e)k(ha)o(v)o (e)g(ev)n(aluated)i(the)e(p)q(erformance)h(of)e(Ajen)o(ts)h(using)h (sev-)-76 2453 y(eral)17 b(micro-b)q(enc)o(hmarks)h(and)f(t)o(w)o(o)f (v)o(ersions)h(of)f(a)g(simple)i(\(non-)-76 2494 y(blo)q(c)o(k)o(ed\))j (parallel)h(application,)h(matrix)d(m)o(ultipli)q(cati)q(on.)38 b(Our)-76 2536 y(\014ndings)18 b(demonstrate)f(that)g(the)f(o)o(v)o (erheads)h(in)o(tro)q(duced)h(in)f(us-)-76 2577 y(ing)g(Ajen)o(ts)g (are)f(not)h(prohibitiv)o(e.)30 b(All)17 b(exp)q(erimen)o(ts)h(w)o(ere) e(con-)-76 2619 y(ducted)g(using)g(a)e(cluster)i(of)e(8)h(SUN)f (Ultra-1)h(w)o(orkstations)h(with)-76 2660 y(143)g(MHz)f(UltraSparc)i (CPU's)d(acting)j(as)e(Ajen)o(ts)g(serv)o(ers)h(while)1099 -4 y Fg(AjentsOb)o(j)h(obj)h(=)h(Ajents.new)o(\(..)o(.\);)1099 79 y(//)f(Parameters)o(:)36 b(object,)17 b(new)i(host)1099 120 y(Ajents.m)o(igr)o(at)o(e\(o)o(bj,)d(sched.Ava)o(ilS)o(er)o(ver)o (\(\))o(\);)1099 203 y(//)i(Turn)g(checkpointi)o(ng)e(on)1099 245 y(Ajents.s)o(etC)o(he)o(ckP)o(oin)o(t\()o(obj)o(,)g(true\);)1099 328 y(//)i(obj)h(is)g(checkpoin)o(te)o(d)e(and)h(method)f(is)i(invoked) 1099 369 y(Future)e(future)g(=)i(Ajents.arm)o(i\(o)o(bj,)d("method1")o (\);)1099 452 y(//)i(Migrate)f(obj,)h(possibly)f(before)g(armi)h (completes)1099 494 y(Ajents.m)o(igr)o(at)o(e\(o)o(bj,)e(sched.Ava)o (ilS)o(er)o(ver)o(\(\))o(\);)1099 577 y(result1)g(=)k(future.ge)o(t\()o (\);)1099 660 y(//)e(rmi)h(on)g(migrated)d(obj)1099 701 y(result2)g(=)k(Ajents.rm)o(i\()o(obj)o(,)c("method2"\);)1045 754 y Fi(Figure)f(4:)i(Example)d(of)f(co)q(de)g(p)q(erforming)i(ob)r (ject)e(migration.)1020 878 y(another)j(SUN)f(Ultra)g(w)o(as)g(used)g (as)g(a)g(clien)o(t.)25 b(All)16 b(mac)o(hines)g(are)1020 919 y(connected)e(with)g(a)f(10)g(Mbps)h(Ethernet)f(net)o(w)o(ork.)18 b(Ho)o(w)o(ev)o(er,)12 b(the)1020 961 y(clien)o(t)17 b(do)q(es)g(not)f(share)g(a)g(\014le)h(system)f(with)g(the)g(Ajen)o(ts) g(serv)o(ers)1020 1002 y(requiring)21 b(class)e(\014les)h(to)e(b)q(e)h (remotely)g(loaded)h(at)f(the)f(time)h(of)1020 1044 y(remote)c(ob)r (ject)g(creation)g(or)g(migration.)24 b(All)15 b(exp)q(erimen)o(ts)h(w) o(ere)1020 1085 y(conducted)g(using)f(SUN's)f(JDK,)g(V)m(ersion)h (1.1.6,)f(whic)o(h)h(includes)1020 1127 y(a)e(just-in-time)h(compiler.) 1076 1168 y(T)m(able)d(1)e(sho)o(ws)h(the)g(results)h(of)f(exp)q (erimen)o(ts)h(conducted)h(using)1020 1210 y(a)20 b(simple)i(\(non-blo) q(c)o(k)o(ed\))g(matrix)f(m)o(ultiplicati)q(on)i(b)q(enc)o(hmark.)1020 1251 y(While)17 b(this)f(is)g(clearly)g(not)g(the)f(most)g(e\016cien)o (t)h(implemen)o(tation)1020 1293 y(of)g(matrix)g(m)o(ultipli)q(catio)q (n,)j(the)d(same)g(implemen)o(tation)j(is)d(used)1020 1334 y(in)e(all)g(cases)g(in)g(order)f(to)g(fairly)i(compare)f(the)f (di\013eren)o(t)i(en)o(viron-)1020 1376 y(men)o(ts.)k(The)13 b(\014rst)h(t)o(w)o(o)f(ro)o(ws)h(of)f(this)i(table)f(sho)o(w)g(the)g (sequen)o(tial)1020 1417 y(execution)21 b(times)e(of)g(v)o(ersions)h (of)f(this)h(program)f(written)h(in)g(C)1020 1459 y(and)14 b(in)g(Ja)o(v)n(a)f(\(the)g(columns)h(sho)o(w)g(the)f(results)h(for)f (di\013eren)o(t)h(ma-)1020 1500 y(trix)h(sizes)g(in)g(in)o(tegers\).)23 b(W)m(e)14 b(note)h(that)f(across)h(all)h(matrix)f(sizes)1020 1542 y(the)j(execution)i(times)e(of)g(the)g(Ja)o(v)n(a)g(v)o(ersion)h (compares)g(reason-)1020 1583 y(ably)f(w)o(ell)f(with)g(results)g (obtained)i(using)e(C.)f(The)g(Ja)o(v)n(a)h(v)o(ersion)1020 1625 y(is)e(slo)o(w)o(er,)h(b)o(y)f(roughly)i(a)e(factor)f(of)h(2.)22 b(These)15 b(results)h(are)f(quite)1020 1666 y(in)o(teresting)f(when)e (compared)h(with)f(previous)i(exp)q(erimen)o(ts)f([4])e(in)1020 1708 y(whic)o(h)17 b(the)e(di\013erence)j(b)q(et)o(w)o(een)e(the)g(C)f (and)h(Ja)o(v)n(a)g(v)o(ersions)h(w)o(as)1020 1749 y(m)o(uc)o(h)g (larger.)30 b(This)17 b(pro)o(vides)i(some)e(evidence)h(that,)g(as)f(w) o(ould)1020 1791 y(b)q(e)d(exp)q(ected,)h(mo)o(ving)g(to)f(a)g (just-in-time)h(compilation)i(en)o(viron-)1020 1832 y(men)o(t)11 b(signi\014can)o(tly)j(impro)o(v)o(es)e(execution)g(times.)17 b(It)10 b(is)h(also)h(p)q(ossi-)1020 1874 y(ble)h(that)e(hot-sp)q(ot)i (compilation)i(tec)o(hniques)e(will)g(further)f(reduce)1020 1915 y(the)17 b(gap)h(in)f(execution)i(times.)30 b(Although)18 b(the)f(Ja)o(v)n(a)g(v)o(ersion)i(is)1020 1957 y(slo)o(w)o(er,)f(w)o(e) e(b)q(eliev)o(e)j(that)e(for)f(a)h(n)o(um)o(b)q(er)g(of)g(programmers)g (and)1020 1998 y(coarse-grained)i(applications)h(the)c(b)q(ene\014ts)i (obtained)g(from)e(the)1020 2040 y(ease)f(with)h(whic)o(h)g(Ajen)o(ts)f (programs)g(can)h(b)q(e)f(implemen)o(ted)i(and)1020 2081 y(executed)11 b(across)f(a)g(wide)g(v)n(ariet)o(y)h(of)f(platforms)h (will)g(out)o(w)o(eigh)g(the)1020 2123 y(costs)k(of)f(decreased)i (execution)h(times)e(\(relativ)o(e)h(to)f(applications)1020 2164 y(implemen)o(ted)g(in)f(C\).)1076 2206 y(The)j(third)i(ro)o(w)e (of)g(T)m(able)h(1)f(sho)o(ws)h(the)f(execution)j(time)d(of)1020 2248 y(the)i(parallel)j(v)o(ersion)e(of)e(the)h(matrix)h(m)o(ultiplica) q(tion)i(program)1020 2289 y(when)13 b(executing)h(using)h(one)e (remote)f(serv)o(er.)18 b(By)12 b(comparing)j(the)1020 2331 y(second)d(and)f(third)h(ro)o(ws)f(of)f(the)h(table)h(w)o(e)e(see) h(that)g(the)g(o)o(v)o(erheads)1020 2372 y(incurred)19 b(b)o(y)f(Ajen)o(ts,)g(in)g(switc)o(hing)h(from)e(a)h(simple)h(sequen)o (tial)1020 2414 y(matrix)14 b(m)o(ultiply)i(to)c(a)h(single-serv)o(er)j (Ajen)o(ts)c(v)o(ersion,)j(is)e(lo)o(w.)1076 2455 y(The)i(last)h(t)o(w) o(o)f(ro)o(ws)g(of)g(T)m(able)h(1)g(sho)o(w)f(the)g(execution)i(times) 1020 2497 y(for)g(eac)o(h)g(matrix)h(size)f(when)g(using)i(all)f(eigh)o (t)g(serv)o(ers,)f(and)h(the)1020 2538 y(corresp)q(onding)j(sp)q (eedups.)33 b(The)18 b(sp)q(eedups)i(obtained)g(in)f(these)1020 2580 y(exp)q(erimen)o(ts)g(are)e(quite)i(t)o(ypical)g(of)e(those)h (obtained)h(in)f(similar)1020 2621 y(lo)q(osely)e(coupled)f(en)o (vironmen)o(ts.)21 b(While)15 b(sp)q(eedup)g(is)f(acceptable)1020 2663 y(for)19 b(smaller)i(problem)f(sizes,)h(it)f(con)o(tin)o(ues)g(to) f(impro)o(v)o(e)i(as)e(the)p eop %%Page: 7 7 7 6 bop -76 -34 a Fi(problem)15 b(size)f(gro)o(ws,)f(with)h(a)g(sp)q (eedup)h(of)e(7.6)g(obtained)i(using)g(8)-76 7 y(mac)o(hines)g(and)e(a) g(matrix)h(size)g(of)f(1024)g(x)g(1024)h(in)o(tegers.)p 4 100 837 2 v 26 129 a(N)p 309 141 2 42 v 277 w(200)45 b(500)h(640)f(800)h(1024)p 4 143 837 2 v 4 150 V 26 180 a(Sequen)o(tial)16 b(C)p 309 192 2 42 v 96 w(4.0)59 b(67)c(139)45 b(280)55 b(601)p 4 194 837 2 v 26 223 a(Sequen)o(tial)16 b(Ja)o(v)n(a)p 309 235 2 42 v 49 w(7.5)49 b(131)d(286)f(574)h(1272)p 4 237 837 2 v 26 266 a(1)13 b(Serv)o(er)p 309 278 2 42 v 174 w(7.7)49 b(134)d(292)f(580)h(1305)p 4 280 837 2 v 26 309 a(8)13 b(Serv)o(ers)p 309 321 2 42 v 159 w(1.5)59 b(20)64 b(40)h(78)f(172)p 4 323 837 2 v 26 352 a(Sp)q(eedup)p 309 365 2 42 v 170 w(5.1)54 b(6.7)f(7.3)g(7.4)63 b(7.6)p 4 366 837 2 v -76 416 a(T)m(able)14 b(1:)i(Sequen)o(tial)g(C,)c(sequen) o(tial)j(Ja)o(v)n(a,)e(parallel)i(Ja)o(v)n(a)e(execu-)-76 458 y(tion)d(times)g(for)f(1)h(and)g(8)f(serv)o(ers,)h(and)g(sp)q (eedups)h(obtained.)18 b(Times)-76 499 y(are)e(in)h(seconds)f(using)i (a)d(simple)j(\(non-blo)q(c)o(k)o(ed\))g(m)o(ultiplicati)q(on)-76 541 y(of)c(t)o(w)o(o)g(NxN)g(matrices)h(of)f(in)o(tegers.)21 b(Sp)q(eedup)16 b(is)f(the)f(time)h(on)f(8)-76 582 y(serv)o(ers)g(v)o (ersus)f(sequen)o(tial)j(Ja)o(v)n(a)d(time.)-20 669 y(W)m(e)18 b(exp)q(ect)h(that)f(Ajen)o(ts)g(will)h(b)q(e)f(commonly)i(used)f(to)e (dis-)-76 711 y(tribute)10 b(long-liv)o(ed)i(ob)r(jects)d(among)h(a)o (v)n(ailable)h(mac)o(hines,)g(with)f(re-)-76 752 y(mote)j(execution)h (requests)f(o)q(ccurring)i(far)d(more)h(frequen)o(tly)h(than)-76 794 y(ob)r(ject)g(creation)g(or)g(migration)h(requests.)j(Th)o(us,)c (it)f(is)h(vital)h(that)-76 835 y(Ajen)o(ts)f(is)h(able)h(to)e(p)q (erform)h(RMI)f(requests)h(e\016cien)o(tly)m(.)23 b(T)m(able)15 b(2)-76 877 y(sho)o(ws)e(the)f(results)h(of)f(our)g(RMI)h(request)f(b)q (enc)o(hmark.)18 b(A)12 b(remote)-76 918 y(metho)q(d)e(w)o(as)g(in)o(v) o(ok)o(ed)h(rep)q(eatedly)m(,)g(passing)h(an)e(in)o(teger)g(arra)o(y)g (of)f(a)-76 960 y(sp)q(eci\014ed)15 b(size)f(as)g(a)f(parameter.)19 b(The)13 b(results)i(sho)o(w)e(the)h(a)o(v)o(erage)-76 1001 y(time)j(to)g(complete)h(a)f(single)i(remote)e(metho)q(d)g(in)o(v) o(o)q(cation)j(\(and)-76 1043 y(th)o(us)14 b(di\013erences)i(ma)o(y)d (not)h(b)q(e)g(statistically)i(signi\014can)o(t\).)21 b(These)-76 1084 y(results)13 b(demonstrate)g(that)f(while)h(there)f (is)g(o)o(v)o(erhead)h(in)o(v)o(olv)o(ed)h(in)-76 1126 y(making)k(remote)e(metho)q(d)i(in)o(v)o(o)q(cations)h(using)f(Ajen)o (ts,)e(it)h(is)g(not)-76 1167 y(signi\014can)o(tl)q(y)g(greater)e(than) h(that)f(incurred)h(when)f(p)q(erforming)h(a)-76 1209 y(regular)e(Ja)o(v)n(a)f(RMI)h(call.)p 2 1301 840 2 v 25 1331 a(Ob)r(ject)f(Size)137 b(\(in)o(ts\))p 467 1343 2 42 v 46 w(1)45 b(1k)g(10k)h(100k)p 2 1345 840 2 v 2 1352 V 25 1381 a(RMI)13 b(-)g(Ajen)o(ts)112 b(\(ms\))p 467 1394 2 42 v 52 w(9)46 b(11)56 b(46)65 b(400)p 2 1395 840 2 v 25 1424 a(RMI)13 b(-)g(JDK)f(RMI)52 b(\(ms\))p 467 1437 2 42 v 52 w(5)j(8)66 b(44)f(400)p 2 1438 840 2 v -76 1488 a(T)m(able)19 b(2:)27 b(Time)19 b(to)f(in)o(v)o(ok)o(e)h (an)g(empt)o(y)g(remote)f(metho)q(d)h(using)-76 1530 y(the)g(base)g(JDK)f(RMI)h(and)g(Ajen)o(ts.)33 b(Ob)r(ject)18 b(size)i(denotes)f(the)-76 1571 y(n)o(um)o(b)q(er)e(of)e(in)o(tegers)i (con)o(tained)g(in)g(the)e(arra)o(y)h(that)g(is)g(the)g(only)-76 1613 y(data)d(mem)o(b)q(er)g(of)f(the)h(ob)r(ject)g(that)f(is)h(passed) h(as)f(a)f(parameter)h(to)-76 1654 y(the)g(remote)g(metho)q(d.)-20 1734 y(A)c(ma)r(jor)h(feature)g(of)f(Ajen)o(ts)g(is)h(the)g(abilit)o(y) i(to)e(migrate)g(remote)-76 1776 y(ob)r(jects.)17 b(T)m(able)d(3)f(sho) o(ws)g(the)g(times)g(to)g(migrate)h(remote)f(ob)r(jects)-76 1817 y(of)d(v)n(arious)j(sizes.)k(In)10 b(conducting)j(this)f(exp)q (erimen)o(t,)g(w)o(e)e(migrated)-76 1859 y(an)15 b(ob)r(ject)f(whic)o (h)h(is)g(comp)q(osed)g(of)f(a)g(single)i(in)o(teger)g(arra)o(y)m(.)k (The)-76 1900 y(ob)r(ject)10 b(w)o(as)g(migrated)h(64)f(times)h(using)g (8)f(di\013eren)o(t)i(mac)o(hines)f(\(the)-76 1942 y(8)i(mac)o(hines)h (w)o(ere)f(used)g(rep)q(eatedly)i(in)f(the)f(same)g(order\).)k(These) -76 1983 y(results)g(w)o(ere)f(then)g(a)o(v)o(eraged)h(to)e(pro)q(duce) i(the)f(results)h(giv)o(en)g(in)-76 2025 y(the)c(table.)18 b(W)m(e)13 b(can)h(see)f(from)f(these)i(results)g(that)f(there)g(is)h (a)f(sig-)-76 2066 y(ni\014can)o(t)f(increase)f(in)g(cost)f(for)g(ob)r (ject)h(migration)h(when)e(compared)-76 2108 y(with)17 b(a)f(remote)g(metho)q(d)h(in)o(v)o(o)q(cation.)28 b(This)17 b(can)g(b)q(e)f(accoun)o(ted)-76 2149 y(for)h(b)o(y)h(a)g(n)o(um)o(b)q (er)g(of)f(factors.)31 b(Migrating)19 b(an)f(ob)r(ject)g(requires)-76 2191 y(that)f(an)h(ob)r(ject)f(b)q(e)g(serialized,)j(transfered)e(to)f (the)g(target)g(host)-76 2232 y(and)g(then)f(deserialized)q(.)29 b(References)16 b(to)g(the)h(ob)r(ject)f(then)h(need)-76 2274 y(to)12 b(b)q(e)g(up)q(dated,)i(including)h(those)e(needed)g(b)o (y)f(the)g(Ajen)o(ts)g(serv)o(er,)-76 2315 y(the)18 b(clien)o(t,)j(and) d(the)g(garbage)h(collector.)33 b(Additional)q(ly)n(,)21 b(when)-76 2357 y(the)15 b(ob)r(ject)f(is)h(migrated)g(to)g(a)f(new)g (host,)h(class)g(loading)i(ma)o(y)d(b)q(e)-76 2398 y(required.)-20 2440 y(A)9 b(k)o(ey)g(feature)g(of)f(Ajen)o(ts)h(is)g(that)g(w)o(e)f (seamlessly)j(in)o(tegrate)f(ob-)-76 2481 y(ject)h(migration)i(and)f (the)f(execution)h(of)f(remote)g(metho)q(ds.)17 b(Ajen)o(ts)-76 2523 y(w)o(as)f(built)i(to)e(supp)q(ort)h(ob)r(jects)g(whic)o(h)g(ma)o (y)f(b)q(e)h(long-liv)o(ed)i(and)-76 2564 y(as)14 b(a)f(result)h(migh)o (t)g(b)q(e)g(migrated)g(man)o(y)g(times)g(during)g(their)g(life-)-76 2606 y(times.)k(While)d(our)f(previous)h(exp)q(erimen)o(ts)g(sho)o(w)e (the)g(cost)h(of)f(re-)-76 2647 y(mote)i(metho)q(d)g(in)o(v)o(o)q (cation)j(and)d(ob)r(ject)g(migration)i(in)f(isolation,)-76 2689 y(it)h(is)g(also)g(imp)q(ortan)o(t)h(to)e(consider)i(the)e(o)o(v)o (erheads)i(incurred)g(b)o(y)p 1086 -36 865 2 v 1108 -7 a(Ob)r(ject)13 b(Size)106 b(\(in)o(ts\))p 1519 6 2 42 v 65 w(1)73 b(1k)55 b(10k)45 b(100k)p 1086 7 865 2 v 1086 14 V 1108 44 a(Migration)16 b(time)52 b(\(ms\))p 1519 56 2 42 v 52 w(334)45 b(334)h(397)56 b(769)p 1086 58 865 2 v 1020 110 a(T)m(able)11 b(3:)k(Av)o(erage)10 b(remote)g(ob)r(ject)g(migration)i(times)f(\(in)g(millisec-)1020 151 y(onds\))j(to)g(migrate)g(on)g(ob)r(ject)g(64)g(times)g(across)g(8) g(hosts.)19 b(Ob)r(ject)1020 193 y(size)d(denotes)g(the)g(n)o(um)o(b)q (er)g(of)f(in)o(tegers)h(con)o(tained)h(in)f(the)g(arra)o(y)1020 234 y(that)d(is)h(the)f(only)h(data)g(mem)o(b)q(er)f(of)f(the)i(ob)r (ject)f(b)q(eing)h(migrated.)1020 358 y(real)i(applications)i(that)d (utilize)i(these)e(facilities.)26 b(Therefore,)15 b(w)o(e)1020 399 y(conducted)g(exp)q(erimen)o(ts)h(in)f(whic)o(h)f(a)g(sequen)o (tial)i(matrix)f(m)o(ulti-)1020 441 y(plication)j(is)e(run)g(and)f (after)g(completing)j(a)d(p)q(ortion)i(of)e(its)g(com-)1020 482 y(putation)20 b(\(in)e(this)h(case)f(one)g(eigh)o(th\),)i(all)g (three)e(matrices)g(and)1020 524 y(the)f(computation)i(are)e(migrated)h (to)f(a)g(new)g(mac)o(hine.)30 b(This)18 b(is)1020 565 y(rep)q(eated)13 b(eigh)o(t)f(times.)17 b(Matrix)c(m)o(ultiplicati)q (on)i(w)o(as)c(c)o(hosen)h(as)g(a)1020 607 y(b)q(enc)o(hmark)f (application)i(b)q(ecause)d(it)g(is)g(b)q(oth)g(data)f(and)h(computa-) 1020 648 y(tionally)16 b(in)o(tensiv)o(e.)22 b(That)13 b(is,)h(it)g(runs)h(for)e(a)h(reasonable)h(amoun)o(t)1020 690 y(of)i(time)g(but)g(also)h(needs)f(a)g(signi\014can)o(t)i(amoun)o (t)f(of)e(data)h(to)g(b)q(e)1020 731 y(migrated.)1076 773 y(The)11 b(results)h(of)e(these)h(exp)q(erimen)o(ts,)i(sho)o(wn)e (in)h(T)m(able)f(4,)g(com-)1020 814 y(pare)k(the)g(execution)h(times)f (of)f(the)h(sequen)o(tial)i(matrix)e(m)o(ultipli)q(-)1020 856 y(cation)k(\(done)g(on)f(a)g(single)i(serv)o(er\))e(with)h(a)f (sequen)o(tial)i(matrix)1020 897 y(m)o(ultiplica)q(tion)15 b(forced)d(to)g(migrate)g(to)g(eigh)o(t)h(di\013eren)o(t)g(mac)o (hines.)1020 939 y(The)f(\014rst)g(t)o(w)o(o)g(ro)o(ws)g(of)f(the)i (table)g(sho)o(w)f(the)g(execution)i(times)e(for)1020 980 y(di\013eren)o(t)f(problem)g(sizes,)g(while)f(the)g(last)g(ro)o(w)f (sho)o(ws)h(the)g(in\015ation)1020 1022 y(factors)15 b(for)f(the)g(di\013eren)o(t)i(problem)g(sizes)g(\(i.e.,)e(the)h(ratio) g(of)f(the)1020 1063 y(execution)i(time)e(includin)q(g)j(the)d (migrations)i(o)o(v)o(er)e(the)g(execution)1020 1105 y(time)i(without)h(the)e(migrations\).)27 b(The)15 b(results)i(sho)o(w) f(that)g(ev)o(en)1020 1146 y(for)c(matrices)i(of)e(mo)q(derate)i(size)f (the)g(o)o(v)o(erheads)h(asso)q(ciated)h(with)1020 1188 y(migrating)d(the)e(matrix)g(ob)r(jects)h(a)e(n)o(um)o(b)q(er)i(of)f (times)g(do)q(es)g(not)h(sig-)1020 1229 y(ni\014can)o(tly)j(increase)f (the)f(total)h(execution)g(time.)k(W)m(e)12 b(found)h(these)1020 1271 y(results)h(to)f(b)q(e)g(surprisingl)q(y)j(go)q(o)q(d,)d(esp)q (ecially)j(b)q(ecause)e(the)f(com-)1020 1312 y(putations)18 b(in)o(v)o(olving)g(a)e(1024)g(x)g(1024)g(matrix)h(of)e(in)o(tegers)i (m)o(ust)1020 1354 y(serialize,)23 b(transfer)c(and)h(deserialize)i(at) e(least)g(12)f(MB)h(of)f(data)1020 1396 y(during)13 b(eac)o(h)f (migration)i(\(4)d(MB)h(for)g(eac)o(h)g(of)f(the)h(three)g(matrices,) 1020 1437 y(assuming)20 b(four)f(b)o(ytes)f(for)g(eac)o(h)h(in)o (teger\).)34 b(Admittedly)m(,)21 b(these)1020 1479 y(ob)r(jects)14 b(are)f(not)g(v)o(ery)h(complex)h(and)f(ma)o(y)f(b)q(e)g(faster)h(to)f (serialize)1020 1520 y(and)i(deserialize)j(than)d(more)g(complex)h(ob)r (jects.)22 b(Ho)o(w)o(ev)o(er,)15 b(ev)o(en)1020 1562 y(with)h(an)g(increase)h(in)g(ob)r(ject)f(migration)h(times)g(the)f (adv)n(an)o(tages)1020 1603 y(of)f(migration)i(will)f(still)h(out)o(w)o (eigh)f(the)g(disadv)n(an)o(tages)h(for)e(some)1020 1645 y(application)q(s.)1076 1686 y(W)m(e)22 b(consider)h(these)f(results)h (to)f(b)q(e)g(encouraging,)k(consid-)1020 1728 y(ering)21 b(that)e(an)h(additional)i(job)e(added)g(to)g(the)f(same)h(mac)o(hine) 1020 1769 y(w)o(ould)g(result)f(in)g(an)g(in\015ation)i(factor)d(of)h (2)f(\(assuming)i(round-)1020 1811 y(robin)14 b(sc)o(heduling)i(with)e (no)f(o)o(v)o(erhead\).)p 1133 1905 771 2 v 1155 1935 a(N)p 1329 1947 2 42 v 173 w(200)56 b(500)g(640)h(800)50 b(1024)p 1133 1949 771 2 v 1133 1956 V 1155 1985 a(1)13 b(Serv)o(er)p 1329 1998 2 42 v 71 w(7.7)59 b(134)d(292)h(580)50 b(1305)p 1133 1999 771 2 v 1155 2028 a(8)13 b(Serv)o(ers)p 1329 2041 2 42 v 46 w(20.3)50 b(165)56 b(344)h(666)50 b(1402)p 1133 2042 771 2 v 1155 2072 a(In\015ation)p 1329 2084 2 42 v 57 w(2.64)45 b(1.23)g(1.18)g(1.15)50 b(1.07)p 1133 2086 771 2 v 1020 2137 a(T)m(able)14 b(4:)k(Serial)d (matrix)f(m)o(ultiplica)q(tion)j(times)d(\(in)g(seconds\))g(for)1020 2179 y(NxN)f(matrices)g(without)h(migration)h(o)o(v)o(erheads)f(on)f(1) g(serv)o(er)g(and)1020 2221 y(with)j(migration)h(o)o(v)o(erheads)g (across)f(8)f(serv)o(ers.)25 b(In\015ation)17 b(is)f(the)1020 2262 y(ratio)e(of)f(the)g(time)g(on)h(8)f(serv)o(ers)g(to)g(the)g(time) h(on)f(1)g(serv)o(er.)1076 2340 y(As)24 b(previously)j(describ)q(ed)g (the)d(use)h(of)f(c)o(hec)o(kp)q(oin)o(ting)j(in)1020 2381 y(Ajen)o(ts)17 b(enables)i(the)e(use)g(of)g(the)g(c)o(hec)o(kp)q (oin)o(ting)j(and)e(roll)h(bac)o(k)1020 2423 y(form)e(of)f(migration.) 31 b(Ho)o(w)o(ev)o(er,)17 b(the)g(c)o(hec)o(kp)q(oin)o(ting)j(of)d(ob)r (jects)1020 2464 y(preceding)f(a)e(remote)g(metho)q(d)g(in)o(v)o(o)q (cation)j(has)d(an)g(ob)o(vious)i(neg-)1020 2506 y(ativ)o(e)h(impact)f (on)h(p)q(erformance.)26 b(T)m(able)16 b(5)g(displa)o(ys)i(the)e (results)1020 2547 y(of)d(a)g(simple)i(c)o(hec)o(kp)q(oin)o(tin)q(g)h (b)q(enc)o(hmark)f(designed)g(to)e(pro)o(vide)i(a)1020 2589 y(rough)h(idea)f(of)g(the)g(costs)g(in)o(v)o(olv)o(ed)i(in)e(c)o (hec)o(kp)q(oin)o(tin)q(g.)25 b(F)m(or)14 b(this)1020 2630 y(b)q(enc)o(hmark,)j(an)f(empt)o(y)g(remote)f(metho)q(d)h(w)o(as)g (in)o(v)o(ok)o(ed)h(rep)q(eat-)1020 2672 y(edly)g(on)g(an)f(ob)r(ject)h (whose)f(sole)i(mem)o(b)q(er)e(v)n(ariable)i(is)f(an)g(arra)o(y)p eop %%Page: 8 8 8 7 bop -76 -34 a Fi(of)12 b(in)o(tegers)h(\(the)f(size)h(of)f(this)h (arra)o(y)g(is)f(c)o(hanged)i(for)e(eac)o(h)g(exp)q(eri-)-76 7 y(men)o(t\).)k(The)9 b(\014rst)h(t)o(w)o(o)f(ro)o(ws)g(sho)o(w)h(the) g(a)o(v)o(erage)g(time)g(to)f(complete)-76 49 y(a)15 b(single)h(remote)f(metho)q(d)h(in)o(v)o(o)q(cation,)h(with)e(c)o(hec)o (kp)q(oin)o(ting)j(en-)-76 90 y(abled,)d(and)g(without)g(c)o(hec)o(kp)q (oin)o(ting)i(enabled.)22 b(The)14 b(last)h(ro)o(w)e(in)-76 132 y(the)k(table)g(sho)o(ws)f(the)h(time)f(di\013erence)i(b)q(et)o(w)o (een)f(these)g(t)o(w)o(o)e(ex-)-76 173 y(p)q(erimen)o(ts.)j(It)12 b(represen)o(ts)h(the)f(o)o(v)o(erhead)i(added)f(to)f(an)h(RMI)f(call) -76 215 y(when)h(c)o(hec)o(kp)q(oin)o(tin)q(g)j(is)d(enabled.)p -21 308 886 2 v 2 337 a(Ob)r(ject)g(Size)183 b(\(in)o(ts\))p 490 349 2 42 v 46 w(1)45 b(1k)g(10k)h(100k)p -21 351 886 2 v -21 358 V 2 387 a(No-Chec)o(kp)q(oin)o(ting:)72 b(\(ms\))p 490 400 2 42 v 52 w(6)55 b(6)75 b(6)94 b(6)p -21 401 886 2 v 2 430 a(Chec)o(kp)q(oin)o(ting:)133 b(\(ms\))p 490 443 2 42 v 52 w(8)55 b(9)66 b(19)f(115)p -21 444 886 2 v 2 474 a(Chec)o(kp)q(oin)o(ting)16 b(Cost)51 b(\(ms\))p 490 486 2 42 v 52 w(2)k(3)66 b(13)f(109)p -21 488 886 2 v -76 540 a(T)m(able)20 b(5:)28 b(Times)20 b(\(in)f(millisecon)q (ds\))j(to)d(in)o(v)o(ok)o(e)h(an)f(empt)o(y)h(re-)-76 581 y(mote)d(metho)q(d)g(without)h(c)o(hec)o(kp)q(oin)o(ting)i(and)d (with)g(c)o(hec)o(kp)q(oin)o(t-)-76 623 y(ing.)26 b(Ob)r(ject)15 b(size)i(denotes)f(the)g(n)o(um)o(b)q(er)g(of)g(in)o(tegers)g(con)o (tained)-76 664 y(in)11 b(the)f(arra)o(y)g(that)g(is)g(the)g(only)h (data)f(mem)o(b)q(er)g(of)g(the)g(ob)r(ject)g(b)q(eing)-76 706 y(c)o(hec)o(kp)q(oin)o(ted.)22 b(Chec)o(kp)q(oin)o(ting)17 b(cost)d(is)g(the)g(di\013erence)i(b)q(et)o(w)o(een)-76 747 y(the)d(c)o(hec)o(kp)q(oin)o(ting)j(and)e(no-c)o(hec)o(kp)q(oin)o (tin)q(g)i(cases.)-20 834 y(The)10 b(results)h(presen)o(ted)g(in)f(T)m (able)h(5)f(sho)o(w)g(that)g(Ajen)o(ts')f(c)o(hec)o(k-)-76 876 y(p)q(oin)o(ting)15 b(function)f(p)q(erforms)g(in)f(a)g(reasonably) i(e\016cien)o(t)e(manner)-76 917 y(and)h(as)g(exp)q(ected)g(the)f(o)o (v)o(erhead)i(increases)g(with)f(the)f(size)h(of)f(the)-76 959 y(ob)r(ject)h(b)q(eing)g(c)o(hec)o(kp)q(oin)o(ted.)20 b(While)15 b(the)f(cost)f(of)g(c)o(hec)o(kp)q(oin)o(ting)-76 1000 y(is)j(a)g(m)o(ultiple)i(of)d(the)h(base)g(cost)g(of)g(a)f(remote) h(metho)q(d)g(call,)i(w)o(e)-76 1042 y(b)q(eliev)o(e)f(that)e(it)g(is)h (still)g(within)g(a)f(reasonable)i(range.)23 b(Since)16 b(the)-76 1083 y(costs)c(are)g(considerabl)q(y)j(lo)o(w)o(er)d(than)g (migration)i(costs)f(\(as)f(sho)o(wn)-76 1125 y(in)j(T)m(able)f(3\),)f (the)h(same)g(relativ)o(ely)i(coarse)e(grained)i(applications)-76 1166 y(whose)c(execution)h(times)f(are)g(not)f(signi\014can)o(tl)q(y)j (impacted)f(b)o(y)f(mi-)-76 1208 y(gration)17 b(w)o(ould)f(also)g(not)g (b)q(e)f(signi\014can)o(tl)q(y)j(impacted)e(b)o(y)g(c)o(hec)o(k-)-76 1249 y(p)q(oin)o(ting.)26 b(Our)15 b(target)g(applicati)q(ons)j(are)d (those)h(whose)f(metho)q(d)-76 1291 y(in)o(v)o(o)q(cations)j(made)d (through)i(Ajen)o(ts)d(will)j(ha)o(v)o(e)f(a)f(running)i(time)-76 1332 y(measured)12 b(in)g(seconds)h(and)f(min)o(utes)g(\(as)f(in)h(the) g(matrix)g(m)o(ultiply)-76 1374 y(case\),)h(and)g(th)o(us)h(the)f(o)o (v)o(erheads)h(due)f(to)g(c)o(hec)o(kp)q(oin)o(ting)j(will)e(not)-76 1415 y(b)q(e)i(signi\014can)o(t)j(for)c(these)h(cases.)26 b(Ho)o(w)o(ev)o(er,)16 b(c)o(hec)o(kp)q(oin)o(ting)j(will)-76 1457 y(ha)o(v)o(e)c(a)g(considerable)i(impact)f(when)f(there)g(are)f(a) h(large)g(n)o(um)o(b)q(er)-76 1498 y(of)i(in)o(v)o(o)q(cations)k(on)c (metho)q(ds)i(with)f(relativ)o(ely)i(short)d(execution)-76 1540 y(times.)-20 1581 y(A)f(p)q(oten)o(tially)k(more)c(prohibiti)q(v)o (e)j(cost)e(of)f(c)o(hec)o(kp)q(oin)o(ting)k(is)-76 1623 y(memory)11 b(usage.)17 b(Since)c(c)o(hec)o(kp)q(oin)o(ting)h(creates)d (a)g(complete)h(cop)o(y)-76 1664 y(of)i(an)g(ob)r(ject,)g(memory)g (usage)g(for)g(the)g(c)o(hec)o(kp)q(oin)o(ted)i(ob)r(ject)e(ef-)-76 1706 y(fectiv)o(ely)j(doubles.)27 b(This)16 b(can)g(b)q(e)g(an)f(issue) i(when)f(dealing)i(with)-76 1748 y(large)11 b(ob)r(jects,)g(suc)o(h)g (as)f(matrices)i(where)e(ob)r(ject)g(size)h(is)g(measured)-76 1789 y(in)j(megab)o(ytes.)-20 1831 y(While)j(all)g(of)e(our)g(p)q (erformance)h(testing)g(w)o(as)f(done)h(in)g(a)f(ho-)-76 1872 y(mogeneous)i(en)o(vironmen)o(t,)g(Ajen)o(ts)d(do)q(es)i (successfully)h(run)f(on)f(a)-76 1914 y(v)n(ariet)o(y)f(of)f (platforms.)-76 2011 y Ff(5)41 b(Discussion)-76 2090 y Fi(W)m(e)18 b(no)o(w)g(outline)h(some)f(of)g(the)f(issues)i(related)g (to)f(the)g(curren)o(t)-76 2131 y(design)d(and)e(implemen)o(tation)k (of)12 b(Ajen)o(ts.)-20 2173 y(Although)i(the)e(mec)o(hanisms)h(and)g (functionalit)o(y)i(pro)o(vided)f(b)o(y)-76 2214 y(Ajen)o(ts)d(are)g (su\016cien)o(t)h(to)f(supp)q(ort)h(sev)o(eral)h(t)o(yp)q(es)e(of)g (parallel,)i(dis-)-76 2256 y(tributed,)k(and)e(mobile)i(application)q (s,)h(the)d(system)h(has)f(and)h(will)-76 2297 y(con)o(tin)o(ue)21 b(to)d(ev)o(olv)o(e.)36 b(The)19 b(curren)o(t)g(design)i(and)e (implemen)o(ta-)-76 2339 y(tion)d(has)f(b)q(een)g(greatly)h (in\015uenced)h(b)o(y)e(our)g(o)o(v)o(erriding)i(goals)f(to)-76 2380 y(pro)q(duce)i(a)f(system)h(that)f(is)h(as)f(transparen)o(t)h(as)f (p)q(ossible)j(while)-76 2422 y(ensuring)g(that)e(w)o(e)f(do)h(not)g (mo)q(dify)g(the)g(language)i(or)d(use)h(pre-)-76 2463 y(pro)q(cessors.)23 b(In)14 b(addition)j(w)o(e)d(w)o(an)o(t)g(to)h (ensure)g(that)f(Ajen)o(ts)h(and)-76 2505 y(application)q(s)21 b(that)d(use)g(Ajen)o(ts)g(are)g(compatible)j(with)d(existing)-76 2546 y(Ja)o(v)n(a)c(compilers,)i(stub)f(compilers,)h(and)f(Ja)o(v)n(a)f (virtual)i(mac)o(hines.)-76 2588 y(These)f(decisions)i(and)e(the)g(c)o (hoice)h(of)e(Ja)o(v)n(a)h(ha)o(v)o(e)g(in\015uenced)i(the)-76 2630 y(design,)d(implemen)o(tation)j(and)c(p)q(erformance)h(of)f(our)g (system.)1076 -34 y(Ajen)o(ts')c(Ja)o(v)n(a)g(compatibilit)o(y)j(is)e (ac)o(hiev)o(ed)h(b)o(y)e(making)i(the)e(syn-)1020 7 y(c)o(hronous)17 b(and)e(async)o(hronous)j(RMI)d(in)o(terface)h(less)g (transparen)o(t)1020 49 y(than)c(approac)o(hes)i(used)e(b)o(y)g(SUN's)g (RMI)g([24])f(or)h(Ja)o(v)n(aP)o(art)o(y)g([15].)1020 90 y(The)h(mec)o(hanisms)h(pro)o(vided)h(b)o(y)e Fg(Ajents.new)o(\(\))p Fi(,)c Fg(Ajents.rm)o(i\(\))1020 132 y Fi(and)14 b Fg(Ajents.ar)o(mi\() o(\))c Fi(calls)k(imply)h(that)e(the)g(in)o(terface)h(for)f(creat-)1020 173 y(ing)f(and)g(in)o(teracting)h(with)f(remote)f(ob)r(jects)h(is)f (di\013eren)o(t)i(from)e(the)1020 215 y(lo)q(cal)16 b(ob)r(jects.)21 b(This)15 b(requires)g(the)g(application)i(programmer)e(to)1020 256 y(k)o(eep)f(trac)o(k)g(of)g(whic)o(h)g(ob)r(jects)g(are)g(lo)q(cal) h(and)g(whic)o(h)f(are)g(remote)1020 298 y(and)i(to)g(ensure)g(that)g (the)g(prop)q(er)h(in)o(terface)f(is)g(used)h(for)e(remote)1020 339 y(ob)r(jects.)j(This)13 b(ma)o(y)h(not)f(b)q(e)h(a)f(large)h (disadv)n(an)o(tage)h(since)f(it)g(ma)o(y)1020 381 y(b)q(e)g(helpful)h (for)f(programmers)g(to)g(remem)o(b)q(er)g(whic)o(h)g(metho)q(d)h(in-) 1020 422 y(v)o(o)q(cations)g(are)e(remote)g(when)g(p)q(erformance)h(is) g(an)f(issue.)1076 464 y(An)h(additional)i(disadv)n(an)o(tage)g(of)e (the)f(Ajen)o(ts)h(RMI)f(in)o(terface)1020 505 y(is)g(that)f(the)h (metho)q(d)g(and)g(parameters)g(passed)g(as)f(parameters)h(to)1020 547 y(the)j(RMI)f(call)i(can)e(not)h(b)q(e)g(c)o(hec)o(k)o(ed)g(at)f (compile)i(time,)f(nor)g(can)1020 588 y(the)i(t)o(yp)q(es)g(of)f(the)h (parameters)h(that)e(are)h(to)g(b)q(e)g(passed)g(to)g(the)1020 630 y(sp)q(eci\014ed)c(metho)q(d.)k(As)12 b(a)g(result)i(it)f(is)g(not) g(p)q(ossible)h(to)f(detect)f(er-)1020 671 y(rors)g(that)g(migh)o(t)h (otherwise)f(b)q(e)h(detected)f(at)g(compile)h(time,)g(suc)o(h)1020 713 y(as)g(in)o(v)o(oking)h(a)f(non-existen)o(t)h(metho)q(d)f(of)f(an)h (ob)r(ject,)f(or)h(in)o(v)o(oking)1020 754 y(a)k(metho)q(d)g(with)g (incorrect)h(argumen)o(ts)g(t)o(yp)q(es,)f(or)g(an)g(incorrect)1020 796 y(n)o(um)o(b)q(er)e(of)f(argumen)o(ts.)22 b(Unfortunately)m(,)16 b(in)f(Ajen)o(ts)g(suc)o(h)g(prob-)1020 837 y(lems)j(can)g(only)h(b)q (e)f(detected)h(at)e(run-time)i(\(Ajen)o(ts)e(thro)o(ws)h(an)1020 879 y(exception)g(appropriate)h(for)d(the)h(error\).)27 b(Ho)o(w)o(ev)o(er,)17 b(w)o(e)f(b)q(eliev)o(e)1020 920 y(that)10 b(these)g(tradeo\013s)g(are)g(w)o(arran)o(ted)g(in)h(order)f (to)f(main)o(tain)j(100\045)1020 962 y(Ja)o(v)n(a)h(compatibili)q(t)o (y)m(.)1076 1003 y(As)20 b(can)h(b)q(e)f(seen)h(b)o(y)g(examining)h (the)f(o)o(v)o(erheads)g(incurred)1020 1045 y(when)d(in)o(v)o(oking)j (remote)c(metho)q(ds)i(\(T)m(able)f(2\))g(and)h(p)q(erforming)1020 1086 y(ob)r(ject)11 b(migration)h(\(T)m(able)f(3\),)f(Ajen)o(ts)g(is)h (clearly)h(designed)h(for)d(use)1020 1128 y(with)j(coarse-grained)i (applicatio)q(ns.)20 b(While)15 b(the)e(p)q(erformance)g(of)1020 1169 y(Ajen)o(ts)18 b(will)i(b)q(e)e(signi\014can)o(tl)q(y)j(impro)o(v) o(ed)f(b)o(y)e(impro)o(v)o(emen)o(ts)i(to)1020 1211 y(Ja)o(v)n(a)d (virtual)h(mac)o(hine)g(implemen)o(tations)i(\(e.g.,)d(more)f (e\016cien)o(t)1020 1253 y(RMIs)11 b([10,)f(13)q(])g(and/or)i(impro)o (v)o(ed)g(ob)r(ject)f(serialization)j([18]\))c(it)i(is)1020 1294 y(unlik)o(ely)k(that)d(these)g(impro)o(v)o(emen)o(ts)h(will)g(b)q (e)g(signi\014can)o(t)h(enough)1020 1336 y(to)h(enable)i(Ajen)o(ts)f (to)f(b)q(e)h(used)g(for)f(\014ne-grained)j(computations)1020 1377 y(in)d(a)e(clustered)j(w)o(orkstation)f(en)o(vironmen)o(t.)24 b(In)15 b(addition,)i(there)1020 1419 y(ma)o(y)f(b)q(e)f(opp)q (ortunitie)q(s)j(for)d(considerably)k(reducing)e(ob)r(ject)f(mi-)1020 1460 y(gration)i(times)e(as)h(the)f(curren)o(t)h(implemen)o(tation)i (has)e(not)f(b)q(een)1020 1502 y(tuned.)1076 1543 y(A)c(p)q(oten)o (tially)k(serious)e(problem)g(arises)g(in)f(Ajen)o(ts)f(and)i(other) 1020 1585 y(systems)f(whic)o(h)g(implemen)o(t)h(c)o(hec)o(kp)q(oin)o (ting)i(for)c(distributed)i(and)1020 1626 y(parallel)21 b(applicatio)q(ns.)36 b(The)19 b(problem)h(arises)g(when)e(a)h(remote) 1020 1668 y(ob)r(ject)e Fg(A)p Fi(,)f(in)o(v)o(ok)o(es)i(a)f(metho)q (d,)h Fg(M)p Fi(,)d(of)i(ob)r(ject)g Fg(B)f Fi(whic)o(h)h(mo)q (di\014es)1020 1709 y(that)e(ob)r(ject's)h(state.)23 b(If)14 b(ob)r(ject)i Fg(A)e Fi(is)i(c)o(hec)o(kp)q(oin)o(ted,)h(then)f (it)g(in-)1020 1751 y(v)o(ok)o(es)j(metho)q(d)h Fg(M)e Fi(of)h(ob)r(ject)g Fg(B)f Fi(and)h(it)h(is)f(later)g(migrated)h(and) 1020 1792 y(restarted)c(on)h(a)e(di\013eren)o(t)j(serv)o(er,)e Fg(A)p Fi('s)f(execution)j(will)f(b)q(e)f(rolled)1020 1834 y(bac)o(k)11 b(to)g(the)f(c)o(hec)o(kp)q(oin)o(t)j(and)e(con)o (tin)o(ued)h(from)f(that)f(p)q(oin)o(t.)18 b(Th)o(us)1020 1875 y(metho)q(d)12 b Fg(M)e Fi(of)h(ob)r(ject)g Fg(B)g Fi(will)i(b)q(e)e(called)i(t)o(wice)e(\(rather)g(than)h(once\).)1020 1917 y(This)i(is)g(called)h(the)e(c)o(hec)o(kp)q(oin)o(ting)j (consistency)f(problem)g(and)f(is)1020 1958 y(a)j(w)o(ell)h(kno)o(wn)f (problem)i([14,)d(23].)29 b(One)17 b(in)o(tractable)i(approac)o(h)1020 2000 y(to)c(ensuring)i(c)o(hec)o(kp)q(oin)o(t)f(consistency)h(w)o(ould) f(b)q(e)f(to)g(c)o(hec)o(kp)q(oin)o(t)1020 2041 y(all)i(ob)r(jects)g (that)f(ob)r(ject)g Fg(A)f Fi(could)j(p)q(ossibly)g(in)o(teract)f(with) g(eac)o(h)1020 2083 y(time)11 b(ob)r(ject)g Fg(A)f Fi(is)h(c)o(hec)o (kp)q(oin)o(ted.)19 b(Unfortunately)m(,)12 b(it)f(is)g(not)g(p)q(ossi-) 1020 2124 y(ble)i(to)f(k)o(eep)h(trac)o(k)f(of)g(and)h(c)o(hec)o(kp)q (oin)o(t)h(all)g(suc)o(h)e(ob)r(jects)h(b)q(ecause)1020 2166 y(some)h(ob)r(jects)f(ma)o(y)h(not)g(b)q(e)f(kno)o(wn)h(b)o(y)g (or)f(con)o(trolled)j(b)o(y)d(Ajen)o(ts)1020 2207 y(\(e.g.,)f(lo)q(cal) i(ob)r(jects,)f(ob)r(jects)g(that)g(are)f(comm)o(unicated)j(with)e(us-) 1020 2249 y(ing)h(standard)g(SUN)f(RMI)g(or)g(using)i(a)e(so)q(c)o(k)o (et\).)1076 2290 y(A)o(t)h(this)h(p)q(oin)o(t)g(our)g(system)g(can)f(b) q(e)h(used)g(to)f(implemen)o(t)i(rel-)1020 2332 y(ativ)o(ely)g(simple)h (applications.)25 b(In)14 b(order)h(to)f(fully)i(supp)q(ort)g(more)1020 2373 y(serious)f(distributed,)i(parallel)f(and)f(mobile)g(application)q (s)i(w)o(e)c(are)1020 2415 y(con)o(tin)o(uing)i(to)c(in)o(v)o(estigate) j(tec)o(hniques)g(for)e(adding)h(features)f(and)1020 2456 y(examining)21 b(issues)f(suc)o(h)g(as:)28 b(p)q(erformance)20 b(in)g(wide)f(area)g(net-)1020 2498 y(w)o(orks;)c(\014ner)g(con)o(trol) g(o)o(v)o(er)f(c)o(hec)o(kp)q(oin)o(tin)q(g)j(\(e.g.,)c(setting)j(c)o (hec)o(k-)1020 2539 y(p)q(oin)o(ting)g(p)q(er)d(metho)q(d\);)h(fault)g (tolerance;)g(remote)f(I/O;)g(and)h(im-)1020 2581 y(pro)o(v)o(ed)f(sc)o (heduling.)20 b(In)12 b(particular,)i(remote)e(I/O)g(for)g(in)o (teractiv)o(e)1020 2622 y(input,)i(\014les)g(and)g(so)q(c)o(k)o(ets)f (is)h(b)q(eing)g(examined)h(b)o(y)f(Izatt)e([8].)p eop %%Page: 9 9 9 8 bop -76 -34 a Ff(6)41 b(Summa)o(ry)-76 44 y Fi(Ajen)o(ts)13 b(is)h(a)g(system)f(designed)j(to)d(mak)o(e)h(the)f(implemen)o(tation)j (of)-76 86 y(parallel,)21 b(distributed)f(and)e(mobile)h(Ja)o(v)n(a)e (applications)k(capable)-76 127 y(of)e(seamlessly)h(utilizin)q(g)h (heterogeneous)g(computing)f(resources)-76 169 y(across)c(an)f(In)o (tranet)h(or)f(throughout)h(the)f(In)o(ternet.)24 b(Our)15 b(imple-)-76 210 y(men)o(tation)h(of)e(Ajen)o(ts)g(curren)o(tly)i(pro)o (vides)g(simple)g(and)f(e\016cien)o(t)-76 252 y(mec)o(hanisms)f(for)d (the)h(creation)h(of)f(remote)g(ob)r(jects,)g(sync)o(hronous)-76 293 y(and)20 b(async)o(hronous)i(remote)d(metho)q(d)h(in)o(v)o(o)q (cations,)j(as)d(w)o(ell)g(as)-76 335 y(supp)q(ort)14 b(for)f(ob)r(ject)g(migration.)-20 376 y(Our)c(exp)q(erimen)o(tal)i (results)f(sho)o(w)f(that)g(w)o(e)f(are)h(able)h(to)f(ac)o(hiev)o(e)-76 418 y(quite)18 b(go)q(o)q(d)g(sp)q(eedup)h(using)g(a)e(relativ)o(ely)j (simple)e(implemen)o(ta-)-76 459 y(tion)i(of)f(a)g(parallel)j(matrix)d (m)o(ultipli)q(catio)q(n)j(application.)38 b(Our)-76 501 y(micro-b)q(enc)o(hmarks)19 b(sho)o(w)e(that)h(the)f(o)o(v)o (erheads)h(in)o(tro)q(duced)h(b)o(y)-76 542 y(our)14 b(implemen)o(tation)j(do)d(not)h(adv)o(ersely)g(a\013ect)g(remote)e (metho)q(d)-76 584 y(in)o(v)o(o)q(cation)k(times.)23 b(In)15 b(addition,)i(w)o(e)d(demonstrate)i(that)e(Ajen)o(ts)-76 625 y(is)f(capable)g(of)f(migrating)i(relativ)o(ely)g(large)f(ob)r (jects)g(sev)o(eral)g(times)-76 667 y(without)d(signi\014can)o(tl)q(y)i (impacting)f(the)e(execution)i(time)f(of)f(ob)r(jects)-76 708 y(that)k(are)g(p)q(erforming)i(a)e(non-trivial)j(amoun)o(t)d(of)g (computation.)-20 750 y(Ajen)o(ts)f(is)g(implemen)o(ted)i(as)e(a)f (collection)k(of)c(Ja)o(v)n(a)h(classes)h(and)-76 791 y(can)f(b)q(e)g(executed)g(on)g(an)o(y)g(standard)h(Ja)o(v)n(a)e (virtual)j(mac)o(hine.)k(Ab-)-76 833 y(solutely)13 b(no)d(mo)q (di\014cations)j(to)e(the)f(Ja)o(v)n(a)g(language)j(are)d(made)h(and) -76 874 y(no)k(prepro)q(cessors,)g(sp)q(ecial)h(compilers,)g(or)e(sp)q (ecial)i(stub)f(compil-)-76 916 y(ers)g(are)f(required.)24 b(W)m(e)14 b(b)q(eliev)o(e)j(that)e(the)f(use)h(of)f(standard)i(Ja)o(v) n(a)-76 957 y(and)11 b(the)e(com)o(bination)k(of)c(features)h(that)g (Ajen)o(ts)f(supp)q(orts,)j(mak)o(es)-76 999 y(it)19 b(an)g(e\013ectiv)o(e)h(to)q(ol)g(for)e(programmers)i(writing)g (parallel,)i(dis-)-76 1040 y(tributed)15 b(or)e(mobile)h(Ja)o(v)n(a)f (applicatio)q(ns.)-76 1138 y Ff(7)41 b(Ackno)o(wledgements)-76 1217 y Fi(W)m(e)10 b(thank)g(the)f(anon)o(ymous)i(referees)e(for)g (their)i(helpful)g(commen)o(ts)-76 1258 y(whic)o(h)k(ha)o(v)o(e)f(help) q(ed)h(to)f(impro)o(v)o(e)g(this)h(pap)q(er.)k(Brec)o(h)o(t)14 b(and)g(Izatt)-76 1300 y(wish)e(to)f(thank)h(the)f(the)h(Natural)g (Sciences)g(and)g(Engineering)i(Re-)-76 1341 y(searc)o(h)e(Council)h (\(NSER)o(C\))e(of)g(Canada)h(for)f(a)g(gran)o(t)h(and)g(sc)o(holar-) -76 1383 y(ship)i(\(resp)q(ectiv)o(ely\))i(that)d(partially)j(supp)q (orted)e(this)g(researc)o(h.)-76 1481 y Ff(References)-57 1559 y Fi([1])19 b(A.)10 b(Alexandro)o(v,)j(M.)d(Ib)q(el,)i(K.)f(Sc)o (hauser,)h(and)g(C.)e(Sc)o(heiman.)3 1601 y(Sup)q(erW)m(eb:)21 b(T)m(o)o(w)o(ards)14 b(a)g(global)i(W)m(eb-based)g(parallel)g(com-)3 1642 y(puting)21 b(infrastructure.)37 b(In)20 b Fa(11th)e (International)e(Par)n(al)r(lel)3 1684 y(Pr)n(o)n(c)n(essing)11 b(Symp)n(osium)p Fi(,)f(April)15 b(1997.)-57 1755 y([2])k(E.)9 b(Arjomandi,)i(W.)e(O'F)m(arrell,)i(I.)d(Kalas,)j(G.)e(Koblen)o(ts,)i (F.C.)3 1797 y(Eigler,)j(and)g(G.)f(Gao.)k(ABC++:)g(Concurrency)d(and)g (inher-)3 1838 y(itance)h(in)h(C++.)21 b Fa(IBM)16 b(Systems)d(Journal) p Fi(,)g(34\(1\):120{136,)3 1880 y(1995.)-57 1951 y([3])19 b(A.)e(Baratlo)q(o,)j(M.)e(Karaul,)i(Z.)d(Kedem,)i(and)g(P)m(.)e(Wyc)o (k)o(o\013.)3 1992 y(Charlotte:)h(Metacomputing)d(on)f(the)f(w)o(eb.)18 b(In)13 b Fa(Pr)n(o)n(c)n(e)n(e)n(dings)3 2034 y(of)e(the)f(9th)h (Confer)n(enc)n(e)f(on)h(Par)n(al)r(lel)f(and)g(Distribute)n(d)f(Com-)3 2076 y(puting)i(Systems)p Fi(,)g(1996.)-57 2147 y([4])19 b(T.)26 b(Brec)o(h)o(t,)31 b(H.)c(Sandh)o(u,)33 b(J.)27 b(T)m(alb)q(ot,)k(and)d(M.)g(Shan.)3 2188 y(P)o(araW)m(eb:)16 b(T)m(o)o(w)o(ards)10 b(w)o(orld-wide)h(sup)q(ercomputing.)k(In)10 b Fa(Eu-)3 2230 y(r)n(op)n(e)n(an)e(Symp)n(osium)h(on)h(Op)n(er)n (ating)e(System)h(Principles)p Fi(,)f(Oc-)3 2271 y(tob)q(er)13 b(1996.)-57 2343 y([5])19 b(B.)25 b(Christiansen,)31 b(P)m(.)25 b(Capp)q(ello,)31 b(M.F.)25 b(Ionescu,)30 b(M.O.)3 2384 y(Neary)m(,)20 b(K.)f(Sc)o(hauser,)k(and)d(D.)f(W)m(u.)37 b(Ja)o(v)o(elin:)32 b(In)o(ternet-)3 2426 y(based)19 b(parallel)j(computing)e(using)h(Ja)o(v)n(a.)34 b(In)19 b Fa(A)o(CM)g(1997)3 2467 y(Workshop)14 b(on)h(Java)f(for)i(Scienc)n(e) d(and)h(Engine)n(ering)f(Com-)3 2509 y(putation)p Fi(,)c(June)14 b(1997.)-57 2580 y([6])19 b(G.C.)9 b(F)m(o)o(x)i(and)g(W.)g(F)m (urmanski.)j(T)m(o)o(w)o(ards)d(W)m(eb/Ja)o(v)n(a)g(based)3 2622 y(high)j(p)q(erformance)h(distributed)h(computing)f({)f(an)g(ev)o (olving)1098 -34 y(virtual)23 b(mac)o(hine.)42 b(In)20 b Fa(Fifth)g(IEEE)h(Internationa)o(l)d(Sym-)1098 7 y(p)n(osium)i(on)g (High)f(Performanc)n(e)g(Distribute)n(d)f(Computing)1098 49 y(\(HPDC5\))p Fi(,)12 b(Syracuse,)i(NY,)e(August)h(1996.)1039 120 y([7])18 b(S.)h(F)q(\177)-20 b(unfro)q(c)o(k)o(en.)35 b(T)m(ransparen)o(t)20 b(migration)h(of)d(Ja)o(v)n(a-based)1098 161 y(mobile)12 b(agen)o(ts)f(\(capturing)h(and)f(reestablishin)q(g)i (the)d(state)g(of)1098 203 y(Ja)o(v)n(a)h(programs\).)k(In)c Fa(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)i(Se)n(c)n(ond)e(International)1098 244 y(Workshop)h(on)h(Mobile)f(A)n(gents)g(\(MA'98\))p Fi(,)e(Septem)o(b)q(er)k(1998.)1039 315 y([8])18 b(M.)11 b(Izatt.)i(Bab)o(ylon:)18 b(A)11 b(Ja)o(v)n(a-based)g(distributed)j(ob) r(ject)d(en-)1098 356 y(vironmen)o(t.)17 b(Master's)12 b(thesis,)g(Y)m(ork)g(Univ)o(ersit)o(y)m(.)k(\(in)d(prepa-)1098 398 y(ration\).)1039 469 y([9])18 b(H.)c(Karl.)22 b(Bridging)17 b(the)d(gap)h(b)q(et)o(w)o(een)g(distributed)i(shared)1098 510 y(memory)i(and)h(message)f(passing.)35 b(In)18 b Fa(A)o(CM)i(1998)d(Work-)1098 552 y(shop)g(on)h(Java)g(for)g(Scienc)n (e)e(and)h(Engine)n(ering)f(Computa-)1098 593 y(tion)p Fi(,)c(F)m(ebruary)h(1998.)1020 664 y([10])18 b(V.)f(Krishnasw)o(am)o (y)m(,)i(D.)e(W)m(alther,)i(S.)e(Bhola,)i(E.)e(Bomma-)1098 706 y(iah,)d(G.)f(Riley)m(,)i(B.)e(T)m(op)q(ol,)h(and)f(M.)g(Ahamad.)19 b(E\016cien)o(t)14 b(im-)1098 747 y(plemen)o(tations)k(of)d(Ja)o(v)n(a) g(RMI.)24 b(In)15 b Fa(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)i(the)f(4th)1098 789 y(USENIX)i(Confer)n(enc)n(e)g(on)h(Obje)n(ct-Oriente)n(d)f(T)m(e)n (chnolo)n(gies)1098 830 y(and)d(Systems)f(\(COOTS'98\))p Fi(,)g(April)i(1998.)1020 901 y([11])k(D.B.)11 b(Lange)h(and)f(M.)g (Oshima.)k Fa(Pr)n(o)n(gr)n(amming)c(and)f(Deploy-)1098 943 y(ing)16 b(Java)g(Mobile)f(A)n(gents)f(with)j(A)n(glets)p Fi(.)24 b(Addison)17 b(W)m(esley)m(,)1098 984 y(1998.)1020 1055 y([12])h(T.)13 b(Lindholm)i(and)f(F.)f(Y)m(ellin.)19 b Fa(The)14 b(Java)f(Virtual)f(Machine)1098 1096 y(Sp)n(e)n(ci\014c)n (ation)o Fi(.)22 b(Addison)17 b(W)m(esley)g(Dev)o(elop)q(ers)h(Press,)f (Sun-)1098 1138 y(soft)c(Ja)o(v)n(a)g(Series,)h(1996.)1020 1209 y([13])k(J.)10 b(Maassen,)i(R.)e(v)n(an)h(Nieu)o(wp)q(o)q(ort,)g (R.)g(V)m(eldema,)g(H.)f(E.)g(Bal,)1098 1250 y(and)j(A.)e(Plaat.)17 b(An)12 b(e\016cien)o(t)h(implemen)o(tation)i(of)d(Ja)o(v)n(a's)f(re-) 1098 1292 y(mote)17 b(metho)q(d)g(in)o(v)o(o)q(cation.)30 b(In)17 b Fa(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)i(the)g(A)o(CM)1098 1333 y(SIGPLAN)j(Symp)n(osium)f(on)h(Principles)f(and)h(Pr)n(actic)n(e) f(of)1098 1375 y(Par)n(al)r(lel)13 b(Pr)n(o)n(gr)n(amming)f (\(PPOPP'99\))p Fi(,)g(Ma)o(y)h(1999.)1020 1446 y([14])18 b(R.H.B.)9 b(Netzer)g(and)h(J.)f(Xu.)i(Neccessary)f(and)g(su\016cien)o (t)h(con-)1098 1487 y(ditions)k(for)e(consisten)o(t)h(global)h (snapshots.)j Fa(IEEE)13 b(T)m(r)n(ansac-)1098 1529 y(tions)f(on)g(Par) n(al)r(lel)g(and)g(Distribute)n(d)e(Systems)p Fi(,)h(6\(2\),)h(F)m (ebru-)1098 1570 y(ary)i(1995.)1020 1641 y([15])k(M.)11 b(Phillip)q(psen)j(and)e(M.)f(Zenger.)k(Ja)o(v)n(aP)o(art)o(y)c(-)g (transparen)o(t)1098 1683 y(remote)18 b(ob)r(jects)h(in)f(Ja)o(v)n(a.) 31 b(In)18 b Fa(A)o(CM)g(1997)f(Workshop)f(on)1098 1724 y(Java)h(for)f(Scienc)n(e)f(and)h(Engine)n(ering)e(Computation)p Fi(,)h(June)1098 1766 y(1997.)1020 1836 y([16])j(R.)k(Ra)r(je,)j(J.)c (I.)h(William,)27 b(and)c(M.)f(Bo)o(yles.)45 b(An)23 b(asyn-)1098 1878 y(c)o(hronous)f(remote)e(metho)q(d)h(in)o(v)o(o)q (cation)i(\(ARMI\))d(mec)o(ha-)1098 1919 y(nism)f(for)e(Ja)o(v)n(a.)31 b(In)17 b Fa(A)o(CM)h(1997)f(Workshop)f(on)h(Java)g(for)1098 1961 y(Scienc)n(e)12 b(and)g(Engine)n(ering)f(Computation)p Fi(,)f(June)j(1997.)1020 2032 y([17])18 b(M.)12 b(Ranganathan,)h(A.)e (Ac)o(hary)o(a,)h(S.)f(Sharma,)i(and)f(J.)e(Saltz.)1098 2073 y(Net)o(w)o(ork-a)o(w)o(are)22 b(mobile)i(programs.)45 b(In)23 b Fa(Pr)n(o)n(c)n(e)n(e)n(dings)c(of)1098 2115 y(USENIX'97)p Fi(,)10 b(1997.)1020 2186 y([18])18 b(R.)13 b(Riggs,)h(J.)f(W)m(aldo,)h(and)g(A.)e(W)m(ollrath.)19 b(Pic)o(kling)d(state)d(in)1098 2227 y(Ja)o(v)n(a.)18 b(In)13 b Fa(2nd)f(Confer)n(enc)n(e)g(on)h(Obje)n(ct-Oriente)n(d)e(T)m (e)n(chnolo-)1098 2269 y(gies)17 b(and)f(Systems)g(\(COOTS\))p Fi(,)h(pages)g(241{250,)i(T)m(oron)o(to,)1098 2310 y(On)o(tario,)14 b(June)f(1996.)1020 2381 y([19])18 b(M.)d(Stra\031er,)g(J.)e(Baumann,)j (and)f(F.)f(Hohl.)22 b(Mole)15 b(-)f(A)g(Ja)o(v)n(a)1098 2423 y(based)i(mobile)f(agen)o(t)g(system.)21 b(In)14 b Fa(ECOOP)i('96)e(Workshop)1098 2464 y(on)f(Mobile)g(Obje)n(ct)g (Systems)p Fi(,)d(1996.)1020 2535 y([20])18 b(Sun)d(Microsystems,)f(P)o (alo)h(Alto,)e(CA.)k Fa(Java)c(Obje)n(ct)g(Serial-)1098 2576 y(ization)f(Sp)n(e)n(ci\014c)n(atio)o(n)p Fi(,)d(1997.)1020 2647 y([21])18 b(Sun)10 b(Microsystems,)h(P)o(alo)f(Alto,)g(CA.)g Fa(Java)f(R)n(emote)g(Metho)n(d)1098 2689 y(Invo)n(c)n(ation)i(Sp)n(e)n (ci\014c)n(ati)o(on)p Fi(,)e(1997.)p eop %%Page: 10 10 10 9 bop -76 -34 a Fi([22])19 b(Sun)d(Microsystems,)h(P)o(alo)f(Alto,)f (CA.)23 b Fa(Java)15 b(Platform)f(1.1)3 7 y(Cor)n(e)19 b(API)g(Sp)n(e)n(ci\014c)n(ation)o Fi(,)f(1998.)37 b(h)o(ttp://ja)o(v)n (a.sun.com/-)3 49 y(pro)q(ducts/jdk/1.1/do)q(cs/ap)q(i/p)q(ac)o(k)n (age)q(s.h)o(tml.)-76 120 y([23])19 b(Y-M.)9 b(W)m(ang.)j(Consisten)o (t)g(global)g(c)o(hec)o(kp)q(oin)o(ts)g(that)e(con)o(tain)3 162 y(a)i(giv)o(en)i(set)e(of)g(lo)q(cal)i(c)o(hec)o(kp)q(oin)o(ts.)k Fa(IEEE)13 b(T)m(r)n(ansactions)d(on)3 203 y(Computers)p Fi(,)h(46\(4\),)i(April)h(1997.)-76 275 y([24])19 b(A.)e(W)m(ollrath,)j (R.)e(Riggs,)i(and)e(J.)f(W)m(aldo.)32 b(A)18 b(distributed)3 316 y(ob)r(ject)e(mo)q(del)h(for)f(Ja)o(v)n(a.)27 b(In)16 b Fa(2nd)g(Confer)n(enc)n(e)e(on)i(Obje)n(ct-)3 358 y(Oriente)n(d)i(T)m (e)n(chnolo)n(gies)g(and)h(Systems)f(\(COOTS\))p Fi(,)i(pages)3 399 y(219{231,)13 b(T)m(oron)o(to,)g(On)o(tario,)h(June)f(1996.)-76 470 y([25])19 b(W.M.)f(Y)m(u)g(and)h(A.L.)f(Co)o(x.)33 b(Ja)o(v)n(a/DSM:)19 b(a)g(platform)g(for)3 512 y(heterogeneous)c (computing.)k(In)13 b Fa(A)o(CM)h(1997)e(Workshop)g(on)3 553 y(Java)k(for)g(Scienc)n(e)f(and)h(Engine)n(ering)e(Computation)p Fi(,)h(June)3 595 y(1997.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF