樂在其中

          以JEE為主攻,以Flex為點綴,以Eclipse RCP為樂趣
          請訪問http://www.inframesh.org

          首頁 新隨筆 聯系 管理
            43 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

           
             Java Virtual Machine 就是指Java虛擬器,以下簡稱VM.關于VM的概念,最早出自CPU模擬器,眾所周知的PC上的游戲機模擬器采用的便是和Java VM類似的技術.java source code被編譯成byte code后,其實已經是很類似機器代碼了,只不過沒有真正能運行這類code的CPU而已,于是為了能達到在不同平臺上運行的目的,VM的概念被大力推廣. 從簡單的角度說,VM其實就是把java bytecode 翻譯成特定的機器代碼, 這和解釋型編程語言不同,我們會在下面講到.
             第一代的VM大多采用直接解釋的方法,也就是說一句一句地把bytecode翻譯成機器代碼. 但這里有個缺點,如遇到循環, VM就不得不一次次重復翻譯已經被翻譯過的代碼. 而每一次翻譯均需消耗一定的cpu時間. 于是出現了第二代的VM - JIT (Just In Time Compiler)它只在bytecode需要被翻譯時才做翻譯工作.怎么實現呢? 打個比方,JIT VM可以事先把一段bytecode翻成machine code,并把這段code放進buffer, 當運行循環是,就反復調用這段翻譯好的代碼! JIT的效率取決于他分析重復調用的本領,把翻譯的工作量限制到最小,以便讓出CPU時間來運行程序邏輯.
             第三代的VM叫hotspot,我們以后做介紹.
             有了VM以后等于有了一個虛擬的CPU, 但我們還需要一定的外部設備來幫助完成計算任務,于是出現了JNI, 它的作用在不同的場合有不同的含義. 有時你可一用JNI直接寫一個設備驅動程序, 有時JNI可被作為lightweight wrapper來封裝本地系統的資源.再加上Java本身提供的標準庫,VM提供了再多平臺應用的環境!在一個系統中JVM往往不是唯一的, 如果你在win32中安裝了JDK,IE和Netscape,哪很有可能你已經有了三種不同的Virtual Machine. 至于你的程序在那個VM上運行,完全取決于你系統的設置. 大體上如果是運行applet,那么browser的VM會成為默認的平臺. 當然你可以用jdk的plug-in取代IE的MS JVM.
             每臺win32系統都包含了一個MS implement的VM,如果安裝了Java SDK哪你就可以用jview來從command line啟動VM process. 你可以在一臺電腦上同時運行幾個同種或不同種的VM, 每一個都會運行在獨立process中.
            下面是一些系統的屬性,你可以從中獲得關于VM的一些訊息!
            用 System.getProperty(String propertyName)
            properyName: 含義:
            -----------------------------------------------------
            java.version - JRE version
            java.vendor - JRE vendor
            java.vendor.url - Vendor URL
            java.home - Installation directory
            java.vm.specification.version - JVM 標準的版本
            java.vm.specification.vendor - JVM 標準的開發商
            java.vm.specification.name -
            java.vm.version - JVMachine implementation version:
            java.vm.vendor - JVM implementation vendor
            java.vm.name - JVM implementation name
            java.specification.version - JRE specification version
            java.specification.vendor - JRE specification vendor
            java.specification.name - JRE specification name:
            java.class.version - Class format version number:
            java.class.path - Java CLASSPATH

          posted on 2009-03-08 15:38 suprasoft Inc,. 閱讀(170) 評論(0)  編輯  收藏 所屬分類: J2EE
          ©2005-2008 Suprasoft Inc., All right reserved.
          主站蜘蛛池模板: 自贡市| 临猗县| 萝北县| 盐城市| 天峻县| 辽宁省| 五河县| 通榆县| 林西县| 布尔津县| 澄城县| 札达县| 灌阳县| 冀州市| 西吉县| 郸城县| 壶关县| 大竹县| 文登市| 加查县| 舒城县| 华蓥市| 临城县| 桑日县| 涡阳县| 鱼台县| 绥德县| 新竹市| 城市| 霸州市| 梨树县| 邢台县| 德清县| 鸡东县| 淮北市| 中宁县| 隆昌县| 诸城市| 阿尔山市| 长武县| 福清市|