An integrated development environment (IDE) is software for building applications that combines common developer tools into a single graphical user interface (GUI). An IDE typically consists of:
- Source code editor: A text editor that can assist in writing software code with features such as syntax highlighting with visual cues, providing language specific auto-completion, and checking for bugs as code is being written.
- Local build automation: Utilities that automate simple, repeatable tasks as part of creating a local build of the software for use by the developer, like compiling computer source code into binary code, packaging binary code, and running automated tests.
- Debugger: A program for testing other programs that can graphically display the location of a bug in the original code.
An IDE allows developers to start programming new applications quickly because multiple utilities don’t need to be manually configured and integrated as part of the setup process. Developers also don’t need to spend hours individually learning how to use different tools when every utility is represented in the same workbench. This can be especially useful for onboarding new developers who can rely on an IDE to get up to speed on a team’s standard tools and workflows. In fact, most features of IDEs are meant to save time, like intelligent code completion and automated code generation, which removes the need to type out full character sequences.
Other common IDE features are meant to help developers organize their workflow and solve problems. IDEs parse code as it is written, so bugs caused by human error are identified in real-time. Because utilities are represented by a single GUI, developers can execute actions without switching between applications. Syntax highlighting is also common in most IDEs, which uses visual cues to distinguish grammar in the text editor. Some IDEs additionally include class and object browsers, as well as class hierarchy diagrams for certain languages.
It is possible to develop applications without an IDE, or for each developer to essentially build their own IDE by manually integrating various utilities with a lightweight text editor like Vim or Emacs. For some developers the benefit of this approach is the ultra-customization and control it offers. In an enterprise context, though, the time saved, environment standardization, and automation features of modern IDEs usually outweigh other considerations.
Today, most enterprise development teams opt for a pre-configured IDE that is best suited to their specific use case, so the question is not whether to adopt an IDE, but rather which IDE to select.
There are many different technical and business use cases for IDEs, which likewise means there are many proprietary and open source IDE options on the market. Typically, the most important differentiating characteristics between IDEs are:
- The number of supported languages: Some IDEs are dedicated to one language, and so are a better match for a specific programming paradigm. IntelliJ, for instance, is known primarily as a Java IDE. Other IDEs have a broad array of supported languages all in one, like the Eclipse IDE which supports Java, XML, Python, and others.
- Supported operating system(s): A developer’s operating system will constrain which IDEs are viable (unless an IDE is cloud-based), and if the application being developed is intended for an end user with a specific operating system (like Android or iOS), this may be an additional constraint.
- Automation features: Even though most IDEs include the 3 key features of a text editor, build automation, and debugger, many include support for additional features like refactoring, code search, and continuous integration and continuous deployment (CI/CD) tools.
- Impact on system performance: An IDE’s memory footprint may be important to consider if a developer wants to run other memory-intensive applications concurrently.
- Plugins and extensions: Some IDEs include the ability to customize workflows to match a developer’s needs and preferences.
Mobile development IDEs
Nearly every industry has been affected by the rising popularity of apps designed for smartphones and tablets, leading many companies to develop mobile apps in addition to traditional web apps. One of the key factors in mobile application development is platform choice. For instance, if a new application is intended for use on iOS, Android, and a web page, it may be best to start with an IDE that provides cross-platform support for multiple operating systems.
IDEs that are provided as a cloud-based Software-as-a-Service (SaaS) provide a number of unique benefits compared to local development environments. For one, as with any SaaS offering, there is no need to download software and configure local environments and dependencies, so developers can start contributing to projects quickly. This also provides a level of standardization across team members’ environments, which can mitigate the common "this works on my machine, why doesn’t it work on yours" problem. Additionally, since the development environment is centrally managed, no code resides on an individual developer’s computer, which can help with intellectual property and security concerns.
The impact of processes on local machines is also different. Processes like running builds and testing suites are typically compute-intensive, which means developers are probably unable to continue using workstations while a process is running. A SaaS IDE can dispatch long-running jobs without monopolizing the compute resources of a local machine. Cloud IDEs are also typically platform agnostic, allowing connection to different cloud vendors.