英语原文共 18 页,剩余内容已隐藏,支付完成后下载完整资料
部署
APPLICATIONS
和 APPLETS
▼ JAR 文件
▼ JAVA WEB START
▼ APPLETS
▼ 应用程序首选项的存储
493
目前,你应该习惯使用 Java编程语言,并且您已经对Java基本图形编程进行了相当全面的了解。现在你已经准备好为用户创建应用程序,你将学会如何打包它们以在用户计算机上进行部署。传统的部署选择是使用小应用程序,这是Java最初几年令人难以置信的炒作的原因。小程序是一种特殊的Java程序,具有Java功能的浏览器可以从Internet下载该小程序然后运行。希望使用户从安装软件的麻烦中解脱出来,并希望他们可以从具有Internet连接的任何启用Java的计算机或设备上访问其软件。
由于多种原因,小程序从未完全符合这些要求。因此,我们将从包装应用程序的说明开始本章。然后,我们转向Java Web Start机制,这是用于基于Internet的应用程序交付的替代方法,该机制解决了applet的一些问题。最后,我们介绍了applet,并向您展示了在哪种情况下您仍要使用它们。
我们还将讨论您的应用程序如何存储配置信息和用户首选项。
JAR 文件
打包应用程序时,您要给用户一个文件,而不是一个包含类文件的目录结构。 Java Archive(JAR)文件就是为此目的而设计的。 JAR文件可以同时包含类文件和其他文件类型,例如图像和声音文件。此外,使用熟悉的ZIP压缩格式压缩JAR文件。
提示:Java SE 5.0引入了一种新的压缩方案,称为“ pack200”,该方案经过专门调整以比通用ZIP压缩算法更有效地压缩类文件。 Sun声称类文件的压缩率接近90%。 有关更多信息,请参见http://java.sun.com/javase/6/docs/technotes/guide/deployment/deployment-guide/pack200.html。
您使用jar工具制作JAR文件。 (在默认的JDK安装中,它位于jdk / bin目录中。)制作新JAR文件的最常见命令使用以下语法:
jar cvf JARFileName File1 File2 . . .
例如:
jar cvf CalculatorClasses.jar *.class icon.gif
一般来说,jar命令是如下格式:
jar options File1 File2 . . .
表10–1列出了jar程序的所有选项。 它们类似于UNIX tar命令。
您可以将应用程序,程序组件(有时称为“ beans”,请参见第II卷第8章)和代码库打包到JAR文件中。 例如,JDK的运行时库包含在一个很大的文件rt.jar中。
Table 10–1 jar程序选项
选项 |
描述 |
c |
创建一个新的或空的存档,并向其中添加文件。 如果任何指定的文件名是目录,则jar程序将递归处理它们。 |
C |
临时更改目录。 例如,jar cvf JARFileName.jar -C classes * .class更改为classes子目录以添加类文件。 |
e |
在清单中创建一个入口点(请参见第496页的“可执行JAR文件”)。 |
f |
指定JAR文件名作为第二个命令行参数。 如果缺少此参数,则jar将把结果写到标准输出中(创建JAR文件时),或从标准输入中读取结果(提取或制表JAR文件时)。 |
i |
创建索引文件(用于加快大型档案中的查找速度)。 |
m |
将清单添加到JAR文件。 清单是对档案内容和来源的描述。 每个档案都有一个默认的清单,但是如果要验证档案的内容,则可以提供自己的清单。 |
M |
不为条目创建清单文件。 |
t |
显示目录。 |
u |
更新现有的JAR文件。 |
v |
生成详细的输出。 |
x |
提取文件。 如果提供一个或多个文件名,则仅提取那些文件。 否则,将提取所有文件。 |
0 |
无需ZIP压缩即可存储。 |
清单
除了类文件,图像和其他资源之外,每个JAR文件还包含一个清单文件,该清单文件描述了存档的特殊功能。
清单文件称为MANIFEST.MF,位于JAR文件的特殊META-INF子目录中。 最小的合法清单很无聊-只是
Manifest-Version: 1.0
复杂的清单可以包含更多条目。清单条目分为几部分。清单中的第一部分称为主要部分。它适用于整个JAR文件。后续条目可以指定命名实体的属性,例如单个文件,程序包或URL。这些条目必须以名称条目开头。各节用空白行分隔。 例如:例如:
Manifest-Version: 1.0 lines describing this archive
Name: Woozle.class lines describing this file Name: com/mycompany/mypkg/ lines describing this package
要编辑清单,请将要添加到清单的行放入文本文件中。
然后运行
jar cfm JARFileName ManifestFileName . . .
例如,使用清单创建新的JAR文件,
run jar cfm MyArchive.jar manifest.mf com/mycompany/mypkg/*.class
要更新现有JAR文件的清单,请将添加的内容放入文本文件,然后使用诸如
jar ufm MyArchive.jar manifest-additions.mf
可执行的JAR文件
从Java SE 6开始,您可以使用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命令:jar cvfm MyProgram.jar mainclass.mf files to add
注意:清单中的最后一行必须以换行符结尾。 否则,清单将无法正确读取。 产生仅包含Main-Class行而没有行终止符的文本文件是一个常见错误。
根据操作系统配置,您可以通过双击JAR文件图标来启动应用程序。 以下是各种操作系统的行为:
- 在Windows上,Java运行时安装程序为“ .jar”扩展名创建文件关联,该扩展名使用javaw -jar命令启动文件。 (与java命令不同,javaw命令不会打开shell程序窗口。)
- 在Solaris上,操作系统会识别JAR文件的“幻数”,并使用java -jar命令启动它。
- 在Mac OS X上,双击JAR文件时,操作系统会识别“ .jar”文件扩展名并执行Java程序。
但是,JAR文件中的Java程序与本机应用程序的感觉不同。 在Windows上,可以使用第三方包装器实用程序将JAR文件转换为Windows可执行文件。 包装器是Windows程序,具有熟悉的.exe扩展名,该扩展名可以找到并启动Java虚拟机(JVM),或者在找不到JVM时告诉用户该怎么做。 有许多商业和开源产品,例如JSmooth(http://jsmooth.sourceforge.net)和Launch4J(http://launch4j.sourceforge.net)。 开源安装程序生成器IzPack(http://izpack.org)还包含一个本地启动器。 有关此主题的更多信息,请参见http://www.javalobby.org/articles/java2exe。
在Macintosh上,情况要容易一些。 应用程序包实用程序MRJAppBuilder使您可以将JAR文件转换为一流的Mac应用程序。 有关更多信息,请参见http://。
java.sun.com/developer/technicalArticles/JavaLP/JavaToMac3。
资源
小程序和应用程序中使用的类通常使用关联的数据文件,例如
- 图片和声音文件;
- 带有消息字符串和按钮标签的文本文件; 或者
- 具有二进制数据的文件,例如,用于描述地图的布局。
在Java中,这样的关联文件称为资源。
注意:在Windows中,术语“资源”具有更特殊的含义。 Windows资源还包括图像,按钮标签等,但是它们被附加到可执行文件上,并可以通过标准的编程界面进行访问。 相反,Java资源存储为单独的文件,而不是类文件的一部分。 由每个程序决定访问和解释资源数据。
例如,考虑一个类AboutPanel,它显示一条消息,例如图10–1中的消息。
表 10–1 显示JAR文件中的资源
当然,下一版书籍中面板中的书籍标题和版权年份将更改。 为了便于跟踪此更改,我们希望将文本放在文件中,而不是将其硬编码为字符串。
但是,您应该在哪里放置诸如about.txt之类的文件? 当然,如果将其与其余程序文件一起简单放置在JAR文件中,将很方便。
类加载器知道如何搜索类文件,直到将它们放置在类路径,存档或Web服务器中的某个位置。 资源机制为非类文件的文件提供了相同的便利。 以下是必要的步骤:
获取具有资源的类的Class对象,例如AboutPanel.class.
- 如果资源是图像或音频文件,请调用getResource(filename)以将资源位置获取为URL。 然后使用getImage或getAudioClip方法读取它。
- 对于图像或音频文件以外的资源,请使用getResourceAsStream方法读取文件中的数据。
关键是类加载器记住如何定位该类,然后它可以在同一位置搜索关联的资源。
例如,要使用图像文件about.gif制作图标,请执行以下操作:
URL url = ResourceTest.class.getResource('about.gif');
Image img = Toolkit.getDefaultToolkit().getImage(url);
这意味着“将about.gif文件定位在找到ResourceTest类的位置。”
要读入about.txt文件,请使用以下命令:
InputStream stream = ResourceTest.class.getResourceAsStream('about.txt');
Scanner in = new Scanner(stream);
可以将资源文件放置在子目录中,而不是将资源文件放置在与类文件相同的目录中。 您可以使用分层资源名称,例如data / text / about.txt
这是一个相对的资源名称,相对于正在加载资源的类的包进行解释。 请注意,无论实际存储资源文件的系统上的目录分隔符是什么,都必须始终使用/分隔符。 例如,在Windows文件系统上,资源加载器会自动将/转换为分隔符。
以/开头的资源名称称为绝对资源名称。 它的定位方式与在包中定位类的方式相同。 例如,资源/corejava/title.txt位于corejava目录中(它可能是类路径的子目录,位于
JAR文件,或者对于小程序,在Web服务器上)。
资源的自动加载功能就是自动执行文件
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[409969],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。