标题：java bean
介绍
最初，JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用于帮助厂家开发在综合开发环境（IDE）下使用的java软件部件。这些包括如Grid控件，用户可以将该部件拖放到开发环境中。从此，JavaBean就可以扩展为一个java web 应用的标准部件，并且JavaBean部件框架已经扩展为企业版的 Bean（EJB）。 
JavaBean 和 Server Bean（通常称为 Enterprise JavaBean (EJB)）有一些基本相同之处。它们都是用一组特性创建，以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。
Enterprise Bean 与 JavaBean 不同
JavaBean 是使用 java.beans 包开发的，它是 Java 2 标准版的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件。JavaBean 是进程内组件。Enterprise Bean 是使用 javax.ejb 包开发的，它是标准 JDK 的扩展，是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多台机器上跨几个地址空间运行的组件。因此 Enterprise Bean 是进程间组件。JavaBean 通常用作 GUI 窗口小部件，而 Enterprise Bean 则用作分布式商业对象。
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean，类必须是具体的和公共的，并且具有无参数的构造器。JavaBeans 通过提供符合一致性设计模式的公共方法将内部域暴露成为属性。众所周知，属性名称符合这种模式，其他Java 类可以通过自省机制发现和操作这些JavaBean 属性。
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包，并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能，而不用关心任何改变。
JavaBean是Sun微系统的一个面向对象的编程接口，它可以让你建可重用应用程序或能在网络中任何主流操作系统平台上配置的程序块，称作组件。像Java applet一样，JavaBeans组件(或“Beans”)能够给予万维网页面交互的能力，例如：计算感兴趣的比率或是根据用户或浏览器的特性改变页面内容。
从用户的观点来看，一个组件可以是一个与你交互的按钮或是一个当你按下按钮它便开始的小计算程序。从一个开发者的观点来看，那个按钮组件和计算器组件是分别被创建的，并且它们可以一起使用或是在不同的应用程序或情况下和不同的组件产生不同的组合来使用。
当组件或Beans在使用过程中，Bean的性质(比如，一个窗口的背景色)对于其他Bean来说是可见的，并且，之前没“碰到”过的Bean也可以动态地获悉彼此的特性并从而进行交互。　
Bean是随Sun的Bean开发包(BDK)开发出来的，并且能在任何主流操作系统平台的许多应用程序环境(人们所说的“容器”，container)中运行，包括浏览器、文字处理软件、以及一些其他应用。　
要想用JavaBean建一个组件，你必须用Sun的Java编程语言来写程序，并且在程序中包括描述组件特性的JavaBean语句，这些组件特性例如：用户接口的特性，以及触发一个bean和在同一个容器中或网络其他地方的其他的bean交流的事件。
JavaBean给Java应用程序提供了OpenDoc和ActiveX接口已提供的这种复合文档的能力。
JavaBean的任务
“Write once, run anywhere, reuse everywhere”，即“一次性编写，任何地方执行，任何地方重用”。这个任何实际上就是要解决困扰软件工业的日益增加的复杂性，提供一个简单的、紧凑的和优秀的问题解决方案。
1. 一个开发良好的软件组件应该是一次性地编写，而不需要再重新编写代码以增强或完善功能。因此，JavaBean应该提供一个实际的方法来增强现有代码的利用率，而不再需要在原有代码上重新进行编程。除了在节约开发资源方面的意义外，一次性地编写JavaBean组件也可以在版本控制方面起到非常好的作用。开发者可以不断地对组件进行改进，而不必从头开始编写代码。这样就可以在原有基础上不断提高组件功能，而不会犯相同的错误。
2. JavaBean组件在任意地方运行是指组件可以在任何环境和平台上使用，这可以满足各种交互式平台的需求。由于JavaBean是基于Java的，所以它可以很容易地得到交互式平台的支持。JavaBean组件在任意地方执行不仅是指组件可以在不同的操作平台上运行，还包括在分布式网络环境中运行。
3.JavaBean组件在任意地方的重用说的是它能够在包括应用程序、其他组件、文档、Web站点和应用程序构造器工具的多种方案中再利用。这也许是JavaBean组件的最为重要的任务了，因为它正是JavaBean组件区别于Java程序的特点之一。Java程序的任务就是JavaBean组件所具有的前两个任务，而这第3个任务却是JavaBean组件独有的。
JavaBean是可复用的平台独立的软件组件
开发者可以在软件构造器工具中其直接进行可视化操作。
软件构造器工具可以是Web页面构造器、可视化应用程序构造器、GUI设计构造器或服务器应用程序构造器。有时，构造器工具也可以是一个包含了一些bean的复合文档的文档编辑器。
JavaBean可以是简单的GUI要素
如按钮或滚动条；也可以是复杂的可视化软件组件，如数据库视图，有些JavaBean是没有GUI表现形式的，但这些JavaBean仍然可以使用应用程序构造器可视化地进行组合。
一个JavaBean和一个Javaapplet相似，是一个非常简单的遵循某种严格协议的Java类。每个JavaBean的功能都可能不一样，但它们都必须支持以下特征。一个bean没有必须继承的特定的基类或接口。可视化的bean必须继承的类是java.awt.Component，这样它们才能添加到可视化容器中去，非可视化bean则不需要继承这个类。有许多bean，无论是在应用程序构造器工具中，还是在最后创建好的应用程序中，都具有很强的可视化特征，但这并非每个bean必须的特征。
使用Java编程
在使用Java编程时，并不是所有软件模块都需要转换成bean。Bean比较适合于那些具有可视化操作和定制特性的软件组件。从基本上说，JavaBean可以看成是一个黑盒子，即只需要知道其功能而不必管其内部结构的软件设备。黑盒子只介绍和定义其外部特征和与其他部分的接口，如按钮、窗口、颜色、形状、句柄等。
通过将系统看成使用黑盒子关联起来的通讯网络，我们可以忽略黑盒子内部的系统细节，从而有效地控制系统的整体性能。作为一个黑盒子的模型，JavaBean有3个接口面，可以独立进行开发。
特点
1. JavaBean可以调用的方法。
2. JavaBean提供的可读写的属性。
3. JavaBean向外部发送的或从外部接收的事件。
JavaBean设计注意事项
1.不要试图在JavaBean返回的HTML中放置任何字体尺寸。
并不是所有的浏览器都相同。很多浏览器无法处理完整的字体尺寸。 
2.不要试图在JavaBean返回的HTML中放置任何脚本或者DHTML。
向页面直接输出脚本或者DHTML相当于自我毁灭，因为某些浏览器版本在处理不正确的脚本时会崩溃（非常少但是有）。如果用户的JavaBean在运行时是动态的推出复杂的HTML语言，用户将陷入调试的噩梦。另外，复杂的HTML将限制JavaBean的寿命和灵活性。
3.不要提供任何的选择。