Правильно ли говорить, что «Java не зависит от платформы, но зависит от версии?» - PullRequest
3 голосов
/ 23 октября 2009

Наше проектное приложение использует Java 5, и теперь, когда я обновляю Java 6, возникает некоторое несоответствие с функциональностью, и, увидев этот эффект, наш менеджер передал комментарий, что "Java независима от платформы, но зависит от версии" , Это правда?

Ответы [ 4 ]

3 голосов
/ 23 октября 2009

В новых версиях Java будет выполняться код, скомпилированный в предыдущих версиях. Поэтому, если вы скомпилируете свой код в Java 5, а затем попытаетесь запустить его в среде Java 6, он запустится.

Если вы компилируете в Java 6, хотя он не будет работать в среде Java 5.

1 голос
/ 23 октября 2009

Краткий обзор Java SE-совместимости :

Платформа Java, стандартная Издание (Java SE) сильно совместим с предыдущими версиями платформа Java. Каждая версия Java SE имеет вверх бинарная совместимость с предыдущей версия, кроме несовместимости, отмеченные в документация. Java SE не делает поддержка нисходящей исходной совместимости, однако: если исходные файлы используют новые языковые функции или платформа Java SE API, они не будут использоваться с более ранняя версия платформы Java.

Документация описывает любой проблемы совместимости между текущая версия и версия непосредственно перед ним.

Итак, как написано, каждая версия Java SE имеет двоичную совместимость с предыдущей версией, кроме перечисленных несовместимостей (которые рассматриваются как незначительные). Тем не менее, никто не заставляет вас обновляться (если поддержка не является проблемой). Если вы не хотите использовать новые функции новой версии (например, улучшения производительности, улучшения API и т. Д.), Не делайте этого. Но, на мой взгляд, выгоды в целом стоят (незначительных) усилий. Проверь себя.

0 голосов
/ 23 октября 2009

Иногда в новых версиях Java появляются новые функции Java. Однако поддерживать обратную совместимость на все времена общеизвестно сложно, и нельзя ожидать, что код, написанный для более новых версий Java, будет работать со старыми версиями среды выполнения.

0 голосов
/ 23 октября 2009

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

Ничто не говорит о том, что JDK6 будет работать так же, как JDK5. Например, кажется, что порядок в HashMap будет отличаться между двумя версиями, но, поскольку HashMap неупорядочен, это не является реальной проблемой, если только вы не ожидаете, что порядок будет последовательным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...