第十章 部署應用程序和applet

第十章 部署應用程序和applet

10.1 jar文件

    jar既可包含類文件,也能夠包含諸如圖像聲音等其餘類型文件,jar文件是採用ZIP格式壓縮的。
java

    建立格式:web

jar cvf JARFileName File1 File2 ...

    例如:服務器

jar cvf CalculatorClasses.jar *.class icon.gif

     jar 命令格式:數據結構

jar options File1 File2 ...

    選項:app


 10.1.1 清單文件

    每一個JAR文件包含一個用於描敘歸檔特徵的清單文件(manifest)ide

    清單文件名:MANIFEST.MF,位於JAR文件一個特殊META-INF子目錄中。ui

    清單條目被分紅多個節。第一節爲主節(main section).做用於整個JAR文件。隨後的條目用來指定已命條目屬性,這些已命名條目能夠是某個文件,包或URL。必須起始於名爲Name的條目。節與節之間用空行分割。如:url

ManiFest-Version:1.0
描敘這個歸檔文件的行

Name:Wcozle.class
描述這個文件的行

Name:com/mycompany/mypkg/
描述這個包的行

    想要編輯清單文件,須要將但願添加到清單文件中的行放到文本文件中,運行:spa

jar cfm JARFileName ManifestFileName ...

    例如:操作系統

jar ufm MyArchive.jar manifest.mf com/mycompany/mypkg/*.class

    更多參看http://java.sun.com/javase/6/docs/technotes/guides/jar.


10.1.2 可運行JAR文件

    Java SE6中,可用jar命令的e 選項指定程序的條目點,即一般須要在調用Java程序加載器時指定的類:

jar cvfe MyProgram.jar com.mycompany.mypkg.MainAppClass files to add

    用戶可簡單的啓動應用程序:

java -jar MyProgram.jar

    在舊的JDK中,必須指定應用程序主類:

Main-Class: com.mycompany.mypkg.MainAppClass

    不要將擴展名.class添加到主類名中。而後運行:

jar cvfm MyProgram.jar mainclass.mf files to add

       注意:清單文件最後一行必須以換行符結束。

10.1.3 資源

    一些相關數據文件如:

  • 圖像和聲音文件

  • 帶有消息字符串和按鈕標籤的文本文件

  • 二進制數據文件

    類加載器知道如何搜索類文件,直到在類路徑、存檔文件、或Web服務器上找到爲止,利用資源機制,對非類文件也能夠一樣方便地操做。必要步驟以下:

  • 得到具備資源的Class對象,例如AboutPane.class

  • 若是是圖像或聲音,須要調用getresource(filename)得到URL資源位置,再利用getImage或getAudioClip讀取

  • 其餘資源可用getResourceAsStream讀取文件中的數據

    重點在於類加載器能夠記住如何定位類,而後在同一位置查找關聯資源

    如圖片:

URL url = ResourceTest.class.getResource("about.gif");
Image image = Tookit.getDefualtTookit().getImage(url);

    在找到ResourceTest類的地方,而後在同位置查找關聯資源。

    如文件:

ImputStream stream = ResourceTest.class.getResourceAsStream("about.txt");
Scanner in = new Scanner(stream);

    除了能夠將資源文件和類文件放在同一目錄外,還能夠將它放在子目錄中。可以使用層級資源名:data/text/about.txt.這是一個相對資源名,他會被解釋爲相對於加載這個資源的類所在的包。而以"/"開頭的,如:/corejava/titile.txt.定位於corejava目錄下(他多是類路徑的一個子目錄,也可能位於JAR文件中,對applet在web服務器上).

    

10.4 應用程序存儲的配置

10.4.1 屬性映射

    屬性映射:存儲鍵/值對的數據結構。用來存放配置信息。三個特性:

  • 鍵和值都是字符串

  • 鍵/值對能夠很容易地寫入文件或從文件讀出

  • 用二級表存放默認值

    實現屬性映射的類爲Properties。如:

Properties settings = new Properties();
settings.put("width","200");
settings.put("title","Hello world");

    可用store將這個屬性映射列表保存到文件。在這裏將屬性映射保存在Myprog.properties文件中。

FileOutputStream out = new FileOutputStream("program.properties");
settings.store(out,"Program Properties"); //第二個參數爲這個文件的注

    從文件加載這些屬性:

FileInputStream in = new FileInputStream("program.properties");
settings.load(in);

    習慣將屬性存儲在用戶主目錄的某個子目錄下。查看用戶主目錄調用System.getProperties方法。 還可使用Properties對象描述系統信息。主目錄包含鍵user.home。一個頗有用的方法,讀取單鍵:

String userDir = System.getProperties("user.name");

    一旦用戶手工的編輯文件,爲應用程序提供 默認值就是一種很好的想法。Properties類有兩種提供默認值的機制。第一種是在試圖得到字符串值是指定默認值。當鍵值不存在時,就會自動的使用它。

String title = settings.getProperties("title","Defualt title");

    若是屬性映射中有title屬性,則title設置成字符串,不然,title將設置成Default title。

    若是以爲每次調用getProperties指定默認值太麻煩,可將全部默認值放在一個二級屬性映射中,並在主屬性映射的構造器中提供映射。且用它來夠造查詢表。

Properties defaultSettings = new Properties();
defaultSettings.put("width","300");
defaultSettings.put("height","200");
defaultSettings.put("title","Default title");
...
Properties settings = new Properties(defaultSettings);


10.4.2 Preferences API

    屬性文件的不足:

  • 配置文件不能存放在用戶的主目錄中。(有些操做系統沒有主目錄的概念)

  • 沒有標準的爲配置文件命名的規則。用戶安裝多個Java應用程序,會增長配置文件的衝突。

相關文章
相關標籤/搜索