As shown in callout 1, IntelliJ idea supports 6 SDK types. Most commonly used is JDK and Android SDK , when created, Android SDK if you do not configure one first JDK , IntelliJ idea will prompt you to configure one before you JDK can configure it Android SDK .
As shown in callout 2, the drop-down will show all the SDKs that have been created and can easily be toggled in different SDKs. During the development of the Java project, because IntelliJ idea supports managing multiple JDK , you don't have to worry about different projects on your system JDK .
As shown in callout 1, the SDKs Unified Management Office for the SDK.
As shown in callout 2, the plus sign can add a new SDK, with the supported types shown in callout 3, and the minus sign to remove the SDK selected by the cursor.
Website Description: https://www.jetbrains.com/idea/help/sdk.html
Language Level Introduction
Other Ides do not see similar language level settings, so this feature should be considered IntelliJ idea unique, but the IntelliJ is not specifically described language level in the website, perhaps IntelliJ thought that this knowledge point belongs to the JDK Category so did not introduce it. So here's my main understanding of this. We should know that Java JDK will have its new features in every new version, and the new version will generally be backwards compatible with older versions of the features, IntelliJ idea is the new features of these JDK are described as follows:
New features of JDK 6: @Override in interfaces
New features of JDK 7: Diamonds,arm,multi-catch etc.
New features of JDK 8: lambdas,type annotation etc.
New features for JDK 9: Jigsaw project etc.
As shown in the first figure, callout 1, using JDK 7, displays the SDK default7 - Diamonds,ARM,multi-catch etc.
As shown in the second picture, callout 1, using JDK 8, shows the SDK default8 - Lambdas,type annotation etc.
When we use JDK 8, we can only be backwards compatible with JDK 8 and the following features, so we can only select 8 and below language level . So when our project is using JDK 8, but the code does not use the new features of JDK 8, we can choose to use the features of JDK 7 at most 7 - Diamonds,ARM,multi-catch etc. .
For this we summarize language level : The JDK features that limit the minimum requirements for project compilation checks.
Now suppose we have a project code using the JDK 8 new features: lambda syntax, but the JDK chose JDK 7, even if the language level choice 8 - Lambdas,type annotation etc. , but it does not make much sense, the same will compile the error.
SDK and language level under Module
For large projects, the various Module uses SDK and is language level likely to be different, IntelliJ idea has also supported this.
As shown in callout 1, you can select a different SDK for Module, the Project SDK is selected by default
As shown in callout 1, you can choose a different language level one for Module, and the default selection isProject language level
Idea SDK (software development Kit) Introduction