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