What is IntelliJ IDEA?

IntelliJ IDEA is an intelligent, context-aware IDE for working with Java and other JVM languages like Kotlin, Scala, and Groovy on all sorts of applications. Additionally, IntelliJ IDEA Ultimate can help you develop full-stack web applications, thanks to its powerful integrated tools, support for JavaScript and related technologies, and advanced support for popular frameworks like Spring, Spring Boot, Jakarta EE, Micronaut, Quarkus, Helidon. Moreover, you can extend IntelliJ IDEA with free plugins developed by JetBrains, allowing you to work with other programming languages, including Go, Python, SQL, Ruby, and PHP.

Developer ergonomics

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.

Easy start up

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.

Keyboard shortcuts for everything

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.

Standard and custom themes

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.

Accessibility

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.

Plugins

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.

Deep code insight

Though designed primarily for Java development, IntelliJ IDEA understands many other programming languages, including Groovy, Kotlin, Scala, JavaScript, TypeScript, and SQL, and it provides smart coding assistance for each of them. Initial indexing of source code allows the IDE to create a virtual map of your project. Using the information from the virtual map, it can detect errors on the fly, suggest code completion variants with precise context-awareness, perform refactoring, and more.

Inspections and context actions

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).

Intelligent code completion

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.

Language injections

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.

Diagrams

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

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.

Project-wide refactoring

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.

Instant navigation and search

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!

Search Everywhere

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.

Find in Files

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.

Quick definition

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.

Structural search and replace (SSR)

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.

Find Usages

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.

Framework-specific navigation Ultimate

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.

Run, test, and debug

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.

Run

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.

Run Targets Ultimate

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.

Test

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.

Debug

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.

Built-in tools and integrations

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.

Build tools

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.

Terminal

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.

Database support Ultimate

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.

Profiler Ultimate

The built-in profiler 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 *.jfr and *.hprof snapshots, 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 the IDE.

HTTP Client Ultimate

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.

Decompiler

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.

Version control

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.

Git support

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.

GitHub support

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

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.

JVM frameworks

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.

Spring and Spring Boot Ultimate

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.

Jakarta EE and MicroProfile API Ultimate

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.

Microservice frameworks – Micronaut, Quarkus, Helidon Ultimate

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.

Persistence frameworks – JPA, Hibernate Ultimate

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.

Client-side and JavaScript development

Need to work on UIs for your web application or develop with Node.js? IntelliJ IDEA Ultimate has got you covered! It includes all the features from WebStorm, our IDE for JavaScript and related technologies. All of these features are available either out of the box or via free plugins.

Support for JavaScript and related technologies Ultimate

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.

HTML and CSS Ultimate

You can also work with HTML and style sheets in IntelliJ IDEA. Just like with other languages and technologies, you will get advanced coding assistance, including code completion, navigation, and refactorings. Additionally, you can preview static HTML files right in the IDE. The changes you make to an HTML file or the linked CSS and JavaScript files will be saved, with the preview reloaded automatically.

JavaScript debugging Ultimate

In IntelliJ IDEA, you can run and debug your Node.js code and client-side apps with the help of Chrome. Put breakpoints, step through the code, set watches, and more – all from the editor with a unified experience across different kinds of applications, from vanilla JavaScript to TypeScript and Vue projects.

Template Languages Ultimate

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.

Deployment

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.

Application servers Ultimate

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.

Docker

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.

Kubernetes Ultimate

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.

Collaboration and teamwork

Collaborative development (Code With Me)

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.

Space integration

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.