java.lang.reflect.Array的源碼,里面全部都是一些native方法,即一些和操作系統(tǒng)打交道的方法,真正的實現(xiàn)方法和原理據(jù)說由C/C++在java虛擬機(jī)中實現(xiàn)了。
所以java為什么跨平臺,它和底層操作系統(tǒng)的交互全部由java虛擬機(jī)實現(xiàn)。一般的高級語言需要在不同平臺運行則需要編譯成不同的
目標(biāo)代碼,但是java卻不需要,java使用java虛擬機(jī)屏蔽了與具體平臺相關(guān)的信息,使得java編譯程序生成在java虛擬機(jī)下運行的目標(biāo)代
碼,即字節(jié)碼,即可在不同的平臺上不加修改運行。java虛擬機(jī)在執(zhí)行字節(jié)碼的時候,把字節(jié)碼解釋成具體平臺上的機(jī)器指令。
java代碼要編譯成class字節(jié)碼文件,需要由JDK的javac進(jìn)行編譯(至于如何編譯,其中的一些編譯原理可參看sun的The JavaTM Virtual Machine Specification),而jre則負(fù)責(zé)將class文件裝載(裝載原理略),對其進(jìn)行安全檢測等,最后由java解釋器解釋為具體平臺上的機(jī)器指令。