2015-11-10 2 views
4

Каков наилучший способ переноса Java-код старшего JDK (1.5) к более недавно Java версии (1.8), чтобы обеспечить от его новые функции и улучшения. У нас есть JDK 5 базовый код большой Java и хотите перейти на JDK 8.Как перенести Java-код на более поздние версии JDK (например, 1,8)

Есть много предупреждений компилятора и подсказок (например, diamond operator, multicatch, unnecessary (un)boxing и т.д.), что позволит повысить производительность, читаемость кода, и т.д.

Мы используем Netbeans IDE. Существуют ли какие-либо плагины, которые мы можем использовать или есть сценарии миграции?

+0

Не знаком с Netbeans. Но вы можете попробовать IntelliJ (бесплатная версия), чтобы исправить эти проблемы. – ZhongYu

+2

Предупреждения, которые вы описываете, не из компилятора, а из Netbeans IDE. Они являются частью именно той функции, о которой вы просите. Вместе с этим предупреждением Netbeans предлагает исправления, и вы можете выполнить эти проверки и исправления по всему проекту, если хотите. Никакого дополнительного плагина не требуется. – Holger

ответ

1

Найдено, что я искал: NetbeansInspect and Transform.

Это может быть использовано для преобразования полной базы кода (или ее частей) с конфигурацией изменений.

Вот как это работает:

  1. выберите проект
  2. нажмите Refactor меню
  3. нажмите Inspect and Transform пункт меню
  4. выбрать configuration и настроить его с помощью кнопки Manage
  5. выбрать нужный (например, Can Use Diamond, Join catch sections using multicatch, unnecessary boxing и т.д.)
  6. нажмите Inspect
  7. Обзор предложил предложения рефакторинга и нажмите Do Refactoring

Ваш полный код база переработан и использует выбранные новые функции и новые идиомы.

IntelliJ IDEA имеет аналогичную функцию. См Analyze>Inspect Code ...

В Затмение это называется clean up в code style (конфигурации) или source (меню).

1

К сожалению, нет никаких волшебных способов достичь того, что вы просите, но вот несколько указателей, которые помогут вам перенести код на JDK 1.7 (обратите внимание, что JDK 1.8 уже давно отсутствует и 1,7 уже из поддержки официально Oracle):

  • Используйте Checkstyle или аналогичный плагин в Eclipse, чтобы найти проблемы

  • Создайте свой проект с JDK уровня 1.7 компилятора в Eclipse,; предупреждения, сделанные Eclipse, гораздо удобнее, чем предупреждения, напечатанные на консоли компилятором командной строки

  • Теоретически JDK 1.7 обратно совместим с 1.5. Исключение составляют ключевые слова assert и enum. Если вы использовали эти слова как пользовательские имена типов/методов, вы получите ошибку компиляции. Поэтому в большинстве случаев вы можете сразу перейти к предупреждениям. Если дело дойдет до драки, вы можете игнорировать многие из этих предупреждений (конечно, только если необходимо)

+7

И 'assert', и' enum' присутствовали в Java 1.5. – EJP

4

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

Проблемы, с которыми вы, вероятно, столкнетесь, будут гораздо глубже, вероятно, в реализации коллекций или методов, которые изменились с годами.

Если у вас нет набора тестов, который охватывает критические пути вашего кода, то начинаются . Вам понадобится этот набор тестов, чтобы гарантировать, что миграция ничего не сломала.

Далее ознакомьтесь с руководствами по совместимости for Java 1.7 и Java 1.8 и убедитесь, что на эти изменения не повлияло ничто, что вы используете в частности.

И, наконец, можно очистить кусок кода, но он должен не должен быть адресован. Единственное, что вам нужно сделать, это заставить платформу работать на новой версии Java. По мере того, как вы работаете в базе кода, дисциплинируйте себя и команду, чтобы использовать новые идиомы Java, такие как нотация бриллианта, и попробовать-с-ресурсами, где это применимо.

+0

Спасибо за подробный ответ. Совместимость здесь не проблема. У нас также есть несколько тестов. Я особенно искал переход, чтобы воспользоваться усовершенствованиями новых jdks. –

 Смежные вопросы

  • Нет связанных вопросов^_^