Java Bean Specification 1.01

1.介紹

1.1、構(gòu)建力度

總體上我們期望大多數(shù)JavaBeans組件對(duì)于中等規(guī)模的控制是輕量級(jí)的陵珍,要讓簡(jiǎn)單的case容易,盡可能讓盡量多的行為是默認(rèn)合乎情理的违施。

1.2互纯、可移植性

JavaBeans架構(gòu)一個(gè)主要目標(biāo)是提供一個(gè)平臺(tái)級(jí)的中立組件架構(gòu)。當(dāng)一個(gè)bean嵌套在另一個(gè)bean時(shí)我們提供全函數(shù)式實(shí)現(xiàn)通用所有平臺(tái)磕蒲。當(dāng)頂層的rootBean被植入一些平臺(tái)規(guī)范容器(例如:Word or Visual Basic or ClarisWorks or Netscape Navigator)那么JavaBeans APIs 應(yīng)該被融入平臺(tái)本地組件架構(gòu)中留潦。

打比方,在微軟平臺(tái)里辣往,JavaBeans APIs將會(huì)被COM和ActiveX橋接進(jìn)來(lái)兔院。同樣的,它也會(huì)將bean當(dāng)成活對(duì)象一部分來(lái)對(duì)待站削。所以一個(gè)單個(gè)Bean應(yīng)該有能力運(yùn)行在很多不同的環(huán)境坊萝。在不同的目標(biāo)環(huán)境,它應(yīng)該有能力發(fā)送事件许起,服務(wù)方法調(diào)用等十偶,就像任意其他組件一樣。我們精心的確保各種各樣的Beans APIs可以被干凈的轉(zhuǎn)換成三大主要的組件模型(notably OpenDoc, OLE/COM/ActiveX, and LiveConnect)园细。

1.3惦积、統(tǒng)一的高質(zhì)量API

寫JavaBeans組件的人可以規(guī)劃好一組APIs的一致性,讓它們可以在任何地方工作猛频。我們不希望Bean的實(shí)現(xiàn)必須對(duì)當(dāng)前平臺(tái)設(shè)備支持還要做發(fā)現(xiàn)檢查荣刑。

1.4、簡(jiǎn)單

期望JavaBeans APIs相對(duì)簡(jiǎn)單伦乔。相對(duì)于構(gòu)建重量級(jí)組件厉亏,我們關(guān)注創(chuàng)建小的輕量級(jí)組件,容易實(shí)現(xiàn)和使用烈和“唬總的原則是我們不想發(fā)明龐大的java.beans.Everything類來(lái)讓人繼承。相反的我們期望JavaBeans運(yùn)行時(shí)普通對(duì)象提供默認(rèn)的行為招刹,但允許繼承java.beans.something規(guī)范的接口來(lái)重載一系列默認(rèn)的行為恬试。

我們的一個(gè)目標(biāo)是人們應(yīng)該能夠快速的掌握基本JavaBeans的概念,這樣他們可以花費(fèi)很少功夫就能開(kāi)始寫和使用簡(jiǎn)單的組件疯暑,然后慢慢改進(jìn)训柴,使用在復(fù)雜特性的API里。

2.基本原理

2.1妇拯、什么是Bean幻馁?

最初的定義洗鸵,然后提煉它:

JavaBean是一個(gè)可重用的軟件組件,可以被構(gòu)建工具可視化操作仗嗦。

構(gòu)建器

一些JavaBeans可能是簡(jiǎn)單的GUI元素膘滨,像按鈕、滑動(dòng)條稀拐;一些JavaBeans可能是復(fù)雜的軟件組件火邓,像數(shù)據(jù)庫(kù)查看工具或數(shù)據(jù)流;一些Java Beans可能沒(méi)有GUI特征德撬,但也是由application builder組織在一起铲咨。

JavaBeans的統(tǒng)一特性如下:

統(tǒng)一特性

2.1.1、 Beans和類庫(kù)

不是所有有用的模塊都要轉(zhuǎn)換成beans蜓洪。Beans適合軟件組件中可視化操作以及定制化后獲取一些效果纤勒。類庫(kù)適合提供函數(shù)化的方式,這對(duì)程序員很有用蝠咆,但對(duì)可視化操作不是很有利踊东。

例如,提供JDBC數(shù)據(jù)庫(kù)接入API使用類庫(kù)方式比用bean更有意義刚操,因?yàn)镴DBC本質(zhì)上是編程層面的API闸翅,而不是可視化層面的操作。然而在JDBC上層寫一個(gè)數(shù)據(jù)庫(kù)接入bean也是有意義的事情菊霜。因此坚冀,例如你可以在定制時(shí)寫一個(gè)“select” bean幫助用戶組裝select語(yǔ)句,當(dāng)應(yīng)用運(yùn)行時(shí)使用JDBC來(lái)運(yùn)行select語(yǔ)句然后顯示結(jié)果鉴逞。

2.2记某、屬性,事件和方法

Java Bean最重要的三個(gè)特征:一組暴露的屬性构捡、一組運(yùn)行其他組件調(diào)用的方法液南、一組可以觸發(fā)的事件。

2.3勾徽、設(shè)計(jì)時(shí)和運(yùn)行時(shí)

我們運(yùn)行運(yùn)行時(shí)的接口在設(shè)計(jì)時(shí)被不同的類支持滑凉。

2.4、安全問(wèn)題

JavaBeans適用于標(biāo)準(zhǔn)的Java安全模型喘帚。

總體上建議JavaBean開(kāi)發(fā)者設(shè)計(jì)他們的beans以運(yùn)行在不被信任的applets上畅姊。以下是主要建議bean APIS設(shè)計(jì)的方面:

內(nèi)省:確保他們可以訪問(wèn)高級(jí)別的內(nèi)省APIs和在設(shè)計(jì)環(huán)境中低級(jí)別反射APIs是無(wú)限制的吹由,但是訪問(wèn)運(yùn)行時(shí)環(huán)境是更多限制若未;

持久化:Beans應(yīng)該在設(shè)計(jì)和運(yùn)行環(huán)境期待被序列化和反序列化;

GUI合并:大意是不被信任的applets將不允許運(yùn)行任何種的GUI合并倾鲫。

2.5粗合、本地觸發(fā)

JavaBeans組件基本的運(yùn)行模型是它們運(yùn)行時(shí)和它們?nèi)萜髟谙嗤刂房臻g萍嬉。例如容器是Java應(yīng)用,那么包含的bean運(yùn)行在相同的Java虛擬機(jī)當(dāng)成容器舌劳。如果容器是非Java應(yīng)用帚湘,那么JavaBeans運(yùn)行Java虛擬機(jī)時(shí)直接關(guān)聯(lián)應(yīng)用玫荣。


2.6甚淡、JavaBean作為遠(yuǎn)端狀態(tài)的鏈接

JavaBean架構(gòu)被設(shè)計(jì)成在分布式www環(huán)境下也能運(yùn)行。設(shè)計(jì)分布式程序關(guān)鍵部分在于工程學(xué)上很好的劃分本地和遠(yuǎn)程進(jìn)程捅厂。單機(jī)上本地進(jìn)程對(duì)快速交互有利贯卦,而遠(yuǎn)程訪問(wèn)會(huì)有高延遲和面臨各式各樣的調(diào)用失敗。分布式系統(tǒng)設(shè)計(jì)者趨向于非常小心的設(shè)計(jì)遠(yuǎn)程接口焙贷,最小化遠(yuǎn)程交互數(shù)量撵割,使用各種緩存技術(shù),使用批處理減少遠(yuǎn)程傳輸辙芍。

相對(duì)于所有bean APIs通過(guò)網(wǎng)絡(luò)工作啡彬,我們最初設(shè)計(jì)的目標(biāo)bean APIs通過(guò)虛擬機(jī)工作,交互時(shí)開(kāi)銷要廉價(jià)很多故硅,我們提供了幾種可選的機(jī)制來(lái)允許beans開(kāi)發(fā)者連接網(wǎng)絡(luò)服務(wù)器庶灿。

三種主要的網(wǎng)絡(luò)調(diào)用機(jī)制可以讓JavaBeans開(kāi)發(fā)者在所有Java平臺(tái)有效使用:


網(wǎng)絡(luò)調(diào)用機(jī)制

2.7、不可見(jiàn)Beans

沒(méi)有GUI(圖形化用戶界面)的beans也可以方法調(diào)用吃衅、事件觸發(fā)往踢、保存持久化狀態(tài)等。它們僅僅是沒(méi)有屏幕展示它們自己徘层。所以如果一個(gè)bean運(yùn)行在服務(wù)器它可能是不可見(jiàn)的峻呕,但如果它運(yùn)行在用戶桌面它可能有GUI展示。

2.8趣效、多線程

多線程下bean的行為規(guī)范瘦癌。多線程下beans的行為正確是每一個(gè)JavaBeans開(kāi)發(fā)者的責(zé)任。簡(jiǎn)單的beans可以大體使用方法“synchronized”來(lái)確保跷敬。

2.9讯私、國(guó)際化

JDK1.1中各種國(guó)際化APIs都加入到核心Java API集中。使用適當(dāng)?shù)膕trings使用java.util.getDefault()干花,正確的本地化strings被公共APIs使用妄帘。

2.10、Bean的可選類型視圖

第一版的JavaBeans架構(gòu)池凄,每一個(gè)bean是一個(gè)單一的Java對(duì)象抡驼。然而后面版本的JavaBeans我們計(jì)劃支持一組協(xié)作關(guān)聯(lián)的對(duì)象實(shí)現(xiàn)。

絕不要將Java拋出成不同類型視圖的Java bean角色肿仑。

例如:一個(gè)bean x是X類型致盟,你想要轉(zhuǎn)成java.awt.Component類型碎税,應(yīng)該這樣:

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

3.應(yīng)用場(chǎng)景

本段主要目的是描述而不是規(guī)范使用

這里打算展示一些beans的使用,不是描述所有的可能馏锡。在不同的應(yīng)用構(gòu)建工具里提供各式各樣的構(gòu)建場(chǎng)景雷蹂。

以下兩個(gè)設(shè)計(jì)構(gòu)建小程序的場(chǎng)景,但是在創(chuàng)建Java應(yīng)用時(shí)步驟相同:

3.1杯道、使用應(yīng)用構(gòu)建器構(gòu)造小程序

這個(gè)場(chǎng)景中匪煌,用戶通過(guò)應(yīng)用構(gòu)建器創(chuàng)建程序。應(yīng)用構(gòu)建器生成不同的源碼党巾,提供用戶可以添加自己源碼的模板萎庭。

3.2、在寫的小程序里用beans

這個(gè)場(chǎng)景我們使用一些寫的Java beans組件齿拂,完全類似于通過(guò)AWT組件構(gòu)建一個(gè)Applet驳规,而且打算描述beans是如何在沒(méi)有特殊工具下使用的:

4.窗口環(huán)境問(wèn)題

一系列特性在JDK1.1中加入了AWT,這些特性在“JDK 1.1- AWT增強(qiáng)”網(wǎng)頁(yè)里有介紹署海。

4.1吗购、統(tǒng)一數(shù)據(jù)轉(zhuǎn)換機(jī)制

統(tǒng)一數(shù)據(jù)轉(zhuǎn)換機(jī)制提出包含在AWT在內(nèi),打算提供基本的機(jī)制來(lái)使得對(duì)象砸狞、applets或者更高層的應(yīng)用的數(shù)據(jù)交互結(jié)構(gòu)化

4.2捻勉、粘貼/選擇服務(wù)

b






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市趾代,隨后出現(xiàn)的幾起案子贯底,更是在濱河造成了極大的恐慌,老刑警劉巖撒强,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禽捆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡飘哨,警方通過(guò)查閱死者的電腦和手機(jī)胚想,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芽隆,“玉大人浊服,你說(shuō)我怎么就攤上這事∨哂酰” “怎么了牙躺?”我有些...
    開(kāi)封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腕扶。 經(jīng)常有香客問(wèn)我孽拷,道長(zhǎng),這世上最難降的妖魔是什么半抱? 我笑而不...
    開(kāi)封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任脓恕,我火速辦了婚禮膜宋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炼幔。我一直安慰自己秋茫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布乃秀。 她就那樣靜靜地躺著肛著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪环形。 梳的紋絲不亂的頭發(fā)上策泣,一...
    開(kāi)封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天衙傀,我揣著相機(jī)與錄音抬吟,去河邊找鬼。 笑死统抬,一個(gè)胖子當(dāng)著我的面吹牛火本,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播聪建,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼钙畔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了金麸?” 一聲冷哼從身側(cè)響起擎析,我...
    開(kāi)封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挥下,沒(méi)想到半個(gè)月后揍魂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棚瘟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年现斋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偎蘸。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庄蹋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迷雪,到底是詐尸還是另有隱情限书,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布章咧,位于F島的核電站倦西,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏慧邮。R本人自食惡果不足惜调限,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一舟陆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耻矮,春花似錦秦躯、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哨免,卻和暖如春茎活,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琢唾。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工载荔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人采桃。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓懒熙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親普办。 傳聞我的和親對(duì)象是個(gè)殘疾皇子工扎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容