JUCE

Short description: C++ Cross-Platform Application Development Framework

JUCE (Jules' Utility Class Extensions)

Original author(s)| Julian Storer
Initial release| 2004; 20 years ago (2004)
Stable release|

7.0.5 / January 26, 2023; 12 months ago (2023-01-26)[1]

Written in| C++
Operating system| Cross-platform
Type| Development library
License| GPL, commercial
Website| www.juce.com

JUCE is an open-source cross-platform C++ application framework, used for the development of desktop and mobile applications. JUCE is used in particular for its GUI and plug-ins libraries. It is dual licensed under the GPLv3 and a commercial license.[2]

The aim of JUCE is to allow software to be written such that the same source code will compile and run identically on Windows, macOS and Linux platforms. It supports various development environments and compilers.

## Contents

* 1 History
* 2 Official support
* 2.1 Supported platforms
* 2.2 Supported compilers
* 3 Features
* 4 Tools
* 5 Version History
* 6 See also
* 7 References
* 8 External links

## History

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.[3]

In April 2020 it was announced that JUCE had been sold by ROLI to PACE Anti-Piracy Inc..[4]

## Official support

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.

### Supported platforms

JUCE is supported on the following platforms.

* Windows Vista, 7, 8, and 10
* macOS versions 10.7 and later
* iOS versions 9 and later
* Linux kernel series 2.6 and later
* Android using NDK-v5 and later

### Supported compilers

JUCE is officially confirmed to work properly with the following compilers.

* GCC versions 5 and later
* LLVM \- LLVM Clang versions 3.4 and later
* Microsoft Visual Studio \- Visual C++ 2015 and later

## Features

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.[5]

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. Since JUCE7 targeting, and hosting, of LV2 plugins is also possible.[6] Previously this was done with the use of various forks.[7][8]

Browser plugins are handled in a similar way: a single binary is produced that functions as both an NPAPI and an ActiveX plugin.

## Tools

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.

## Version History

* Version 1 - 2004
* Version 4 - November 2015
* Version 5 - April 2017
* Version 6 - April 2020 - key updates included adding CMake support for project building, revamping the DSP module, introducing VST3 support on Linux, and Clang support for Windows, along with updated webview components on macOS/iOS and a variety of other platform-specific enhancements.
* Version 7 - June 2022 - significant updates included the introduction of Audio Random Access (ARA) SDK and LV2 plug-in support, new rendering options for macOS and iOS, hardware-synchronized drawing across platforms, updated Android APIs, a revamped AudioPlayHead, and enhanced accessibility features.[9]

## See also

* Widget toolkit
* List of widget toolkits

## References

1. ↑ Tom Poole (2022-01-22). "7.0.5". https://github.com/juce-framework/JUCE/releases/tag/7.0.5.
2. ↑ JUCE License, JUCE, 2022-04-18, https://github.com/juce-framework/JUCE/blob/2f980209cc4091a4490bb1bafc5d530f16834e58/LICENSE.md, retrieved 2022-04-18
3. ↑ "Music Hardware Maker ROLI Acquires JUCE, A Key Music Industry Framework". TechCrunch. 2014-11-18. https://techcrunch.com/2014/11/18/music-hardware-maker-roli-acquires-juce-a-key-music-industry-framework/.
4. ↑ "JUCE Announces Acquisition by PACE | JUCE" (in en). https://juce.com/discover/stories/juce-announces-acquisition-by-pace.
5. ↑ "Ecosystem". http://www.juce.com/ecosystem.
6. ↑ JUCE7 release notes: https://github.com/juce-framework/JUCE/releases/tag/7.0.0
7. ↑ falkTX's DPF fork: https://github.com/DISTRHO/juce
8. ↑ KottV's lv2-porting-project fork https://github.com/lv2-porting-project/JUCE
9. ↑ "JUCE/ChangeList.txt at master · juce-framework/JUCE" (in en). https://github.com/juce-framework/JUCE/blob/master/ChangeList.txt.

## External links

* v
* t
* e

List of widget toolkits

Low-level|

| On AmigaOS|

* Intuition

|

On Classic Mac OS,
macOS|

| Unknown, native|

* Macintosh Toolbox

|

* Carbon

On Windows|

* Windows API

On Unix,
under X11|

* Xlib
* XCB
* X Toolkit Intrinsics, Xt, X-Toolkit

On BeOS, Haiku|

* BeOS, ZETA, Haiku

On cross-platform|

| CLI|

* OpenTK

|

* GDK
* SDL

Java|

* JOGL

On Android|

| CLI|

* Xamarin.Android

|

High-level|

| On AmigaOS|

* BOOPSI
* MUI
* ReAction GUI
* Zune

|

On Classic Mac OS,
macOS|

| Object Pascal|

* MacApp (v1, v2)

|

Objective-C,
Swift|

| Desktop|

* Cocoa

|

Mobile|

* Cocoa Touch

C++|

* MacApp (v3)
* PowerPlant
* THINK Class Library

CLI|

| Desktop|

* Xamarin.Mac

|

Mobile|

* Xamarin.iOS

On Windows|

| CLI|

| Desktop|

* Windows Forms
* XAML (Silverlight, WinRT XAML, WPF)
* XNA Framework

|

Web|

* XAML (Silverlight)

Mobile|

* XNA Framework

C++|

* MFC
* ATL
* WTL
* OWL

Object Pascal|

* VCL

On Unix,
under X11|

* Athena (Xaw)
* LessTif
* Motif
* OLIT
* XForms

On Android|

| C++|

* Qt for Android

|

Cross-platform,
by language|

| C|

* GTK
* IUP
* Tk
* wxC
* XForms
* XVT

|

C++|

* CEGUI
* CLX
* FLTK
* FOX toolkit
* GLUI
* Gtkmm
* JUCE
* Nana
* Qt
* Rogue Wave Views
* TnFOX
* Ultimate++
* VCF
* Wt
* wxWidgets
* YAAF
* SFML

Objective-C|

* GNUstep

CLI|

| Desktop|

* Gtk#
* Tao (OpenTK, TaoClassic)
* wx.NET
* UIML.NET
* MonoGame

|

Web|

* Moonlight

Mobile|

* MonoGame
* Xamarin.Forms

* DFL
* DlangUI
* DWT
* GtkD
* QtD
* wxD

Flash|

* Apache Flex (MXML)

Haskell|

* Gtk2Hs
* wxHaskell

Java|

| Desktop|

* AWT
* FXML (JavaFX)
* Qt Jambi
* Swing
* SWT
* wx4j
* jUIML

|

Web|

* GWT
* FXML (JavaFX)

Mobile|

* LWUIT

JavaScript|

* Dojo Toolkit
* Echo
* Ext JS
* Google Closure
* jQuery UI
* Qooxdoo
* YUI

Common Lisp|

* CAPI
* CLIM
* Common Graphics
* Ltk
* McCLIM

Lua|

* IUP
* wxLua

Pascal|

| Desktop|

* LCL

|

Mobile|

* LCL

Object Pascal|

| Desktop|

* CLX
* fpGUI
* IP Pascal
* LCL

|

Mobile|

* LCL

Perl|

* Perl/Tk
* wxPerl

PHP|

* PHP-GTK
* PHP-Qt
* wxPHP

Python|

* PyGObject
* PyGTK
* Pyjs
* PyQt
* PySide
* Tkinter
* wxPython

Ruby|

* Shoes
* FXRuby
* Ruby-GNOME2
* qtbindings
* QtRuby
* wxRuby

Tcl|

* Tcl/Tk

XML|

* GladeXML
* Lively Kernel
* Pyjs
* Rialto Toolkit
* XAML
* XUL
* UXP
* Wt

shell|

* whiptail
* dialog

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/JUCE. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:JUCE&oldid=3457750"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template