【发布时间】:2011-07-14 03:20:39
【问题描述】:
我想知道,是否有任何语言允许您在不重新加载整个应用程序的情况下即时添加/删除/更新任何类? (前提是我可以接受一些不便,例如确保当前没有任何方法在运行 + 一些额外的努力来“迁移”类数据成员)。
您替换 1 个文件并在下一个客户端请求中使用它的 Web 应用程序不是我需要的(如 Perl、PHP)。应用程序必须持续运行,并且有一些内部状态。
其他要求是
- 没有阻止使用 SMP 的 GIL 或类似问题
- 最好 - 存在类似 JIT 的 VM(即性能接近本机代码的地方)。理想的解决方案是能够以 CLang 或任何其他基于 LLVM 的语言重新加载模块。这将是完美的。
关于已经做出的答案:
- .NET/Java 不适合 - 它们都有过于庞大的 VM,并且应用程序的很大一部分将在 Linux 上运行。
- Erlang - 看起来有可能,但对我的肉眼来说太可怕了,我无法平静地看着它的 if's、case's 和 strings。另外,我宁愿避免将裸源传输给客户端,编译后的字节码会好得多。
【问题讨论】:
-
除了那些讨厌的性能问题,现代 Ruby 可能会满足您的需求。
-
我假设您需要 JIT 编译器,而不是兼作 DVCS 的 VM?
-
JIT 很好,但不是严格要求。
-
您对庞大虚拟机的评论似乎不合适。从 96 GB 的服务器内存中取出 100 MB 左右似乎并不过分。
-
是的,这不是服务器上的问题,而是客户端上的问题——尤其是当他们必须下载这些 100Mb 时。
标签: programming-languages language-features