Java基礎概念解析

引言

什麼是Java?這個問題即便是問入行已經多年的老Java開發,也不是所有人都能說出所以然。所以整理出了以下的基礎概念,爲初入Java海洋的人一點指引。本文部分內容引自網絡。

JVM、JRE、JDK

Java通過JVM(虛擬機)來達到跨平臺。開發者使用JDK開發程序,通過編譯器編譯後,JVM調用JRE類庫組件針對不同的系統環境對編譯碼進行解釋,並執行程序。

 Java源代碼---->編譯器---->jvm可執行的Java字節碼(即虛擬指令)---->jvm---->jvm中解釋器----->機器可執行的二進制機器碼---->程序運行。

JDK是開發者使用的,裏面包含了各種API。JRE是供JVM虛擬機調用的類庫。

JRE及JVM是用戶使用的,他們不包含編譯程序。

在我們安裝JDK的時候,目錄中已經包含了JRE及JVM。

注意:跨平臺的是 Java 程序,不是 JVM。JVM 是用 C/C++ 開發的,是編譯後的機器碼,不能跨平臺,不同平臺下需要安裝不同版本的 JVM。

由圖中可以看出以下幾點:

  • JDK=JRE+多種Java開發工具
  • JRE=JVM+各種類庫
  • 這三者的關係是一層層的嵌套關係。JDK>JRE>JVM

JVM:

 

JRE(JRE包含JVM):

 

JDK(JDK包含了JVM和JRE):

 

bin:最主要的是編譯器(javac.exe) 

include:java和JVM交互用的頭文件 

lib:類庫 

jre:java運行環境

Tomcat

Tomcat是web 服務器。我們做好的web應用程序需要Tomcat才能展現。而Tomcat又需要運行在系統上,就需要JVM(虛擬機系統)。

  1. 假設tomcat監聽8080端口,當一個http請求從主機的8080端口發送過來時,tomcat最先獲知。
  2. tomcat將此請求作爲任務加入一個隊列中,jvm中有若干工作者線程會從這個隊列中獲取任務。
  3. 假設工作線程A取到了這個任務,那麼線程A通過分析請求的url,檢查已加載的web.xml配置,來判斷此請求應該交給應用的哪個servlet處理(假設應用是用servlet實現的)
  4. 工作線程A調用對應的servlet的方法(service/get/post等),把請求封裝成request對象傳給servlet
  5. 此時應用開始幹活(實際上幹活的還是工作線程,只不過執行的是應用中編寫的業務邏輯),解析請求參數,處理業務流程,生成response
  6. 工作線程A把response回送給請求的發送端。
  7. 通常情況下,tomcat啓動時候使用的jdk的路徑默認爲環境變量裏配置的JAVA_HOME;
  8. 修改默認jdk:我們都知道啓動tomcat可以通過運行bin下的startup.bat,startup.bat會調用catalina.bat文件,而catalina.bat會調用setclasspath.bat文件來獲取JAVA_HOME和JRE_HOME這兩個環境變量的值,因此若要在tomcat啓動時指向特定的JDK,則需在setclasspath.bat文件的開頭處加上JAVA_HOME和JRE_HOME。
  9. eclipse自帶編譯工具,只需用jre即可(java項目只能運行在jvm上/運行類庫) jdk開發工具包

JavaEE、JavaSE、JavaME

使用較多的是JavaEE,主要做web。JavaSE中也有web相關模塊,但是比JavaEE弱。

  • javase: 即J2SE, java標準版, 主要做一般的java應用, 比如, 應用軟件/ QQ之類的通信軟件等等.
  • javaee: 即J2EE, 主要做企業應用, 比如公司網站, 企業解決方案等;
  • javame: 即J2ME, 主要面向嵌入式等設備應用的開發, 比如手機遊戲等

 

IDE-IntelliJ IDEA

主流使用IntelliJ IDEA,分企業版(收費)及社區版(免費)。企業版包含Java EE(Java的企業版)全部內容。

 

項目管理-Maven

之前主流用Ant,但是目前已經被Maven及Gradle取代。其中,Gradle是最新的項目管理軟件,但是國內主要還是以Maven爲主。Maven可以用來管理、配置、測試和部署項目,擁有生命週期及倉儲概念。它將項目本身所有依賴項通過網絡下載到倉儲。可以通過修改POM配置文件來隨時修改本項目的依賴項,而Maven會實時更新倉儲。

 

版本管理-Git

目前使用的版本管理軟件主要有svn及Git。相比前者,由於Git有本地緩存區的概念,可以輕易建立分支(包括離線建立分支),同時可以離線查看歷史記錄等。 Git的使用者以及越來越多,Git+Maven已經是比較主流的Java開發選擇。

 

Spring Boot

SpringBoot是一個框架,一種全新的編程規範,他的產生簡化了框架的使用,所謂簡化是指簡化了Spring衆多框架中所需的大量且繁瑣的配置文件,所以 SpringBoot是一個服務於框架的框架,服務範圍是簡化配置文件。

 

 

參考引用:

http://c.biancheng.net/view/5607.html

http://www.cnblogs.com/wangzhongqiu/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章