[core java学习笔记][第十章部署应用程序]

来源:互联网 发布:广州恒大淘宝股票 编辑:程序博客网 时间:2024/05/16 07:26

第10章 部署应用程序和applet

  • jar文件
  • Java Web Start

10.1 jar文件

  • jar文件就是一个压缩了类,图像和声音的ZIP压缩文件

  • 创建一个新的JAR文件应该使用的常见命令格式:

    jar cvf JARFileName File1 File2 ...

    例如

    jar cvf CalculatorClasses.jar *.class icon.gif

    通常,jar 的命令格式如下

    jar options File1,File2,.....

    以下列出jar程序的可选项

    一般 -cvf 常用即可

10.1.1 清单文件

  • 命名为MANIFEST.MF用于描述归档特征的清单文件。
  • 要想创建一个包含自己清单文件的jar应该用这样的命令

    jar cfm JARFileName ManifestFileName ....

    jar cfm MyArhive.jar manifest.mf com/mycompany/mypkg/*.class
  • 要想更新一个已有JAR文件的清单,执行一下指令

    jar ufm MyArchive.jar manifest-additions.mf

10.1.2 可运行JAR文件

两种方式

  • 可以使用jar命令中的e选项指定程序的入口点

    jar cvfe MyProgram.jar MainAppClass otherclassfile
  • 或者,再清单文件指定应用程序的主类,最后一行必须以换行符结尾

    Main-Class: MainAppClass
  • 还有第三方打包器,能将jar文件转换为.exe的Windows程序,查找和加载Java虚拟机,甚至再没有找到JVM的时候告诉用于做什么

10.1.3 资源

  • 图像和声音文件
  • 带有消息字符串和按钮标签的文本文件
  • 二进制数据文件
  • 要调用资源有一下几步

    1. 获得具有资源的Class对象。例如,AboutPanel.class,只能调用这个对象目录下的资源
    2. 如果资源是一个图像或声音文件,那么就需要调用getresource(filename)获得作为URL的资源位置,然后利用getImagegetAudioClip进行读取
    3. 其他资源用getResourceAsStream方法读取文件中的数据

    读取图像

    URL url= ResourceTest.class.getResource("about.gif");Image img=new ImageIcon(url).getImage();//或者URL aboutURL = getClass().getResource("about.gif");Image img = new ImageIcon(aboutURL).getImage();意思是再ResourceTest.class所处的当前目录下查找

    读取文本

    InputStream stream=ResourceTest.class.getResourceAsStream("about.txt");Scanner in=new Scanner(stream);
  • 还可以利用相对路径和绝对路径

10.1.4 密封

Java可以密封包,如果不密封包,其他类就有可能放在这个包中,进而访问包可以见性

如何密封?

  • 修改清单文件

    Name: com/mycompany/util/Sealed: trueName: com/mycompany/misc/Sealed: false
  • 然后利用上面所学的打包,或者更新包的清单文件。

10.2 Java Web Start

10.3 applet

10.4 应用程序首选项存储

  • 属性映射
  • 首选项API

10.4.1 属性映射

属性映射(property)是一种KEY/VALUE对的数据结构。常用来存放配置信息。
  • 三个特性

    • key和value都是String
    • 容易从文件读入或读出
    • 用二级表存放默认值
  • 实现这样的类叫java.util.Properties

  • 放入Key/value

    Properties settings=new Properties();setting.put("width","200");setting.put("title","Hello,World!");
  • 使用 store方法保存到文件,必须要检查异常,否则编译不通过

    FileOutputStream out = new FileOutputStream("a.out")settings.store(out,"hello");
  • 使用load加载这些文件

    FileInputStrem in = new FileInputStrem("a.out");settings.load(in);
  • 使用getProperty 获取value

    两种方式settings.getProperty("title"); 直接获得key=title的value,不存在返回nonesettings.getProperty("title","Default title");  不存在时返回第二个参数
  • 构造函数可以直接用别的Properties来初始化

    Properties defaultSettings= new Properties();Properties settings=new Properties(defaultSettings);
  • 以下是完整代码

    import java.util.*;import java.io.*;public class test{    public static void main(String args[])    {        Properties settings=new Properties();        settings.put("zhouyong","1111");        settings.put("luan","2222");        //wirte        try{            FileOutputStream out = new FileOutputStream("a.out");            settings.store(out,"hello");           }        catch (IOException ex)            {             ex.printStackTrace();            }        //read        try{                    FileInputStream in = new FileInputStream("a.out");        settings.load(in);           }        catch (IOException ex)            {             ex.printStackTrace();            }               }}

10.4.2 Preferences API

  • 一个不以平台变更的中心配置库,所有当前机器的java程序公用
  • 能通过xml来导入导出
  • value值可以为int ,等类型
  • 具体怎么用以后慢慢学
0 0