Просто чтобы уточнить, что Даффимо сказал:
Java разработана для обратной совместимости.
То есть если вы пишете что-то в 1.5, вы можете запустить это в 1.6.
Конечно, есть ограничения на это (например, новые зарезервированные слова, такие как assert нарушают его), но в целом это работает нормально.
Если вы пойдете другим путем, это немного опаснее.
Вам, конечно, не нужно будет переписывать весь свой код, но вы могли использовать функции, доступные только с версии 1.6. Такими функциями могут быть новые классы или новые методы существующих классов.
Другая вещь - это уровень двоичного кода. Вы можете настроить свой компилятор на 1.6, чтобы создать код для 1.5 или даже для 1.4.
Но будьте осторожны, ваш компилятор 1.6 наверняка скомпилирует против 1.6 rt.jar. Это означает, что вы не заметите отсутствующие классы или методы, пока вы не запустите или не скомпилируете свой код с 1.5.
Установка уровня соответствия означает, что 1.5 JRE поймет код, но не все классы "по умолчанию" доступны.
У меня нет опыта работы со спецификацией 1.6, но я думаю, что в 1.5 добавлено много новых языковых функций (которые не все совместимы с 1.4), 1.6 была скорее вспомогательной версией.