java體系結構包括四個方面:
java程序設計語言
java class文件格式
java API
java 虛擬機
1.java虛擬機
java虛擬機的任務是裝載class文件並執行字節碼

執行引擎的實現有:一次性解釋字節碼;即時編譯器;自適應優化器;

java程序通過調用本地代碼和主機交互,訪問主機底層系統資源,如上圖,本地方法是由其他語言編寫的,編譯成和處理器相關的機器代碼
2.類裝載器的體系結構

java應用程序分為兩種類裝載器,啟動(bootstrap)類裝載器和用戶自定義類裝載器
啟動類裝載器有操作系統對應的語言有不同實現,如C,但是用戶自定義的類裝載器能夠用java編寫,是java程序可執行代碼的一部分
裝載器裝載類時采用雙親委派模式,被裝載的類默認情況下只能看到由同一個類裝載器裝載的其他類,每個類裝載器都有他自己的命名空間,通過這種方式,能控制不能源文件裝載的類之間的相互影響,特別是阻止惡意代碼訪問和破壞善意代碼
3.java class文件:為java程序提供獨立於底層主機平台的二進制服務,是java虛擬機的二進制語言,被設計的緊湊適合傳輸
4.java API

是運行庫的集合,提供一套訪問主機系統資源的標准方法,在一個平台能夠執行java程序之前,必須在這個平台上明確地實現API的功能,JAVA API通過本地方法訪問主機資源
5.java程序語言
除了平台移動性,安全性,網絡移動性,java語言相比其他語言,還有其他優勢:

java語言相比於c++,還有一些能夠提高開發效率的特性:
- 1.對內存直接操作的約束:不能直接將引用類型的指針轉化為其他類型,除非確定此對象為新類型的前提下;不能直接對指針進行偏移量等運算操作
- 2.自動垃圾收集:不釋放對象會導致內存泄露,多次釋放一個對象會導致內存沖突
- 3.數組邊界檢查:每次使用數組的時候,會進行邊界檢查
- 4.對對象引用的檢查:一個空的引用不會導致程序崩潰,只會拋出一個異常
6.java體系結構的代價
- 和其他技術相比,java程序的執行速度可能比較低:但java或許很慢,但不會永遠那么慢,1995年第一個java虛擬機誕生采用解釋技術,不久,即時編譯器誕生了,現在,適應性優化等先進技術能夠使java程序和本地編譯的c程序相媲美的速度運行
- 在內存管理上的缺陷:垃圾收集器給程序的運行加入不確定性,你不能確定什么時候開始進行垃圾收集,無法確認是否開始,無法確認持續多長時間
- 在線程調度上的缺陷:對線程調度上的約束松散,有利於將java虛擬機移植到不同的硬件,但是,這導致程序員無法控制線程的調度
- 平台無關性導致的最小公分母的問題:某種特性只在一種操作系統上有,API可能決定不支持;當支持某個特性,某些操作系統上不具備時需用API模擬實現
- class文件的逆向編譯較容易:工作成果容易被竊取,解決方法--使用混淆器
