Java開發須要準備的東西?
JDK+Eclipse 其中JDK的意思是Java開發工具包,Eclipse是進行用於作Java程序開發的工具(固然你也能夠用記事本什麼的去作)。
其餘開發工具:JCreator,JBuilder,...html
jdk的介紹和安裝教程度娘裏面處處都是,這裏本身也在囉嗦一下吧。java
關於jdk的詳細介紹:linux
JDK是Java Development Kit的縮寫,即Java開發工具集。JDK是整個Java的核心,包括了Java運行環境(JRE)、Java開發工具和Java基礎類庫。數據庫
JRE是Java Runtime Environment的縮寫,即Java運行時環境。Java程序運行時必須要JRE的支持。
Java的平臺版本:
Java分爲J2SE、J2EE和J2ME三個不一樣的平臺版本,即標準版(Java 2 Platform, Standard Edition)、企業版(Java 2 Platform, Enterprise Edition)和微型版(Java 2 Platform, Micro Edition)。從Java 1.5(或者Java 5.0)開始,它們被改稱爲Java SE、Java EE和Java ME。
各平臺版本之間的差異在於適用範圍不一樣:
安全
Java的版本:
bash
Java開發與運行環境的搭建(Java SE):服務器
1. 下載JDK/JRE:
首先,訪問Oracle公司的Java SE的下載主頁 (http://www.oracle.com/technetwork/java/javase/downloads/index.html),選擇一個版本(目前最新版爲Java SE 8),以下圖:
,選擇一個版本(目前最新版爲Java SE 8),以下圖:網絡
此頁面包含多個版本的JDK、JRE、幫助文檔、源代碼等下載內容的連接。若是不是Java 程序的開發者,僅僅想在本身的系統中運行Java程序,那麼只須要一個JRE就能夠了;若是想使用Java開發本身的應用程序,則須要下載JDK,其中已 包含JRE,所以下載了JDK後無需再單獨下載JRE。
這裏如下載Java SE 8最新版本的JDK爲例,點擊相應的Download按鈕,轉到下載頁面,以下圖:oracle
在此頁面中,包含了對應各類操做系統的JDK下載連接,選擇本身系統對應的JDK,將其下載 到本地硬盤上。注意,在下載以前須要先閱讀「Oracle Binary Code License Agreement for Java SE」,必須接受其中的條款才能下載JDK(選中「Accept License Agreement」(注意上圖中紅線的標註))。工具
2. 安裝JDK/JRE:
不管是在Windows仍是在Linux下安裝JDK都很簡單,與安裝其餘程序沒什麼不一樣。
在Windows中,雙擊剛纔下載的「*****.exe」文件,就會打開安裝界面。點擊「下一步」按鈕,能夠在此選擇須要安 裝的組件和安裝目錄,窗口右側是對所選組件的說明,包括組件功能和所需的磁盤空間;能夠點擊「更改」按鈕來改變安裝目錄。點擊「下一步」即開始正式安裝。 安裝完畢後,將會顯示安裝已完成的信息,點擊「完成」按鈕便可完成安裝。
來到安裝文件夾下,便可以看到已安裝的JDK的目錄結構。(注意其中包含名爲「jre」的文件夾,這就是前面說的JDK包含JRE的緣由所在)(記住你jdk安裝的路徑配置的時候有用)
整個安裝過程以下面幾幅圖所示:
注意:操做系統分爲32位操做系統和64位操做系統,對應 地,JDK也分爲32位版和64位版(名稱中帶有「i586」或「x86」的爲32位版,帶有「x64」則表示該JDK爲64位版)。64位版JDK只能 安裝在64位操做系統上,32位版JDK則既能夠安裝在32位操做系統上,也能夠安裝在64位操做系統上。緣由是64位的操做系統可以兼容32位的應用程 序。
換句話說,即便CPU是64位的,但若是安裝的操做系統是32位的,那麼也沒法安裝64位版的JDK。
在Linux中安裝JDK與安裝其餘程序相同。下載時能夠選擇.rpm或.tar.gz格式的安裝文件,這裏之後者爲例進行說明。
首先解壓縮下載的文件,輸入命令「tar -xf jdk-7-linux-i586.tar.gz -C /usr」,將文件解壓到/usr目錄下,這樣就完成了安裝(如圖):
3. 設置環境變量:
環境變量是指在操做系統中用來指定操做系統運行環境的一些參數,好比臨時文件夾位置和系統文件夾位置等。環境變量至關於給系統或應用程序設置的一些參數。
編譯或運行Java程序時,都是基於命令行的,所以在此以前必須設置一些環境變量的值。有些Java IDE(集成開發環境)內置了JDK,所以使用這些IDE時能夠不指定環境變量。還有些程序須要個性化的環境變量(如Apache Tomcat須要JAVA_HOME環境變量)。
與JDK或JRE的使用有關的是PATH、CLASSPATH等幾個環境變量。這裏先解釋一下這些變量的含義:
PATH變量用來告訴操做系統到哪裏去查找一個命令。若是清空PATH變量的值,在Windows中運行一個外部命令時,將提示未知命令錯誤(固然,在Linux中也是同樣):
環境變量是指在操做系統中用來指定操做系統運行環境的一些參數,好比臨時文件夾位置和系統文件夾位置等。環境變量至關於給系統或應用程序設置的一些參數。
編譯或運行Java程序時,都是基於命令行的,所以在此以前必須設置一些環境變量的值。有些Java IDE(集成開發環境)內置了JDK,所以使用這些IDE時能夠不指定環境變量。還有些程序須要個性化的環境變量(如Apache Tomcat須要JAVA_HOME環境變量)。
與JDK或JRE的使用有關的是PATH、CLASSPATH等幾個環境變量。這裏先解釋一下這些變量的含義:
PATH變量用來告訴操做系統到哪裏去查找一個命令。若是清空PATH變量的值,在Windows中運行一個外部命令時,將提示未知命令錯誤(固然,在Linux中也是同樣):
注意:在Windows中,如「dir」、「cd」等命令是內部命令,相似於DOS中的常駐命 令。這些命令在命令行窗口啓動時會自動加載到內存中,不須要到磁盤上去尋找對應的可執行文件,所以即便清空了PATH變量的值也不會影響這些命令的使用。 然而,像「java」這樣的外部命令,在執行時必須先由操做系統到指定的目錄找到對應的可執行程序,而後才能加載並運行。到哪裏去尋找這些程序就是依靠 PATH變量來指定的。
Linux也是相似,甚至能夠說在Linux中,PATH環境變量更爲重要,由於Linux的不少基本命令都屬於外部命令,如「ls」、「mkdir」等。當將PATH變量清空後,這些命令都將沒法使用(固然,仍是有一些內部命令咱們仍然可使用)。
CLASSPATH是編譯或運行Java程序時用來告訴Java編譯器或虛擬機到哪裏查找Java類文件的,後面會對其作詳細介紹。
在Windows XP或以前的版本中,依次點擊「右鍵個人電腦」 -> 「屬性」 -> 「高級」 -> 「環境變量」;在Windows Vista和Windows 7中則依次點擊「右鍵個人電腦」 -> 「屬性」 -> 「高級系統設置」 -> 「高級」 -> 「環境變量」,打開環境變量設置窗口:
選擇【新建系統變量】--彈出「新建系統變量」對話框,在「變量名」文本框輸入「JAVA_HOME」,在「變量值」文本框輸入JDK的安裝路徑(也就是jdk安裝的文件夾路徑),單擊「肯定」按鈕。如圖:
而後:
在「系統變量」選項區域中查看PATH變量,若是不存在,則新建變量 PATH,不然選中該變量,單擊「編輯」按鈕,在「變量值」文本框的起始位置添加「%JAVA_HOME%\bin;%JAVA_HOME%\jre \bin;」或者是直接「%JAVA_HOME%\bin;」,單擊肯定按鈕。
在「系統變量」選項區域中查看CLASSPATH 變量,若是不存在,則新建變量CLASSPATH,不然選中該變量,單擊「編輯」按鈕,在「變量值」文本框的起始位置添加 「.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;」。
設置完成後,環境變量設置窗口以下圖所示。點擊肯定按鈕,環境變量設置完成。
注意:在Windows中,環境變量分爲「用戶變量」和「系統變量」,它們的區別是,「用戶變 量」只對當前的用戶起做用,而「系統變量」則對系統中的全部用戶起做用。若是但願在多個用戶之間共享環境變量的設置,能夠將這些環境變量設置爲系統變量, 不然,應該使用用戶變量,避免影響其餘用戶。在Linux中也有相似的概念,接下來會講到。
在Linux中,能夠經過編輯「~/.bashrc」文件來修改環境變量。在最後添加下面幾行腳本,而後保存並退出:
JAVA_HOME=/usr/jdk1.7.0
JAVA_BIN=/usr/jdk1.7.0/bin
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.
export JAVA_HOME JAVA_BIN PATH CLASSPATH
注意:Linux中,每一個用戶的home目錄下都有.bashrc文件,這個文件用來保存用戶 的個性化設置,如命令別名、路徑等,固然也能夠用來定義環境變量。此文件是與每一個用戶相關的,一個用戶的設置不會影響到其餘用戶,在這裏設置環境變量至關 於前面講的Windows的用戶環境變量。Linux中全局設置一般保存在「/etc/profile」文件中。
另外,Linux中PATH和CLASSPATH的分割符都是「:」(冒號),而Windows中是「;」(分號)。
當環境變量設置完成後,在Windows中打開新的命令行窗口,在Linux中使用「source ~/.bashrc」命令從新加載.bashrc文件,便可使新的環境變量生效。輸入「java -version」命令,應該會打印出相似下面兩幅圖所示的內容:
Windows命令行的輸出:
對以上步驟補充說明幾點:
4. 編譯並運行例子程序:
通過了以上的步驟,JDK的環境就搭建好了,此時,可能須要再編譯並運行一個Java例子程序來對剛搭建的環境作最終的檢驗。在這一節中,也會順便講到如 何編譯和運行一個Java程序,以及CLASSPATH的做用。更詳細的,能夠參考另外一篇文章《JDK下提供的工具詳解》。
此程序包含兩個.java文件:ExceptionDemo.java和HelloWorldException.java,前者屬於main包,然後者 位於exceptions包(雖然它位於test\exceptions文件夾,這樣安排的目的是爲了更好地描述CLASSPATH的做用):
下面是它們的源代碼:
(1) ExceptionDemo.java:
(2) HelloWorldException.java:
此程序仍然是一個經典的HelloWorld程序(雖然此次它是以很不友好的方式向世界問好——經過拋出異常)。
要編譯這個程序,首先嚐試第一種方法(下面的操做是在Windows命令行下進行的,Linux與此相似):進入src文件夾,輸入「javac main\ExceptionDemo.java」,但編譯報錯:
爲何會提示找不到HelloWorldException呢?那是由於該Java文件位於「test\exceptions\」目錄下,但它的包名倒是 「exceptions」,從當前的src目錄,javac沒法找到exceptions目錄,由於「src\exceptions」目錄是不存在的。
接下來,咱們嘗試第二種方法:由src目錄進入test目錄,運行「javac ..\main\Exceptiondemo.java」:
編譯竟然經過了!能夠看到沒有報錯,而且main目錄下生成了ExceptionDemo.class文件(Java字節碼文件),說明編譯確實成功了。 可是爲何?咱們使用了「..\main\Exceptiondemo.java」,這明顯不是ExceptionDemo的包路徑,爲何編譯器卻不報 錯呢?另外咱們還注意到,我錯誤地將「ExceptionDemo.java」寫成了「Exceptiondemo.java」,即將字母「D」的大小寫 弄錯了,編譯器一樣沒有報錯。
原來,javac只是將「..\main\Exceptiondemo.java」當作普通路徑來尋找Java源程序文件,找到後即開始編譯此文件,而當 其在編譯過程當中發現程序還引用了其餘類時(如ExceptionDemo.java中引用了HelloWorldException類),就會暫停對當前 文件的編譯,開始尋找這個引用的類文件,若是未找到,那麼將會報告錯誤,編譯失敗。前一種方法就是由於沒有找到HelloWorldException類 而出錯的。
那麼javac程序是如何查找程序引用的其餘類的呢?答案是按照CLASSPATH指定的路徑加上程序所引用類的包名來查找的。CLASSPATH默認爲 「.」,即當前路徑(咱們以前也設置了CLASSPATH的值爲「.」,但即便不設置,javac也會默認以當前路徑爲起點來查找所引用的類文件)。
所以在這裏javac會檢查「src\test\exceptions\」中是否有HelloWorldException.class文件,若是有,則 繼續檢查其中是否有HelloWorldException.java文件,若是二者都存在,則檢查HelloWorldException.class 是否比HelloWorldException.java更新,若是答案是確定的,則加載HelloWorldException.class並繼續編譯 ExceptionDemo.java。而若是比較結果是HelloWorldException.java更新,或者不存在 HelloWorldException.class,則說明須要從新編譯HelloWorldException.java文件。若是隻有.class 文件而不存在.java文件,則加載之並繼續編譯ExceptionDemo.java。
若是沒有找到目標文件(HelloWorldException.class或HelloWorldException.java),那麼javac將報告錯誤(如以前那樣)。
也就是說,編譯是遞歸進行的:當程序中引用了其餘類時,javac會判斷是否須要編譯這些類,若是須要,則javac會首先編譯它們,若是這些類再次用到 了其餘的類,javac將再次重複此過程,直到完成所有編譯。只要在此過程當中有任何類沒有找到,或者在其中發現了任何錯誤,那麼javac將報告錯誤並中 止編譯(javac可能在停止以前儘量多地編譯,以儘可能多地向用戶報告程序中的錯誤)。
能夠用下面的圖來形象地展現這一過程:
至於咱們將大小寫弄錯了但javac卻沒有報錯的緣由,其實前面的說明已經隱含了解釋:是由於javac只是將命令中的.java文件當作普通文件,又因爲Windows是不區分大小寫的,所以不會報錯。若是換成Linux系統,將會提示文件沒法找到的錯誤。
默認的CLASSPATH是當前目錄(「.」),咱們也能夠設置爲須要的路徑,讓javac據此查找類文件(這就是前面所說的爲何只是暫時將 CLASSPATH設置爲「.」的緣由)。在這個例子中,咱們設置CLASSPATH爲「.;D:\workspaces\workspace_v1.1 \my-test\src\test」,注意Linux中分隔符爲「:」(冒號)。而後在src目錄下就可使用命令「javac main\ExceptionDemo.java」進行編譯:
實際上,此時在任何目錄均可以對ExceptionDemo.java進行編譯,只是文件的路徑要適當更改。例如咱們在D盤根目錄輸入如下命令編譯:
這是由於設置了CLASSPATH後,javac總能找到HelloWorldException類。
有時候必須使用CLASSPATH:當涉及到的類不少時,而這些類並不在同一個目錄下,此時咱們只能使用CLASSPATH來指定這些類的路徑——咱們沒法同時處於多個類的「當前目錄」下。
另一個須要注意的問題是,JDK包含的Java基礎類(例如java.lang包中的類)並不須要指定CLASSPATH——Java知道如何找到它們。
編譯完成後,運行咱們的例子,例子將拋出一個異常,並向世界問好:
注意,必須輸入完整的包名和類名(不須要.class後綴),且大小寫不能弄錯(由於Java是區分大小寫的)。完整的包名+類名在Java中稱爲類的徹底限定名。
至此爲止,咱們成功地搭建起了Java開發和運行環境。
《本文引用了:http://blog.csdn.net/antineutrino/article/details/6763565,特此感謝。》