1. Java 「compile once, run anywhere」一次編譯,處處運行,說的是Java語言的跨平臺特性,java的跨平臺特性與Java虛擬機的存在密不可分,可在不一樣的環境中運行。不一樣的系統平臺都有對應的JDK,好比windows,安裝好JDK,就有了Java的運行環境。Java能夠跨平臺運行就是由於不一樣的平臺都有Java語言運行的環境而已,因此纔有了編譯一次,處處運行。 java
程序從源代碼到運行的階段爲:編碼--編譯--運行--調試,Java在編譯階段體現了跨平臺的特色,首先將Java源代碼轉化爲.class 字節碼文件,這是第一次編譯,.class文件就是能夠處處運行的文件,而後在JVM中的解釋器會將Java .class 字節碼文件轉化爲目標機器代碼,這是第二次編譯。「處處運行」的關鍵就是JVM,由於第二次編譯中,JVM起着關鍵做用。windows
另外,JVM做爲一個強大的平臺,不單單隻有java語言能夠運行在JVM上,本質上合格的字節碼均可以運行,Java語言自身也爲此提供了便利,咱們能夠看到相似Clojure/Scala/Groovy/JRuby/JPython等大量JVM語言,活躍在不一樣的場景。網絡
2. Java特性併發
面向對象(封裝,繼承,多態)工具
平臺無關性(JVM運行.class 文件)開發工具
語言特性(泛型,lambda)編碼
類庫(集合,併發,網絡,IO/NIO)調試
JRE(Java運行環境,JVM,類庫)對象
JDK(java開發工具,包括JRE,javac,診斷工具)繼承