Explore the key features of IntelliJ IDEA, the leading Java and Kotlin IDE.
IntelliJ IDEA comes with one of the most powerful code editors in the industry. It understands the ins and outs of your code thanks to initial indexing, which allows it to detect errors on the fly, suggest code completion options with precise context awareness, perform safe refactoring, and much more.
AI Assistant comes with useful functionality that can simplify your daily tasks. It offers integrated AI chat and can do things like automatically write documentation comments for you, suggest names, generate commit messages, and more.
IntelliJ IDEA lets you work with elements of code in other languages embedded in your code. You won’t notice a difference between your experience working with the core Java code and your experience with the code that you’ve injected. We provide code highlighting, completion, error detection, and other coding assistance features for embedded code fragments. To add a snippet of alternative code into Java, just press Alt+Enter, select Inject language or reference, and select the desired language from the list.
IntelliJ IDEA provides context-sensitive code completion, offering you suggestions that are only valid for the current caret position. You don’t need to use any shortcuts or configure additional settings; code completion will start as soon as you begin typing your code in the editor.
IntelliJ IDEA uses machine learning to ensure the most relevant suggestion is at the top of the list.
The Problems tool window displays issues found by IntelliJ IDEA in your project. This includes problems from project-wide analysis, Qodana code checks, and manual inspections. It also displays the results of checks for risky APIs in imported dependencies. Each issue comes with a report that includes a short description, a button to fix it, options to suppress inspections, and more.
IntelliJ IDEA is very good at checking over the quality and validity of your code with on-the-fly inspections. These inspections help you code faster, comply with the highest quality standards, and stay confident through the whole development process. We provide a host of standard inspections, as well as dozens of framework-specific ones covering a wide range of problems, such as Spring bean class autowiring errors, etc.
If IntelliJ IDEA finds any issues, it offers to help solve them via context actions, which include quick-fixes for highlighted errors and intention actions for changing your code if the issues are minor. To invoke a context action, click the light bulb icon or press Alt+Enter.
Live templates is a powerful feature that helps speed up your coding. Just type in an abbreviation predefined in the template to insert standard code constructs into your work quickly. You can also create your own custom templates, which you can use to insert snippets of code that you use repeatedly.
IntelliJ IDEA’s automatic refactoring feature lets you update your code safely and efficiently, both simplifying it and making it more readable and easier to maintain. The IDE offers a wide selection of refactorings that will help you safely rename code elements, change the signature of a class or a method, extract a code fragment to a method, and introduce variables. Watch our video on the refactorings that are essential to everyday coding.
IntelliJ IDEA can find and replace code repetitions in your project. Specify the search scope, and it will search for code that is similar to the selected method or constant field and replace those repetitions with calls to the original method or constant.
IntelliJ IDEA Ultimate provides first-class support for leading frameworks and technologies geared toward the development of modern applications and microservices. Your IDE comes with dedicated assistance for Spring and Spring Boot, Jakarta EE, JPA, Reactor, and other frameworks.
For the Spring and Spring Boot frameworks, IntelliJ IDEA Ultimate features smart code insight, inspections, instant code navigation, and highly customizable run configurations. It also offers built-in tools that let you run and test Spring apps and work with HTTP requests and database tools. You can also get an aggregated view of the client and server APIs used in your project for HTTP and WebSocket protocols in the Endpoints tool window.
For a more detailed description of what IntelliJ IDEA has for Spring and Spring Boot, check out this webpage.
IntelliJ IDEA Ultimate has support for the most commonly used microservice frameworks – Micronaut, Quarkus, and Helidon. IntelliJ IDEA provides intelligent coding assistance, integration with Endpoints, and project creation wizards for all of them.
In IntelliJ IDEA Ultimate, you can develop Java enterprise applications based on Jakarta EE specifications. IntelliJ IDEA Ultimate supports all Jakarta EE features, including CDI, JPA, Batch, Bean Validation, JSF, JAX-RS, WebSocket, Servlets, JSP, JSON Binding and Processing, Security, and the EJB and JTA specifications. For a more detailed description of what IntelliJ IDEA has for Jakarta EE, click here.
IntelliJ IDEA Ultimate comes with first-class support for Ktor – an end-to-end multiplatform framework that allows you to build various connected applications, from microservices to multiplatform HTTP client apps. In conjunction with Kotlin coroutines, it makes creating asynchronous applications a breeze. Ktor allows developers to provide the best user experience in an easy and straightforward way.
For a more detailed description of what IntelliJ IDEA has for Ktor, check out this webpage.
When you work with a vast number of Java objects, you may want to store them in a database. Persistence frameworks provide a collection of methods and classes to make this possible. IntelliJ IDEA Ultimate integrates with the most frequently used frameworks of this kind – Jakarta Persistence (JPA), Hibernate, and R2DBC. Right out of the box, you get framework-specific coding assistance, the opportunity to customize framework configurations, and the Persistence tool window for viewing and managing various JPA, Hibernate, and R2DBC items.
IntelliJ IDEA provides the tools developers need to adapt to a remote world. Developers can collaborate effectively with their teammates no matter where they are and code on any laptop while a remote server handles all of the heavy processing.
Remote development functionality splits your IDE into two components: a local lightweight client that provides you with a responsive JetBrains IDE UX and a remote server that handles all the heavy processing. This functionality can be initiated from IntelliJ IDEA’s Welcome screen or from an application called JetBrains Gateway, which is available in the JetBrains Toolbox App.
IntelliJ IDEA offers integration with JetBrains Space, a complete software development platform. When you connect your IDE to a Space organization, you can view and clone project repositories, create and perform code reviews with merge requests, add reactions in code review chats, and assign and mention team members. It is also possible to write and edit Space Automation scripts in IntelliJ IDEA and then track an automation job’s progress in the Git log.
Code With Me is an online collaborative experience in IntelliJ IDEA. It lets you work remotely on a shared project with your teammates, with everyone using their own screen and keyboard. You can explore code, edit it together, and see changes appear in real time. It also features built-in voice and audio calls to enhance your one-on-ones or group collaboration sessions.
JetBrains Space provides orchestration support for the remote development workflow, allowing you to create a dev environment, connect it to IntelliJ IDEA, and start coding in seconds. You no longer have to wait for projects to be built, dependencies to be downloaded, or IDEs to be indexed. Standardize your environments by installing all of the tools and libraries required by your project and reproduce them at any time to simplify onboarding.
IntelliJ IDEA comes with mission-critical built-in tools and integrations that help you work in a familiar environment and allow you to avoid switching between applications.
The IntelliJ IDEA debugger is a powerful tool that can reveal what's happening under the hood of your program and help you detect bugs. The debugging procedure is very straightforward: right after you set the breakpoints and run the debugger, the IDE displays the debug result in the dedicated tool window. While examining it, you can step along your code, evaluate expressions, see and change variable values, and add watches and labels.
The built-in profiler allows you to get insights into how fast your application works and make performance issues easier to investigate. It provides accurate snapshots that help you identify CPU- and memory-intensive sections, threading issues, and suboptimal code. The results are easy to analyze and compare through convenient graphical and hierarchical representations. Also, profiling-critical data can be shown right in the editor with performance hints. The execution time and memory allocation data appear in the gutter next to the corresponding line of code.
You can manage databases right from the IDE with the Database tools that are shipped with IntelliJ IDEA Ultimate. Take advantage of intelligent coding assistance when editing SQL queries, connect to live databases, run queries, browse and export data, and even manage your schemes in a visual interface.
IntelliJ IDEA’s built-in terminal lets you work with the command-line shell from your IDE without having to switch to a dedicated terminal application. It supports all the same commands as your operating system. From the terminal you can easily get back to the IntelliJ IDEA UI by clicking on URLs and stack traces or by pressing Ctrl+Enter when you see a highlighted command.
If you develop a web service, you will likely test it by sending and receiving HTTP
requests. Such requests are stored in
which you can create, edit,
and execute in the HTTP client. This tool is built into the IntelliJ IDEA editor,
extensive coding assistance for your HTTP requests, including code completion,
refactorings, and so on. You can easily access the HTTP Client from the source code:
the globe icon next to the URL and select Open in HTTP client.
IntelliJ IDEA comes with a built-in decompiler that lets you convert bytecode into
human-readable Java code and then debug it. For example, when you open a library in a
.jar file without having the source code for it, the IDE will display its
readable contents. The yellow panel above the editor will inform you that you are
with a decompiled file. If you want to, you can set breakpoints in the decompiled code
debug it. Read this
to learn more about the decompiler.
In IntelliJ IDEA, you'll find dedicated support for OpenAPI Specification files with helpful coding assistance. Additionally, you can preview an OpenAPI specification right in the editor using the integrated Swagger or Redoc UIs.
To keep up with modern software development, IntelliJ IDEA Ultimate offers integrations with the most popular container orchestration systems – Kubernetes and Docker. We also have third-party plugins for deploying code to AWS, Google Cloud, and Azure.
IntelliJ IDEA Ultimate is fully integrated with Kubernetes – an open-source system for the deployment, scaling, and management of containerized applications. You are able to browse cluster objects and extract their configurations, view and download pod logs, run a shell in a pod, apply resource YAML configurations from the editor, and delete resources from a cluster. In addition to this, IntelliJ IDEA Ultimate offers both rich YAML support and basic JSON support, including auto-completion, quick documentation, inspections, and quick-fixes.
IntelliJ IDEA provides integration with major application servers: Tomcat, JBoss, WebSphere, WebLogic, Glassfish, and more. Right from your IDE, you can start and stop local servers, connect to running remote servers, deploy your artifacts on those servers, and even debug your applications on them.
IntelliJ IDEA fully supports Docker integration. You can run and debug your applications in Docker containers, download and build images, run multi-container applications using Docker Compose, and more, all from the IDE.
IntelliJ IDEA Ultimate provides integration with Docker out of the box. For IntelliJ IDEA Community Edition, you can download the Docker plugin from JetBrains Marketplace by going to Preferences/Settings | Plugins from inside your IDE.
IntelliJ IDEA Ultimate supports Thymeleaf, Velocity, Liquid, Go Template, Mustache, and other template languages. It provides code highlighting, autocompletion, inspections, context actions, and more smart features to help you develop templates with ease.
Every essential procedure you require on a daily basis is designed to be straightforward, allowing you to stay focused and obtain reliable results quickly when running, debugging, and testing your code.
Even if this is your first time using an IDE, it shouldn’t take you long to get your first project up and running. In the New Project wizard, you can specify the desired language, build tools (like Maven and Gradle), and JDK version. If the JDK you need is not available, the IDE will download it for you. All the remaining settings will be configured automatically. This means you’ll be able to start working just moments after launching IntelliJ IDEA. You can also open projects, import existing Maven or Gradle projects, and pull projects from version control systems.
IntelliJ IDEA includes fully functional integration with the Maven, Gradle, Ant, and Gant build tools, which help automate the build process. The IDE provides built-in options for compiling and packaging Java code, running tests, deployment, and other activities.
You can run your application in IntelliJ IDEA by simply clicking the green play button in the toolbar at the top of the window or near a class declaration in the editor gutter. If you need to customize how your program starts up, you can use run/debug configurations that contain various run and build properties, including the desired JDK/JRE, the environment in which you want to run your project, and more.
The Run Targets feature lets you run, test, profile, and debug your application in Docker containers and on remote machines. IntelliJ IDEA Ultimate provides the ability to run Java applications and JUnit tests, as well as Maven, Gradle, Micronaut, Maven-based Quarkus, and Spring Boot projects on Docker, SSH, and WSL targets.
Check out this blog post for more information.
IntelliJ IDEA supports the most popular testing frameworks, like JUnit, TestNG, Cucumber, Arquillian JUnit, and Selenium (available in the plugin Marketplace). The IDE is equipped with an environment and a set of tools for developing and running effective and readable automated tests. You can switch between test classes and source code with a shortcut, run multiple tests, view statistics for each test, and more. For analytics, use the Code Coverage feature which shows the percentage of code covered by unit tests.
If you want to receive immediate test results as soon as you make changes to your code, you can use IntelliJ IDEA's continuous testing option. Click Rerun automatically in the Run toolbar to enable the autotest-like runner. This will automatically restart any test in the current run configuration whenever you modify the source code, providing up-to-date feedback on your changes.
IntelliJ IDEA supports the most popular version control systems, like Git, Subversion, Mercurial, and Perforce, out of the box. You can clone a project from a VCS right from the Welcome screen, examine the differences between two revisions, manage branches, commit and push changes, merge conflicts, review the history, and more. For more details, watch this overview of the key VCS functionality in IntelliJ IDEA.
IntelliJ IDEA offers Git integration that lets you clone projects from Git, commit and push changes, work with several branches, manage changelists, and stage updates before committing them. In IntelliJ IDEA, you can access the history of the entire project and of individual folders and files using the Log tab in the Git tool window, or by using the respective History views. In the editor, it is possible to annotate files with historical data as git blame does.
IntelliJ IDEA comes with GitLab support that allows you to work with the Merge Request functionality right from the IDE. With its help, you can review the list of requests, check changes, leave comments, and navigate to relevant views.
You can manage Git projects hosted on the GitHub platform right from IntelliJ IDEA.
It is possible to clone repositories, share projects, and share code through gists. What’s more, IntelliJ IDEA supports creating, merging, and viewing pull requests. Watch our video to learn more about working with GitHub pull requests.
Local History is an excellent tool for tracking any changes you make. This feature also allows you to roll back to any project state, undo changes, and restore any files that were accidentally deleted. For more information about Local history, read our blog post dedicated to it.
IntelliJ IDEA offers a variety of features that make navigation fast and searching easy, helping you stay focused on your code and allowing you to work quicker. Have a look!
The Search Everywhere dialog is a tool for finding anything stored in your codebase, such as classes and symbols. What’s more, you can search for files and even IDE tool windows. To call for this dialog, double-press Shift and start typing the name of whatever you are looking for.
Another powerful search tool is Find in Files, which makes it possible to search for a text string in your project and apply a variety of options to narrow down your search. For example, you can use various scopes, find occurrences, and exclude certain items from the search.
To call this tool, highlight the string you want to find and press Ctrl+Shift+F. The IDE will automatically put it in the search field.
It is best practice to find and analyze all the usages of a code element before changing it. By default, if you select a symbol in the source code, IntelliJ IDEA will automatically highlight all its usages in the current file. If you need to see the list of usages throughout your project, place the caret inside the symbol and invoke the Find Usages action via Alt+F7.
When working with frameworks in IntelliJ IDEA, it is possible to navigate through your code using the gutter icons. Click on them to see a list of all the navigation options each framework supports. What’s more, the URLs are also clickable, allowing you to get from the client to the service.
In IntelliJ IDEA, it is very easy to check where and how symbols, such as tags, classes, fields, methods, or functions, are defined in your project. You can do all this with the Quick Definition popup, which you can access using a simple shortcut. Select the desired symbol in the editor and press Ctrl+Shift+I.
SSR is a great tool for finding and replacing code patterns while taking the syntax and semantics of code into account. The easiest way to use it is to start with the existing template, which you can alter manually or add filters to narrow down your search. It is possible to save the modified template as a new one.
IntelliJ IDEA has lots of useful diagrams that can help you visualize and analyze your code and navigate through it. Depending on their types, these diagrams can reflect the structure of classes and methods in your application, of the database objects, of entity beans defined in your module, and so on. You can call a list of available diagrams via Diagrams / Show Diagram from the context menu.
IntelliJ IDEA is highly customizable and can be personalized according to your preferences and workflows. With a wide range of options available, from themes to keyboard shortcuts and code styles, you can create a tailored development environment that will boost your productivity.
If you'd like to supplement the core functionality of the IDE with additional features, you can extend IntelliJ IDEA with plugins. We support an extensive plugin ecosystem that meets practically all of the needs a developer might have. Check out the Kubernetes plugin to manage containerized applications, or get a cute Nyan Progress Bar! You can install all the plugins via Preferences | Settings / Plugins.
JetBrains is committed to making our products accessible to everyone. IntelliJ IDEA lets you enable various accessibility features that will accommodate your needs. Screen readers are compatible with IntelliJ IDEA, for example. You can also configure the colors for different UI elements, add a contrast color for scrollbars, resize tool windows and the size of the text in the editor, and more.
IntelliJ IDEA has keyboard shortcuts for pretty much everything, from viewing recent files to running and debugging your project. One universally applicable shortcut is double Shift (Search Everywhere). It allows you to find just about any item inside or outside of the project. The range of your search can vary from files, actions, classes, and symbols to settings, UI elements, and even Git history.
Colored headers in IntelliJ IDEA simplify navigation when you have multiple open projects. You can assign each project a unique color and icon, making distinguishing and managing them in your workspace easier. While the headers come with predefined colors, you can customize them according to your preferences.
You can spend long days coding in front of a screen as a developer, so making the UI easy on your eyes is important. We have several options available that allow you to create a comfortable environment to work in. You can use one of the standard color themes, like IntelliJ Light or Darcula, or configure IntelliJ IDEA to synchronize its theme with your OS preferences.
Alternatively, you can give your IDE a completely new look, with over 100 interface custom themes to choose from. So whether you are in the mood for Solarized’s Californian sun vibe or feeling a little purple with Dark Purple Theme, IntelliJ IDEA has a theme for you.
You can share your IDE settings between any IntelliJ-based IDEs, ensuring a consistent and familiar working environment across various computers. There is a dedicated Settings Sync section for enabling this feature in Preferences/Settings. Once it is activated, you can choose what settings you want to sync, including UI, code and system settings, keymaps, plugins, and tools.