Java SE 8: будет ли скомпилированный JAR Java 7 полностью совместим с Java 8?

1

Я скомпилировал свои старые JAR файлы в Java 7, а в моей рабочей среде есть Java 8. Есть ли что-то, что мне нужно, чтобы быть осторожным в прямом развертывании JAR файлов на Java 8 Environment? Я тестировал их на Java 8, и он работал нормально. Могу ли я столкнуться с какими-либо проблемами, или я должен быть в порядке? Мне было интересно, потому что я обсуждал удаление Java 8 и установку Java 7.

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

  • 0
    Я помню, как шел с 6 до 7 и сталкивался с ошибками, особенно при сортировке. Изменение в сортировке по умолчанию (введение TimSort) ввело проверку, которая заставляла ошибочные алгоритмы сравнения громко терпеть неудачу вместо молча. Как оказалось, наша «ошибка» никогда не проявлялась в наших сценариях использования, потому что к концу она разобралась. Но TimSort обнаружил ошибку во внутренней проверке (для проверки условий, которые никогда не должны возникать) и выдал исключения. Единственный реальный способ узнать это проверить, проверить, проверить.
Теги:
compatibility

3 ответа

1
Лучший ответ

Мне было интересно, потому что я обсуждал удаление Java 8 и установку Java 7.

Я предполагаю, что вы имеете в виду наоборот?

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

На практике, однако, иногда возникают проблемы, поэтому я бы тщательно тестировал тестирование. Это может быть связано с ошибками регрессии или (что более вероятно, по моему опыту) ошибкой кода, который мог бы работать нормально под Java 7, но не под 8. (FWIW, у меня было несколько приложений для FX, которые смешивались под 8, но работали нормально 7, оказалось, что оба из-за ошибок в моем коде, которые по совпадению не имели никаких необычных побочных эффектов при работе с 7.)

  • 0
    Нет, я не это имел в виду наоборот. JAR скомпилирован на 7 и отлично работает на 7. Лучше сформулировать вопрос: должен ли я просто придерживаться 7, так как он прекрасно работает и не беспокоиться об обновлении до 8? Я проверил на 8, и это работало также хорошо, однако, я боюсь, что что-то может пойти не так на 8.
  • 0
    @ user1757703 Хорошо, в таком случае я бы определенно рекомендовал поддерживать совместимость основной версии Java с вашей средой разработки / производства. Независимо от того, решите ли вы повысить их до 8 или понизить до 7, это ваш звонок (но лично я всегда предпочел бы обновить их, если у вас нет веских причин поступить иначе).
Показать ещё 1 комментарий
1

Обычно проблем не должно быть. В противном случае вам будет трудно использовать любые сторонние библиотеки, которые явно не скомпилированы для Java SE 8.

Я рекомендую запускать автоматические тесты на сервере непрерывной интеграции, таком как Jenkins, используя Java SE 8 и посмотреть, есть ли у вас какие-либо проблемы.

0

Безопасно упаковывать приложение Java 8 с jar-зависимостями, скомпилированными с Java 7. Однако, учитывая сказанное, помните о различиях в JDK 7 и 8, что может привести к тому, что один и тот же код Java может вести себя по-разному при работе на JDK 8 и JDK 7 (см. примечания к выпуску JDK 8)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню