Explore the key features of IntelliJ IDEA, the IDE for professional development in Java and Kotlin.
Turn ideas into reality faster with all the necessary tools to remove routine roadblocks. Start coding right away, do it more efficiently, see results sooner, and stay focused on what truly matters – building software.
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.
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 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 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 blog post to learn more about the decompiler.
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 theQuick 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.
Powered by an advanced deep learning model, this feature enhances coding efficiency by predicting and suggesting entire lines of code based on contextual analysis. It runs entirely on your local device, ensuring your data remains secure without any external server communication.
Inline AI prompts offer a seamless way to interact with AI Assistant directly in the editor. You can type requests in natural language, which AI Assistant instantly interprets and converts into code changes, marked with purple in the gutter for easy tracking. Inline AI prompts are context-aware, automatically including related files and symbols for more accurate code generation. This feature supports Java, Kotlin, Scala, Groovy, JavaScript, TypeScript, Python, JSON, and YAML file formats, and is available to all AI Assistant subscribers.
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.
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.
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.
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 Requestfunctionality 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.
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.
If you develop a web service, you will likely test it by sending and receiving HTTP requests. Such requests are stored in .http
or .rest
files, 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.
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.
You can use IntelliJ IDEA Ultimate to build applications with JavaScript, TypeScript, React, Vue, Angular, Node.js, and other related technologies. You can expect the same advanced coding assistance that you are used to when working with Java in all of them.
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 playbutton 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.
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.
Craft quality code easily, minimizing bugs and technical debt. Your IDE handles troubleshooting and polishes your code to perfection, letting you focus on building new features and driving innovation.
IntelliJ IDEA is the best IDE for professional Java and Kotlin development, offering everything you need to write high-quality code. Its features include context-aware code completion, quick-fixes, and context actions that streamline your workflow. Additionally, it provides all of the essential tools right out of the box, such as refactoring and debugging tools, a powerful profiler, and much more to support your development journey.
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.
The Problems tool window displays issues found by IntelliJ IDEA in your project. This includes problems from project-wide analysis 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’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.
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.
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 offers integration with Qodana – the code quality platform from JetBrains. Qodana will do a background scan on the CI side and automatically submit an issue report to IntelliJ IDEA. The results of Qodana’s project-wide analysis are visible in the Server-Side Analysis tab of the Problems tool window. You’ll receive automated feedback on bugs, duplicated code, code smells, dependencies with incompatible licenses, and security vulnerabilities. Each issue comes with details that include a short description and recommendations on how to fix it. Visit the Qodana page to try it out.
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.
Get the job done with a fully-equipped toolkit that supports every stage of development – from design and coding in Java, Kotlin, and other supported languages to testing and deployment – ensuring seamless workflows and successful outcomes.
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 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.
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.
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.
Develop innovative solutions with the latest technologies, supported as soon as they’re available – often even before official releases. Keep your work aligned with the ever-evolving tech landscape.
IntelliJ IDEA keeps you ahead of the curve with exclusive early access to the latest language updates. Be among the first to explore new features, ensuring your projects remain cutting-edge and efficient.
Work without interruptions, stay in the flow with an intuitive UI, and personalize your IDE for a comfortable, efficient, and enjoyable experience.
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.
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.
Have full control over which data you choose to share. We obtain clear consent on data collection, storage, and sharing, and we use your data for specific, agreed-upon purposes.
To manage your data-sharing preferences, go to Preferences/Settings | Appearance & Behavior | Data Sharing. Here, you can decide whether to share anonymous usage data to help improve the IDE's functionality. If you prefer not to participate, simply uncheck the box.
The IDE for Professional Development in Java and Kotlin
Java, Kotlin, Groovy, Scala
Maven, Gradle, sbt
Git, GitHub, SVN, Mercurial, Perforce
Debugger
Docker
Spring, Jakarta EE, Java EE, Micronaut, Quarkus, Helidon, and more
JavaScript, TypeScript, HTML, CSS, Node.js, Angular, React, Vue.js
Remote Development Beta
Collaborative development
Free 30-day trial
The IDE for Java and Kotlin enthusiasts
Java, Kotlin, Groovy, Scala
Maven, Gradle, sbt
Git, GitHub, SVN, Mercurial, Perforce
Debugger
Docker
Collaborative development
Free, built on open-source code
Follow us