Рекомендуется обновление исходного кода Java с 1.4.2 до 1.6.0_10? (пропуская 1.5)

Наш рабочий продукт только для настольных компьютеров до сих пор использовал JDK 1.4.2 (также 1.4.2 JRE, поставляемый с продуктом). Я пытаюсь убедить руководство позволить нам перейти на более новую версию, чтобы получить преимущества производительности, API/функций и удобства для разработчиков.

Поскольку 1.5 достигла перехода EOL, я думаю об обновлении до 1.6.0_10 напрямую (обновление 10 выбрано, поскольку оно является основным). С точки зрения кода, все ошибки компиляции — это просто имена переменных с именем enum, которые я переименовал, и продукт работает нормально.

Вопрос в том

  • Является ли это обновление рекомендованным/хорошим, т.е. пропустить 1.5? есть какие-нибудь уловы
  • Если да, то должен ли я обновиться до 1.6u10 или последней доступной версии 1.6?

Спасибо


person Community    schedule 23.09.2009    source источник
comment
Это внутреннее приложение? Если вы используете специальные функции версии 1.6, вам потребуется, чтобы у ваших пользователей была установлена ​​Java 1.6.   -  person tster    schedule 23.09.2009
comment
Использовали ли вы метод toString() BigDecimal для печати значения BigDecimals? Тогда ОСТОРОЖНО! (это присутствует и в Java 5).   -  person MetroidFan2002    schedule 12.06.2011


Ответы (9)


Я бы сказал, что если вы собираетесь делать обновление, то выбирайте любое последнее обновление. На самом деле вы можете получить некоторое бесплатное повышение производительности с 1.6, я знаю, что некоторые улучшения JVM были сделаны с 1.4.

person Gandalf    schedule 23.09.2009

В общем, Java довольно хороша в плане обратной совместимости.

На случай, если возникнет необходимость узнать, что изменилось в платформе Java с версии 1.4 до версии 6, ниже приводится список изменений, которые Sun указала для каждого выпуска:

person coobird    schedule 23.09.2009

Всегда существует вероятность того, что какой-либо конкретный выпуск может содержать ошибку, влияющую на вас, или что ваш код зависит от некоего неуказанного поведения стандартных классов API, которое с тех пор изменилось, но в целом обновление до последней версии Java рекомендуется и относительно безболезненно. Конечно, вам следует всесторонне протестировать продукт на новой JRE.

person Michael Borgwardt    schedule 23.09.2009

Это Java, а не грязный язык сценариев, который меняет свою синтаксику, грамматику и API в каждой новой версии.

Обратная совместимость — одна из основных особенностей Java.

person ivan_ivanovich_ivanoff    schedule 23.09.2009
comment
Хотя в целом верно, Swing был худшим нарушителем с точки зрения обратной совместимости. - person Yishai; 23.09.2009

Только что сделал это (приложение Swing) с 1.3 на 1.6 :)

Работает (согласно тестированию UAT) отлично (за исключением некоторых изменений, необходимых для пользовательского интерфейса awt). PTE показывает некоторое снижение потребления памяти (ненамного), а серверная часть работает несколько быстрее (я склонен думать, что это связано с улучшениями GC и string intern()).

В любом случае придется это делать из-за EOL, а 1.6 мало чем отличается от 1.5. Так что однозначно 1.6.

person Vladimir Dyuzhev    schedule 23.09.2009
comment
Приложение Swing, над которым я работал, столкнулось с бесконечным циклом событий, когда оно было перенесено с 1.3 на 1.4 — подсистема фокуса, по-видимому, была полностью переписана, и приложение зависело от определенной последовательности для определенных событий, которые не были гарантированы. - person Michael Borgwardt; 23.09.2009
comment
Правильно, нам пришлось внести изменения и в обработчик фокуса. Я считаю, что это был один из самых больших за все усилия по миграции. Второй по величине — внесение всех изменений в пользовательский интерфейс только через поток обработчика событий. Работало (более-менее) в 1.3, зависало в 1.6. Но изменения довольно просты, и, кроме того, выбор 1,5 против 1,6, а не оставаться на 1,3 или переходить на 1,6. - person Vladimir Dyuzhev; 23.09.2009

Является ли это обновление рекомендованным/хорошим, т.е. пропустить 1.5? Есть ли уловы

Я считаю хорошей идеей пропустить 1.5 и сразу перейти к 1.6, и нет абсолютно никаких требований, заставляющих вас проходить 1.5.

Если да, то должен ли я обновиться до 1.6u10 или последней доступной версии 1.6?

Я бы взял последнюю. На самом деле, я думаю, что 1.6u16 является текущим основным выпуском.

person Pascal Thivent    schedule 23.09.2009
comment
Чтобы добавить к этому, всегда выбирайте последнюю версию данного выпуска только из-за безопасности и исправления ошибок. - person Powerlord; 23.09.2009

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

person akf    schedule 23.09.2009

Недавно мы обновили наше Swing-приложение (много перетаскивания) с 1.4 до 1.6, чтобы получить параллельные возможности, и мы не заметили ни одной проблемы, связанной с самой Java. Мы также хотим перейти к Nimbus Look and Feel, так как внешний вид Windows не выглядит и не похож на Windows.

Убойная функция, которую вы должны показать своему боссу, — это то, как подключиться к приложению с помощью jvisualvm, чтобы в случае возникновения проблем проанализировать работающую программу.

person Thorbjørn Ravn Andersen    schedule 23.09.2009

Приложения Swing определенно могут иметь проблемы от версии к версии. У нас были проблемы при каждом обновлении (с 1.3 до 1.4 и с 1.4 до 1.5, и мы застряли в 1.6 - и больше проблем). Впрочем, нет смысла тратить время на 1.5. Перейдите сразу к 1.6, последнему выпуску, вы не сэкономите время, перейдя на 1.5, вы просто потратите кучу времени на тестирование 1.5, а затем повторите это в какой-то момент в будущем для 1.6. Гораздо экономичнее перейти на 1,6.

Множество незначительных исправлений устраняют проблемы, поэтому придерживаться версии 1.6_u10 — это просто создавать проблемы. u10 был большим обновлением (вопреки его названию) с точки зрения Swing, и несколько выпусков после этого касались проблем, которые выявились после выпуска u10.

person Yishai    schedule 23.09.2009