Мотивации и демотивации для миграции приложений на Java 7 - PullRequest
18 голосов
/ 22 ноября 2011

Java 7 существует уже некоторое время.Теперь, если приложение должно быть перенесено на Java 7 без каких-либо изменений (код / ​​конфигурация), есть ли какие-либо присущие ему преимущества или недостатки?Мне было любопытно узнать, с какими проблемами сталкиваются во время такой миграции.

EDIT : Под миграцией я имею в виду, что код останется прежним, но среда выполнения изменится на Java 7.изменения в коде / конфигурации, поэтому, я думаю, что это должно повлиять на приложение, это новая оптимизация по умолчанию на уровне компилятора / виртуальной машины.Поэтому я искал что-нибудь, что могло бы повлиять на общее поведение приложения.

Ответы [ 5 ]

8 голосов
/ 22 ноября 2011

Очевидный недостаток на данный момент, который я обнаружил в своем приложении (которое было написано на Java 7 для начала), заключается в том, что у большинства людей нет 7, и чтобы его получить, нужно приложить немало усилий. По умолчанию Страница загрузки Java на момент написания статьи все еще указывает на Java 6, а не на 7, и в большинстве современных дистрибутивов Linux, по-видимому, также установлено 6 по умолчанию. Ubuntu 11.10 является первым, кто даже имеет Java в своем хранилище.

Также, что касается Ubuntu, я заметил одну вещь: даже если Java 7 установлена, Я не нашел чистого способа проверить, является ли он значением по умолчанию (и снова Скорее всего, это не так.) Я просто использую сценарий оболочки, который анализирует вывод из update-alternatives --query java и запускает его соответствующим образом.

С моей стороны было сознательным решением перейти с 7, потому что в нем было много новых функций, которыми я мог бы воспользоваться, и к тому времени, когда приложение фактически достигло точки, в которой я бы рассмотрел его из альфа / бета Надеюсь, что Java 7 обретет больше опоры, чем в любом случае!

Преимущества в значительной степени заключаются в использовании дополнительных функций - я обнаружил, что конструкция try with resources сделала большую часть моего кода более удобной для чтения (нет больше вложенных элементов try / finally внутри try / catches) и Я также использую некоторые дополнительные API, такие как API Filewatcher. Мне также очень нравится тот факт, что JComboBox и лежащие в его основе модели теперь являются общими, что позволяет сэкономить немало средств приведения в приложениях Swing.

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

3 голосов
/ 22 ноября 2011

Я бы также рассмотрел изменение вероятности / требования запуска вашего нового кода (Java 7) в Java 6 или менее, поскольку некоторые функции не будут компилироваться, как показано ниже:

  • Строки в выражениях switch
  • операторы try-with-resources
  • улучшенный вывод типа для создания универсального экземпляра («оператор ромба»)
  • улучшена обработка исключений (multi-catch)

Убедитесь, что версия java, используемая в рассматриваемых вами проектах, вряд ли будет применена перед переключением.

2 голосов
/ 22 ноября 2011

Вопрос действительно «когда», а не «если».Если у вас есть острая необходимость в некоторых новых функциях Java 7 (сомнительно), то это очевидно.

В противном случае я бы лично подождал около года или около того, чтобы отсеять любые другие возможные проблемы и головные боли, прежде чем серьезно задуматьсямиграция производственных сред и сред UAT.

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

1 голос
/ 24 июня 2012

Я думаю, что в основном вам будет хорошо с миграцией, хотя вы должны проверить с помощью ссылки, предоставленной Oracle, о несовместимости между Java 1.6 и Java 7 http://www.oracle.com/technetwork/java/javase/compatibility-417013.html

В Java 7 есть несколько несовместимостей на уровне источника, таких как "Улучшенная обработка исключений", которые могут вызвать некоторые проблемы

0 голосов
/ 22 ноября 2011

Это хороший вопрос, и мой ответ полностью основан на опыте и новых функциях, предоставляемых Java 7.

  1. Все новые функции облегчают работу разработчика, а не создают проблемы кросс-совместимости.
  2. Единственный недостаток, который я вижу в перекрестной совместимости между банками сторонних производителей.
  3. У вас могут возникнуть проблемы с производительностью между двумя версиями Java. И это будет зависеть от области кода Java, подробности смотрите http://inebium.com/post/java-7-new-release-performance-code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...