Общее правило заключается в том, что любой код, который написан и скомпилирован с использованием API Java X
, должен выполняться на Java Y
, где Y >= X
.
.исключения из этого;например, если поведение приложения зависит от недокументированного поведения (обычно ошибки) в Java X
, которое было исправлено в более поздней версии.
AFAIK, нет ни одного документа, в котором перечислены эти несовместимости.Примечания к выпуску для всех основных выпусков Java включают список изменений, которые могут привести к поломке старого кода.
Сказав это, разумный подход заключается в том, что вы тщательно тестируете / повторно тестируете свое программное обеспечение, когда выобновить до более новой версии Java.А если ваше программное обеспечение доставляется клиентам / клиентам, сообщите им, если / когда безопасно для них обновление, и (при необходимости) предоставьте им исправления для любых проблем, обнаруженных при тестировании.
необходимо знать полную историю, чтобы мы чувствовали себя в безопасности, чтобы перейти на более крупную версию.
Чувствовать себя в безопасности не имеет значения.Тщательно протестируйте свое приложение на более поздней версии.Это практическое решение only .И это было бы в случае , даже , если бы каждая несовместимость была подробно документирована.
Подумайте об этом.Как вы можете точно знать, что изменение XYZ не повлияет на ваше приложение?Или что какая-то сторонняя библиотека, которую вы используете, не пострадает?Ответ: вы не можете.
Нет способа жаловаться здесь на то, что вы считаете, что Oracle должен решить эту проблему по-другому.Не то чтобы я думаю, что они могли бы справиться с этим лучше, не меняя бизнес-модель.Сколько вы готовы заплатить за платформу Java, которая гарантировала, что не было проблем с совместимостью версий?