【问题标题】:Java 6 VM to call Java 4 VMJava 6 VM 调用 Java 4 VM
【发布时间】:2013-02-17 20:56:06
【问题描述】:

我继承了一个尚未升级的非常旧的应用程序,因为它依赖于依赖于 Java 4 的第三方库。

由于系统的关键部分依赖于它,因此在不久的将来不会摆脱这个第三方库。

我想更新应用程序的 Java 版本,并且正在考虑将依赖的 jar 移动到它自己的 VM 中,然后在 Java 6/7 VM 和 Java 4 VM 之间进行某种调用。

首先想到的是使用 RMI。显而易见的第一个问题是使用不同 Java 版本时 VM 之间的兼容性。第三方库生成字节流,因此返回的数据不会受到序列化的影响。如果兼容性是一个问题,传入的数据可以被处理成可以传递的东西。

这是正确的方法吗?

有更好的方法吗?

【问题讨论】:

  • 如果您不能真正删除 Java 4 依赖项,我觉得您是在浪费时间——您获得的安全性很少,而且开销很大。实际的错误是什么,Java 是相当向后兼容的——也许你可以包装第三方库以便它可以在 Java 6 下运行?
  • RMI 是一个不错的选择。这可能是最简单的选择,而且从您对第三方库的描述来看,听起来不值得为此付出不必要的努力。

标签: java serialization jvm rmi java-6


【解决方案1】:
  1. 您可以像 Phillip 在您的评论中所说的那样做一个包装器...您只需要在旧库中进行一些小的调整
  2. 您可以使用 RMI...它是安全的!我测试了它,这是一个很好的方法......您不必更改旧的混乱代码
  3. 您也可以使用 Web 服务,但我更喜欢 RMI

如果你必须修改一些小的东西并且你有太多的问题来改变JVM(因为有人修改了一些jdk库[发生在我身上])把它留给java 4... :)

我遇到的问题是我需要一个来自jdk 1.5 的库以在jdk 1.4 中使用,但我的解决方案是反编译jdk 1.5 并用jdk 1.4 编译回来...因为旧的@987654327 @ 里面有一些修改... 我在反编译代码上遇到的问题是我找不到一个非常好的反编译器,它知道casting...而且我有一些stackoverflow 错误(但这些很容易修复)

希望我的回答对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 2011-04-12
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多