<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    dream.in.java

    能以不變應萬變是聰明人做事的準則。萬事從小事做起,積累小成功,問鼎大成功,是成功者的秘訣。

    Java的開發運行環境

    第1章 Java的開發運行環境
    學好Java最重要的一個步驟就是上機編程,熟悉Java的開發運行環境是成為Java程序員的第一步。本章將詳細介紹如何安裝并配置好Sun公司提供的JDK1.5 for Windows,如何編制一個簡單的Java程序,如何編譯一個Java源程序,如何運行編譯好的class文件以及如何避免初學者常犯的錯誤。通過本章的學習,將輕松地邁入Java的殿堂。
    1.1 Java的運行環境與虛擬機
    任何一個可執行文件,都必須在某個平臺上才能運行。例如,Windows下的exe文件,必須在Windows環境下、X86硬件平臺上才能運行。這些exe文件,通常是使用C/C++、Pascal或VB等語言編程,然后通過編譯、鏈接而形成的。在這些可執行文件中,包含了運行它的硬件平臺的相關信息,所以如果要把它移植到其他平臺上,必須要重新編譯,甚至要修改源文件。
    Java和這些語言不同,它的最大特點就是平臺無關性。Java文件經編譯后,生成的是一個后綴名為class的文件。這是一種字節碼文件,它不像普通可執行文件那樣包含硬件信息,而是完全與硬件平臺無關,也就是無法直接由操作系統調用運行。所以Java的應用程序,需要一個更為復雜的平臺才能運行。這個運行平臺,包括計算機操作系統、適配器、Java虛擬機、Java基本軟件和Java應用程序接口,它們負責將Java的字節碼翻譯成硬件可以接受的指令。整個運行系統的結構如圖1.1所示。

    圖1.1 Java運行系統
    Java運行系統執行Java應用程序的過程包括三個步驟:首先是代碼的裝入,然后是代碼的驗證,最后是代碼的執行。
    代碼的裝入由類裝配器完成,它主要負責裝入程序運行時所需要的全部代碼,包括程序運行中調用到的其他類。當類裝配器裝入一個類后,該類被放在自己的命名空間中,除了通過符號引用其他類之外,該類不能影響其他類所在的空間。當裝入了運行程序所需要的所有類后,運行系統就能確定整個可執行程序的內存布局。
    然后,被裝入的代碼將由字節碼驗證器進行安全檢查,以確保字節代碼不存在違反訪問權限、不規范的數據類型和非法調用等問題。
    通過校驗之后,代碼就可以運行了。Java的字節碼有兩種運行方式:
    ?    解釋執行方式:通過“解釋器”,將字節碼翻譯成機器碼,然后由“運行支持庫”將機器碼送往硬件執行。整個執行過程是一邊翻譯一邊執行,稱為解釋執行。Java系統一般采用這種方式。
    ?    即時編譯方式:通過“代碼生成器”,先一次性地將所有字節碼翻譯成適用于特定計算機系統的機器碼,然后送往硬件執行。對程序運行速度要求較高時,一般采用這種方式。
    從圖1.1可以看出,Java的字節碼并沒有直接運行在硬件平臺上,而是在一個虛擬的軟件平臺上運行。這個虛擬的軟件平臺,被稱為Java虛擬機(Java Virtual Machine,JVM)。為了讓編譯產生的字節碼可以更好地解釋與執行,通常把JVM分成6個功能模塊:JVM解釋器、指令系統、寄存器、棧、存儲區和碎片回收區。
    ?    JVM解釋器:JVM解釋器負責將字節碼轉換成為CPU能執行的機器指令。
    ?    指令系統:指令系統同硬件計算機很相似。一條指令分成操作碼和操作數兩部分。操作碼為8位二進制數,操作數可以根據需要而定。操作碼是為了說明一條指令的功能,所以JVM可以有多達256種不同的操作指令。
    ?    寄存器:JVM有自己的虛擬寄存器,這樣就可以快速地和JVM的解釋器進行數據交換。為了實現必需的功能,JVM設置了4個常用的32位寄存器:pc(程序計數器)、optop(操作數棧頂指針)、frame(當前執行環境指針)和vars(指向當前執行環境中第一個局部變量的指針)。
    ?    棧:JVM棧是指令執行時數據和信息存儲的場所和控制中心,它提供給JVM解釋器運算時所需要的信息。
    ?    存儲區:JVM存儲區用于存儲編譯后的字節碼等信息。
    ?    碎片回收區:JVM碎片回收,是指將那些使用后的Java類的具體實例從內存中進行回收。因此,可以避免開發人員自己編程控制內存的麻煩。隨著JVM的不斷升級,其碎片回收技術和算法也更加合理。比較經典的算法有引用計數、復制、標記-清除和標記-整理。在JVM 1.4.1版以后,產生了一種代收集技術。簡單地說,就是利用對象在程序中生存的時間劃分成代,以這個代為標準進行碎片回收。
    ?說明:JVM的運用,真正讓Java實現了“一次編譯,處處運行”,它是整個運行系統的核心

    posted on 2009-03-14 15:40 YXY 閱讀(246) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久久久国产精品免费免费不卡 | CAOPORN国产精品免费视频| 精品久久香蕉国产线看观看亚洲| 中文字幕亚洲综合久久综合| 中文字幕亚洲免费无线观看日本 | 在线观看亚洲一区二区| 亚洲国产精品成人精品软件 | 国产免费变态视频网址网站| 亚洲乱亚洲乱妇24p| 午夜寂寞在线一级观看免费| 亚洲男人天堂2020| 国产大陆亚洲精品国产| 国产男女猛烈无遮挡免费视频网站| 亚洲熟妇AV一区二区三区宅男| 性做久久久久免费观看| 水蜜桃视频在线观看免费| 亚洲精品麻豆av| a级片免费在线播放| 亚洲国产精品婷婷久久| 波多野结衣免费在线| 亚洲国产精品精华液| 一本色道久久88亚洲综合 | 最近2018中文字幕免费视频| 亚洲精品国产福利在线观看| 国产精品免费观看久久| 黄色a三级免费看| 黄色成人免费网站| 亚洲变态另类一区二区三区| 亚洲天堂在线视频| 鲁丝片一区二区三区免费| 午夜精品在线免费观看| 亚洲性无码AV中文字幕| 亚洲成a人在线看天堂无码| 免费人成黄页在线观看日本| 亚洲另类自拍丝袜第1页| 国产免费看插插插视频| 国产成人无码区免费网站| 亚洲三级视频在线| 亚洲人成无码www久久久| 久久综合国产乱子伦精品免费| 亚洲色偷偷色噜噜狠狠99网|