1、平臺無關性
Java屬于目標代碼級平臺無關語言類型右蕊,主要靠Java虛擬機JVM來實現(xiàn)琼稻。對高級語言的翻譯方式有解釋和編譯兩種,解釋方式就是一邊翻譯一邊運行饶囚,而編譯方式則是一次性翻譯好帕翻,生成目標程序。移植性涉及目標程序在不同平臺上運行萝风。解決移植性的方法有以下兩種方式:
方式一:到一臺機器上將源程序重新編譯成適合該臺機器的機器代碼嘀掸,此時的高級語言源程序相當于邏輯程序模型,而編譯出來的目標程序相當于物理模型规惰,邏輯模型可以適合于任何機器睬塌,即與機器無關。
方式二:將高級語言源程序編譯成一種與機器無關的中間代碼(如Java語言的字節(jié)碼)歇万,該中間代碼程序不能被操作系統(tǒng)直接執(zhí)行揩晴,需要由解釋器來解釋和執(zhí)行,這種方法實際上是編譯和解釋的結合贪磺,稱為偽編譯硫兰,在每臺機器上安裝解釋程序擴展了這種機器的執(zhí)行系統(tǒng),被擴展了指令的機器就可以直接執(zhí)行以中間代碼形式存在的程序寒锚。
Java語言采用方式2劫映,將由解釋程序擴展了的指令系統(tǒng)的機器稱為Java虛擬機,簡稱JVM刹前。
2苏研、JVM(Java Virtual Machine)
虛擬機是一種對計算機物理硬件計算環(huán)境的軟件實現(xiàn)。Java虛擬機是一種抽象機器腮郊,它附著在附體的操作系統(tǒng)上摹蘑,本身具有一套虛擬機器指令,并有自己的棧轧飞、寄存器等運行Java程序不可少的機制衅鹿。編譯后的Java程序并不直接在硬件系統(tǒng)CPU上執(zhí)行,而是在JVM上執(zhí)行过咬。在JVM上有一個Java解釋器用來解釋Java編譯器編譯后的程序大渤。
JVM由多個組件構成,包括類裝載器(Class Loader)掸绞、字節(jié)碼解釋器(Bytecode Interpreter)泵三、安全管理器(Security Manager)耕捞、垃圾收集器(Garbage Collector)、線程管理(Thread Management)及圖形(Graphics)烫幕。
3俺抽、JDK(Java Development Kit)
環(huán)境變量:也成為系統(tǒng)變量,是由操作系統(tǒng)提供的一種與操作系統(tǒng)中運行的程序進行通信的機制较曼,一般可為運行的程序提供配置信息磷斧。常用的Java環(huán)境變量包括JAVA_HOME、CLASSPATH和PATH捷犹。
JAVA_HOME弛饭,為那些需要使用Java命令和JVM的程序提供了通用的路徑信息,其值應設置為JDK的安裝目錄的路徑 萍歉。
CLASSPATH侣颂,用于指明字節(jié)碼文件的位置。當執(zhí)行Java程序時枪孩,執(zhí)行命令首先把類名轉換為字節(jié)碼文件的路徑信息憔晒,再在環(huán)境變量CLASSPATH值的路徑列表的每個路徑及其子路徑中搜索指定的字節(jié)碼文件,如果在所有路徑都找不到該文件销凑,就報告錯誤丛晌。環(huán)境變量CLASSPATH的值一般為一個以分好“仅炊;”作為分隔符的路徑列表斗幼。
PATH,是操作系統(tǒng)使用的變量抚垄,用于搜索在Shell中輸入的希望執(zhí)行的命令蜕窿。為了便于使用,一般可把JDK中Java命令程序所在目錄的路徑加入PATH變量的值中呆馁。
附上一篇文章桐经,介紹的很詳細:弄懂JDK、JRE和JVM到底是什么