[轉錄]Re: [問題] VM 的問題

看板java作者 (痞子軍團團長)時間18年前 (2007/06/01 01:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
/* 原文轉錄已經經過原作者同意 作者並附帶希望加註: : 「可以. 不過要提醒, 很多人可能會認為 使用 interpreter 或 just-intime : compiler 的 Java 不是一種 Concurrent High Level Language, 也不知道 : 怎麼用, 用在何處(除了 OS 的範例習題) ! 」 */ ※ [本文轉錄自 Programming 看板] 作者: ggg12345 (ggg) 看板: Programming 標題: Re: [問題] VM 的問題 時間: Thu May 31 05:33:02 2007 ※ 引述《huggie (huggie)》之銘言: : ※ 引述《ggg12345 (ggg)》之銘言: : : 這個比喻滿有趣的 ! : : 1. 寫在紙上需得有文字與符號. : : 2. 人講話的語言可以沒有固定的書寫文字. : : 通常有文字符號的, 都能大聲被唸出來, 甚至可以有不同的唸法. : : 那麼, "中間碼" 就相當於書寫的文字與符號囉 ? : : 可是使用 VM/Interpreter 的想法裡, 似乎還有額外的功能與要 : : 求, 也就是 執行中能做指述的檢視與結果檢察, 程式保護與並行 : : 這兩大項就可以不再透過 OS 來協助, 而是經由 VM 自備提供. : 恩..可以解釋詳細一點嗎? : 你的意思是像 reflection 這類的東西嗎? : 透過 VM 來做有什麼好處呢? Java 這個程式語言雖然也是 Object Oriented Programming Language 的一種, 可是她有一些額外特性就是具有 Distributed Concurrency. 如同多線程(Multiple Thread)的併行必須考量 Critical Region 的 同步/保護, Java 則提供類似 Monitor 的同步機制. 如果要支援 Concurrent Operation 的交錯執行, 甚至是平行就要能 "隨時按需要" 改變執行片段程式的 "輪流" 次序. Binary Code Program 的執行(就是 Process) 是由 OS 控制的, 程式 本身只能受其控制, 但如果程式是中間碼形式就得透過 VM/Interpreter 這個解譯程式控制, 中間碼寫成的片段程式(通常就是個 Object) 就能 併行地執行. 把程式搬到某個機器執行, 最怕的就是 "誤動作" , 變的如同 "病毒" . 防範的方法之一, 就如同併行的要求, 就是在要執行前需先檢查後, 才能 放行, 中間碼形式的程式就需要 interpreter 先辨識才會被執行. : : 交響樂的演奏, 必須得經由樂譜的不同段落的 "同時可視性" 來 : : 同步進行嗎 ? 合唱雖然可以不看樂譜, 但是否也得有同步的拍 : : 子 ? 而且還得聽見對方唱到那裡 ? : : 執行層次的不同提供了跨平台性, 執行時可再度檢視指述動作的 : : 安全性與次序的同步性, 這是原來使用 VM 的原因吧 ! : 你的意思是這是非 VM 不可才能做到的囉? 併行處理的進行與同步, 資源的隔離與保護, 通常都是由 OS 獨斷性 掌控與支援的, 要 "好像" "隨時都能" "擁有這種能力" 通常得使用 VM. 簡單的說就是: 要執行 "敏感性(sensitive)" 的動作, 需要能被先攔下(trap)就相關 部份審視通告後再配合地執行. : 可能我經驗不足..可以解釋一下什麼是執行層次的不同 : 跟次序的同步性的意思嗎? -- 侃侃長論鮮窒礙 首頁:http://www.psmonkey.idv.tw 眾目睽睽無心顫 Blog:http://ps-think.blogspot.com 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.193.68 ※ 編輯: PsMonkey 來自: 61.228.193.68 (06/01 01:07)
文章代碼(AID): #16Nl-3jO (java)