|Original author(s)||Jules Storer|
5.0 / April 27, 2017
The aim of JUCE is to allow software to be written such that the same source code will compile and run identically on Windows, Mac OS X and Linux platforms. It supports various development environments and compilers, such as GCC, Xcode, Visual Studio and Code::Blocks.
Juce resulted from a split-out of the underlying C++ code that was developed by Julian Storer to create Tracktion's (now Waveform) DAW graphic and audio capabilities. It was first released to the public in 2004. It is covered by a dual GPL/commercial license.
JUCE and Raw Material Software were acquired in November 2014 by London-based hardware manufacturer ROLI for an undisclosed amount. As part of the acquisition, JUCE founder Jules Storer was to join ROLI as head of software architecture, and editor-in-chief of JUCE. Jules announced to JUCE users that
"...for the foreseeable future, it's still going to be me who either writes or approves every line of code that gets into the library. I'm hoping that within a couple of years we'll have a team of brilliant coders who are all pumping out code that perfectly matches the quality and style of the JUCE codebase".
JUCE is intended to be usable in exactly the same way on multiple platforms and compilers. Raw Material Software gives the following list of platforms and compilers on which support is officially confirmed; others may work, but have not been officially tested.
JUCE is supported on the following platforms.
- Windows XP, Vista, 7, 8, and 10
- Mac OS X versions 10.5 and later
- iOS versions 3 and later
- Linux kernel series 2.6 and later
- Android using NDK-v5 and later
JUCE is officially confirmed to work properly with the following compilers.
- GCC versions 4.0 and later
- LLVM - LLVM Clang
- Microsoft Visual Studio - Visual C++ 2013 and later
Like many other frameworks (e.g., Qt, wxWidgets, GTK+, etc.), JUCE contains classes providing a range of functions that cover user-interface elements, graphics, audio, XML and JSON parsing, networking, cryptography, multi-threading, an integrated interpreter that mimics ECMAScript's syntax, and various other commonly used features. Application developers needing several third-party libraries may thus be able to consolidate and use only the JUCE library, or at least reduce the number of third-party libraries they use. In this, the original inspiration was Java's JDK, and JUCE was intended to be "something similar for C++".
A notable feature of JUCE when compared to other similar frameworks is its large set of audio functionality; this is because JUCE was originally developed as a framework for Tracktion, an audio sequencer, before being split off into a standalone product. JUCE has support for audio devices (such as CoreAudio, ASIO, ALSA, JACK, WASAPI, DirectSound) and MIDI playback, polyphonic synthesizers, built-in readers for common audio file formats (such as WAV, AIFF, FLAC, MP3 and Vorbis), as well as wrappers for building various types of audio plugin, such as VST effects and instruments. This has led to its widespread use in the audio development community.
JUCE comes with wrapper classes for building audio and browser plugins. When building an audio plugin, a single binary is produced that supports multiple plugin formats (VST & VST3, RTAS, AAX, Audio Units). Since all the platform and format-specific code is contained in the wrapper, a user can build Mac and Windows VST/VST3/RTAS/AAX/AUs from a single codebase.
The "Projucer" is an IDE tool for creating and managing JUCE projects. When the files and settings for a JUCE project have been specified, the Projucer automatically generates a collection of 3rd-party project files to allow the project to be compiled natively on each target platform. It can currently generate Xcode projects, Visual Studio projects, Linux Makefiles, Android Ant builds and CodeBlocks projects. As well as providing a way to manage a project's files and settings, it also has a code editor, an integrated GUI editor, wizards for creating new projects and files, and a live coding engine useful for user interface design.
- "Music Hardware Maker ROLI Acquires JUCE, A Key Music Industry Framework". TechCrunch. 2014-11-18. Retrieved 2016-03-19.
- "JUCE has been acquired by ROLI! | JUCE C++ Library". Juce.com. 2014-11-18. Retrieved 2016-03-19.
- "Ecosystem". Archived from the original on August 7, 2013. Retrieved April 25, 2017.