IntelliJ IDEA overview
IntelliJ IDEA is an Integrated Development Environment (IDE) for JVM languages designed to maximize developer productivity. It does the routine and repetitive tasks for you by providing clever code completion, static code analysis, and refactorings, and lets you focus on the bright side of software development, making it not only productive but also an enjoyable experience.
IntelliJ IDEA is a cross-platform IDE that provides consistent experience on Windows, macOS, and Linux.
Development of modern applications involves using multiple languages, tools, frameworks, and technologies. IntelliJ IDEA is designed as an IDE for JVM languages but numerous plugins can extend it to provide a polyglot experience.
Use IntelliJ IDEA to develop applications in the following languages that can be compiled into the JVM bytecode, namely:
Plugins bundled with IntelliJ IDEA and available out of the box add support for some of the most popular languages, namely:
Stylesheets (CSS, Less, Sass)
You can browse the JetBrains Marketplace to find an official plugin that adds support for almost any language, framework or technology used today, or for third-party plugins. See Manage plugins for details on how to manage plugins in IntelliJ IDEA.
Do I need a language plugin for IntelliJ IDEA or a separate IDE?
IntelliJ IDEA Ultimate is a superset of most IntelliJ platform-based IDEs. If the bundled language plugins are enabled, it includes support for all technologies that are available within our more specific IDEs, such as PyCharm, WebStorm, PHPStorm, and so on.
So, for example, if your application's codebase is mainly in Java, but it also uses Python scripts, we recommend using IntelliJ IDEA in combination with the bundled Python plugin. If your codebase is mainly in Python, PyCharm is the right IDE for you.
IntelliJ IDEA editions
IntelliJ IDEA comes in three editions:
IntelliJ IDEA Ultimate: the commercial edition for JVM, web, and enterprise development. It includes all the features of the Community edition, plus adds support for languages that other IntelliJ platform-based IDEs focus on, as well as support for a variety of server-side and front-end frameworks, application servers, integration with database and profiling tools, and more.
IntelliJ IDEA Community Edition: the free edition based on open-source for JVM and Android development.
IntelliJ IDEA Edu: the free edition with built-in lessons for learning Java, Kotlin, and Scala, interactive programming tasks and assignments, and special features for teachers to create their own courses and manage the educational process (see IntelliJ IDEA Edu).
The Early Access program
IntelliJ IDEA Ultimate is available for free within the Early Access Program (EAP). EAP builds are published before the release of a stable product version, and you can download them to try out the new features before they are publicly available in return for your feedback. EAP builds are configured to collect feature usage statistics, and are a valuable source of information for our developers. You can also report an issue if you encounter any problems.
IntelliJ IDEA provides an editor-centric environment. It follows your context and brings up the necessary tools automatically to help you minimize the risk of interrupting the developer's flow.
Take a guided tour around IntelliJ IDEA user interface.
Ergonomic design and customizable appearance
One of the best things about IntelliJ IDEA is its tunability. You can configure virtually anything: the IDE appearance, the layout of tool windows and toolbars, code highlighting, and more. There are also numerous ways you can fine-tune the editor and customize its behavior to speed up navigation and get rid of any extras that distract you from code.
Configure the colors and fonts for your source code, console output, debugger information, search results, and more. You can choose from a number of predefined color schemes or customize a scheme to create a unique working environment.
Learn how to configure the editor settings, including appearance, font, code formatting, and more.
Customize menus and toolbars to spare the annoyance of looking for an action among a dozen buttons you never use.
Shortcuts for everything
In IntelliJ IDEA, you have shortcuts for nearly every action, including selection and switching between the editor and various tool windows.
Watch this video to learn about some of the most useful shortcuts:
Navigation and search
IntelliJ IDEA provides quick navigation not only inside source code files but also throughout the entire project.
One of the most useful shortcuts that is worth remembering is double Shift that brings up the Search Everywhere dialog: start typing and IntelliJ IDEA will look for your search string among all files, classes, and symbols that belong to your project, and even among the IDE actions.
Here are some of the most useful navigation shortcuts:
Go to file
Go to class
Go to symbol
Go to declaration
See Source code navigation for more hints on how to navigate through the source code, and learn the most useful shortcuts that help you quickly switch between the editor and various tool windows, switch focus, jump to the Navigation bar, and so on.
Recent files and locations
Normally, you work with a small subset of files at a time and need to switch between them quickly. The Recent Files action is a real time-saver here. Press Ctrl+E to see a list of last accessed files. Note that you can also use this action to open any tool window:
Apart from jumping to a recent file, you can also get quick access to Recent Locations- that is code snippets you last viewed or edited. Press Ctrl+Shift+E and you'll be able to jump to a particular line you modified lately:
Press Ctrl+F12 to open the file structure popup that gives you an overview of all elements used in the current file and lets you jump to any of them:
Alternatively, use the Structure tool window Alt+7
If you don't remember the shortcut or the menu path for an action you want to use, press Ctrl+Shift+A and start typing the action name:
IntelliJ IDEA helps you speed up the coding process by providing context-aware code completion.
Basic completion helps you complete the names of classes, methods, fields, and keywords within the visibility scope:
Smart completion suggests the most relevant symbols applicable in the current context when IntelliJ IDEA can determine the appropriate type:
For more information on the different types of code completion available in IntelliJ IDEA with examples and productivity tips, see Code completion.
IntelliJ IDEA offers a comprehensive set of automated code refactorings that lead to significant productivity gains. For example, when you rename a class, the IDE will update all references to this class throughout your project.
You don't even need to bother to select anything before you apply a refactoring. IntelliJ IDEA is smart enough to figure out which statement you're going to refactor, and only asks for confirmation if several choices are possible. Just press Ctrl+Alt+Shift+T to open a list of refactorings available in the current context:
See section Refactoring code for a full list of available refactorings with usages scenarios and the before and after examples.
Learn some of the most useful refactoring shortcuts:
Extract a constant
Extract a method
Extract a parameter
Static code analysis
IntelliJ IDEA provides a set of inspections that are built-in static code analysis tools. They help you find potential bugs, locate dead code, detect performance issues, and improve the overall code structure.
Inspections not only tell you where a problem is but also provide quick fixes that help you deal with it right away. Click the red bulb next to the highlighted code, or press Alt+Enter to choose a fix:
Apart from quick-fixes, IntelliJ IDEA also provides intention actions that help you apply automatic changes to code that is correct. For example, you can inject a language, add Java annotations, add JavaDoc, convert HTML or XML tags, and much more. To view a full list of intention actions, in the Settings/Preferences dialog (Ctrl+Alt+S), go to Editor | Intentions.
IntelliJ IDEA provides multiple ways to generate common code constructs and recurring elements, which helps you increase productivity by delegating routine tasks to the IDE. This includes generating code from predefined or custom code templates, generating wrappers, getters and setters, automatic pairing of characters, and more. Press Alt+Insert to open a popup with the available constructs you can generate from your caret position. See Generate code for more detail.
Integration with developer tools
Apart from providing smart navigation and coding assistance, IntelliJ IDEA integrates the essential developer tools and lets you debug, analyze, and version the code base of your applications from within the IDE.
IntelliJ IDEA provides a built-in JVM debugger. It lets you get and analyze runtime information, which is useful for diagnosing issues and getting a deeper understanding of how a program operates. It enables you to:
Suspend the program execution to examine its behavior using breakpoints. Multiple types of breakpoints, together with conditions and filters, allow you to specify the exact moment when an application needs to be paused.
Play with the program state by modifying variable values, evaluate expressions, and so on.
Examine variable values, call stacks, thread states, and so on.
Control the step-by-step execution of the program.
See Tutorial: Debug your first Java application to learn the basics of debugging and play with the debugger features in the IDE.
IntelliJ IDEA provides the following built-in profiler tools that let you explore which methods consume most CPU time, thus helping you detect the most expensive methods and understand exactly how they behave:
The Async Profiler: a tool for Linux and macOS that lets you see how exactly memory and CPU resources are allocated in your application.
The Java Flight Recorder: a multi-platform tool that collects the information on events at a particular moment in time in a Java Virtual Machine when executing an application.
IntelliJ IDEA includes a built-in terminal for working with a command-line shell from inside the IDE. For example, if you're used to executing Git commands from the command line, you can run them from the Terminal instead of invoking these actions from the menu.
The Terminal runs with your default system shell, but it also supports a number of other shells, such as
sh, and so on.
When you open an existing Gradle or Maven project or create a new one, IntelliJ IDEA detects and automatically downloads all the required repositories and plugins, so you virtually don't need to configure anything and can focus solely on the development process. You can edit
pom.xml files directly from the editor and configure the IDE to automatically sync all changes to the build configurations.
You can quickly access all VCS actions from the VCS operations popup Alt+`:
See Version control for instructions on how to configure integration with your VCS and perform the VCS-related operations.
Even if no version control is enabled for your project yet, you can still keep track of modifications to your project, and restore deleted files or separate changes with Local History. It acts as your personal version control system that automatically records your project's revisions triggered by various events as you edit code, run tests, deploy applications, and so on.
Watch this video tutorial to get started with IntelliJ IDEA
Learn the most useful tips for writing code in IntelliJ IDEA:
Get Started with Android development in IntelliJ IDEA.