jvms在hotswapping功能方面有所不同吗?

时间:2012-01-05 10:52:12

标签: java jvm hotswap hotdeploy

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

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

sun jvm上的热浪有着悠久的历史:

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

所以今天jvm hotswap支持的所有内容似乎都是“方法体的变化”。

这是所有jvms共有的唯一热交换功能,还是jvms在hotswapping功能方面有所不同?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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