首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索具有热代码交换的编程平台

搜索具有热代码交换的编程平台
EN

Stack Overflow用户
提问于 2009-05-17 14:18:58
回答 8查看 1.8K关注 0票数 4

我目前正在集思广益地思考如何在程序运行时升级它。(调试时不使用“生产”系统。)

但是,它需要的一件事是将修改后的源代码或已编译的字节代码实际提交到运行过程中。

伪码

代码语言:javascript
复制
var method = typeof(MyClass).GetMethod("Method1");
var content = //get it from a database (bytecode or source code)
  SELECT content FROM methods WHERE id=? AND version=?
method.SetContent(content);

首先,我想要实现该系统不需要复杂的面向对象的工作.这就产生了以下要求:

  • 更改函数的源代码或字节代码
  • 降函数
  • 添加新功能
  • 更改函数的签名

使用.NET (和其他人),我可以通过IoC注入一个类,从而更改源代码。但是加载会很麻烦,因为所有的东西都必须在程序集中或者通过发射来创建。也许用Java会更容易些?我认为整个ClassLoader是可以替换的。

有了JavaScript,我可以实现许多目标。简单地评估一个新函数(MyMethod_V25)并将其分配给MyClass.prototype.MyMethod。我想我们也可以用"del“来降低函数。

哪个通用平台能处理这些事情?

EN

回答 8

Stack Overflow用户

发布于 2009-05-17 14:58:13

在Java中,您有一个OSGi项目,它帮助您升级和更改应用程序的模块,而不涉及其他模块。

如果您不介意学习不同的东西,那么二郎编程语言是从底层设计的,考虑到了这种类型的应用程序。

票数 3
EN

Stack Overflow用户

发布于 2010-03-27 14:52:13

我认为任何基于图像的语言都会支持这一点。我知道Common是这样做的,因为它可能是最常见的部署Lisp web应用程序的方式之一,但我怀疑它在Smalltalk中也会同样工作。

票数 3
EN

Stack Overflow用户

发布于 2009-05-17 14:31:59

大多数动态语言都具有此功能。看看Ruby:您可以在运行时修改现有的方法等等。当IronRuby退出时,您也可以在.Net平台上这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/874706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档