The JUCE Library
JUCE (Jules' Utility Class Extensions) is an all-encompassing C++ class library for developing cross-platform software.
It contains pretty much everything you're likely to need to create most applications, and is particularly well-suited for building highly-customised GUIs, and for handling graphics and sound.
I'm proud to have received a lot of praise over the years for the quality of the codebase, so would encourage you to dig into the code and have a look for yourself - hopefully you'll like what you see!
History and Development
JUCE is essentially a one-man endeavour, having evolved from utility classes that began coalescing back in 2001, as a spin-off from the development of various audio applications such as Tracktion.
Julian Storer is the sole developer and owner of Raw Material Software ltd, which publishes the library.
The library was first open-sourced in 2003, and has been sold commercially since 2005.
Supported Operating Systems and Compilers
JUCE can target the following platforms:
- Mac OSX
- Applications and VST/AudioUnit/RTAS/NPAPI plugins can be compiled with Xcode.
- Applications and VST/RTAS/NPAPI/ActiveX plugins can be built using MS Visual Studio. The results are all fully compatible with Windows XP, Vista or Win7/8.
- Applications and plugins can be built for any kernel 2.6 or later.
- Native iPhone and iPad apps can be built with Xcode.
- Android apps can be built using Ant and Eclipse, using the Android NDK.
The library shields you from as much platform-specific detail as possible, so if your C++ is portable, then you should be able to simply re-compile your app to run it on other OSes.
Integrating JUCE into a project
Adding JUCE to your app is very simple – there's no need to pre-compile any libraries or worry about dependencies, as each juce module can be incorporated into a project by simply adding a single header and cpp file to your app.
To further simplify the process of building across multiple platforms, the Introjucer is a tool which automatically generates all the compiler-specific project files you need to build your project on a range of OSes. Just use the Introjucer's IDE to define the structure of your project, and it'll take care of the hassle involved in generating projects for Xcode, Visual Studio, etc, and keeping all these targets in sync with each other.
Licence and Purchasing
Most JUCE modules are shared under the GNU Public Licence (GPLv2, v3, and the AGPLv3). This means that the code can be freely copied and distributed, and costs nothing to use in other GPL applications. One module (the juce_core module) is permissively licensed under the ISC.
If you'd like to release a closed-source application that uses JUCE, commercial licences are available for a fee.