Java Bean Specification 1.01

1.介紹

1.1、構(gòu)建力度

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

1.2、可移植性

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

打比方,在微軟平臺里,JavaBeans APIs將會被COM和ActiveX橋接進(jìn)來。同樣的,它也會將bean當(dāng)成活對象一部分來對待。所以一個單個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)必須對當(dāng)前平臺設(shè)備支持還要做發(fā)現(xiàn)檢查。

1.4、簡單

期望JavaBeans APIs相對簡單。相對于構(gòu)建重量級組件,我們關(guān)注創(chuàng)建小的輕量級組件,容易實(shí)現(xiàn)和使用??偟脑瓌t是我們不想發(fā)明龐大的java.beans.Everything類來讓人繼承。相反的我們期望JavaBeans運(yùn)行時普通對象提供默認(rèn)的行為,但允許繼承java.beans.something規(guī)范的接口來重載一系列默認(rèn)的行為。

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

2.基本原理

2.1、什么是Bean?

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

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

構(gòu)建器

一些JavaBeans可能是簡單的GUI元素,像按鈕、滑動條;一些JavaBeans可能是復(fù)雜的軟件組件,像數(shù)據(jù)庫查看工具或數(shù)據(jù)流;一些Java Beans可能沒有GUI特征,但也是由application builder組織在一起。

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

統(tǒng)一特性

2.1.1、 Beans和類庫

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

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

2.2、屬性,事件和方法

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

2.3、設(shè)計時和運(yùn)行時

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

2.4、安全問題

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

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

內(nèi)?。捍_保他們可以訪問高級別的內(nèi)省APIs和在設(shè)計環(huán)境中低級別反射APIs是無限制的,但是訪問運(yùn)行時環(huán)境是更多限制;

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

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

2.5、本地觸發(fā)

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


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

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

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

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


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

2.7、不可見Beans

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

2.8、多線程

多線程下bean的行為規(guī)范。多線程下beans的行為正確是每一個JavaBeans開發(fā)者的責(zé)任。簡單的beans可以大體使用方法“synchronized”來確保。

2.9、國際化

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

2.10、Bean的可選類型視圖

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

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

例如:一個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)用場景

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

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

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

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

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

3.2、在寫的小程序里用beans

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

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

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

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

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

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

b






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容