在看 RPC 的概念模型與實現解析 的時候,看到圖片上有Runtime,又想到見過很多Runtime之類的東西,所以就想弄明白這到底是個什么東西。
(因為是程序名,所以根本沒想到代碼的“編譯-運行”~)
於是上網求助,得到很多熱心網友的回復:
字面意思,運行時
目前天天用application server runtime environment(如,Tomcat)
相對的還有design time, build time...
運行時 是相當於 編譯時來說的 有些事情是在編譯時就能決定的 有些決定在運行時候才知道 編譯時候就能決定的東西通常顯得看起來沒技術含量 比如說 int i=0;編譯時候就知道i=0 運行時才能決定的東西顯得比較高大上點 所以起名字沒事就加個runtime顯得比格高一點。
這兩個詞應該是來源自編譯器解釋器相關的用語 java運行時決定的特性比如說多態,反射之類的 一個決策放到運行時才決定靈活性會高很多,實現難度也高很多 一個系統叫xxxruntime就是聲稱自己設計的比較牛,比較靈活可定制 幾乎是一個可編程的環境,幾乎是一個虛擬機
runtime對應於compile time來講的。 比如hello world里javac這步是 compile 實際生產環境,會有打包發布到生產環境里面,要改代碼就要重新編譯打包發布,如果pipleline做得不好,這幾步可以很冗長。 你可以看下spring的Dependency Injection. 里面就是可以通過改配置文件產生不同的實現,不需要重新編譯。這個就是runtime
我來給你解釋下吧。 這個runtime是這個架構圖里面一個組件的命名,你要問作者為什么把這部分程序叫做叫做runtime。一個組件的命名,一般是根據他的功能和職責命名的。一個系統中有組件命名為runtime那么必然有組件負責designtime。你貼的這個圖是一個RPC系統。一般使用方法是需要定義IDL,然后使用一些系統提供的工具生成stub之類的東西。然后程序運行起來之后真正進行遠程調用時,有個組件要負責,序列化反序列化,網絡通訊這些功能。在上面這個過程中,生成stub的系統就是design time組件。而負責傳輸數據,序列化反序列化的組件就可以命名為runtime組件。 其他系統也類似,一個數據庫系統,編輯sql的編輯器就是design time, 響應sql, 執行操作的部分就是runtime。 一個工作流系統,定義流程模型的部分可以認為是design time, 解釋執行流程的部分就是runtime。 一個游戲系統,地圖編輯器之類的組件就是design time, 把游戲跑起來的部分就是runtime。 總之,系統跑起來,負責干活那部分組件就是runtime。
最后一個答復異常清晰!
再次謝過諸位大神~