搜尋引擎第一步(Java之JDK,JRE區別)
#簡介
##起因:想搭建一個搜尋引擎
論文書寫的水平太次,而想寫好論文的第一關鍵就是借鑑別人寫的內容,然後模仿,創新。
於是乎,平常當需要表達某一個意思的時候,我一般首先將關鍵詞訴諸於有道,然後找到解釋以及例句,但是有道給的例句並不那麼學術化,與我平常要寫的論文還是有些差距的。於是乎,我一個簡單大膽的想法萌發了,將電腦中讀過的經典的論文的pdf檔案放到一起,構建一套索引,然後支援關鍵詞搜尋句子,段落等,這樣當需要表達某一個意思的時候,只需要將關鍵詞輸入到查詢框中,然後別人的優美的句子就刷刷的來了,豈不妙哉!
##前期準備:文件索引構建+web介面展示
首先需要一個基本的將文件構建倒排索引的核心,以及一個web介面的包裝,以使能夠直接訪問本地的server。當輸入關鍵詞,搜尋的結果就會自動呈現出來。 隨便搜尋了一下采用了lucene+solr的結構。github有原始碼。 lucene用於索引的構建,solr用於web介面的展示
##編譯lucene+solr
文件很簡單,直接ant compile編譯。編譯的過程漫長而又痛苦,報了不同的錯誤。
- **錯誤1:**java版本要求至少1.8.於是下載java se8(標準版),然後安裝jdk和jre,並進行了Path和JAVA_HOME的配置
- **錯誤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中解釋成機器語言並執行。
###配置
- JAVA_HOME: 配置成jdk的目錄,即 java\jdk1.8.0_121
- JRE_HOME: 配置成公共jre的目錄: 即java\jre1.8.0_121
- PATH: 配置常用的java相關編譯執行命令:%JRE_HOME%\bin;%JAVA_HOME%\bin
- 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了。
相關文章
- JDK和JRE的區別 .JDK
- JDK JRE JVM 的區別JDKJVM
- jdk和jre的區別JDK
- jdk與jre的區別JDK
- JRE 和 JDK 的區別詳解JDK
- JDK,JRE,JVM區別與聯絡JDKJVM
- JRE與JDK的區別與聯絡JDK
- Jdk、Jre Jvm的區別和聯絡JDKJVM
- 搜尋引擎-03-搜尋引擎原理
- 57_初識搜尋引擎_分散式搜尋引擎核心解密之query phase分散式解密
- 海量資料搜尋---搜尋引擎
- Lucene : 基於Java的全文搜尋引擎Java
- 機票垂直搜尋引擎之效能優化優化
- java+lucene中文分詞,搜尋引擎搜詞剖析Java中文分詞
- 搜尋引擎es-分詞與搜尋分詞
- ElasticSearch全文搜尋引擎Elasticsearch
- 搜尋引擎語法
- 搜尋引擎命令大全
- 搜尋引擎程式碼
- 搜尋引擎面試題面試題
- 9個基於Java的搜尋引擎框架Java框架
- Laravel 之搜尋引擎elasticsearch擴充套件ScoutLaravelElasticsearch套件
- 轉:google搜尋聯盟與adsense搜尋廣告的區別Go
- 搜尋引擎優化(SEO)優化
- 搜尋引擎框架介紹框架
- Django整合搜尋引擎ElasticserachDjangoAST
- 認識搜尋引擎 ElasticsearchElasticsearch
- 搜尋引擎與前端SEO前端
- 搜尋引擎原理及使用
- http應用:黑帽seo之搜尋引擎劫持HTTP
- 直播開發app,實時搜尋、搜尋引擎框APP
- [java基礎]之JVM/JRE/JDK三者的關係JavaJVMJDK
- JDK與JREJDK
- JDK和JREJDK
- JDK,JRE,JVMJDKJVM
- JDK JRE JVMJDKJVM
- 搜尋引擎必看的入門書籍——《搜尋引擎:資訊檢索實踐》
- Nebula 基於 ElasticSearch 的全文搜尋引擎的文字搜尋Elasticsearch