Java開發環境配置時的dt.jar與tools.jar是什麼
很多人在初學Java的時候,都要配置環境變數。在配置CLASSPATH的時候,都會加上一個當前目錄.,還有兩個jar:dt.jar和tools.jar。其實好多人都不瞭解這兩個jar的作用,尤其是dt.jar。網上的大部分解釋是這樣的:dt.jar是關於執行環境的類庫,主要是swing的包;tools.jar是關於一些工具的類庫。對於後者我贊同,tools.jar中主要是jdk工具,包括javac,java,javap,javadoc等。javac,java,javadoc,很多都熟悉。javap,是java printer的縮寫,是jdk自帶的一個反編譯工具。不過把dt.jar解釋成關於執行環境的類庫,我是百思不得其解。所謂的執行環境是什麼?難道是JRE?本文也希望高手可以給我一個解釋。下面是我自己整理的關於dt.jar的資料:
首先看一下SUN對於dt.jar的定義:Also includes dt.jar, the DesignTime archive of BeanInfo files that tell interactive development environments (IDE's) how to display the Java components and how to let the developer customize them for the application。中文翻譯過來就是:dt.jar是BeanInfo檔案的DesignTime歸檔,BeanInfo檔案用來告訴整合開發環境(IDE)如何顯示Java元件還有如何讓開發人員根據應用程式自定義它們。這段文字中提到了幾個關鍵字:DesignTime,BeanInfo,IDE,Java components。其實dt.jar就是DesignTime Archive的縮寫。那麼何為DesignTime。
何為DesignTime?翻譯過來就是設計時。其實瞭解JavaBean的人都知道design time和runtime(執行時)這兩個術語的含義。設計時(DesignTIme)是指在開發環境中通過新增控制元件,設定控制元件或窗體屬性等方法,建立應用程式的時間。與此相對應的執行時(RunTIme)是指可以象使用者那樣與應用程式互動作用的時間。那麼現在再理解一下上面的翻譯,其實dt.jar包含了swing控制元件中的BeanInfo,而IDE的GUI Designer需要這些資訊。那讓我們看一下dt.jar中到底有什麼?下面是一張dt.jar下面的內容截圖:
從上面的截圖可以看出,dt.jar中全部是Swing元件的BeanInfo。那麼到底什麼是BeanInfo呢?
何為BeanInfo?JavaBean和BeanInfo有很大的關係。Sun所制定的JavaBean規範,很大程度上是為IDE準備的——它讓IDE能夠以視覺化的方式設定JavaBean的屬性。如果在IDE中開發一個視覺化應用程式,我們需要通過屬性設定的方式對組成應用的各種元件進行定製,IDE通過屬性編輯器讓開發人員使用視覺化的方式設定元件的屬性。一般的IDE都支援JavaBean規範所定義的屬性編輯器,當元件開發商釋出一個元件時,它往往將元件對應的屬性編輯器捆綁發行,這樣開發者就可以在IDE環境下方便地利用屬性編輯器對元件進行定製工作。JavaBean規範通過java.beans.PropertyEditor定義了設定JavaBean屬性的方法,通過BeanInfo描述了JavaBean哪些屬性是可定製的,此外還描述了可定製屬性與PropertyEditor的對應關係。BeanInfo與JavaBean之間的對應關係,通過兩者之間規範的命名確立:對應JavaBean的BeanInfo採用如下的命名規範:<Bean>BeanInfo。當JavaBean連同其屬性編輯器相同的元件註冊到IDE中後,當在開發介面中對JavaBean進行定製時,IDE就會根據JavaBean規範找到對應的BeanInfo,再根據BeanInfo中的描述資訊找到JavaBean屬性描述(是否開放、使用哪個屬性編輯器),進而為JavaBean生成特定開發編輯介面。
哈哈。現在可以理解dt.jar了吧。其實裡面主要是swing元件的BeanInfo。IDE根據這些BeanInfo顯示這些元件以及開發人員如何定製他們。
PS:好長時間沒有在BlogJava寫東西了。一方面是因為工作忙的原因,另一方面是自己工作後變的懶散的原因。今天是5-15號,距離自己工作一年還差兩個月零5天。在最後的這段時間,我要拼命的學習東西。重點放在設計模式,併發程式設計,網路程式設計,工具類庫設計等。如果有時間的話,還有我那熟悉的Linux。另外,我想寫一個《老生常談系列》,如《老生常談之工廠》,哈哈。
轉自:http://www.blogjava.net/landon/archive/2011/05/15/350285.html