2013-03-03 1 views
4

Я унаследовал очень старое приложение, которое не было модернизированной, потому что это зависит от библиотеки третьей стороны, которая зависит от Java 4.Java 6 VM для вызова Java VM 4

Избавление от этой третьей стороны библиотека не произойдет в ближайшем будущем, поскольку критическая часть системы зависит от нее.

Я хочу привести Java-версию приложения в актуальное состояние и думать о перемещении зависящей банки в свою собственную виртуальную машину и затем иметь какой-то вызов между виртуальной машиной Java 6/7 и виртуальной машиной Java 4.

Первые мысли - использовать RMI. Очевидным первым вопросом является совместимость между виртуальными машинами при использовании разных версий Java. Третья сторона lib создает потоки байтов, поэтому на возвращаемые данные не влияет сериализация. Переданные данные могут быть обработаны во что-то, что может быть передано, если проблема совместимости.

Это правильный путь?

Есть ли лучшие способы?

+6

Я чувствую, что вы тратите свое время, если вы не можете удалить зависимость Java 4 - вы получаете небольшую безопасность и много накладных расходов. Какова фактическая ошибка, Java довольно обратная совместимость - возможно, вы можете обернуть стороннюю библиотеку, чтобы она могла работать под Java 6? –

+0

RMI - хороший выбор. Вероятно, это самый простой вариант, и из вашего описания сторонней библиотеки звучит так, что не стоит тратить на это больше усилий, чем необходимо. – VGR

ответ

0
  1. Вы можете сделать обертку, как сказал Филипп в комментарии твой ... Есть только некоторые незначительные изменения, которые вы должны сделать в своей старой библиотеке
  2. вы можете использовать RMI ... это безопасно! Я проверил это, и это хороший подход ... вы не должны изменить старые грязный код
  3. вы можете также использовать веб-службу, но я предпочитаю RMI

Если вы должны изменить что-то небольшое и у вас есть слишком много проблем, чтобы изменить JVM (потому что кто-то изменили некоторые jdk библиотеки [случились мне]) просто оставить его в Java 4 ... :)

проблема у меня было то, что я нуждался в библиотеку из jdk 1.5 использовать в jdk 1.4, но моим решением было декомпилировать jdk 1.5 и скомпилировать его с помощью jdk 1.4 ... потому что старый jdk что-то изменило в нем ... Проблема, которая была у меня на декомпилированном коде, заключается в том, что я не мог найти очень хороший декомпилятор, который знает о casting ... и у меня были ошибки stackoverflow (но их легко исправить)

Надеюсь, мой ответ вам поможет