39、JavaBeans开发:从基础到实践

JavaBeans开发:从基础到实践

1. BDK概述

BDK(JavaBeans开发工具包)包含以下内容:
- BeanBox :一个JavaBeans容器,可用于操作示例Bean和创建自己的Bean。
- 多个示例Bean :包括显示杂耍动画的Juggler Bean、显示3D分子的Molecule Bean以及用户界面组件OrangeButton等。
- BeanBox的完整Java源代码 :方便开发者深入了解其实现原理。
- Makefiles :配置脚本,可用于重新创建BDK。
- 来自Sun的JavaBeans和BeanBox教程 :帮助开发者快速上手。

2. BDK安装

BDK的Windows安装程序可能与当前版本的Java 2存在兼容性问题。如果无法安装,可以尝试使用独立于平台的ZIP存档版本。BDK大小约为2.4MB,在56K拨号上网连接下下载可能需要长达15分钟,而在高速连接下不到两分钟。在等待文件传输完成时,务必阅读BDK下载页面上的安装说明和最新注意事项。为了使BDK正常运行,可能需要更改系统的CLASSPATH设置。

BDK有两种形式可供下载:
- 单一可执行文件 :运行该文件即可安装软件。
- ZIP存档 :BDK中的所有文件都存储在存档的beans文件夹中。将该文件夹从存档复制或移动到计算机上的文件夹(例如Java 2的主安装文件夹)。

使用.EXE文件安装时,需要选择BDK将使用的Java虚拟机,建议选择在日常运行Java 2程序时使用的Java解释器。

3. JavaBeans与其他类的区别

JavaBeans与其他Java类的主要区别在于,Beans可以与开发环境进行交互,就像用户在运行它们一样在开发环境中运行。开发环境也可以直接与Beans交互,调用它们的方法并设置其变量的值。

4. Bean容器

JavaBeans和Swing都使用容器,即用于容纳其他组件的用户界面组件。JavaBeans开发在Bean容器中进行,BDK包含的BeanBox是一个基本的容器,可用于以下操作:
1. 保存Bean
2. 加载已保存的Bean
3. 将Bean拖放到窗口中进行布局
4. 移动和调整Bean的大小
5. 编辑Bean的属性
6. 配置Bean
7. 将生成事件的Bean与事件处理程序关联
8. 将不同Bean的属性相互关联
9. 将Bean转换为小程序
10. 从Java存档(jar文件)中添加新的Bean

要运行BeanBox应用程序,需前往BDK安装文件夹并打开beanbox子文件夹。该子文件夹包含两个可用于运行BeanBox的批处理命令文件:Windows系统使用run.bat,Linux和Solaris系统使用run.sh。这些批处理文件使用在BDK安装过程中选择的Java解释器(可能是Java 2解释器)来加载BeanBox应用程序,运行后将打开四个窗口:
| 窗口名称 | 位置 | 功能 |
| ---- | ---- | ---- |
| BeanBox组合窗口 | 最大窗口 | 排列Bean并创建它们之间的关联 |
| 工具箱窗口 | 顶部左侧 | 列出可选择放置在组合窗口中的几个Bean |
| 属性窗口 | 顶部右侧 | 用于配置Bean |
| 方法跟踪器窗口 | 右下角 | 提供有关组件在BeanBox中如何交互的更多信息 |

大多数工作将在组合窗口中完成,该窗口类似于绘图程序(如Adobe Illustrator)的主窗口,所有Bean都在该窗口中进行放置、重新排列、对齐和选择编辑。

5. 放置Bean

在BeanBox中放置Bean的步骤如下:
1. 在工具箱窗口中选择要放置的Bean,此时光标将变为十字线符号。
2. 使用十字线在主组合窗口中的任何位置单击,即可将所选类型的Bean放置在其中。建议将Bean放置在组合窗口的中间附近。
3. 如果需要移动Bean,可以使用“编辑”菜单中的“剪切”和“粘贴”命令,也可以将光标放在Bean的边缘,直到光标变为一组方向箭头,然后拖动Bean到新位置并释放鼠标。

例如,在工具箱窗口中单击Juggler标签,然后在主组合窗口的中间位置单击,主窗口中将出现一个杂耍动画,动画中的杂耍者是Java语言的官方吉祥物Duke,他抛接的对象是巨型Bean。

6. 调整Bean的属性

当在BeanBox的主组合窗口中选择一个Bean时,其可编辑属性(如果有)将显示在属性窗口中。以Juggler Bean为例,它有三个可编辑属性:debug、animationRate和name。

更改JavaBean的属性会直接反映在Bean中。例如,为Juggler Bean的animationRate属性赋予更高的整数值,动画的每一帧之间的停顿将变长;如果减小该属性值,动画将加速。更改animationRate属性后,按Tab键或单击其他属性的值跳过该属性,Bean将相应地发生变化。可以尝试输入极端值(如1和1000)来观察Juggler Bean的响应。

Bean的可编辑属性可以通过Bean内部的公共方法来建立。每个可以设置的属性都有一个set()方法,其全名与BeanBox属性窗口中的属性名称匹配;每个可以读取值的属性都有一个相应的get()方法。像BeanBox这样的JavaBeans开发环境使用反射来查找这些方法,从而使开发者可以在设计时或程序运行时处理这些属性。

例如,Juggler Bean的animationRate属性可能有以下两个方法:

public int getAnimationRate(){
    return animRate;
}
public void setAnimationRate(int newRate) {
    animRate = newRate;
}

在这两个方法中,animRate是一个私有变量,用于确定杂耍动画帧之间的停顿。通过为这些方法名称使用set和get前缀,Juggler Bean的开发者表明animationRate属性可以在像BeanBox这样的JavaBeans开发环境中进行更改。

BeanBox和所有遵循Sun标准的Bean开发工具一样,调用Bean的公共get()方法来确定要在属性窗口中包含哪些属性。当其中一个属性发生更改时,将调用相应的set()方法,并将更改后的值作为参数传递。Bean的开发者可以通过提供一个BeanInfo类来覆盖这种行为,该类指示从Bean开发环境中应该可以访问的方法、属性、事件和其他内容。

在所有面向对象编程中,将变量设为私有并使用get()和set()方法来读取和更改它是一个很好的原则,这种做法称为封装,用于控制对象如何被其他对象访问。对象封装得越好,其他对象就越难错误地使用它。

7. 创建Bean之间的交互

BeanBox的另一个用途是建立不同Bean之间的交互。以下是一个示例,展示如何创建交互:
1. 在BeanBox的主组合窗口中任意位置放置两个ExplicitButton Bean。如果它们与Juggler Bean或彼此重叠,将它们移开。
2. 给其中一个按钮添加标签“Stop!”,并将其背景颜色更改为红色;给另一个按钮添加标签“Go!”,并将其背景颜色更改为绿色。
3. 选择其中一个ExplicitButton Bean,选择“编辑”菜单中的“事件” -> “按钮按下” -> “actionPerformed”,此时会出现一条红色线条连接按钮和光标。
4. 将红色线条拖动到Juggler Bean上,然后单击以建立两个Bean之间的关联。建立关联后,将出现一个EventTargetDialog窗口,列出目标Bean中的不同方法。
5. Juggler Bean包含两个用于停止或启动杂耍动画的方法:stopJuggling()和startJuggling()。将“Stop!”按钮与Juggler Bean的stopJuggling()方法关联,将“Go!”按钮与startJuggling()方法关联。

通过建立这三个Bean之间的交互,就创建了一个简单的、可显示、启动和停止动画的Java程序。

8. 创建JavaBeans程序

在共享界面上放置一个或多个Bean、设置它们的属性并建立它们之间的交互后,就创建了一个Java程序。

在BeanBox中保存项目可以使用“文件”菜单中的“保存”命令,该命令可以将以下信息保存到文件中:
- 当前配置的Bean
- Bean的排列方式
- Bean所占用窗口的大小
- Bean之间的交互

但这并不会将项目保存为可以在BeanBox外部运行的Java程序。要保存为可运行的形式,可以使用“文件”菜单中的“MakeApplet”命令。该命令需要提供两个信息:小程序主类文件的名称和包含运行小程序所需的所有文件(包括类文件和其他数据)的jar存档的名称。

指定这些信息后,将创建一个带有示例HTML页面的小程序,该HTML文件将放置在包含小程序jar存档的同一文件夹中。可以使用appletviewer或任何配备Java 2插件的Web浏览器加载该页面。

以下是BeanBox为名为JugglingFool的小程序生成的applet标签:

<html>
<head>
<title>Test page for JugglingFool as an APPLET</Title>
</head>
<body>
<h1>Test for JugglingFool as an APPLET</h1>
This is an example of the use of the generated
JugglingFool applet.  Notice the Applet tag requires several
archives, one per JAR used in building the Applet
<p>
<applet
    archive="./JugglingFool.jar,./support.jar
        ,./buttons.jar
        ,./juggler.jar
    "
    code="JugglingFool"
    width=382
    height=513
>
Trouble instantiating applet JugglingFool!!
</applet>
</body>
</html>
9. 使用其他Bean

使用预打包组件进行软件开发是一种快速应用开发(Rapid Application Development,简称RAD)的形式。RAD常用于快速创建软件的工作版本,用于演示或原型设计。例如,使用Microsoft Visual Basic创建Visual C++程序的原型,Visual Basic的图形用户界面设计速度快,使其成为比更复杂的Visual C++更有效的原型设计解决方案。

JavaBeans使RAD开发在Java软件开发中更为常见。开发者可以使用现有的JavaBeans组件迅速拼凑出一个可运行的程序。

可以从Sun和其他开发者那里获取数百个Bean,以下是一些获取Bean的网站:
- JARS(Java Applet Ratings Service):包含JavaBeans资源部分,网址为http://www.jars.com/jars_resources_javabeans.html
- JavaWorld Magazine的开发者工具指南:http://www.javaworld.com/javaworld/tools/jw-tools-index.html
- Sun的JavaBeans主页:http://java.sun.com/beans

Beans以jar存档的形式打包。如果下载了一个Bean并希望它出现在BeanBox的工具箱窗口中,将该Bean的jar存档保存到BDK安装文件夹的jars子文件夹中。

10. 总结

与支持它们的集成开发环境结合使用时,Beans可以实现Java程序的快速应用开发。虽然在使用JavaBeans开发自己的程序之前,建议寻找一个真正的开发工具,但可以使用BDK来评估Beans对自己编程任务的适用性。同时,也应该利用互联网上的JavaBeans资源,许多网上可用的Beans已经可以完成在自己程序中需要处理的任务,使用这些Beans可以减少从头创建的工作量。

11. Q&A
  • 问题1:JavaBeans开发工具包会升级为功能齐全的Bean编程工具吗?
    • 答案 :Sun在其网站上表示,BeanBox的开发于1999年结束,现在仅用于“教育和演示目的”。Sun继续表示,BDK旨在测试Beans并提供Beans在开发环境中应如何使用的参考版本。专业编程工具(如Visual Café、Sun ONE Studio等)似乎仍将是JavaBeans开发的最佳选择。
  • 问题2:在JugglingFool示例中,animationRate属性在setAnimationRate()和getAnimationRate()方法中的大小写不同,原因是什么?
    • 答案 :大小写不同是由于Java程序的命名约定:所有变量和方法名以小写字母开头,变量名中除第一个单词外的所有单词以单个大写字母开头。
12. 测验

以下是一些复习题及答案:
1. 如果开发一个具有返回整数的getWindowHeight()方法和setWindowHeight(int)方法的Bean,在Bean开发环境中会显示什么属性?
- a. WindowHeight
- b. windowHeight
- c. 除非在BeanInfo文件中也进行了设置,否则不会显示任何属性
- 答案 :b。不过也可以使用BeanInfo文件来排除windowHeight作为属性显示在Bean开发环境中。
2. 什么时候可以修改Bean的属性?
- a. 设计时
- b. 运行时
- c. 两者均可
- 答案 :c。如Juggler示例所示,Beans在设计时甚至也可以运行。
3. 如何更改使用BDK创建的小程序的大小?
- a. 在创建小程序后编辑BDK生成的HTML。
- b. 编辑BeanBox的属性。
- c. 在创建小程序之前调整BeanBox的大小。
- 答案 :c。不过答案a也是正确的,因为可以直接编辑HTML并修改APPLET标签的HEIGHT和WEIGHT属性。

13. 认证练习

以下是一个可能在Java编程认证测试中遇到的问题,请在不查看前面内容或使用Java编译器测试代码的情况下回答。

public class NameDirectory {
    String[] names;
    int nameCount;
    public NameDirectory() {
        names = new String[20];
        nameCount = 0;
    }
    public void addName(String newName) {
        if (nameCount < 20)
            // 请在此处填写代码
    }
}

if 语句块中,应添加以下代码来实现添加新名称的功能:

names[nameCount] = newName;
nameCount++;

综上所述,JavaBeans开发为Java程序员提供了一种高效、便捷的方式来创建和管理Java程序。通过使用BDK和现有的Beans资源,可以快速搭建出功能丰富的应用程序。同时,了解JavaBeans的基本原理和操作方法,对于通过Java编程认证测试也具有重要意义。

JavaBeans开发:从基础到实践

14. 开发流程总结

为了更清晰地展示JavaBeans的开发流程,下面用mermaid流程图来呈现:

graph LR
    A[安装BDK] --> B[运行BeanBox]
    B --> C[放置Bean]
    C --> D[调整Bean属性]
    D --> E[创建Bean交互]
    E --> F[创建JavaBeans程序]
    F --> G[保存项目]
    G --> H[生成可运行小程序]

整个开发流程可以概括为以下步骤:
1. 安装BDK :根据系统情况选择合适的安装方式,注意可能存在的兼容性问题和CLASSPATH设置。
2. 运行BeanBox :进入BDK安装文件夹的beanbox子文件夹,根据系统类型运行相应的批处理文件。
3. 放置Bean :在工具箱窗口选择Bean,在主组合窗口放置。
4. 调整Bean属性 :在属性窗口修改Bean的可编辑属性。
5. 创建Bean交互 :通过事件关联不同的Bean。
6. 创建JavaBeans程序 :完成Bean的放置、属性设置和交互建立。
7. 保存项目 :使用“文件” - “保存”命令保存项目信息。
8. 生成可运行小程序 :使用“文件” - “MakeApplet”命令生成可运行的小程序。

15. 常见问题及解决方法

在使用BDK和开发JavaBeans过程中,可能会遇到一些问题,以下是常见问题及解决方法的列表:
| 问题描述 | 解决方法 |
| ---- | ---- |
| BDK的Windows安装程序与当前Java 2版本不兼容 | 尝试使用ZIP存档版本的BDK |
| 在工具箱窗口找不到ExplicitButton Bean | 前往http://www.java21pro.com/ 下载buttons.jar和test.jar文件,保存到BDK安装文件夹的jars子文件夹中,关闭并重新运行BeanBox |

16. 封装的重要性

在JavaBeans开发中,封装是一个重要的原则。通过将变量设为私有,并使用get()和set()方法来访问和修改变量,能够更好地控制对象的访问,提高代码的安全性和可维护性。以下是封装的优点总结:
1. 数据隐藏 :外部对象无法直接访问私有变量,只能通过公共的get()和set()方法进行操作,避免了数据被非法修改。
2. 提高可维护性 :当需要修改变量的实现时,只需要修改get()和set()方法,而不会影响到使用该变量的其他代码。
3. 增强安全性 :可以在set()方法中添加验证逻辑,确保变量的值在合法范围内。

17. 快速应用开发(RAD)的优势

JavaBeans使得RAD开发在Java软件中更加普遍,其优势主要体现在以下几个方面:
1. 节省时间 :利用现有的JavaBeans组件,开发者可以快速搭建出一个可运行的程序,减少了从头开始编写代码的时间。
2. 降低成本 :对于一些简单的项目或原型开发,使用RAD可以避免投入过多的人力和时间成本。
3. 便于演示和验证 :可以快速创建一个工作版本的软件,用于演示和验证项目的可行性,及时获取反馈并进行调整。

18. 代码示例分析

下面对前面提到的Juggler Bean的animationRate属性的代码进行分析:

public int getAnimationRate(){
    return animRate;
}
public void setAnimationRate(int newRate) {
    animRate = newRate;
}
  • getAnimationRate()方法 :用于获取animationRate属性的值,返回一个整数。
  • setAnimationRate(int newRate)方法 :用于设置animationRate属性的值,接收一个整数参数。

通过这两个方法,JavaBeans开发环境可以方便地读取和修改animationRate属性的值,实现对Juggler Bean动画速度的控制。

19. 总结与展望

JavaBeans开发为Java程序员提供了一种高效、便捷的开发方式。通过使用BDK和现有的Beans资源,可以快速创建出功能丰富的Java程序。同时,了解JavaBeans的基本原理和操作方法,对于提高编程效率和代码质量具有重要意义。

在未来的Java开发中,JavaBeans可能会继续发挥重要作用。随着技术的不断发展,可能会出现更多功能强大的Beans组件和开发工具,进一步推动Java软件开发的快速发展。开发者可以持续关注相关资源,不断学习和掌握新的技术,以适应不断变化的开发需求。

总之,掌握JavaBeans开发技术,将为开发者在Java领域的发展带来更多的机会和优势。无论是进行小型项目的快速开发,还是参与大型项目的开发,JavaBeans都将是一个有力的工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值