eclipse中幾處的jdk設置以及各自的作用

一:jdk和jre的區別

JDK(java development kit):java開發工具,包含java基礎類庫,java工具(常用指令,java,javac等),運行時環境(jre),面向於開發人員

JRE(Java Runtime Environment):包含jvm(虛擬機)的實現,java核心類庫(rt.jar),面向Java應用程序.

本地安裝jdk之後,能看到jdk內部包含jre以及與jdk同級的外部也有jre,那麼這兩種jre有什麼區別呢?
jdk中的jre主要用於開發人員,代碼寫完了之後測試運行Java程序使用的.外部的jre主要用於運行安裝在本地的java程序.兩者功能基本相同,只是側重點不同,jdk內部的jre運行效率更高,外部的jre運行更穩定

總的來說:jvm在jre中,jre在jdk中

二:eclipse上安裝的jdk及其作用

1 :首先eclipse是java寫的ide工具,它的啓動需要jdk(jre),一般會配置環境變量

2: eclipse上設置jre以及編譯級別
eclipse上開發一個項目主要有2個地方涉及jdk相關配置:java bulid path中的jre和compiler complience level(編譯級別)
jre可以看作運行環境(提供代碼中使用的類庫),編譯級別可以看作編譯環境(提供對代碼的語法檢查)

eclipse編譯源代碼不是使用javac,有自帶的編譯器

那麼以下組合各有什麼結果呢?

  1. jre > compiler
    如果代碼中使用了編譯器無法識別的語法,或者使用了更高級別jdk的特性
    例如: jdk設置1.5,編譯級別設置1.4
    如果在代碼中使用泛型,編譯器無法識別,編譯報錯
    如果在代碼中使用jdk1.8的特性,類庫無法引用,編譯器也無法編譯
  2. jre < compiler
    這種情況是一定會編譯報錯的
    高版本的編譯級別編譯的class文件格式在低版本的jre上無法解析
  3. jre = compiler
    這種是推薦的方式,保證jre = compiler = 部署環境jdk

總的來說如果jre > compiler,那麼源代碼不要使用高版本的jdk特性,部署環境jdk >compiler即可.一般jre = compiler = 部署環境jdk

三:maven配置項目的target和source

    <plugin>  
       <groupId>org.apache.maven.plugins</groupId>  
       <artifactId>maven-compiler-plugin</artifactId>  
       <configuration>  
           <source>1.6</source>  
           <target>1.6</target>  
           <encoding>UTF-8</encoding>  
       </configuration>  
    </plugin>

此處:
target:表示部署環境的jdk(jre),編譯版本
source:表示源代碼的編譯環境,即源代碼中可以使用的語言特性

一般而言,target和source保持一致,但爲了兼容低版本的jdk,source可以設置小於target版本(例如:部署環境jdk1.8,開發環境只有1.7,那麼設置source=1.7,target=1.8同樣可以運行,但是source不能高於target,否則編譯失敗)

參考鏈接:

  1. https://www.cnblogs.com/zh1164/p/6230298.html
  2. https://blog.csdn.net/chens616/article/details/8750723
  3. https://www.iteye.com/problems/51267
  4. https://www.cnblogs.com/EasonJim/p/6741682.html
  5. https://blog.csdn.net/shan9liang/article/details/17266519
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章