本筆記大部分内容來自:微學苑
Java概述
可以負責任的告訴你,Java 目前的主要應用方向是Web開發和Android開發,大部分IT公司招聘的Java程式員也是從事這兩方面的工作。
JVM是一個”橋梁“,是一個”中間件“,是實作跨平台的關鍵,Java代碼首先被編譯成位元組碼檔案,再由JVM将位元組碼檔案翻譯成機器語言,進而達到運作Java程式的目的。
注意:編譯的結果不是生成機器碼,而是生成位元組碼,位元組碼不能直接運作,必須通過JVM翻譯成機器碼才能運作。不同平台下編譯生成的位元組碼是一樣的,但是由JVM翻譯成的機器碼卻不一樣。
即使你将Java程式打包成可執行檔案(例如 .exe),仍然需要JVM的支援。
注意:跨平台的是Java程式,不是JVM。JVM是用C/C++開發的,是編譯後的機器碼,不能跨平台,不同平台下需要安裝不同版本的JVM。
然而,JVM 有一個選項,可以将使用最頻繁的位元組碼翻譯成機器碼并儲存,這一過程被稱為即時編譯。這種方式确實很有效,緻使微軟的 .NET 平台也使用了虛拟機。
現在的及時編譯器已經相當出色,甚至成了傳統編譯器的競争對手,某些情況下甚至超過了傳統編譯器,原因是JVM可以監控運作時資訊。例如,即時編譯器可以監控使用頻率高的代碼并進行優化,可以消除函數調用(即“内嵌”)。
種種原因,注定了Java用戶端不利于推向市場,讓普通使用者接受。不過話又說回來,用戶端開發也不是Java的初衷,Java最初是面向嵌入式的,卻随着網際網路的興起而快速成長,在Web開發上大顯身手。
J2SE包含了Java的核心類庫,例如資料庫連接配接、接口定義、輸入/輸出、網絡程式設計等。
通常所說的JSP開發就是J2EE的一部分。
J2EE包含J2SE中的類,還包含用于開發企業級應用的類,例如EJB、servlet、JSP、XML、事務控制等。
J2ME 隻包含J2SE中的一部分類,受平台影響比較大,主要用于嵌入式系統和移動平台的開發,例如呼機、智能卡、手機(功能機)、機頂盒等。
注意:Android手機有自己的開發元件,不使用J2ME進行開發。
進入環境變量配置視窗,在“使用者變量”中,設定3項屬性,JAVA_HOME、PATH、CLASSPATH(大小寫無所謂),若已存在則點選“編輯”,不存在則點選“建立”:
JAVA_HOME:設為JDK的安裝路徑(如D:\Program Files\jdk1.7.0_71),此路徑下包括lib,bin,jre等檔案夾(此變量最好設定,因為以後運作tomcat,eclipse等都需要依靠此變量)。
Path:使得系統可以在任何路徑下識别java指令,設為:%JAVA_HOME%\bin。%JAVA_HOME%就是引用前面指定的JAVA_HOME變量。
CLASSPATH:Java運作環境加載類的路徑,隻有類在classpath中,才能被識别和加載,設為 .;%JAVA_HOME%\lib(注意前面的點号(.),點号表示目前路徑)。
包名
說明
java.lang
該包提供了Java程式設計的基礎類,例如 Object、Math、String、StringBuffer、System、Thread等,不使用該包就很難編寫Java代碼了。
java.util
該包提供了包含集合架構、遺留的集合類、事件模型、日期和時間實施、國際化和各種實用工具類(字元串标記生成器、随機數生成器和位數組)。
java.io
該包通過檔案系統、資料流和序列化提供系統的輸入與輸出。
java.net
該包提供實作網絡應用與開發的類。
java.sql
該包提供了使用Java語言通路并處理存儲在資料源(通常是一個關系型資料庫)中的資料API。
java.awt javax.swing
這兩個包提供了GUI設計與開發的類。java.awt包提供了建立界面和繪制圖形圖像的所有類,而javax.swing包提供了一組“輕量級”的元件,盡量讓這些元件在所有平台上的工作方式相同。
java.text
提供了與自然語言無關的方式來處理文本、日期、數字和消息的類和接口。
Java 編譯器預設為所有的 Java 程式導入了 JDK 的 java.lang 包中所有的類(import java.lang.*;),其中定義了一些常用類,如 System、String、Object、Math 等,是以我們可以直接使用這些類而不必顯式導入。但是使用其他類必須先導入。
Java 運作環境将依次到下面的路徑尋找并載入位元組碼檔案 Test.class:
.p1\Test.class(”.”表示目前路徑)
D:\Program Files\jdk1.7.0_71\lib\p1\Test.class