Подтвердить что ты не робот

Мотивация и демотивация для переноса приложений на Java 7

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

ИЗМЕНИТЬ:  Посредством миграции я имею в виду, что код останется прежним, но среда выполнения изменится на Java 7. Как я уже упоминал, никаких изменений кода/конфигурации, поэтому я думаю, что это должно повлиять на приложение - это новая оптимизация по умолчанию для компилятора /VM. Поэтому я искал все, что повлияло бы на общее поведение приложения.

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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