【歷史】
第三代語言:java
(1)C、Pascal、Fortran面向過程的語言;
(2)C++面向過程/面向對象;
(3)Java跨平臺的純面向對象的語言;
(4).NET跨語言的平臺。
第四代語言:
SQL
【特色】
(1)純面向對象的語言;
(2)與平臺無關的語言,提供程序運行的解釋環境;
(3)健壯的語言,吸取了C/C++的優缺點,去掉了影響其程序健壯性的部分(例如,指針、內存的申請與釋放)。
【運行機制】
(1)Java虛擬機(JVM)
<1>Java虛擬機能夠理解成一個以字節碼(*.class)爲機器指令的CPU
(這一點相似於Windows平臺上的彙編語言,只要編譯成class文件,就能夠實現跨平臺)
<2>對於不一樣的運行平臺,有不一樣的虛擬機
(JVM for UNIX/Windows/Other Platform)
<3>Java虛擬機機制屏蔽了地層運行平臺的差別,實現了"一次編譯,隨處運行"。
(C語言在編的比較好的狀況下,能夠實現「一次編程,隨處運行」,可是還必須在不一樣的操做系統上編譯後才能夠)
【面試題】
Java是編譯型語言仍是解釋型語言?
----解釋型語言
<1>C/C++語言能夠直接編譯成操做系統識別的可執行文件的格式,不通過第二次,這叫作編譯型語言;
<2>Java第一次編譯成本身的可執行文件格式*.class,當class文件在執行時是JVM逐行進行解釋,生成目標平臺識別的格式。
(2)垃圾收集機制(Garbage collection)
<1>再也不使用的內存空間須要回收;
<2>在C/C++中,由程序員負責回收無用內存;
<3>Java提供了一種系統級線程跟蹤存儲空間的分配狀況,並在JVM空閒時,檢查並釋放那些可被釋放的存儲器空間;
<4>垃圾回收在Java程序運行過程當中自動進行,程序員沒法精確控制和干預。
(Java程序會出現「卡機」的狀況,例如eclipse出現反應慢的狀況,這就是在動態進行垃圾回收)
【運行過程】
源程序(*.java文件)--<Java編譯器>--字節碼(*.class文件)--<類裝載器>--<字節碼校驗器>--<解釋器>--<操做系統平臺>
----javac的做用是將*.java文件編譯成*.class文件(格式:javac HelloWorld.java)
----java的做用是運行程序(格式:java HelloWorld)
【J2SDK】
----軟件開發包
【JRE】
----Java運行環境