What Is an Integrated Development Environment (IDE)?

An integrated development environment (IDE) is an application that facilitates application development. IDEs are designed to encompass all programming tasks in one application. Therefore, IDEs offer a central interface featuring all the tools a developer needs, including the following:

  • Code editor: This feature is a text editor designed for writing and editing source code. Source code editors are distinguished from text editors because they enhance or simplify the writing and editing of code.
  • Compiler: This tool transforms source code written in a human readable/writable language into a form executable by a computer.
  • Debugger: This tool is used during testing to help debug application programs.
  • Build automation tools: These tools automate common developer tasks.

In addition, some IDEs might also include the following:

  • Class browser: This tool is used to examine and reference the properties of an object-oriented class hierarchy.
  • Object browser: This feature is used to examine the objects instantiated in a running application program.
  • Class hierarchy diagram: This tool allows the programmer to visualize the structure of object-oriented programming code.

The IDE may be a stand-alone application or may be included as part of one or more compatible applications.

History of IDEs

Before IDEs, developers wrote their programs in text editors. They would write and save an application in a text editor; then run the compiler, taking note of the error messages; then go back to the text editor to revise the code.

In 1983, Borland Ltd. acquired a Pascal compiler and released it as TurboPascal, which featured, for the first time, an integrated editor and compiler.

While TurboPascal launched the idea of an integrated development environment, many believe Microsoft’s Visual Basic (VB), launched in 1991, was the first real IDE. Visual Basic was built on the older BASIC language, which was a popular programming language throughout the 1980s. With the emergence of Visual Basic, programming could be thought of in graphical terms, and significant productivity benefits emerged.

Benefits of IDEs

The overall goal and main benefit of an integrated development environment is improved developer productivity. IDEs boost productivity by reducing setup time, increasing the speed of development tasks, keeping developers up to date and standardizing the development process.

  • Faster setup: Without an IDE interface, developers would need to spend time configuring multiple development tools. With the application integration of an IDE, developers have the same set of capabilities in one place, without the need for constantly switching tools.
  • Faster development tasks: Tighter integration of all development tasks improves developer productivity. For example, code can be parsed and syntax checked while being edited, providing instant feedback when syntax errors are introduced. Developers don’t need to switch between applications to complete tasks. In addition, the IDE’s tools and features helps developers organize resources, prevent mistakes and take shortcuts.

Further, IDEs streamline development by encouraging holistic thinking. They force developers to think of their actions in terms of the entire development lifecycle, rather than as a series of discrete tasks.

  • Continual learning: Staying up to date and educated is another benefit. For instance, the IDE’s help topics are constantly being updated, as well as new samples, project templates, etc. Programmers who are continually learning and current with best practices are more likely to contribute value to the team and the enterprise, and to boost productivity.
  • Standardization: The IDE interface standardizes the development process, which helps developers work together more smoothly and helps new hires get up to speed more quickly.

Languages Supported by IDEs

Some IDEs are dedicated to a specific programming language or set of languages, creating a feature set that aligns with the particulars of that language. For instance, Xcode for the Objective-C and Swift languages, Cocoa and Cocoa Touch APIs.

However, there are many multiple-language IDEs, such as Eclipse (C, C++, Python, Perl, PHP, Java, Ruby and more), Komodo (Perl, Python, Tcl, PHP, Ruby, Javascript and more) and NetBeans (Java, JavaScript, PHP, Python, Ruby, C, C++ and more).

Support for alternative languages is often provided by plugins. For example, Flycheck is a syntax checking extension for GNU Emacs 24 with support for 39 languages.

Different Types of IDEs

There are a variety of different IDEs, catering to the many different ways developers work and the different types of code they produce. There are IDEs that are designed to work with one specific language, cloud-based IDEs, IDEs customized for the development of mobile applications or for HTML, and IDEs meant specifically for Apple development or Microsoft development.

Multi-Language IDEs

Multi-language IDEs, such as Eclipse, NetBeans, Komodo, Aptana and Geany, support multiple programming languages.

  • Eclipse: Supports C, C++, Python, Perl, PHP, Java, Ruby and more. This free and open source editor is the model for many development frameworks. Eclipse began as a Java development environment and has expanded through plugins. Eclipse is managed and directed by the Eclipse.org Consortium.
  • NetBeans: Supports Java, JavaScript, PHP, Python, Ruby, C, C++ and more. This option is also free and open source. All the functions of the IDE are provided by modules that each provide a well-defined function. Support for other programming languages can be added by installing additional modules. 
  • Komodo IDE: Supports Perl, Python, Tcl, PHP, Ruby, Javascript and more. This enterprise-level tool has a higher price point.
  • Aptana: Supports HTML, CSS, JavaScript, AJAX and others via plugins. This is a popular choice for web app development.
  • Geany: Supports C, Java, PHP, HTML, Python, Perl, Pascal and many more. This is a highly customizable environment with a large set of plugins

IDEs for Mobile Development

There are IDEs specifically for mobile development, including PhoneGap and Appcelerator's Titanium Mobile.

Many IDEs, especially those that are multi-language, have mobile-development plugins. For instance, Eclipse has this functionality.


Some of the most popular IDEs are those for developing HTML applications. For example, IDEs such as HomeSite, DreamWeaver or FrontPage automate many tasks involved in web site development.

Cloud-Based IDEs

Cloud-based IDEs are starting to become mainstream. The capabilities of these web-based IDEs are increasing rapidly, and most major vendors will likely need to offer one to be competitive. Cloud IDEs give developers access to their code from anywhere. For example, Nitrous is a cloud-based development environment platform that supports Ruby, Python, Node.js and more. Cloud9 IDE supports more than 40 languages, including PHP, Ruby, Python, JavaScript with Node.js, and Go. Heroku is a cloud-based development platform as a service (PaaS), supporting several programming languages. 

IDEs Specific to Microsoft or Apple

These IDEs cater to those working in Microsoft or Apple environments:

  • Visual Studio: Supports Visual C++, VB.NET, C#, F# and others. Visual Studio is Microsoft's IDE and is designed to create applications for the Microsoft platform.
  • MonoDevelop: Supports C/C++, Visual Basic, C# and other .NET languages.
  • Xcode: Supports the Objective-C and Swift languages, and Cocoa and Cocoa Touch APIs. This IDE is just for creating iOS and Mac applications and includes an iPhone/iPad simulator and GUI builder.
  • Espresso: Supports HTML, CSS, XML, JavaScript and PHP. This is a tool for Mac web developers.
  • Coda: Supports PHP, JavaScript, CSS, HTML, AppleScript and Cocoa API. Coda bills itself as "one-window development" for the Mac user.

IDEs for Specific Languages

Some IDEs cater to developers working in a single language. These include CodeLite and C-Free for C/C++, Jikes and Jcreator for Java, Idle for Python, and RubyMine for Ruby/Rails.