1

在开发期间重新启动您的(服务器)可能会消耗大量时间。zeroturnaround 的人们意识到了这一点,并创建了 jrebel,它具有令人印象深刻的功能列表:

http://zeroturnaround.com/jrebel/features/

sun jvm 上的 Hotswap 历史悠久:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4910812

所以今天 jvm hotswap 所支持的似乎都是“对方法体的更改”。

这是所有 jvm 共有的唯一热交换功能,还是 jvm 在热交换功能上有所不同?

4

2 回答 2

1

主要的 JVM 在允许热交换实时代码方面有所不同。例如,在调试和加载类的字节码检测期间。AFAIK,大多数应用程序服务器实际上卸载了类加载器并重新加载所有代码,这是一个更粗略的热交换,并且在所有主要的 JVM 上工作方式相同。

就个人而言,我会尽量确保您可以在单元测试中测试大部分代码,这需要很少的时间,并且可以在几秒钟内重新启动您正在开发的服务。(这避免了这个问题)

于 2012-01-05T11:05:14.790 回答
0

您可以使用 Java 的 TCK(技术兼容性工具包)来确定 JVM 必须满足什么合同才能被认证为与 Java 兼容。

http://jcp.org/en/resources/tdk

于 2012-01-05T11:12:30.987 回答