- 写在前面的话
- 引言
- 第 1 章 对象入门
- 第 2 章 一切都是对象
- 第 3 章 控制程序流程
- 第 4 章 初始化和清除
- 第 5 章 隐藏实施过程
- 第 6 章 类再生
- 第 7 章 多形性
- 第 8 章 对象的容纳
- 第 9 章 违例差错控制
- 第 10 章 Java IO 系统
- 第 11 章 运行期类型鉴定
- 第 12 章 传递和返回对象
- 第 十三 章 创建窗口和程序片
- 第 14 章 多线程
- 第 15 章 网络编程
- 第 16 章 设计范式
- 第 17 章 项目
- 附录 A 使用非 JAVA 代码
- 附录 B 对比 C++和 Java
- 附录 C Java 编程规则
- 附录 D 性能
- 附录 E 关于垃圾收集的一些话
- 附录 F 推荐读物
13.18.4 Bean 的封装
在我们可以安放一个 Bean 到一个可激活 Bean 的可视化构建工具中前,它必须被放入到标准的 Bean 容器里,也就是包含 Bean 类和一个表示“这是一个 Bean”的清单文件的 JAR(Java ARchive,Java 文件)文件中。清单文件是一个简单的紧随事件结构的文本文件。对于 BangBean 而言,清单文件就像下面这样:
Manifest-Version: 1.0
Name: bangbean/BangBean.class
Java-Bean: True
其中,第一行指出清单文件结构的版本,这是 SUN 公司在很久以前公布的版本。第二行(空行忽略)对文件命名为 BangBean.class。第三行表示“这个文件是一个 Bean”。没有第三行,程序构建工具不会将类作为一个 Bean 来认可。
唯一难以处理的部分是我们必须肯定“Name:”字段中的路径是正确的。如果我们回顾 BangBean.java,我们会看到它在 package bangbean(因为存放类路径的子目录称为“bangbean”)中,并且这个名字在清单文件中必须包括封装的信息。另外,我们必须安放清单文件在我们封装路径的根目录上,在这个例子中意味着安放文件在 bangbean 子目录中。这之后,我们必须从同一目录中调用 Jar 来作为清单文件,如下所示:
jar cfm BangBean.jar BangBean.mf bangbean
这个例子假定我们想产生一个名为 BangBean.jar 的文件并且我们将清单放到一个称为 BangBean.mf 文件中。
我们可能会想“当我编译 BangBean.java 时,产生的其它类会怎么样呢?”哦,它们会在 bangbean 子目录中被中止,并且我们会注意到上面 jar 命令行的最后一个自变量就是 bangbean 子目录。当我们给 jar 子目录名时,它封装整个的子目录到 jar 文件中(在这个例子中,包括 BangBean.java 的源代码文件——对于我们自己的 Bean 我们可能不会去选择包含源代码文件。)另外,如果我们改变主意,解开打包的 JAR 文件,我们会发现我们清单文件并不在里面,但 jar 创建了它自己的清单文件(部分根据我们的文件),称为 MAINFEST.MF 并且安放它到 META-INF 子目录中(代表“meta-information”)。如果我们打开这个清单文件,我们同样会注意到 jar 为每个文件加入数字签名信息,其结构如下:
Digest-Algorithms: SHA MD5
SHA-Digest: pDpEAG9NaeCx8aFtqPI4udSX/O0=
MD5-Digest: O4NcS1hE3Smnzlp2hj6qeg==
一般来说,我们不必担心这些,如果我们要做一些修改,可以修改我们的原始的清单文件并且重新调用 jar 以为我们的 Bean 创建了一个新的 JAR 文件。我们同样也可以简单地通过增加其它的 Bean 的信息到我们清单文件来增加它们到 JAR 文件中。
值得注意的是我们或许需要安放每个 Bean 到它自己的子目录中,因为当我们创建一个 JAR 文件时,分配 JAR 应用目录名并且 JAR 放置子目录中的任何文件到 JAR 文件中。我们可以看到 Frog 和 BangBean 都在它们自己的子目录中。
一旦我们将我们的 Bean 正确地放入一个 JAR 文件中,我们就可以携带它到一个可以激活 Bean 的编程环境中使用。使用这种方法,我们可以从一种工具到另一种工具间交替变换,但 SUN 公司为 Java Beans 提供了免费高效的测试工具在它们的“Bean Development Kit,Bean 开发工具”(BDK)称为“beanbox”。(我们可以从 www.javasoft.com 处下载。)在我们启动 beanbox 前,放置我们的 Bean 到 beanbox 中,复制 JAR 文件到 BDK 的“jars”子目录中。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论