沒有任何Java RMI的經驗,我有一個天真的問題,但在搜索互聯網後我仍然不確定答案。使用Java RMI時執行的代碼在哪裏?
問:
對我來說,有兩種情況:
方案-1:從本地啓動一個Java程序,在執行過程中,它調用存儲在從類中的方法一個遠程機器,那麼該方法的類將被下載到本地機器,並繼續執行。
場景-2:從本地啓動Java程序,在其執行過程中,它調用遠程機器上存儲的類中的方法,然後該方法將在遠程機器上執行,結果將爲發回本地機器。 (這是否需要類/對象傳輸?)
哪一個Java RMI使用?或兩者都不?
從Wikipedia of RPC:「RPC允許計算機程序在另一個地址空間(通常在共享網絡上的另一臺計算機上)執行子例程或過程」,看起來這是第二種情況。
但根據這篇論文Reducing Data Transfer during Remote Classloading in Java RMI,它似乎是第一種情況。
鏈接文件的哪部分讓你認爲它是情景#2? –
@StephenC連接的文件讓我覺得它是場景#1,因爲它提到遠程類加載(對我來說,加載遠程類到本地)。 – JackWM
遠程類加載並不意味着這一點。它意味着從遠離代碼運行位置的位置加載類(代碼)。代碼移動到RMI目標對象...反之亦然。 –