Search Contact information
University of Cambridge Home Department of Engineering
University of Cambridge >  Engineering Department >  computing help

Integrated Development Environments (IDEs)

An Integrated Development Environment (IDE) offers integrated editing, compiling, debugging and project-management facilities for programmers. We have several installed on our Linux machiners. This page summarises them to help you decide which to use

An IDE that can be used in the 1st and 2nd years must

Debugging support, version control, support for other languages, cross-compilation support, multi-user development support, and availability on Windows/MacOS would be bonuses. It also would be useful if we could add to the project templates that IDEs offer.

I haven't tried to customize the IDEs. All of them have editors that support syntax-colouring, name-completion, folding, and contextual language help, and they all support plugins. Natively, or via plugins, they all have debugging and versioning support. They differ most in their availability on different Operating Systems, the ease with which they can compile simple programs, and the sophistication of their project support.

NetBeans and Eclipse seem to be best supported. Geany and Anjuta are often updated, but are less ambitious. Codeblocks hasn't changed for a while - which of course might not be a bad thing.

Summary

IDESimplicityProject SupportDebuggingOther LanguagesOther PlatformsVersioning
Geany (features)YesSomeGeanyGDB pluginC, Java, PHP, HTML, Python, etcWindows, MacOSGeanyVC plugin
Anjuta (features)No. Takes >3 minutes to warm up. It scans for packagesYesgdbC, python, Java, etcNogit, subversion, cvs
NetBeans (features)No. 1st window appears in 10 secs, and asks me a question I can't respond toYesgdbJavaWindows, MacOSCVS, Subversion, Mercurial
codeblocks (features)Nearly. Takes 15secs to load up. Works, but it's noisyYesSupports various debuggersNoWindows, MacOSAutoVersioning
Eclipse (features)No. Asks me to select a workspace. It rejected the default. Browsing failed too.YesYesJavaWindows, MacOSEGit plugin, etc
xccYesSomeNoNoneNoNo

Geany

Geany has been used at CUED for a year or so with 1st and 2nd years. Students new to programming find it easy to use, and single-file source code is quickly dealt with - a file can be dropped on the icon and 2 clicks (5 seconds) later the program's running. It supports several languages. It has simple project support - there's a project plugin too but it's rather buggy. In the 1st year geany's used with a project that's already been created. The problems that the new students have had with the program are not all unique to geany

Anjuta

Anjuta Anjuta looks rather like geany (i.e. lightweight). When I created a source file in it, I couldn't see how to compile it so I tried to create a project using the New Project Wizard which isn't fresher-friendly ("... It will ask for details of the initial structure for the application. Please answer the questions carefully, as it may not be possible to change some of the settings later"). The range of plugins includes a flashy graphical class hierarchy plugin and the "OpenEmbedded SDK Plugin" which helps with cross-compilation.

NetBeans

Netbeans NetBeans was designed for Java (and is written in Java). We've installed the C++ plug-in. It's been used by 4th year project students. It claims to have a powerful GUI Builder and be the the tool of choice for teams working in a collaborative environment with customizable Project templates and a build process, which relies on industry standards such as Apache Ant, make, Maven, and rake, rather than a proprietary build process. C++ support is less extensive than Java support.

codeblocks

eclipse codeblocks has advocates in Div F. It can import projects from MS Visual Studio and DevC++. It has a busy front-end by default with Valgrind and wxSmith menus (good for the IIA Software Project?) and several rows of icon bars and input fields. Output is chatty too. Running a simple program produces

  Linking console executable: /tmp/hello
  Process terminated with status 0 (0 minutes, 2 seconds)
  0 errors, 0 warnings
 
  Checking for existence: /tmp/hello
  Executing: xterm -T '/tmp/hello' -e /usr/bin/cb_console_runner "/tmp/hello" (in /tmp)

It doesn't force you to create a project, but you gain access to extra features (code statistics, etc) if you do. The range of project templates is extensive

Eclipse

eclipse Eclipse is on the MDP disc. It was designed for Java (and is written in Java) but has a C/C++ CDT plugin. It's widely used (there's an O'Reilly book about it, and C/C++ Development with Eclipse looks thorough). Much of the documentation is aimed at Java users though, and it's provocatively heavyweight. It has its own Foundation and Committee, podcasts, a long list of related projects, and of these IDEs seems to be the one that's most used commercially (e.g. a recent headline says that "Sigasi, has just released the first commercial VHDL plugin for Eclipse").

One project is the Eclipse IDE for Education which aims to provide "an environment with reduced clutter ... a streamlined environment featuring stripped down versions of wizards for creating common elements". They say that they "currently only support the Java programming language. Scheme support should (hopefully) be available shortly, followed by Prolog. Note that this project is currently in incubation"

xcc

eclipse xcc isn't an IDE, it's just a front-end for emacs, lp and g++. It's used in the IDP project for Linux and ARM (by cross-compilation). It has some project support - when a projectful of source files (or a folder containing the files) is dropped onto its icon, it creates a Makefile (with appropriate libraries mentioned - it knows about local requirements) and offers a Make button.

© Cambridge University Engineering Dept
Information provided by Tim Love (tpl)
Last updated: April 2010