Java Bean Specification 1.01

1.介绍

1.1、构建力度

总体上我们期望大多数JavaBeans组件对于中等规模的控制是轻量级的,要让简单的case容易,尽可能让尽量多的行为是默认合乎情理的。

1.2、可移植性

JavaBeans架构一个主要目标是提供一个平台级的中立组件架构。当一个bean嵌套在另一个bean时我们提供全函数式实现通用所有平台。当顶层的rootBean被植入一些平台规范容器(例如:Word or Visual Basic or ClarisWorks or Netscape Navigator)那么JavaBeans APIs 应该被融入平台本地组件架构中。

打比方,在微软平台里,JavaBeans APIs将会被COM和ActiveX桥接进来。同样的,它也会将bean当成活对象一部分来对待。所以一个单个Bean应该有能力运行在很多不同的环境。在不同的目标环境,它应该有能力发送事件,服务方法调用等,就像任意其他组件一样。我们精心的确保各种各样的Beans APIs可以被干净的转换成三大主要的组件模型(notably OpenDoc, OLE/COM/ActiveX, and LiveConnect)。

1.3、统一的高质量API

写JavaBeans组件的人可以规划好一组APIs的一致性,让它们可以在任何地方工作。我们不希望Bean的实现必须对当前平台设备支持还要做发现检查。

1.4、简单

期望JavaBeans APIs相对简单。相对于构建重量级组件,我们关注创建小的轻量级组件,容易实现和使用。总的原则是我们不想发明庞大的java.beans.Everything类来让人继承。相反的我们期望JavaBeans运行时普通对象提供默认的行为,但允许继承java.beans.something规范的接口来重载一系列默认的行为。

我们的一个目标是人们应该能够快速的掌握基本JavaBeans的概念,这样他们可以花费很少功夫就能开始写和使用简单的组件,然后慢慢改进,使用在复杂特性的API里。

2.基本原理

2.1、什么是Bean?

最初的定义,然后提炼它:

JavaBean是一个可重用的软件组件,可以被构建工具可视化操作。

构建器

一些JavaBeans可能是简单的GUI元素,像按钮、滑动条;一些JavaBeans可能是复杂的软件组件,像数据库查看工具或数据流;一些Java Beans可能没有GUI特征,但也是由application builder组织在一起。

JavaBeans的统一特性如下:

统一特性

2.1.1、 Beans和类库

不是所有有用的模块都要转换成beans。Beans适合软件组件中可视化操作以及定制化后获取一些效果。类库适合提供函数化的方式,这对程序员很有用,但对可视化操作不是很有利。

例如,提供JDBC数据库接入API使用类库方式比用bean更有意义,因为JDBC本质上是编程层面的API,而不是可视化层面的操作。然而在JDBC上层写一个数据库接入bean也是有意义的事情。因此,例如你可以在定制时写一个“select” bean帮助用户组装select语句,当应用运行时使用JDBC来运行select语句然后显示结果。

2.2、属性,事件和方法

Java Bean最重要的三个特征:一组暴露的属性、一组运行其他组件调用的方法、一组可以触发的事件。

2.3、设计时和运行时

我们运行运行时的接口在设计时被不同的类支持。

2.4、安全问题

JavaBeans适用于标准的Java安全模型。

总体上建议JavaBean开发者设计他们的beans以运行在不被信任的applets上。以下是主要建议bean APIS设计的方面:

内省:确保他们可以访问高级别的内省APIs和在设计环境中低级别反射APIs是无限制的,但是访问运行时环境是更多限制;

持久化:Beans应该在设计和运行环境期待被序列化和反序列化;

GUI合并:大意是不被信任的applets将不允许运行任何种的GUI合并。

2.5、本地触发

JavaBeans组件基本的运行模型是它们运行时和它们容器在相同地址空间。例如容器是Java应用,那么包含的bean运行在相同的Java虚拟机当成容器。如果容器是非Java应用,那么JavaBeans运行Java虚拟机时直接关联应用。


2.6、JavaBean作为远端状态的链接

JavaBean架构被设计成在分布式www环境下也能运行。设计分布式程序关键部分在于工程学上很好的划分本地和远程进程。单机上本地进程对快速交互有利,而远程访问会有高延迟和面临各式各样的调用失败。分布式系统设计者趋向于非常小心的设计远程接口,最小化远程交互数量,使用各种缓存技术,使用批处理减少远程传输。

相对于所有bean APIs通过网络工作,我们最初设计的目标bean APIs通过虚拟机工作,交互时开销要廉价很多,我们提供了几种可选的机制来允许beans开发者连接网络服务器。

三种主要的网络调用机制可以让JavaBeans开发者在所有Java平台有效使用:


网络调用机制

2.7、不可见Beans

没有GUI(图形化用户界面)的beans也可以方法调用、事件触发、保存持久化状态等。它们仅仅是没有屏幕展示它们自己。所以如果一个bean运行在服务器它可能是不可见的,但如果它运行在用户桌面它可能有GUI展示。

2.8、多线程

多线程下bean的行为规范。多线程下beans的行为正确是每一个JavaBeans开发者的责任。简单的beans可以大体使用方法“synchronized”来确保。

2.9、国际化

JDK1.1中各种国际化APIs都加入到核心Java API集中。使用适当的strings使用java.util.getDefault(),正确的本地化strings被公共APIs使用。

2.10、Bean的可选类型视图

第一版的JavaBeans架构,每一个bean是一个单一的Java对象。然而后面版本的JavaBeans我们计划支持一组协作关联的对象实现。

绝不要将Java抛出成不同类型视图的Java bean角色。

例如:一个bean x是X类型,你想要转成java.awt.Component类型,应该这样:

java.awt.Component c = (java.awt.Component) Beans.getInstanceOf(x, java.awt.Component.class);

3.应用场景

本段主要目的是描述而不是规范使用

这里打算展示一些beans的使用,不是描述所有的可能。在不同的应用构建工具里提供各式各样的构建场景。

以下两个设计构建小程序的场景,但是在创建Java应用时步骤相同:

3.1、使用应用构建器构造小程序

这个场景中,用户通过应用构建器创建程序。应用构建器生成不同的源码,提供用户可以添加自己源码的模板。

3.2、在写的小程序里用beans

这个场景我们使用一些写的Java beans组件,完全类似于通过AWT组件构建一个Applet,而且打算描述beans是如何在没有特殊工具下使用的:

4.窗口环境问题

一系列特性在JDK1.1中加入了AWT,这些特性在“JDK 1.1- AWT增强”网页里有介绍。

4.1、统一数据转换机制

统一数据转换机制提出包含在AWT在内,打算提供基本的机制来使得对象、applets或者更高层的应用的数据交互结构化

4.2、粘贴/选择服务

b






最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,790评论 0 11
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,143评论 1 0
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,573评论 1 114
  • 1.如何布置项目到gitoschina远程服务器 1.新建项目 , 语言Swift , 开源许可证:MIT Lic...
    邻家菇凉阅读 615评论 0 3