1. 程式人生 > >Java、javax、org、sun、Java.util等常用包的區別、詳解、實例

Java、javax、org、sun、Java.util等常用包的區別、詳解、實例

href etl 關系型 常用 企業 擴展 數據源 國際 存儲

Java、javax、org、sun包都是jdk提供的類包,且都是在rt.jar中。rt.jar是JAVA基礎類庫(java核心框架中很重要的包),包含lang在內的大部分功能,而且rt.jar默認就在根classloader的加載路徑裏面,所以放在classpath是多此一舉 。他們之間的區別具體如下:

1. java.*

Java SE的標準庫,是java標準的一部分,是對外承諾的java開發接口,通常要保持向後兼容,一般不會輕易修改。包括其他廠家(IBMJDK/HPJDK/OpenJDK)在內,所有jdk的實現,在java.*上都是一樣的。

2. javax.*

也是java標準的一部分,但是沒有包含在標準庫中,一般屬於標準庫的擴展。通常屬於某個特定領域,不是一般性的api。


所以以擴展的方式提供api,以避免jdk的標準庫過大。當然某些早期的javax,後來被並入到標準庫中,所有也應該屬於新版本JDK的標準庫。比如jmx,java 5以前是以擴展方式提供,但是jdk5以後就做為標準庫的一部分了,所有javax.management也是jdk5的標準庫的一部分。

3. com.sun.*

是sun的hotspot虛擬機中java.* 和javax.*的實現類。因為包含在rt中,所以我們也可以調用。但是因為不是sun對外公開承諾的接口,所以根據根據實現的需要隨時增減,因此在不同版本的hotspot中可能是不同的,而且在其他的jdk實現中是沒有的,調用這些類,可能不會向後兼容,所以一般不推薦使用。

4. org.*

是由企業或者組織提供的java類庫,大部分不是sun公司提供的,同com.sun.*,不具備向後兼容性,會根據需要隨時增減。其中比較常用的是w3c提供的對XML、網頁、服務器的類和接口

具體如下表:

包名說明
java.lang 該包提供了Java編程的基礎類,例如 Object、Math、String、StringBuffer、System、Thread等,不使用該包就很難編寫Java代碼了。
java.util 該包提供了包含集合框架、遺留的集合類、事件模型、日期和時間實施、國際化和各種實用工具類(字符串標記生成器、隨機數生成器和位數組)。
java.io
該包通過文件系統、數據流和序列化提供系統的輸入與輸出。
java.net 該包提供實現網絡應用與開發的類。
java.sql 該包提供了使用Java語言訪問並處理存儲在數據源(通常是一個關系型數據庫)中的數據API。
java.awt 這兩個包提供了GUI設計與開發的類。java.awt包提供了創建界面和繪制圖形圖像的所有類,而javax.swing包提供了一組“輕量級”的組件,盡量讓這些組件在所有平臺上的工作方式相同。
javax.swing
java.text

提供了與自然語言無關的方式來處理文本、日期、數字和消息的類和接口。

java.lang 詳解: http://beyond429.iteye.com/blog/344024

java.util 詳解: http://blog.csdn.net/abeetle/article/details/1497706

java.io 詳解: http://blog.csdn.net/yczz/article/details/38761237

java.net 詳解:https://zhidao.baidu.com/question/87061018.html

java.sql 詳解:http://www.360doc.com/content/12/0329/09/1200324_198823027.shtml

java.awt 詳解:http://blog.csdn.net/u013147587/article/details/49815031

javax.swing 詳解:http://blog.sina.com.cn/s/blog_4a7979120100087g.html

java.text 詳解:http://www.cnblogs.com/beibeibao/p/3411750.html

Java、javax、org、sun、Java.util等常用包的區別、詳解、實例