Обратите внимание, что для чего-то, чтобы быть обратно совместимым, должен быть аналог, который является совместимым в прямом направлении (преднамеренно или непреднамеренно).Например: совместимы ли дисководы для чтения DVD с дисками или совместимы с дисководом для чтения компакт-дисков?
В этом случае все зависит от того, смотрите ли вы на компилятор (или генерируемый им байт-код) или на виртуальную машину..
Компилятор не имеет обратной совместимости, поскольку байт-код, созданный с помощью Java5 JDK, не будет работать в Java 1.4 jvm (если не скомпилирован с флагом -target 1.4
).Но JVM обратно совместима, так как может запускать более старые байт-коды.
Так что я думаю, что они решили рассмотреть совместимость с точки зрения javac (так как это часть, специфичная для JDK), что означает, чтосгенерированный байт-код может быть запущен в будущих выпусках jvm (который больше связан с JRE, но также связан с JDK).
Вкратце, мы можем сказать:
- JDK (обычно) совместимы в прямом направлении.
- JRE (обычно) совместимы в обратном направлении.
(И это также служит уроком, который следует усвоить давно: люди, пишущиекомпиляторы, как правило, правы, а мы, люди, используем их неправильно xD)
Кстати, не имеет ли больше смысла объединять их в пару назад / вперед и вниз / вверх, а не смешивать их?