Every aspect of IntelliJ IDEA is built to provide you with a seamless out-of-the-box experience. It provides quick access to all the features and integrated tools that are important to your work, as well as a wide range of customization options. You can fine-tune everything to support your workflow: set shortcuts, install plugins, customize the interface to your liking, and more.
Even if this is your first time using an IDE, it shouldn’t take you long to get up and running with your first project. In the New Project wizard, you can set the project type, Java version, and supported build tools (like Maven and Gradle); IntelliJ IDEA will configure all the remaining settings for you. 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 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.
Check out this video for other shortcuts that are useful in just about any situation.
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.
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.
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.
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).
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.
To learn more about code completion, check out this blog post.
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 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.
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 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, press Shift twice 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 ⇧⌘F on macOS or Ctrl+Shift+F on Windows and Linux. The IDE will automatically put it in the search field.
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 ⌥Space on macOS or Ctrl+Shift+I on Windows or Linux.
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.
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 ⌥F7 on macOS or Alt+F7 on Windows and Linux.
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.
IntelliJ IDEA comes with a powerful toolset for setting run and build parameters for your application and debugging code, as well as applying and developing JUnit tests right in the IDE.
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.
A debugger is an indispensable tool for detecting bugs and reviewing what's happening under the hood of your program. To prepare for debugging, set breakpoints in the places where you want to suspend the program’s execution and examine the program’s state and behavior. Once the breakpoints are set, you can start debugging. You’ll find the results in the Debug tool window.
IntelliJ IDEA’s debugger has several unique features. When you debug your code, the IDE shows you variable values in the source code next to their usages and lets you change the values. You can also use the Smart Step-Into action to choose the specific method call you want to debug.
To learn about all the other debugger features, check out this video playlist.
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.
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 ⌘⏎ on macOS or Ctrl+Enter on Windows and Linux when you see a highlighted command.
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.
helps you to optimize the performance of your application by analyzing your code and
providing you with accurate info about its CPU-intensive and memory-intensive sections.
In IntelliJ IDEA, you can open
attach the profiler to running processes, and view live charts that visualize CPU and
memory consumption in running applications. IntelliJ IDEA’s integration with the Async
Profiler and Java Flight Recorder profiler tools allows you to do all this right from
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, providing
extensive coding assistance for your HTTP requests, including code completion, highlighting,
refactorings, and so on. You can easily access the HTTP Client from the source code: click
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 working
with a decompiled file. If you want to, you can set breakpoints in the decompiled code and
debug it. Read this
to learn more about the decompiler.
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.
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 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.
In IntelliJ IDEA Ultimate, you can develop Java enterprise applications based on Jakarta EE and MicroProfile 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.
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.
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 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.
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 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 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 a service for collaborative development and pair programming – Code With Me. It lets you share the project currently open in your IDE with others so you can work on it together in real-time. Code With Me also features video and voice calls from the IDE, allowing you to organize both 1-on-1 meetings and group sessions with dozens of participants.
You can learn all about Code With Me in this series of blog posts.
IntelliJ IDEA offers integration with JetBrains Space, an all-in-one solution for software projects and teams. Connect IntelliJ IDEA to your Space organization to view and clone project repositories, review your teammates’ code, and write Space Automation scripts.