我在写硕士论文,其中涉及AOP。净,除其他事项外,我提及的缺乏支持用于更换课程负载时的一个重要因素的事实,那就是,目前没有。净AOP框架,执行真正的动态织--不是没有强加的要求编织课程必须扩大 ContextBoundObjectMarshalByRefObject 或获得所有他们的语义上的一个接口。

你可以但是做这Java在JVM感谢 ClassFileTransformer:

  • 你的延长 ClassFileTransformer.
  • 你订购的类负荷的事件。
  • 上级负荷,你重写级和更换。

所有这一切都是非常好,但我的项目主任已经问了我,相当于最后一分钟,给他一个列表的框架(和相关的语言),做/不支持的类替代。我真的没有时间来找这个现在:我也不会觉得舒服只是在做一个肤浅的研究和潜在的投入错误的信息在我的论文。

所以我问你,噢,万能的程的社会,你可以帮忙?当然,我不是要你来研究这个你们自己。简单地说,如果你知道 肯定 一个特定的框架支持的/不支持这一点,把它作为一个答案。如果你不知道请不要忘记的一点。

非常感谢!


编辑:@ewernli

  • 我在问关于(2)条。
  • C#你确实可以这些代码在运行时间和创新课程的动态,但他们 新的 班,他们不替代现有类。什么我想要做的是改变类在装载时间,像你可以做Java的 ClassFileTransformer.
  • 有关修改的方法的签名:是的,你是正确的。我应该提及的是,在我的情况下,我不需要修改类的接口,而内容的方法。

你的答案是非常有益的。谢谢你:)

有帮助吗?

解决方案

你是在问关于(1)真实的类更换在运行时间,或(2)设施的转变类时,它的装载或(3)语言支持动态类装?

Java支持动态类加入 ClassLoader,的转变 ClassFileTransformer, 但没有真正的类替代。

我不知道C#但我想你可以这些代码在运行的时间并创造新的类的动态,因此可以实现(3)和可能(2)条。

真的类更换主要是支持只能由 动态语言, 如一般,红宝石,我猜蟒蛇和其他几个人。这需要转换的类的实例,以配合新的形状。他们通常初始化新领域的零如果此类变化。

据我所知、动态语言的移植到JVM广泛的黑客的类加载到支持类更换在运行时间。对独立,看到 第一的口味的调动 获得更多的指针如何,他们现在就这样做,有什么问题和如何在即将到来 invokedynamic 可能会有帮助。

这不是提供静态类型的语言,因为并发症的 类型的系统.如果一方法的签名变化的一类,其他现有的课程已载入可能没有必要符合新的方法的签名,这不是安全的。在java但是你可以改变的方法,只要的签名是同一个使用的 Java平台,调试器架.

已经有一些企图将此功能添加到爪哇,和/或静态型的语言:

  • 运行时支助类型安全动态Java类
  • 支持意料之外的动态自适应的应用程序的行为
  • 技术的动态更新的Java软件

本文提供的一般概述的相关问题

  • 影响类型系统在动态演进的软件

不确定到底,如果地址你最初的问题,但这些指针也许是有趣对你的论文。

其他提示

Java 语言 不支持的类文件的更换。JVM暴露的特征通过的课程。因此,所有的 语言已被移植到JVM 可以利用它。

二郎 支持热码的交换,并且如果你是来还为理论框架,即动态模型类更新,您可以看一看 克里尔奥 语言(解释).

目标-C runtime library支持动态建设和登记的课程,懒惰的方法注册和"打乱顺序的操作方法"的该方法的实现可以交换在运行时间。以前的版本支持"类打乱顺序的操作",由这一类可能是取代另一个在运行,但现在打乱顺序的操作方法是用来代替。 这里的参考文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top