天天看點

java之路,基礎知識1

為何要使用java:

    簡單

    1、類似c++

    2、摒棄c++中容易發生錯誤的特性,如指針、結構、枚舉、記憶體管理等

    3、java提供豐富豐類庫,友善開發

    面向對象

    支援繼承、重載、多态等特性

    安全

    1、删除了指針和釋放記憶體的操作,防止非法記憶體操作。

    2、java的安全體系架構確定本地java代碼的安全性

    與平台無關

    java代碼被編譯成結構中立的中間檔案格式,它被編譯成與機器無關的位元組碼,在java虛拟機上運作

    多線程

    java的一個重要特性就是多線程的

java解釋器執行的過程:

    運作JVM位元組碼的工作是由解釋器來完成的。解釋執行過程分三步進行:代碼的裝入、代碼的校驗和代碼的執行。裝入代碼的工作由“類裝載器”(class loader)完成。類裝載器負責裝入運作一個程式需要的所有代碼,這也包括程式代碼中的類所繼承的類和被其調用的類。當類裝載器裝入一個類時,該類被放在自己的名字空間中。除了通過符号引用自己名字空間以外的類,類之間沒有其他辦法可以影響其它類。在本台計算機上的所有類都在同一位址空間内,而所有從外部引進的類,都有一個自己獨立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運作效率,同時又保證它們與從外部引進的類不會互相影響。當裝入了運作程式需要的所有類後,解釋器便可确定整個可執行程式的記憶體布局。解釋器為符号引用同特定的位址空間建立對應關系及查詢表。通過在這一階段确定代碼的記憶體布局,Java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼對位址的非法通路。

    随後,被裝入的代碼由位元組碼校驗器進行檢查。校驗器可發現操作數棧溢出,非法資料類型轉換等多種錯誤。通過校驗後,代碼便開始執行了。

java位元組碼的兩種執行方式:

    1、即時編譯方式:解釋器先将位元組碼編譯成機器碼,然後再執行該機器碼。        

    2、解釋執行方式:解釋器通過每次解釋并執行一小段代碼來完成Java位元組碼程 序的所有操作。   

    通常采用的是第二種方法。由于JVM規格描述具有足夠的靈活性,這使得将位元組碼翻譯為機器代碼的工作具有較高的效率。對于那些對運作速度要求較高的應用程式,解釋器可将Java位元組碼即時編譯為機器碼,進而很好地保證了Java代碼的可移植性和高性能。