第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: true Name: 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,不存在返回none settings.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 ,等类型
  • 具体怎么用以后慢慢学

[core java学习笔记][第十章部署应用程序]的更多相关文章

  1. Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档

    今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...

  2. [core java学习笔记][第四章对象与类]

    4.3 用户自定义类 4.3.1 类数组的声明 需要两次new Employee[]=staff=new Employedd[3]; staff[0]=new Employedd(参数列表); sta ...

  3. Core Java 学习笔记——2.基本数据类型&类型转换

    数据类型(8种基本类型:int/short/long/byte/float/double/char/boolean) 整型 int 4字节 -2 147 483 648~2 147 483 647 s ...

  4. [core java学习笔记][第十一章异常断言日志调试]

    第11章 异常,断言,日志,调试 处理错误 捕获异常 使用异常机制的技巧 使用断言 日志 测试技巧 GUI程序排错技巧 使用调试器 11.1 处理错误 11.1.1异常分类 都继承自Throwable ...

  5. [core java学习笔记][第六章接口与内部类]

    接口域内部类 接口 描述类具有什么功能,不给出具体实现. 内部类 用于设计协作关系的类集合 代理 实现任意接口的对象. 6.1 接口 接口声明 public interface Comparable ...

  6. [core Java学习笔记][第一二三章基本语法]

    基本语法 1 Java 简单的类型 1.1 一些常量 正无穷大 Double.POSITVE_INFINITY 负无穷大 Double.NEGATIVE_INFINITY 不存在 Double.NaN ...

  7. [core java学习笔记][第五章继承]

    5.1 类.超类和子类 定义 class Manager extends Employee { 添加方法和域 } 权限 派生类不能使用基类的私有变量 派生类调用基类的方法 利用super这个关键词 s ...

  8. Java学习笔记-13.创建窗口和程序片

    1.init()方法:程序片第一次被创建,初次运行初始化程序片时调用. start()方法:每当程序片进入web浏览器中,并且允许程序片启动他的常规操作时调用(特殊的程序片被stop()关闭):同样在 ...

  9. 疯狂Java学习笔记(72)-----------大话程序猿面试

    大话程序猿面试 10个我最喜欢问程序猿的面试问题 程序猿面试不全然指南 10个经典的C语言面试基础算法及代码 程序猿的10大成功面试技巧 程序猿选择公司的8个标准 编程开发 8个值得关注的PHP安全函 ...

随机推荐

  1. Layer中自定义属性的动画

    转载自:http://blog.jobbole.com/69211/ 默认情况下,CALayer 及其子类的绝大部分标准属性都可以执行动画,无论是添加一个 CAAnimation 到 Layer(显式 ...

  2. work staff

    培训一周,很抓狂.不是抓狂培训本身,是自己听不懂,培训还是有用的. 上周四接到一个task,关于checklist.因为组里没有人用过,所以遇到一些问题,本来不应该是一个复杂的工作,但是我需要一个一个 ...

  3. MySQL percona-toolkit工具包的使用教程

    percona-toolkit工具包的使用教程之介绍和安装http://blog.chinaunix.net/uid-20639775-id-3206802.htmlpercona-toolkit工具 ...

  4. C#基本数据类型与C++区别

    与C++不同的地方: char占两个字节存Unicode字符, long long 改为 long ; unsize ... 改为 u... 新增: byte占1个字节,类似与C++char, sby ...

  5. 技巧集:nginx作代理时,查看请求被转发到哪台服务器

    使用Nginx代理多台服务器实行负载的时候,如何查看某一个请求被转发到哪台服务器上呢? upstream demo { server 127.0.0.1:8781; server 127.0.0.1: ...

  6. windbg vmware win7联机调试环境搭建

    接下来设置虚拟机启动模式,可以直接设置现在的虚拟机启动项为debug模式 或者直接新建一个启动项目 bcdedit /dbgsettings {serial [baudrate:value][debu ...

  7. 【Nutch2.2.1源代码分析之5】索引的基本流程

    一.各个主要类之间的关系 SolrIndexerJob extends IndexerJob 1.IndexerJob:主要完成 2.SolrIndexerJob:主要完成 3.IndexUtil:主 ...

  8. android 点击水波纹效果

    这里是重点,<ripple>是API21才有的新Tag,正是实现水波纹效果的; 其中<ripple android:color="#FF21272B" .... ...

  9. Halloween party

    https://www.hackerrank.com/challenges/halloween-party def main(): t = int(raw_input()) for _ in rang ...

  10. ASP.NET学习笔记——ASP.NET应用程序

    0 剖析ASP.NET应用程序 用户运行ASP.NET应用程序,不是直接运行,而是使用浏览器(比如IE)通过HTTP请求一个特定的URL(如http://www.mysite.com/mypage.a ...