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






最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,832評論 0 11
  • JAVA面試題 1、作用域public,private,protected,以及不寫時的區別答:區別如下:作用域 ...
    JA尐白閱讀 1,181評論 1 0
  • 小編費力收集:給你想要的面試集合 1.C++或Java中的異常處理機制的簡單原理和應用。 當JAVA程序違反了JA...
    八爺君閱讀 4,650評論 1 114
  • 1.如何布置項目到gitoschina遠程服務器 1.新建項目 , 語言Swift , 開源許可證:MIT Lic...
    鄰家菇涼閱讀 626評論 0 3