posts - 167,  comments - 30,  trackbacks - 0
          RMI羅唆得太多了,實在是盡力想把它說清楚,希望對大家有幫助。最后的最后,給大家簡單講一下JVM框架,我們叫做Java沙箱。Java沙箱的基本組件如下:
          a) 類裝載器結構
          b) class文件檢驗器
          c) 內置于Java虛擬機的安全特性
          d) 安全管理器及Java API

          其中類裝載器在3個方面對Java沙箱起作用:
          a. 它防止惡意代碼去干涉善意的代碼
          b. 它守護了被信任的類庫邊界
          c. 它將代碼歸入保護域,確定了代碼可以進行哪些操作

          虛擬機為不同的類加載器載入的類提供不同的命名空間,命名空間由一系列唯一的名稱組成,每一個被裝載的類將有一個名字,這個命名空間是由Java虛擬機為每一個類裝載器維護的,它們互相之間甚至不可見。

          我們常說的包(package)是在Java虛擬機第2版的規范第一次出現,正確定義是由同一個類裝載器裝載的、屬于同一個包、多個類型的集合。類裝載器采用的機制是雙親委派模式。具體的加載器框架我在Java雜談(一)中已經解釋過了,當時說最外層的加載器是AppClassLoader,其實算上網絡層的話AppClassLoader也可以作為parent,還有更外層的加載器URLClassLoader。為了防止惡意攻擊由URL加載進來的類文件我們當然需要分不同的訪問命名空間,并且制定最安全的加載次序,簡單來說就是兩點:

          a. 從最內層JVM自帶類加載器開始加載,外層惡意同名類得不到先加載而無法使用
          b. 由于嚴格通過包來區分了訪問域,外層惡意的類通過內置代碼也無法獲得權限訪問到內層類,破壞代碼就自然無法生效。

          附:關于Java的平臺無關性,有一個例子可以很明顯的說明這個特性:
          一般來說,C或C++中的int占位寬度是根據目標平臺的字長來決定的,這就意味著針對不同的平臺編譯同一個C++程序在運行時會有不同的行為。然而對于 Java中的int都是32位的二進制補碼標識的有符號整數,而float都是遵守IEEE 754浮點標準的32位浮點數。

          PS: 這個小弟最近也沒時間繼續研究下去了,只是想拋磚引玉的提供給大家一個初步認識JVM的印象。有機會了解一下JVM的內部結構對今后做Java開發是很有好處的。
          posted on 2010-08-17 10:35 David1228 閱讀(352) 評論(0)  編輯  收藏 所屬分類: JAVA

          <2010年8月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章檔案

          新聞分類

          新聞檔案

          相冊

          收藏夾

          Java

          Linux知識相關

          Spring相關

          云計算/Linux/虛擬化技術/

          友情博客

          多線程并發編程

          開源技術

          持久層技術相關

          搜索

          •  

          積分與排名

          • 積分 - 359304
          • 排名 - 154

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 岢岚县| 三台县| 萨迦县| 沂源县| 桓台县| 惠水县| 博爱县| 通城县| 天津市| 沂源县| 茶陵县| 德阳市| 蕲春县| 剑川县| 航空| 大厂| 策勒县| 黑水县| 德兴市| 孙吴县| 仪征市| 土默特左旗| 泸西县| 高密市| 普洱| 易门县| 东阳市| 兰溪市| 乌兰县| 綦江县| 肇东市| 辉县市| 阿尔山市| 香河县| 淮滨县| 榕江县| 永德县| 星座| 东港市| 广昌县| 福鼎市|