搜尋引擎第一步(Java之JDK,JRE區別)

lipeng08發表於2017-04-12

#簡介
##起因:想搭建一個搜尋引擎
論文書寫的水平太次,而想寫好論文的第一關鍵就是借鑑別人寫的內容,然後模仿,創新。
於是乎,平常當需要表達某一個意思的時候,我一般首先將關鍵詞訴諸於有道,然後找到解釋以及例句,但是有道給的例句並不那麼學術化,與我平常要寫的論文還是有些差距的。於是乎,我一個簡單大膽的想法萌發了,將電腦中讀過的經典的論文的pdf檔案放到一起,構建一套索引,然後支援關鍵詞搜尋句子,段落等,這樣當需要表達某一個意思的時候,只需要將關鍵詞輸入到查詢框中,然後別人的優美的句子就刷刷的來了,豈不妙哉!
##前期準備:文件索引構建+web介面展示
首先需要一個基本的將文件構建倒排索引的核心,以及一個web介面的包裝,以使能夠直接訪問本地的server。當輸入關鍵詞,搜尋的結果就會自動呈現出來。 隨便搜尋了一下采用了lucene+solr的結構。github有原始碼。 lucene用於索引的構建,solr用於web介面的展示
##編譯lucene+solr
文件很簡單,直接ant compile編譯。編譯的過程漫長而又痛苦,報了不同的錯誤。

  1. **錯誤1:**java版本要求至少1.8.於是下載java se8(標準版),然後安裝jdk和jre,並進行了Path和JAVA_HOME的配置
  2. **錯誤2:**javac 無效的標識 -profile。面對這個錯誤,本人完全是懵逼的,經過一番處理,發現是ClassPath環境變數忘記配置的問題(配置好ClassPath之後,這個錯誤就沒了)。作為一個愛鑽研的壞孩子,這些環境變數的配置到底有什麼關聯和用途呢?對它的一些探索,引出了本文的主題Java之JDK,JRE區別。

##JAVA
當安裝完畢java之後,會在java目錄下存在兩個子目錄(jdk和jre目錄)。例如我的java se8的兩個目錄為: jdk1.8.0_121 和 jre1.8.0_121
###JDK目錄: Java Development Kit
顧名思義,jdk也就是java開發工具包,就是用來開發java程式的。如果你需要寫java程式,那麼這個目錄是必須需要的,它裡面進一步有bin, jre和lib目錄。 bin目錄是一些編譯除錯工具,例如javac, jdb等,jre目錄被稱作內部java執行環境,它是服務於bin目錄的,lib目錄比較重要的有dt.jar和tools.jar。
###JRE目錄: Java Runtime Environment
jre也就是java執行時環境,相比於上面的jdk目錄下的內部jre,這個目錄叫做公共java執行環境,它用於執行java程式。 當你有一個java程式需要執行,那麼你需要這個目錄。 它裡面進一步有bin和lib目錄,bin目錄可以認為是jvm(java虛擬機器),lib目錄是服務於bin目錄的。 當編譯完畢的java位元組碼需要執行的時候,會被載入到jvm中解釋成機器語言並執行。

###配置

  1. JAVA_HOME: 配置成jdk的目錄,即 java\jdk1.8.0_121
  2. JRE_HOME: 配置成公共jre的目錄: 即java\jre1.8.0_121
  3. PATH: 配置常用的java相關編譯執行命令:%JRE_HOME%\bin;%JAVA_HOME%\bin
  4. Classpath: %JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JRE_HOME%\lib

上面的配置雖然正確,但是可能有冗餘,我也不清楚真正的標準是如何的。 例如java.exe命令(執行java程式)按道理應該使用jre目錄的,而不應該使用jdk目錄的,而jdk目錄的似乎也可以工作,非常奇怪,但是時間有限,我也不再細究了。官方的目錄說明: https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jdkfiles.html

引用一句話:
總的來說JDK是用於java程式的開發,而jre則是隻能執行class而沒有編譯的功能。
eclipse、idea等其他IDE有自己的編譯器而不是用JDK bin目錄中自帶的,所以在安裝時你會發現他們只要求你選中jre路徑就ok了。

相關文章