j9国际站|(官网)点击登录

新疆j9九游会

本站首页 j9九游会 乐成案例 公司新闻 公司简介 客服中心 软件技能 网站建立
  您如今的地位: 新疆二域j9九游会公司 >> 开辟言语 >> 文章注释

基本办理j9九游会框架的侵入性题目

 

       j9九游会框架之以是跟侵入性扳缠不清[bān chán bú qīng], 基本的缘故原由照旧框架要支持使用的某种/某些逻辑和功效, 可以说是局部的去完成使用的目的. 但这些功效假如不克不及让使用去定制, 其实际使用价钱就又很微渺了. 以是框架是必要和使用交换的, 而交换的次要目标是为了定制.

想到这个地方, 我的反响是声明式编程, 让使用经过某种方法表达出本人的定制需求, 这个表达的方法就可以是多种多样的了: 经过遵照商定, 承继特定框架基类, 完成特定框架接口, 标注Annotation, 编写设置装备摆设文件, 挪用框架API, 等等.

而像Java如许的静态言语所能支持的表达方法, 无论怎样看都可以挂上 "侵入性" 的标签, 由于假如框架一旦定了它要求使用采取的方法, 使用就得随着它走. 在使用需求表达方法题目上, 框架之间的相容性既没有实际研讨, 更没有理论习气.

这里提到 "框架的侵入性" 仿佛用的是它最广泛的涵义, 便是对使用编程举动的影响. 要是这么说任何框架都不行能没有侵入性了, 只是有些让使用开辟职员的日子很忧伤, 有些则好一点. 不外以现在的软件系统局面来看, 相对的 "侵入性" 题目还没有措施办理, 更实际一点, 好像只要它对单位化开辟和测试的影响比力有大概办理, 眼下讨论才比力有实际意义.

不外对下一代软件框架系统, 我却是感触有些希冀, 随着Annotation的成熟和遍及, 关于基于Java的开辟来说, 我以为这个趋向曾经邻近了. 我的想法是可以运用一下逆向头脑, 既然使用与框架的交互无可制止, 那么与其主动的承受框架的 "侵入" 不如由使用本身接纳自动举动, 举行 "引入".

使用的自动引入可以从已有的 声明式编程 动身, 关于比力大的综合使用偏向, 好比 Web使用, 以订定通用的使用需求表达标准为手腕, 经过公然的标准, 和谐使用步伐和体系框架之间的交换. 这听起来便是JCP要为JavaEE做的事变, 是的, 以停止到现在的软件系统局面, 这个事变还不得不由人力, 物力, 财力丰盛的贸易实体去完成, 它们也必需在这个范畴有充足的贸易长处吸引也才有动力去做.

但异样是JCP出来的J2EE标准, Servlet很乐成, 而EJB却不是. 而且Servlet很好的办理了它谁人年月的Web开辟题目, 而软硬件的开展所推进出来的新需求, 新题目又飞快增加, 对新标准的需求不但是自己增加很快, 它的增加速率也会随着工夫增加. JCP曾经开端显得蠢笨且乏力了.

一个实质性的题目是: 现在的标准是基于大批编程言语API的大局部的天然言语形貌. 基于如许的形式, 本钱太高, 就算是现在的大型开源社区要开辟本人的系统标准也会是难上加难.

在这个偏向上, DSL(Domain Specific Language)是个很好的创意, 可以有针对性的简化专门范畴的规约方法. 不外, 我以为另有DSL没有分外存眷的一点, 便是统一种言语中声明与完成语法的分散与融汇:
  DSL偏向于作为一种声明式的言语, 被设计为独立利用, 它很大概由另一种通用言语举行表明而完成. 它的语法很大概可以间接挪用完成言语, 但很难酿成编写使用所用言语的一局部. (我很希冀它酿成使用代码的声明局部)

回到办理侵入性的题目下去, 我假想的方法是现在还没有的, 至多还没有体系化. 那便是可以用一种语法给使用编程言语增长用于声明的语法, 同时这种语法也照顾到给使用声明的需求提供完成的体系编程言语语法, 从而如许的语法可以同时 表达/束缚/支持 使用声明和体系完成.

看上去静态言语在这个偏向上有最深沉的久远潜力, 不外用于有剖析需求的通用产业开辟范畴, 静态言语要走的路另有点长.

现在基于Java的开辟, 使用起Annotation机制会在这个偏向上有长足停顿, 使用经过援用标注来声明需求, 体系在编译时经过Annotation Processor以及Language Model, 在运转时经过反射, 两者联合起往复了解和完成使用的需求. 而界说和援用Annotation都遭到新增的Java语法束缚.
不外基于Annotation机制的 使用/体系 交换偶然候照旧必要一些天然言语形貌的标准, 幸亏这个曾经比地道形貌/了解大篇的商定和接口挪用逻辑次序浅易多了. 同时Annotation援用只能放在modifier的地位照旧一个过大的束缚, 这个还必要Java言语进一步的演出来办理.

总结上去, 体系框架经过 "侵入" 要到达的 使用定制 目标是不行制止的, 而要办理主动的遭到 "侵入" 的场合排场, 我所能想到的最好办法便是去自动 "引入". 而 "引入" 所能到达的 "自动" 水平取决于其方法办法的机动水平和负面影响巨细. 当使用的特定需求可以经过一致的(声明)方法使用大多差别体系(包罗测试时的Mock体系)而完成时, 使用的 "引入" 举动也就到达了一个比力抱负的自动水平, 从而可以视为没有被特定体系 "侵入" 了

作者:baocl | 文章泉源:赛迪网技能社区 | 更新>###44:32

  • 上一篇文章:

  • 下一篇文章:

  • 相干文章:
    JAVA开辟的6个理论的例子
    JAVA中的笼统范例的一些观点
    java言语开辟步伐中的几个例子各人看看
    理解java开辟言语在j9九游会中的几个误区
    怎样才干利用Java完成外部范畴的特定言语
    Java开辟学习警惕利用Date以及Time类
    sun近来修补了一局部java的宁静补丁
    Java步伐员应该理解那些开源协议
    java功能优化的一些看法
    剖析c#言语和java言语最类似的地方
    软件技能
    · 开辟言语
    · Java技能
    · .Net技能
    · 数据库开辟
    最新文章  
    ·搜集整理的asp.net的验证方
    ·种种FOR循环布局的整理
    ·软件项目开辟中应该思索那
    ·搜集整理的javascript sel
    ·j9九游会中项目司理有那些
    ·学习怎样在Lambda表达式进
    ·C++底子知识:布局体数据的
    ·C#完成短信发送步伐的例子
    ·sun近来修补了一局部java的
    ·rss定制的别的一种完成方法
    ·delphi完成使用arp诈骗来实
    ·底子学习:基于WF的流程框
    ·网络编程中怎样得知一次数
    ·怎样逆序输入单链表?
    ·j9九游会历程中的功能设计
    关于j9九游会 | j9九游会 | 下载试用 | 客服中心 | 联系j9九游会 | 相关单位 | 网站舆图 | 新疆电子舆图 | RSS订阅
    版权一切 © 2016 新疆二域j9九游会网 www.k8w.net All Rights Reserved
    新疆j9九游会>###、4811639.
    ### ;>###华联大厦A-5C 邮编:830000