JDK,JRE和JVM三者的关系以及java的运行机制,环境变量,三大版本,特点
JDK,JRE和JVM
1.JVM
Java Virtual Machine是Java虛擬機,Java程序需要運行在虛擬機上,不同的平臺有自己的虛擬機,因此Java語言可以實現跨平臺。
所謂跨平臺性,是指java語言編寫的程序,一次編譯后,可以在多個系統平臺上運行。
實現原理:Java源代碼經過虛擬機編譯器編譯后產生的文件(即擴展為.class的文件)又叫字節碼文件,字節碼不面向任何特定的處理器,只面向虛擬機。Java程序是通過java虛擬機在系統平臺上運行的,只要該系統可以安裝相應的java虛擬機,該系統就可以運行java程
下面是jdk的幾種基本組件
| javac | 編譯器把源文件轉化成字節碼文件 |
| jar | 打包工具將相關類文件打包成一個.jar文件 |
| javadoc | 文檔生成器從源碼注釋要提取文檔 |
| jdb | 查錯工具,對編譯器返回的代碼錯誤進行調試 |
| java | 解釋器,運行字節碼文件 |
| appletviewer | 小程序瀏覽器一種執行HTML文件的java小程序瀏覽器 |
java運行時不用加后邊的.class擴展名。javac編譯時可用javac+-d<指定生成文件的目錄名>+文件名來編譯文件,這樣可以把指定生成的文件放在指定目錄里。文檔注釋可以被javadoc處理建立一個外部說明性文件,文檔注釋比較特別用/** */
2.JRE
Java Runtime Environment包括Java虛擬機和Java程序所需的核心類庫等。核心類庫主要是java.lang包:包含了運行Java程序必不可少的系統類,如基本數據類型、基本數學函數、字符串處理、線程、異常處理類等,系統缺省加載這個包
如果想要運行一個開發好的Java程序,計算機中只需要安裝JRE即可。
3.JDK
Java Development Kit是提供給Java開發人員使用的,其中包含了Java的開發工具,也包括了JRE。所以安裝了JDK,就無需再單獨安裝JRE了。其中的開發工具:編譯工具(javac.exe),打包工具(jar.exe)等
java環境變量
我們都知道在運行我們的java程序都要先配置環境變量,但是為什么要配置?
(1)JAVA_HOME環境變量:它指向jdk的安裝目錄,Eclipse/NetBeans/Tomcat等軟件就是通過搜索JAVA_HOME變量來找到并使用安裝好的jdk,因為安裝好的jdk里邊有編譯運行的java工具
(2) PATH環境變量:作用是指定命令搜索路徑,在shell下面執行命令時,它會到PATH變量所指定的路徑中查找看是否能找到相應的命令程序。我們需要把 jdk安裝目錄下的bin目錄增加到現有的PATH變量中,bin目錄中包含經常要用到的可執行文件如javac/java/javadoc等待,設置好 PATH變量后,就可以在任何目錄下執行javac/java等工具了。
(3) CLASSPATH環境變量:作用是指定類搜索路徑,要使用已經編寫好的類,前提當然是能夠找到它們了,JVM就是通過CLASSPTH來尋找類的。我們 需要把jdk安裝目錄下的lib子目錄中的dt.jar和tools.jar設置到CLASSPATH中,當然,當前目錄“.”也必須加入到該變量中。
CLASSPATH環境變量不需要配置是因為在java1.5之后,把當前目錄(運行 java .class 時所在目錄)當做了classpath路徑,而編譯后的.class文件和.java文件在同一目錄下,所以不需要配置
java運行機制
java中引入了虛擬機的概念,即在機器和編譯程序之間加入了一層抽象的虛擬機器。這臺虛擬的機器在任何平臺上都提供給編譯程序一個的共同的接口。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然后由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機理解的代碼叫做字節碼(即擴展為.class的文件),它不面向任何特定的處理器,只面向虛擬機。每一種平臺的解釋器是不同的,但是實現的虛擬機是相同的。Java源程序經過編譯器編譯后變成字節碼,字節碼由虛擬機解釋執行,虛擬機將每一條要執行的字節碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然后在特定的機器上運行,這就是上面提到的Java的特點的編譯與解釋并存的解釋。
即:
Java源代碼——>編譯器——>jvm可執行的Java字節碼(即虛擬指令)——>jvm——>jvm中解釋器(邊解釋邊執行)——>機器可執行的二進制機器碼——>程序運行。
Java語言有哪些特點
(1)簡單易學(Java語言的語法與C語言和C++語言很接近)
(2)面向對象(封裝,繼承,多態)
(3)平臺無關性(Java虛擬機實現平臺無關性)
(4)支持網絡編程并且很方便(Java語言誕生本身就是為簡化網絡編程設計的)
(5)支持多線程(多線程機制使應用程序在同一時間并行執行多項任)
(6)健壯性(Java語言的強類型機制、異常處理、垃圾的自動收集等)
(7)安全性
java三大版本
(1)Java SE(J2SE,Java 2 Platform Standard Edition,標準版)
Java SE 以前稱為 J2SE。它允許開發和部署在桌面、服務器、嵌入式環境和實時環境中使用的 Java 應用程序。Java SE 包含了支持 Java Web 服務開發的類,并為Java EE和Java ME提供基礎。
(2)Java EE(J2EE,Java 2 Platform Enterprise Edition,企業版)
Java EE 以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的服務器端Java 應用程序。Java EE 是在 Java SE 的基礎上構建的,它提供 Web 服務、組件模型、管理和通信 API,可以用來實現企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web2.0應用程序。2018年2月,Eclipse 宣布正式將 JavaEE 更名為 JakartaEE
(3)Java ME(J2ME,Java 2 Platform Micro Edition,微型版)
Java ME 以前稱為 J2ME。Java ME 為在移動設備和嵌入式設備(比如手機、PDA、電視機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內置的網絡協議以及對可以動態下載的連網和離線應用程序的豐富支持。基于 Java ME 規范的應用程序只需編寫一次,就可以用于許多設備,而且可以利用每個設備的本機功能。
總結
以上是生活随笔為你收集整理的JDK,JRE和JVM三者的关系以及java的运行机制,环境变量,三大版本,特点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下的shell编程
- 下一篇: java位运算实例详解——(amp;)、