Его немного сложно понять, о чем вы действительно спрашиваете, без того, чтобы вы приводили пример того, где вы это читаете.
Если что-то говорит «скомпилировано для Java 6», то вы можете безопасно использовать это в любой среде исполнения Java, начиная с Java 6 и выше, но с ошибкой «неподдерживаемая основная версия класса» на Java 5 и ниже.
Таким образом, по вашим собственным словам, X действительно должен быть равен или больше Y. Вы выбираете минимальную версию исполнения Java, которую вы хотите поддержать, в момент компиляции кода.
Долгое время разработчики библиотеки старались поддерживать совместимость своего кода с Java 5; его только недавно, что я видел совместимость, вплоть до Java 6 минимально. Причина для компиляции для таких старых и неподдерживаемых сред выполнения проста; это значит, что библиотеки будут работать с наибольшим количеством исполняемых файлов, которые установлены и используются. Естественно, вы не можете предположить, что все пользователи уже обновились до современных Java-приложений, все еще есть много старых программ, для которых требуется среда выполнения Java 5.
К счастью, поскольку SubOptimal уже комментирует, вы не вынуждены использовать Java 5 JDK для компиляции кода для совместимости с Java 5; вы можете использовать более новые JDK для создания байт-кода, совместимого со старыми версиями. Но вы не можете использовать Java 6 для компиляции кода с функциями Java 8 или, конечно же, для создания Java 8 байт-кода.
Короче говоря, это означает, что вы скомпилируете исходный код с другой версией Java JDK, а затем на исполняющую цель. например С JDK-версией 8 вы можете скомпилировать классы, которые будут выполняться с помощью JRE версии 6 'javac -source 1.6 -target 1.6 Main.java' – SubOptimal