- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.外文资料翻译译文
安全统一的Java代理
摘 要
在面向对象编程,代理抽象有长期持久的传统。从设计模式中固有的编程语言的支持,从远程方法调用,以简单的方式行为的反思,化身以及代理的应用来看是数不胜数。版本1.3以来,Java已经支持动态代理的概念。这样一个对象符合一套程序所指定的类型,可以用在任何这些类型中的任何一种表达并达到预期,但它是具体化地对它进行调用。这种能力要使用已经允许动态代理实施范例,例如行为反射,结构一致性,或者多的方法。唉,这些代理只适用接口状态。一组类型,包括类创建动态代理的案件尚未解决,这意味着它是目前无法创建一个动态代理符合应用程序定义的类类型。
它的弱点是坚决地限制超越代理的固有限制,这些都得到了功能更深入的编程语言的支持,如行为反映动态代理的任何应用程序。
在本文中,我们开展了当前支持动态的代理服务器,在 Java 中,评估根据一组代理实现的通用标准。我们提出了一种支持动态的代理 类 ,在转型中对类在加载时组成,包括执行封装字段访问泛型计划执行。从程序员的角度来看,这些转换无缝地扩展了动态代理的当前支持的范围。我们认为我们的变换具有安全性,并讨论了精确的利益和我们的扩展的成本,通过今后的方法调用引入标准条款达到平衡安全性和透明度的实现。
爱思唯尔 2012 bv 公司保留所有权利
1.简介
在面向对象编程,代理的概念有一个长期的传统,享受着无数的化身和应用。代理设计模式和其相关模式,例如装饰模式(可以动态附加到对象的责任)或适配器模式(对一个表达式执行的方法调用可以是 翻译 )[15],例如,可能是其中最突出的所有设计模式。普遍和传统应用程序的代理服务器的例子有远程方法调用[39]、 未来对象中的所谓未来的异步方法调用[55] 和行为反射[25]。
1.1Java 动态代理
在1.3版中,Java的?内核反射API[45]可以看到动态代理的加法。动态代理是一个类型代理,在运行时的一种类型的创建(更一般的一组类型)由应用程序定义。只要可以预期 (的任何这些类型的) 那个类型的表达式,就可以以一致的方式使用此类对象。这种动态代理对象上的方法m的调用是具体化的,不知如何从静态类型的上下文对动力相互作用在哪里可以在 s 执行的上下文中执行的任何行动。加上前面介绍的Java作为其内省功能的一部分动态调用设备,动态代理的概念使得上述模式和应用得到很好的实现。各种报告可以在万维网上找到基于Java的动态代理,如隐性(结构)的一致性,未来的调用流行的范式,动态多调度的实现(也称为多方法),设计合同[33],或面向方面的编程[26](参见,例如,[11,21],分别为后两个)。此外,动态代理已取代 rmic 预编译器创建的 Java RMI 的代理。
1.2限制
动态代理中的Java的实现是较为简单而优雅的。当创建一个接口I的动态代理,一类实施信息的一个实例被创建,在运行,加载,和链接时被自动生成该类作为字节码。这不需要从Java编译器或虚拟机[44]得到具体的支持。离开抛开固有的局限性,代理服务器使用他们专门为模仿 (代理和它所代表的对象保持独特的实体) 的其他对象时,这个简单的办法不幸的是体现重要的限制: 动态代理并非均匀可用,但这只针对接口。更准确地说,而动态代理可以实现甚至多个接口的创建,这样的代理服务器不能分配给变量的静态类型是一个类类型。这种限制强烈地阻碍了动态代理的潜力。为了充分利用通过基于动态代理实现上述的范例,程序被最终约束定义所有变量作为接口类型,并且使用此类仅用于实例化。以未来的调用,直观理想的情况下动态代理为例。除非尊重上述约束,他们目前只可以在一种显式形式 [55] 没有这种代理。隐式的,更透明期货当然可以用其他方式来实现。 Pratikakis等人,[37]例如使用一个静态分析和相应的程序的转换,但都不过是具体到特定未来的方法调用。
1.3贡献
本文的目标是使动态代理的概念在Java中更均匀地可用,即也为类。展开的动态代理当前支持及其Java实现,在我们提供以下贡献之后。
?一般来说,在 Java 环境中,引入一套的标准来评价 proxification 计划来讨论限制的代理。这套指标包括维度安全、 安全、 透明度或性能开销。
?我们建议统一的动态代理为 Java,Java 中的动态代理服务器的现有支持的建设。这导致创建一个动态代理类下的一组类型,包括类C‘,为C类的子类‘本身。为了使这种扩展方式是可行的,我们提出了一套模块化的字节代码的转换包括改造实例字段一个总体方案访问的自动生成的getter / setter方法调用。我们正式确定这种转变与当前支持动态代理服务器作为轻量级 Java [20],扩展为字段
文档评论(0)