→ 與平臺無關性(一次變異到處運行)java
如何實現?網絡
→ GC(垃圾回收機制。會自動釋放堆內存)併發
→ 語言特性(泛型,反射,lambda表達式)操作系統
→ 面向對象(封裝,繼承,多態)對象
→ 類庫(java自己自帶的一些集合和併發庫,網絡庫,IO等)blog
→ 異常處理繼承
→ class loader :根據特定格式,加載class文件到內存內存
→ execution engine :對命令進行解析(完成後即提交到操做系統中執行)開發
→ native interface :融合不一樣開發語言的原生庫爲java所用編譯器
→ runtime data area :JVM內存空間結構模型
Java反射機制是在運行狀態中,對任意一個類,都可以知道這個累的全部屬性和方法;對於任意一個對象,都可以調用他的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱爲java語言的反射機制。
→ 編譯器將Robot.java源文件編譯爲Robot.class字節碼文件
→ClassLoader將字節碼轉換爲JVM中的Class<Robot>對象
→ JVM利用Class<Robot>對象實例化爲Robot對象
ClassLoader在java中有這很是重要的做用,它主要工做在Class裝載的加載階段,其主要做用是從系統外部得到Class二進制數據流,它是Java的核心組件,全部的Class都是由ClassLoader進行加載的,ClassLoader負責經過將Class文件裏的二進制數據流裝載進系統,而後交給Java虛擬機進行鏈接、初始化等操做。
一、BootStrapClassLoader :C++編寫,加載核心庫java.*,(java.lang.*)
二、ExtClassLoader :Java編寫,加載擴展庫javax.*
三、AppClassLoader :Java編寫,加載程序所在目錄
四、自定義ClassLoader :Java編寫,定製化加載