java、javax、org、sun包都是jdk提供的類包,且都是在rt.jar中。rt.jar是JAVA基礎類庫(java核心框架中很重要的包),包含lang在內的大部分功能,而且rt.jar默認就在根classloader的加載路徑里面,所以放在classpath是多此一舉 。他們之間的區別具體如下:
java.*
java SE的標准庫,是java標准的一部分,是對外承諾的java開發接口,通常要保持向后兼容,一般不會輕易修改。包括其他廠家的在內,所有jdk的實現,在java.*上都是一樣的。
javax.*
也是java標准的一部分,但是沒有包含在標准庫中,一般屬於標准庫的擴展。通常屬於某個特定領域,不是一般性的api。
所以以擴展的方式提供api,以避免jdk的標准庫過大。當然某些早期的javax,后來被並入到標准庫中,所以也應該屬於新版本JDK的標准庫。比如jmx,java 5以前是以擴展方式提供,但是jdk5以后就做為標准庫的一部分了,所有javax.management也是jdk5的標准庫的一部分。
com.sun.*
是sun的hotspot虛擬機中java.* 和javax.*的實現類。因為包含在rt中,所以我們也可以調用。但是因為不是sun對外公開承諾的接口,所以根據實現的需要隨時增減,因此在不同版本的hotspot中可能是不同的,而且在其他的jdk實現中是沒有的,調用這些類,可能不會向后兼容,所以一般不推薦使用。
org.omg.*
是由企業或者組織提供的java類庫,大部分不是sun公司提供的,同com.sun.*,不具備向后兼容性,會根據需要隨時增減。其中比較常用的是w3c提供的對XML、網頁、服務器的類和接口。
原文地址:https://blog.csdn.net/ooppookid/article/details/51704792