【java學習】JDK(Java Development Kit)

兔兔西發表於2018-09-28

1,概念:

JDK是用於支援Java程式開放的最小環境。
JDK是整個java開發的核心,它包含了JAVA的執行環境(JVM+Java系統類庫)和JAVA工具。
平時較常用的是Sun免費提供的JDK,當然還有其他的開發環境,比如ibm。

1)版本

①SE(JavaSE,standard edition,標準版)

是我們通常用的一個版本,從JDK 5.0開始,改名為Java SE。

②EE(JavaEE,enterprise edition,企業版)

使用這種JDK開發J2EE應用程式,從JDK 5.0開始,改名為Java EE。從2018年2月26日開始,J2EE改名為Jakarta EE [1-2] 。

③ME(J2ME,micro edition)

主要用於移動裝置、嵌入式裝置上的java應用程式,從JDK 5.0開始,改名為Java ME。

2)組成

Java程式設計語言、Java虛擬機器、Java API類庫等三部分組成。

2,包含元件

1)Javac.exe

是收錄於JDK中的Java語言編譯器。可以將字尾名為.java的原始檔編譯為字尾名為.class的可以執行於JVM的位元組碼。

2)java

執行工具,執行.class的位元組碼

3)jar

打包工具,將相關的類檔案打包成一個檔案

4)javadoc

①介紹

文件生成器,它從程式原始碼中抽取類、方法、成員等註釋形成一個和原始碼配套的API幫助文件。
javadoc只能為public、protected成員進行文件註釋。private和daulft的註釋會被忽略掉。通過-private標記,可以把private成員的註釋也包括在內。

②使用方式

i>嵌入HTML

ii>使用文件標籤

獨立文件標籤以“@”開頭的命令,且要置於註釋行的最前面。
行內文件標籤可以出現在javadoc註釋的任何地方,但要在花括號內,同樣以@開頭。

③常用標記

標籤 說明
@author 作者 作者標識
@version 版本號 版本號
@param 引數名 描述 方法的入參名及描述資訊,如入參有特別要求,可在此註釋。
@return 描述 對函式返回值的註釋
@deprecated 過期文字 標識隨著程式版本的提升,當前API已經過期,僅為了保證相容性依然存在,以此告之開發者不應再用這個API。
@throws異常類名 建構函式或方法所會丟擲的異常。
@see 引用 檢視相關內容,如類、方法、變數等。
@since 描述文字 API在什麼程式的什麼版本後開發支援。
{@link包.類#成員 標籤} 連結到某個特定的成員對應的文件中。
{@value} 當對常量進行註釋時,如果想將其值包含在文件中,則通過該標籤來引用常量的值。

5)jdb debugger(jdb.exe)

除錯工具

6)jps

顯示當前java程式執行的程式狀態

7)javah

從Java類生成C標頭檔案和C原始檔。這些檔案提供了連線膠合,使Java和C程式碼可進行互動。

8)javaprof.exe

剖析工具

3,Java類庫(Java API)

Java官方為開發者提高的很多功能強大的類,分別放在各個包中。
Java類庫具有跨平臺的特點,保證了軟體的可移植性。

①java.*開頭:

java的核心包。

a>java.lang

java程式設計的基礎類。如:Object,Math,String,StringBuffer,System,Thread等。
提供核心功能
–java.lang.ref 使能與垃圾回收互動
–java.lang.reflect 執行時分析程式碼

b>java.util

java的utility工具包,包含集合框架、遺留的集合類、事件模型、日期和時間實施、國際化和各自實用工具類(字串標記生成器、隨機數生成器)。

–java.util.jar 生成和開啟JAR檔案
–java.util.zip 讀寫壓縮或解壓縮檔案

c>java.io

通過檔案系統、資料流和序列化提供系統的輸入與輸出。

d>java.net

實現網路應用與開發的類。

e>java.sql

使用Java語言訪問並處理儲存再資料來源(通常是一個關係型資料庫)中的資料API.

f>java.awt(Abstract Window Toolkit,抽象視窗工具包)

GUI設計與開發的類:建立介面和繪製圖形影像的所有類。
AWT是JAVA的language核心語言包;如String、Math、Integer、System、Thread,提供常用的功能。特殊之處是不需要匯入,是作為預設匯入的包。

早期編寫圖形介面應用程式的包。

AWT和Swing的實現原理不同。
AWT實現原理:
圖形函式與作業系統提供的圖形函式一一對應。也就是說,當我們利用 AWT構件圖形使用者介面的時候,實際上是在利用作業系統的圖形庫。
不同的作業系統其圖形庫的功能可能不一樣。為了實現Java語言所宣稱的"一次編譯,到處執行"的概念,AWT不得不通過犧牲功能來實現平臺無關性。因此,AWT 的圖形功能是各作業系統圖形功能的“交集”。
因為AWT是依靠本地方法來實現功能的,所以AWT控制元件稱為“重量級控制元件”。
–java.awt.color
支援顏色空間和外形
–java.awt.datatransfer
與系統的剪貼簿交換資料 java.awt.dnd 支援拖拉操作
–java.awt.event
處理事件
–java.awt.font
描述多種字型型別
–java.awt.geom 允許你使用幾何形狀
–java.awt.im 允許編輯元件中日文,中文,韓文的的輸入
–java.awt.im.spi 支援二選一的輸入裝置 (在java 2, v1.3中加入)
–java.awt.image 處理影像
–java.awt.image.renderable 支援獨立顯示影像
–java.awt.print 支援一般的列印功能

g>java.swing

GUI設計與開發的類:是一組輕量級的元件。
是為解決 AWT 存在的問題而新開發的圖形介面包。Swing是對AWT的改良和擴充套件,在各平臺通用。
例如:並不是所有的作業系統都提供了對樹形控制元件的支援, Swing則利用了AWT中所提供的基本作圖方法模擬了一個樹形控制元件。
因為Swing不使用本地方法,故Swing控制元件稱為“輕量級控制元件”。

AWT和Swing之間的區別:
i>AWT 是基於本地方法的C/C++程式,其執行速度比較快;Swing是基於AWT的Java程式,其執行速度比較慢。
ii>AWT的控制元件在不同的平臺可能表現不同,而Swing在所有平臺表現一致。

h>java.text

與自然語言無關的方式來處理文字、日期、數字和訊息的類和介面。
格式化,查詢和處理文字 。

i>java.security

處理證照,金鑰,摘要,簽名和其他安全功能
–java.security.acl 管理訪問控制列表
–java.security.cert 分析和管理證照
–java.security.interfaces 為DSA(數字簽名演算法)定義介面
–java.security.spec 設定金鑰和演算法引數

j>java.math

處理大整數和十進位制數

k>java.rmi

支援遠端方法呼叫
–java.rmi.activation 啟用永久物件
–java.rmi.dgc 管理分佈垃圾回收
–java.rmi.registry 對映名稱到遠端物件引用
–java.rmi.server 支援遠端方法呼叫

l>java.beans

允許你建立軟體元件

m>java.beans.beancontext

為bean 提供可執行環境

n>java.applet

是建立APPLET的必須包。支援小應用程式的結構

②javax.*開頭:

擴充套件包。x是extension的意思。是對java.*的優化和擴充套件。

③org.*開頭:

是各個機構或組織釋出的包。這些組織有影響力,且程式碼質量高。

④com.*開頭:

由盈利性公司釋出,有版權問題。
注意:為防止命名重複,慣例:以自己的域名倒寫形式作為開頭來為自己開發的包命名,如百度:com.baidu.*開頭。

4,安裝配置

jdk安裝需要兩次:第一次是JDK,第二次是jre,分別放入不同的資料夾。

1)windows配置

環境配置:
【系統與安全】,【系統】,【高階系統設定】,【系統屬性-高階】,【環境變數】

①JAVA_HOME

值為jdk安裝目錄
JAVA_HOME

②PATH

變數值為
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

③CLASSPATH

變數值為
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

檢測安裝是否成功:
【WIN+R】,【cmd】,輸入【java -version】,【javac】【javah】,【回車】,若出現很多英文,代表配置

問題:【java -version】有結果,【javac】【javah】不可以。
解決:在使用者變數和系統變數都配置PATH(注意區分大小寫)。

2)mac配置

下載jdk並安裝

②配置環境

終端,在.bash_profile中寫入:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH

完成後終端輸入:

source .bash_profile

輸入 echo $JAVA_HOME 顯示剛才配置的路徑

5,JRE(Java Runtime Environment)

1)概念:

JRE是支援Java程式執行的標準環境。

2)組成:

把Java API類庫中的Java SE API子集和Java虛擬機器這兩部分統稱為JRE。