JavaRush /Java блог /Java Developer /Вопросы о JDK, SDK, и Project Language Level
Артур
24 уровень

Вопросы о JDK, SDK, и Project Language Level

Статья из группы Java Developer
Добрый день! У меня стоял Project SDK 10 и language Level 7. Недавно столкнулся с такой проблемой:
Вопросы о JDK, SDK, и Project Language Level - 1
Ввиду этого начал читать и разбираться в версиях всего, что указал в заголовке к посту. В итоге установил версию JDK 11, затем решил проблему путем установки Project Structure -> Project Settings -> Modules -> Language level на 11 Но до конца я так и не понял, что к чему. Я буду очень благодарен, если вы подскажете мне ответы на следующие вопросы:
  1. Последняя версия JDK - 11?
  2. Что определяют Project SDK и Project Language level?
  3. Должны ли соответствовать друг другу Project SDK и Poject Language Level?
  4. Как понять, когда нужно менять Project Language Level и Modules -> Language Level?
Заранее огромное спасибо!
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Стас Пасинков Уровень 26 Master
2 апреля 2019
Alt+Enter помогает))
Philip J. Уровень 40 Expert
9 февраля 2019
1. Да, 11 2. SDK - это просто набор библиотек, которые составляют ядро разработки. От версии SDK будет зависеть, какие библиотеки и классы ты сможешь использовать, а какие нет. Как правило, их становится только больше с каждой новой версией SDK, так как старые оставляют для обратной совместимости и помечают @Deprecated. Poject Language Level всего лишь определяет какие плюшки будут доступны в редакторе кода. Например, на уровне 4 Idea не будет работать с аннотациями, а на уровне 7 - со Stream Api. То есть это только фича для редактора на саму программу никакого влияния она не оказывает. 3. Не должны, если поставить уровень 7, и не пользоваться библиотеками, введёнными в JDK 8+, никаких проблем не будет. Но проще поставить одно и то же и не париться. 4. Когда пытаешься использовать фичу, уровень которой выше, чем тот, что выставлен в настройках. В итоге: ставь тот же Poject Language Level что и версия JDK, и не парься.