為何要使用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代碼的可移植性和高性能。