Изменение версии Java - PullRequest
       35

Изменение версии Java

7 голосов
/ 04 ноября 2008

У меня есть сервер - клиентское приложение, которое работает на Java 1.3; я хочу перейти на Java 1.6 шаг за шагом, имея в виду сначала несколько клиентов, чем остальные клиенты и, наконец, сервер ... мне было интересно, не могли бы вы указать мне некоторые общие проблемы, которые могут возникнуть, и что я должен заботиться?

Ответы [ 6 ]

11 голосов
/ 04 ноября 2008

Sun старается поддерживать высокий уровень обратной совместимости, поэтому вы, возможно, просто можете установить новую JVM и перезапустить с ней приложение.

Документ, описывающий обратную несовместимость с Java 1.6 с более ранней версией, здесь . Этот документ связывает документы совместимости для Java 1.5 и Java 1.4 . Вы, вероятно, хотите прочитать эти документы, чтобы узнать о возможных подводных камнях.

Java 1.5 и Java 1.6 представили новые форматы файлов-классов. JVM будет также запускать старые файлы классов, но перекомпиляция вашего кода - особенно с JDK 1.6 - поможет новой JVM воспользоваться некоторыми изменениями, чтобы сделать ваше приложение быстрее. Так что вы можете подумать о перекомпиляции.

Кроме того, были введены некоторые новые ключевые слова, а именно: assert (в 1.4) и enum (в 1.5) (как уже упоминал Ювал). Если вы используете эти слова в качестве идентификаторов, перекомпиляция не удастся, но старые файлы классов будут работать. Вы можете предоставить ключ -source для javac, чтобы он мог скомпилироваться: javac -source 1.3 скомпилирует код без assert и enum в качестве ключевого слова.

4 голосов
/ 04 ноября 2008

Sun ведет список несовместимостей, которые появляются в каждой новой версии Java.

В последнем документе для 1.4.2 есть ссылки на заметки о совместимости с JDK 1.0.

4 голосов
/ 04 ноября 2008

От головы до головы, найдите имена enum и assert в полях и локальных переменных ... Эти слова стали ключевыми словами в java 1.4 и 5. Компилятор java 6 пометит их как ошибки компиляции если он их видит.

Ювал = 8-)

3 голосов
/ 18 мая 2009

Как правило, обратная совместимость JVM от Sun очень хорошая, но не идеальная. Я видел, как три очень больших приложения мигрировали с 1,3 до 1,5 и столкнулись с небольшим количеством проблем, самой большой из которых была одна маска Swing, входящая в бесконечный цикл обработки событий и замораживающая приложение под 1,4

.

Серверная часть вряд ли вызовет проблемы, но в Swing произошли довольно серьезные изменения, особенно между 1,3 и 1,4 - подсистема фокуса была, например, полностью переписана.

Все еще возможно, что приложение будет работать без проблем, но вам определенно следует провести обширное тестирование.

2 голосов
/ 04 ноября 2008

Когда я перешел с 1.4.2 на 1.5 на небольшом апплете, над которым я работал, многое сломалось: обновление экрана стало шатким, элементы переместились и т. Д.

JRE Sun не поддерживает обратную совместимость для всего . Иногда, когда предметы устарели, они полностью исчезают через очень короткий промежуток времени.

Мы написали все с помощью «стандартной» Java, также используя библиотеки Sun.

Я также видел несколько приложений, написанных на чистом Java, которые прекрасно работают на одной или двух платформах в одной и той же версии JRE, и на этой версии отказывают другие (продукт, с которым я работаю, теперь отлично работает на Windows, хорошо на Mac OS X, приличная для Linux, но не для Solaris - все с той же JRE).

Перемещение версий - не простой шаг, если только приложение не очень маленькое.

0 голосов
/ 04 ноября 2008

Мой опыт показывает, что совместимость довольно высокая. Я нашел только одно приложение, которое мне не удалось запустить в текущей версии. По какой-то причине (не имея источника, поэтому я не копался в этом), что одно приложение не будет работать ни на чем, кроме 1.4.2. Все остальное, с чем я когда-либо имел дело (некоторые из них весьма значительны), дошло до 1.6 просто отлично. Модификации не требуются.

YMMV конечно, так что вам придется попробовать и посмотреть ...

...