扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> 開發(fā)語言 >> 文章正文

根本解決軟件開發(fā)框架的侵入性問題

 

       軟件開發(fā)框架之所以跟侵入性糾纏不清, 根本的原因還是框架要支持應(yīng)用的某種/某些邏輯和功能, 可以說是部分的去實(shí)現(xiàn)應(yīng)用的目標(biāo). 但是這些功能如果不能讓應(yīng)用去定制, 其現(xiàn)實(shí)應(yīng)用代價(jià)就又很微渺了. 所以框架是需要和應(yīng)用交流的, 而交流的主要目的是為了定制.

想到這個(gè)地方, 我的反應(yīng)是聲明式編程, 讓應(yīng)用通過某種方式表達(dá)出自己的定制需求, 這個(gè)表達(dá)的方式就可以是多種多樣的了: 通過遵循約定, 繼承特定框架基類, 實(shí)現(xiàn)特定框架接口, 標(biāo)注Annotation, 編寫配置文件, 調(diào)用框架API, 等等.

而像Java這樣的靜態(tài)語言所能支持的表達(dá)方式, 無論怎么看都可以掛上 "侵入性" 的標(biāo)簽, 因?yàn)槿绻蚣芤坏┒怂髴?yīng)用采納的方式, 應(yīng)用就得跟著它走. 在應(yīng)用需求表達(dá)方式問題上, 框架之間的相容性既沒有理論研究, 更沒有實(shí)踐習(xí)慣.

這里提到 "框架的侵入性" 好像用的是它最寬泛的涵義, 就是對(duì)應(yīng)用編程行為的影響. 要是這么說任何框架都不可能沒有侵入性了, 只是有些讓應(yīng)用開發(fā)人員的日子很難過, 有些則好一點(diǎn). 不過以目前的軟件體系局勢(shì)來看, 絕對(duì)的 "侵入性" 問題還沒有辦法解決, 更現(xiàn)實(shí)一點(diǎn), 似乎只有它對(duì)單元化開發(fā)和測(cè)試的影響比較有可能解決, 眼下討論才比較有現(xiàn)實(shí)意義.

不過對(duì)下一代軟件框架體系, 我倒是感到有些期望, 隨著Annotation的成熟和普及, 對(duì)于基于Java的開發(fā)來說, 我覺得這個(gè)趨勢(shì)已經(jīng)臨近了. 我的想法是可以運(yùn)用一下逆向思維, 既然應(yīng)用與框架的交互無可避免, 那么與其被動(dòng)的接受框架的 "侵入" 不如由應(yīng)用自身采取主動(dòng)行為, 進(jìn)行 "引入".

應(yīng)用的主動(dòng)引入可以從已有的 聲明式編程 出發(fā), 對(duì)于比較大的綜合應(yīng)用方向, 比如 Web應(yīng)用, 以制定通用的應(yīng)用需求表達(dá)規(guī)范為手段, 通過公開的規(guī)范, 協(xié)調(diào)應(yīng)用程序和系統(tǒng)框架之間的交流. 這聽起來就是JCP要為JavaEE做的事情, 是的, 以截至到目前的軟件體系局勢(shì), 這個(gè)事情還不得不由人力, 物力, 財(cái)力豐厚的商業(yè)實(shí)體去完成, 它們也必須在這個(gè)領(lǐng)域有足夠的商業(yè)利益吸引也才有動(dòng)力去做.

但是同樣是JCP出來的J2EE規(guī)范, Servlet很成功, 而EJB卻不是. 并且Servlet很好的解決了它那個(gè)年代的Web開發(fā)問題, 而軟硬件的發(fā)展所推動(dòng)出來的新需求, 新問題又飛快增長(zhǎng), 對(duì)新規(guī)范的需求不僅是本身增長(zhǎng)很快, 它的增長(zhǎng)速度也會(huì)隨著時(shí)間增長(zhǎng). JCP已經(jīng)開始顯得笨拙且乏力了.

一個(gè)本質(zhì)性的問題是: 目前的規(guī)范是基于少量編程語言API的大部分的自然語言描述. 基于這樣的模式, 成本太高, 就算是目前的大型開源社區(qū)要開發(fā)自己的體系規(guī)范也會(huì)是難上加難.

在這個(gè)方向上, DSL(Domain Specific Language)是個(gè)很好的創(chuàng)意, 可以有針對(duì)性的簡(jiǎn)化專門領(lǐng)域的規(guī)約方式. 不過, 我覺得還有DSL沒有特別關(guān)注的一點(diǎn), 就是同一種語言中聲明與實(shí)現(xiàn)語法的分離與融匯:
  DSL傾向于作為一種聲明式的語言, 被設(shè)計(jì)為獨(dú)立使用, 它很可能由另一種通用語言進(jìn)行解釋而實(shí)現(xiàn). 它的語法很可能可以直接調(diào)用實(shí)現(xiàn)語言, 但很難變成編寫應(yīng)用所用語言的一部分. (我很期望它變成應(yīng)用代碼的聲明部分)

回到解決侵入性的問題上來, 我設(shè)想的方式是目前還沒有的, 至少還沒有系統(tǒng)化. 那就是可以用一種語法給應(yīng)用編程語言增加用于聲明的語法, 同時(shí)這種語法也照顧到給應(yīng)用聲明的需求提供實(shí)現(xiàn)的系統(tǒng)編程語言語法, 從而這樣的語法可以同時(shí) 表達(dá)/約束/支持 應(yīng)用聲明和系統(tǒng)實(shí)現(xiàn).

看上去動(dòng)態(tài)語言在這個(gè)方向上有最深厚的長(zhǎng)遠(yuǎn)潛力, 不過用于有分析需求的通用工業(yè)開發(fā)領(lǐng)域, 動(dòng)態(tài)語言要走的路還有點(diǎn)長(zhǎng).

目前基于Java的開發(fā), 利用起Annotation機(jī)制會(huì)在這個(gè)方向上有長(zhǎng)足進(jìn)展, 應(yīng)用通過引用標(biāo)注來聲明需求, 系統(tǒng)在編譯時(shí)通過Annotation Processor以及Language Model, 在運(yùn)行時(shí)通過反射, 兩者結(jié)合起來去理解和實(shí)現(xiàn)應(yīng)用的需求. 而定義和引用Annotation都受到新增的Java語法約束.
不過基于Annotation機(jī)制的 應(yīng)用/系統(tǒng) 交流有時(shí)候還是需要一些自然語言描述的規(guī)范, 好在這個(gè)已經(jīng)比純粹描述/理解大篇的約定和接口調(diào)用邏輯順序簡(jiǎn)易多了. 同時(shí)Annotation引用只能放在modifier的位置還是一個(gè)過大的約束, 這個(gè)還需要Java語言進(jìn)一步的演進(jìn)去解決.

總結(jié)下來, 系統(tǒng)框架通過 "侵入" 要達(dá)到的 應(yīng)用定制 目的是不可避免的, 而要解決被動(dòng)的受到 "侵入" 的局面, 我所能想到的最好方法就是去主動(dòng) "引入". 而 "引入" 所能達(dá)到的 "主動(dòng)" 程度取決于其方式方法的靈活程度和負(fù)面影響大小. 當(dāng)應(yīng)用的特定需求可以通過統(tǒng)一的(聲明)方式利用大多不同系統(tǒng)(包括測(cè)試時(shí)的Mock系統(tǒng))而實(shí)現(xiàn)時(shí), 應(yīng)用的 "引入" 行為也就達(dá)到了一個(gè)比較理想的主動(dòng)程度, 從而可以視為沒有被特定系統(tǒng) "侵入" 了

作者:baocl | 文章來源:賽迪網(wǎng)技術(shù)社區(qū) | 更新時(shí)間:2007-10-25 11:44:32

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    JAVA開發(fā)的6個(gè)實(shí)踐的例子
    JAVA中的抽象類型的一些概念
    java語言開發(fā)程序中的幾個(gè)例子大家看看
    了解java開發(fā)語言在軟件開發(fā)中的幾個(gè)誤區(qū)
    如何才能使用Java實(shí)現(xiàn)內(nèi)部領(lǐng)域的特定語言
    Java開發(fā)學(xué)習(xí)小心使用Date以及Time類
    sun最近修補(bǔ)了一部分java的安全補(bǔ)丁
    Java程序員應(yīng)該了解那些開源協(xié)議
    java性能優(yōu)化的一些見解
    解析c#語言和java語言最相似的地方
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·搜集整理的asp.net的驗(yàn)證方
    ·各種FOR循環(huán)結(jié)構(gòu)的整理
    ·軟件項(xiàng)目開發(fā)中應(yīng)該考慮那
    ·搜集整理的javascript sel
    ·軟件開發(fā)中項(xiàng)目經(jīng)理有那些
    ·學(xué)習(xí)如何在Lambda表達(dá)式進(jìn)
    ·C++基礎(chǔ)知識(shí):結(jié)構(gòu)體數(shù)據(jù)的
    ·C#實(shí)現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補(bǔ)了一部分java的
    ·rss定制的另外一種實(shí)現(xiàn)方式
    ·delphi實(shí)現(xiàn)利用arp欺騙來實(shí)
    ·基礎(chǔ)學(xué)習(xí):基于WF的流程框
    ·網(wǎng)絡(luò)編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開發(fā)過程中的性能設(shè)計(jì)
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    额济纳旗| 仁化县| 沅陵县| 安吉县| 吉安市| 长白| 广昌县| 长阳| 宕昌县| 临潭县| 石河子市| 阳泉市| 拜泉县| 旌德县| 金门县| 桃园市| 尉犁县| 荣昌县| 荆州市| 中宁县| 县级市| 宜州市| 赣榆县| 香港 | 壶关县| 新干县| 克什克腾旗| 临汾市| 勃利县| 广南县| 开化县| 汽车| 望谟县| 庆云县| 离岛区| 观塘区| 苗栗市| 泾川县| 阿图什市| 体育| 屯门区|