具体描述
本书基于SUN公司的JDK1.2版本,全面地介绍了JavaBean组件技术。全书分为3个部分,共19章和3个附录。第一部分介绍了必要的基础知识和背景知识。第二部分详述了JavaBean程序设计规范及其API 支持,这部分是本书的主要内容,力求使读者比较深入地理解JavaBean 的概念并掌握JavaBean 的应用。第三部分介绍了许多JavaBean程序设计以及开发环境方面的知识。附录给出了一些快速参考信息。
本书适用于有一定Java知识的具有各种技术背景和不同程度编程经验的读者,也可供那些只希望了解JavaBean组件技术的读者参考。
作者简介
目录信息
第1章 基于组件的软件开发
1.1 现代软件工业面临的问题
1.2 Java革命
1.2.1 Java的平台独立性
1.2.2 Java很强大
1.2.3 Java很简单
1.2.4 Java适用于Internet编程
1.3 基于组件的软件开发
1.3.1 基于组件行业的特征
1.3.2 通用软件组件
1.4 通用软件组件基础
1.4.1 可视化和非可视化组件
1.4.2 非可视化组件
1.4.3 软件构造块
1.4.4 组件模型
1.5 小结
第2章 JavaBean概述
2.1 JavaBean的任务
2.2 JavaBean如何实现其设计目标
2.2.1 简单性和紧凑性
2.2.2 可移植性
2.2.3 以Java为依托
2.2.4 应用程序构造器支持
2.2.5 分布式计算支持
2.3 JavaBean与Java
2.4 JavaBean的基本概念
2.4.1 JavaBean到底是什么
2.4.2 属性、事件和方法
2.4.3 设计环境和运行环境
2.4.4 安全性问题
2.4.5 本地活动
2.4.6 连接到远程状态的JavaBean组件
2.4.7 非可视化JavaBean组件
2.4.8 多线程
2.4.9 国际化
2.5 统一数据传送(UDT)
2.6 对JavaBean 组件的3种观点
2.6.1 JavaBean组件实现者
2.6.2 应用程序开发者
2.6.3 最终用户
2.7 JavaBean的使用方案
2.7.1 在应用程序构造器工具中使用bean
2.7.2 在手工编写的代码中使用bean
2.8 小结
第3章 JavaBeanAPI概述
3.1 属性管理
3.1.1 访问者(avcessor)方法
3.1.2 索引属性
3.1.3 关联属性和限制属性
3.2 自检
3.2.1 反射(reflection)和设计模式
3.2.2 显式bean信息
3.2.3 自检器
3.3 事件处理
3.3.1 单目(unicast)事件源和多目(multicast)事件源
3.3.2 事件适配器
3.4 持久性
3.5 应用程序构造工具
3.5.1 属性编辑器(editor)和属性单(sheet)
3.5.2 定制器(customizer)
3.6 java.beans包
3.7 小结
第4章 测试JavaBean的Bea nBox容器
4.1 安装JDK和BDK
4.2 启动BeanBox
4.3 使用BeanBox
4.3.1 向BeanBox窗口中添加一个bean
4.3.2 在BeanBox窗口中选择一个bean
4.3.3 移动bean和调整bean的尺寸
4.3.4 编辑一个bean的属性
4.3.5 使用bean的定制器
4.3.6 连接一个事件句柄
4.3.7 连接一个关联属性
4.3.8 存储和恢复bean
4.3.9 获得关于一个bean 的自检报告
4.3.10 在BeanBox中添加自己创建的bean
4.4 BDK提供的示例bean
4.4.1 BeanBoxbean
4.4.2 BridgeTesterzbean
4.4.3 ChangeReporterbean
4.4.4 EventMonitorbean
4.4.5 JDBCSELECTbean
4.4.6 JellyBeanbean
4.4.7 Jugglerbean
4.4.8 Moleculebean
4.4.9 QuoteMonitorbean
4.4.1 0SorterBean
4.4.11 TickTockbean
4.4.12 Voterbean
4.4.13 OurButtonbean
4.4.14 ExplicitButtonbean
4.4.15 OrangeButtonbean
4.5 演示示例bean
4.6 小结
第5章 使用BeanBox创建和测试bean
5.1 创建和测试简单的bean
5.1.1 创建一个简单的bean
5.1.2 检验SimpleBean组件的属性和事件
5.1.3 产生bean自检报告
5.1.4 SimpleBean的makefile文件
5.2 使用BeanBox实现属性
5.3 在BeanBox中处理事件
5.3.1 BeanBox是如何发现bean的事件功能的
5.3.2 在BeanBox中查看bean的事件
5.3.3 在BeanBox中连接事件
5.3.4 事件适配器类
5.3.5 BeanBox提供的EventMonitor演示bean
5.4 使用BeanBox 产生Applet
5.5 小结
第2部分 JaVaBean组件规范和API支持
第6章JavaBean属性
6.1 属性基础
6.2 访问者方法
6.2.1 getter和setter方法
6.2.2 使用访问者方法
6.3 JavaBean属性类别
6.3.1 单值属性
6.3.2 索引属性
6.3.3 关联属性
6.3.4 限制属性
6.4 属性的JavaBeanAPI支持
6.4.1 PropertyChangeEvent类
6.4.2 PropertyChangeSupport类
6.4.3 PropertyVetoException异常
6.4.4 VetoableChangeSupport类
6.4.5 PropertyChangeListener接口
6.4.6 VetoableChangeListener接口
6.5 小结
第7章 使用JavaBean属性
7.1 使用属性
7.1.1 在脚本环境中使用属性
7.1.2 编程中使用属性
7.1.3 可视化地使用属性
7.1.4 属性和bean的持久性
7.2 实现简单属性
7.3 实现索引属性
7.3.1 实现基本的索引属性
7.3.2 OurListBox示例bean
7.3.3 索引属性编辑器
7.4 实现关联属性
7.4.1 实现和测试基本的关联属性
7.4.2 关联属性的事件机制
7.4.3 源bean中实现关联属性支持
7.4.4 实现关联属性监听器
7.4.5 BeanBox中的关联属性
7.5 实现限制属性
7.5.1 源bean中实现限制属性支持
7.5.2 实现限制属性监听器
7.5.3 BeanBox中的限制属性
7.5.4 限制属性设计模式小结
7.6 小结
第8章 JDK1.1事件模型
8.1 JDK1.0事件模型
8.1.1 JDK1.0事件模型的概况
8.1.2 JDK1.0事件模型中的问题
8.2 JDK1.1事件模型中的相关对象
8.3 javaawt.event包
8.3.1 监听器接口
8.3.2 AWTEvent子类
8.3.3 适配器类
8.4 单目事件源和多目事件源
8.5 小结
第9章 处理JavaBean事件
9.1 JavaBean事件基础
9.2 事件状态对象
9.3 事件监听器
9.4 事件源
9.5 事件适配器
9.6 事件分发
9.7 JavaBean 事件实用程序举例
9.7.1 WaterEventObject对象
9.7.2 WaterListener监听器接口
9.7.3 WaterSourcebean 类
9.7.4 Valvebean类
9.7.5 Pipebean类
9.7.6 测试Wat erSource、Valve和Pipe bean
9.8 JavaBean事件的API支持
9.8.1 EventObject类
9.8.2 EventListener接口
9.9 小结
第10章 Java核心反射和JavaBean自检
10.1 Java核心反射概述
10.2 Java核心反射的应用程序接口
10.2.1 java.lang.reflect程序包
10.2.2 java.lang.Class类
10.3 JavaBean自检基础
10.4 自检的作用
10.5 设计模式
10.5.1 属性设计模式
10.5.2 事件设计模式
10.5.3 方法设计模式
10.5.4 Java核心反射与设计模式
10.6 显式地提供bean自检信息
10.7 使用BeanInfo提供显式信息
10.7.1 创建一个BeanInfo类
10.7.2 使用BeanInfo控制bean表现的特征
10.7.3 特征描述器
10.8 自检器
10.9 自检和安全性
10.10 小结
第11章 JavaBean自检的API支持
11.1 BeanDescriptor类
11.2 EventSetDescriptor类
11.3 FeatureDescriptor类
11.4 IndexedPropertyDescriptor类
11.5 IntrospectionException异常
11.6 Introspector类
11.7 MethodDescriptor类
11.8 ParameterDescriptor类
11.9 PropertyDescriptor类
11.10 SimpleBeanInfo类
11.11 BeanInfo接口
11.12 小结
第12章 JavaBean持久性
12.1 持久性基础
12.2 需要持久存储的信息
12.3 持久存储的场所
12.4 持久性混合处理方法
12.5 对象序列化
12.6 控制序列化过程
12.6.1 默认序列化:实现Serializable接口
12.6.2 使用transient关键字有选择地序列化
12.6.3 使用writeObject()和readObject()方法定制序列化
12.6.4 实现自己的序列化:Externalizable接口
12.7 版本化(versioning)
12.8 使用JavaBean持久性的一些原则
12.9 JavaBean持久性的API支持
12.9.1 DataOutput接口
12.9.2 Datalnput接口
12.9.3 ObjectOutput接口
12.9.4 ObjectInput接口
12.9.5 ObjectOutputStream类
12.9.6 ObjectInputStream类
12.10 小结
第13章 JavaBean定制
13.1 定制基础
13.1.1 Bean开发与Java类开发
13.1.2 运行环境和设计环境分布
13.2 属性编辑器
13.3 使用属性编辑器
13.3.1 颜色属性编辑器
13.3.2 BDK的属性编辑器
13.4 属性单
13.5 定制器
13.5.1 GUI外观
13.5.2 本地更新
13.5.3 定位定制器
13.6 使用定制器
13.6.1 定制器(customizer)接口
13.6.2 PropertyEditor接口
13.6.3 BeanInfo接口
13.6.4 OurButton示例bean的定制器
13.7 定制的API支持
13.7.1 Customizer接口
13.7.2 PropertyEditor接口
13.7.3 PropertyE出torManager类
13.7.4 PropertyEditorSupport类
13.8 小结
第3部分 JavaBean应用
第14章 使用Javastudio 开发JavaBean
14.1 常用JavaBean开发工具
14.1.1 Borland公司的JBuilder
14.1.2 PenumbraSoftware的Mojo
14.1.3 IBM公司的VisualAgeforJava
14.1.4 SunSoft公司的JavaStu出o
14.1.5 SunSoft公司的JavaWorkshop
14.1.6 Symantec的VisualCafe
14.2 JavaStu出o简介
14.3 启动JavaStudio
14.3.1 JavaStudio主窗口
14.3.2 JavaStu出o的GUI窗口
14.3.3 JavaStu出o的Design窗口
14.4 定制调色板
14.5 创建JavaStudio的Design
14.6 使用Design创建JavaBean
14.7 引入JavaBean 组件
14.8 使用JavaStudio开发JavaBean组件
14.8.1 开发JavaBean组件的步骤
14.8.2 创建设计环境信息
14.8.3 创建一个定制器
14.8.4 包装JavaStudio的组件
14.9 小结
第15章 编写简单的JavaBean
15.1 创建一个最简单的bean(第1个例子)
15.2 有颜色属性的bean(第2个例子)
15.3 bean和包(packages)(第3个例子)
15.4 有标签(labe l)属性的bean(第4个例子)
15.5 自动调整bean的尺寸(第5个例子)
15.6 bean的事件句柄(第6个例子)
15.7 从bean触发事件(第7个例子)
15.8 创建形象化的bean按钮(第8个例子)
15.9 小结
第16章 定制一个按钮bean
16.1 设计按钮bean
16.1.1 属性
16.1.2 方法
16.1.3 事件
16.2 开发按钮bean
16.2.1 属性和成员变量
16.2.2 构造函数
16.2.3 访问者方法
16.2.4 公有方法
16.2.5 事件注册方法
16.2.6 事件处理方法
16.2.7 内部支持方法
16.2.8 编写按钮bean的BeanInfo类和manifest文件
16.3 测试按钮bean
16.4 如何增强按钮bean的功能
16.5 小结
第17章 定制一个计量条bean
17.1 设计计量条bean
17.1.1 属性
17.1.2 方法
17.1.3 事件
17.2 开发计量条bean的源代码
17.2.1 属性和成员变量
17.2.2 构造函数
17.2.3 访问者方法
17.2.4 公有方法
17.2.5 编写计量条bean的BeanInfo类和manifest文件
17.2.6 测试计量条bean
17.3 增强计量条bean的功能
17.4 小结
第18章 JavaBean应用程序举例(上)
18.1 创建一个广告牌bean
18.1.1 创建基本的bean类
18.1.2 创建测试bean的applet和HIML文件
18.1.3 测试bean
18.2 定制可滚动的广告牌bean
18.2.1 创建bean的类文件
18.2.2 创建bean的事件类
18.2.3 创建bean的监听器类
18.2.4 创建测试bean的applet和HTML文件
18.2.5 测试bean
18.3 检查bean的特征
18.3.1 创建bean的类文件
18.3.2 创建bean的测试框架
18.3.3 运行测试框架显示bean
18.4 包装创建的Secondbean
18.4.1 创建BeanInfo类
18.4.2 创建bean的manifest文件
18.4.3 测试bean
18.5 小结
第19章 JavaBean应用程序举例(下)
19.1 创建使用资源文件的bean
19.1.1 创建bean类文件
19.1.2 创建资源文件测试bean
19.2 为bean添加定制器
19.2.1 创建定制器类
19.2.2 修改BeanInfo类
19.2.3 创建测试框架
19.2.4 使用框架测试bean
19.3 核心反射API检查JavaBean
19.3.1 编写bean的类文件
19.3.2 测试bean
19.4 小结
附录A 术语表
附录B JavaBean在线资源
B.1 JavaSoft的JavaBean网址
B.2 JavaDeveloper网址
B.3 Gamelan网址
B.4 JavaWorld在线杂志
附录C JavaBeanAPI 类库清单
C.1 Java.beans包
C.1.1 接口
C.1.2 类
C.1.3 异常
C.2 java.beans.beancontext包
C.2.1 接口
C.2.2 类
· · · · · · (收起)
读后感
用户评价
说实话,这本书的排版和示例代码质量,确实让我感到有些困惑。我是一个习惯于通过阅读高质量源码和详尽示例来学习新技术的程序员。这本书的章节安排显得有些跳跃,前后的逻辑关联性不是很强,仿佛是把一些零散的讲义拼凑在了一起。在介绍核心机制的部分,代码示例过于简化,很多场景都是理想化的状态,完全没有考虑异常处理、并发控制或者与外部系统交互时的复杂性。比如,当讨论组件的生命周期管理时,书中给出的代码片段看起来非常干净、完美,但实际在项目里,组件的初始化和销毁往往伴随着资源释放、事务管理等一系列棘手的问题,这些关键的“痛点”在书中被轻描淡写地带过了。我希望看到的是如何优雅地处理这些复杂情况,而不是仅仅展示一个“Hello World”级别的组件。此外,书中的术语使用有时也不够统一,这使得我在比对不同章节时需要花费额外的精力去核对作者是否在偷偷切换定义。对于追求严谨性的技术读者来说,这种不一致性是很难忍受的,它直接影响了学习的效率和对所学知识的信任度。
对于我这种已经工作多年,对Java生态体系有深入了解的开发者而言,这本书的价值主要体现在它对某些传统概念的回顾上,但遗憾的是,它并没有带来任何“视野的拓展”。我更关注的是现代软件开发中的热点,比如微服务架构下的服务契约设计、反应式编程中的数据流组件封装,或者利用容器技术(如Docker/Kubernetes)如何定义和部署一个“服务组件”。这本书的内容似乎停滞在了上一个技术时代,很多设计思想在当前的云原生时代已经有了更优的实现方式或被新的范式所取代。我原本期待它能将传统的面向对象组件思想,与现代分布式系统的挑战相结合,探讨如何设计出能够适应弹性伸缩和故障转移的健壮组件。然而,通篇下来,我感觉自己像是在翻阅一本关于旧式桌面应用开发的指南,对当前主流的互联网技术栈几乎没有任何参考价值。如果这本书的目标读者是初入编程领域的学生,或许还有一定的入门意义,但对于寻求技术进阶的在职工程师来说,它提供的帮助实在微乎其微,更多的是一种时间的投入与回报不成正比的体验。
这本书,说实话,拿到手上的时候,我还是有点期待的。封面设计得挺有现代感的,那种简洁的蓝白配色,加上“组件程序设计”这几个字,让人感觉里面会是关于如何构建模块化、可复用代码的宝典。我本来是希望这本书能深入讲解一些面向对象设计中的高级模式,比如如何用组件的思想来更好地组织大型项目,尤其是在企业级应用开发中,组件化已经成为一种主流趋势。我期望能看到大量关于设计原则在实际组件开发中的应用案例,比如如何平衡通用性和特定性,如何处理组件间的依赖关系等等。然而,读下来,我发现这本书的侧重点似乎完全不在我预期的方向。它更像是一本基础概念的梳理,对于那些已经对Java和面向对象编程有一定了解的开发者来说,内容的深度和广度都显得有些不够。对于那些想深入研究组件化架构的读者来说,这本书提供的理论支撑略显单薄,更像是停留在理论的初级介绍阶段,缺乏实战的深度挖掘和前沿技术的探讨。总的来说,如果你的目标是快速入门组件编程的概念,这本书或许可以作为敲门砖,但若想借此构建起坚实的组件设计内功,恐怕还需要寻找更专业、更深入的资料来作为补充。它没有触及到我真正关心的那些复杂场景下的设计取舍和权衡。
我是在一个技术交流群里被推荐这本书的,当时大家都在讨论如何提升代码的可维护性和扩展性,有人提到这本书对理解“组件”这个抽象概念很有帮助。我带着一种“填补知识空白”的心态开始阅读,希望能补强自己在系统架构设计上的短板。坦白讲,这本书的行文风格比较平实,甚至可以说是有些枯燥。它花了大量篇幅去定义和解释什么是“组件”,组件的特性是什么,这些定义本身并没有什么错误,但是对于一个实际的开发者来说,这些宏大的叙述似乎有些脱离实际的编码环境。我更期待看到的是,在Spring或类似的框架生态下,如何将这些组件化的理念落地生根,如何利用成熟的工具链来简化组件的生命周期管理和部署。书中对这些实际操作层面的指导几乎没有涉及,更像是一本关于软件工程哲学层面的探讨。每次我试图在脑海中构建一个具体的、可运行的组件实例时,书中的内容就显得飘忽不定,无法提供明确的路线图。这种“只谈理论,不谈实践”的写作方式,对于急需在工作中解决实际问题的我来说,无疑是一种阅读上的阻碍,我需要的是能立刻应用到代码中的具体方法和模式,而不是停留在概念的抽象迷宫里打转。
这本书的翻译质量,也给我的阅读体验打了不少折扣。很多技术名词的翻译,似乎是采用了直译的方式,导致读起来非常拗口,甚至有些地方的句子结构让人需要反复回读才能勉强理解作者想表达的真实意图。例如,某些描述软件设计哲学时使用的长难句,如果能用更简洁、更符合中文技术表达习惯的句式来组织,阅读起来的流畅度会大大提升。我总是在“理解字面意思”和“猜测作者的真正技术含义”之间来回切换,这极大地分散了我对核心技术内容的注意力。我更喜欢那些由深谙技术又精通表达的专家撰写的书籍,他们能够用精准、清晰的语言描述复杂的技术概念,让读者能够心无旁骛地吸收知识。这本书在这方面显然是欠缺的,它让我感觉自己是在“啃硬骨头”,每一次阅读都像是一场翻译的挑战,而不是知识的获取。这种阅读体验上的障碍,让我很难真正沉浸到组件程序设计的理论核心中去,最终导致我对全书的整体评价偏低,因为它没有提供一个顺畅的学习路径。