In IntelliJ IDEA, we have project which contains source code, like any other IDEs.
So about Module, what does it stand for? I can create multiple modules in one project, but why do I need that when I can create multiple projects? What is it advantage (modules)?
In IntelliJ Platform, a project encapsulates all your source code, libraries, build instructions into a single organizational unit. Everything you do using IntelliJ Platform SDK, is done within the context of a project. A project defines some collections referred to as modules and libraries. Depending on the logical and functional requirements to the project, you can create a single-module or a multi-module project.
A module is a discrete unit of functionality that can be run, tested, and debugged independently. Modules includes such things as source code, build scripts, unit tests, deployment descriptors, etc. In the project, each module can use a specific SDK or inherit SDK defined on the project level (see the SDK section later in this document). A module can depend on other modules of the project.
A library is an archive of compiled code (such as JAR files) that your modules depend on. IntelliJ Platform supports three types of libraries:
Module Library: the library classes are visible only in this module and the library information is recorded in the module *.iml file.
Project Library: the library classes are visible within the project and the library information is recorded in the project *.ipr file or in .idea/libraries.
Global Library: the library information is recorded in the applicationLibraries.xml file into the <User Home>/.IntelliJIdea/config/options directory. Global libraries are similar to project libraries, but are visible for the different projects.