Java、javax、org、sun、Java.util等常用包的區別、詳解、實例
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等常用包的區別、詳解、實例