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